From 7d2894d1ccbc463104555d1d5e42eaf862df6b73 Mon Sep 17 00:00:00 2001 From: Roy Date: Fri, 20 Feb 2026 01:50:26 +0000 Subject: [PATCH] Upgrade Lucius SAI version to 1.15. --- MODULE.bazel | 6 +- dataplane/apigen/apigen.go | 9 +- dataplane/apigen/typeinfo/typeinfo.go | 6 +- dataplane/proto/sai/BUILD | 5 + dataplane/proto/sai/acl.proto | 1726 +- dataplane/proto/sai/ars.proto | 5 +- dataplane/proto/sai/ars_profile.proto | 5 +- dataplane/proto/sai/bfd.pb.go | 660 +- dataplane/proto/sai/bfd.proto | 236 +- dataplane/proto/sai/bmtor.proto | 191 +- dataplane/proto/sai/bridge.pb.go | 1005 +- dataplane/proto/sai/bridge.proto | 247 +- dataplane/proto/sai/buffer.pb.go | 1123 +- dataplane/proto/sai/buffer.proto | 239 +- dataplane/proto/sai/common.pb.go | 26970 ++++---- dataplane/proto/sai/common.proto | 7376 ++- dataplane/proto/sai/counter.pb.go | 309 +- dataplane/proto/sai/counter.proto | 64 +- dataplane/proto/sai/dash_acl.proto | 5 +- dataplane/proto/sai/dash_appliance.pb.go | 71 + dataplane/proto/sai/dash_appliance.proto | 10 + dataplane/proto/sai/dash_appliance_grpc.pb.go | 74 + .../proto/sai/dash_direction_lookup.proto | 5 +- dataplane/proto/sai/dash_eni.proto | 5 +- dataplane/proto/sai/dash_flow.pb.go | 70 + dataplane/proto/sai/dash_flow.proto | 10 + dataplane/proto/sai/dash_flow_grpc.pb.go | 74 + dataplane/proto/sai/dash_ha.pb.go | 70 + dataplane/proto/sai/dash_ha.proto | 10 + dataplane/proto/sai/dash_ha_grpc.pb.go | 74 + .../proto/sai/dash_inbound_routing.proto | 5 +- dataplane/proto/sai/dash_meter.proto | 5 +- .../proto/sai/dash_outbound_ca_to_pa.proto | 5 +- .../proto/sai/dash_outbound_routing.proto | 5 +- dataplane/proto/sai/dash_pa_validation.proto | 5 +- dataplane/proto/sai/dash_tunnel.pb.go | 70 + dataplane/proto/sai/dash_tunnel.proto | 10 + dataplane/proto/sai/dash_tunnel_grpc.pb.go | 74 + dataplane/proto/sai/dash_vip.proto | 5 +- dataplane/proto/sai/dash_vnet.proto | 5 +- dataplane/proto/sai/debug_counter.proto | 60 +- dataplane/proto/sai/dtel.proto | 350 +- dataplane/proto/sai/fdb.proto | 123 +- .../proto/sai/generic_programmable.proto | 54 +- dataplane/proto/sai/hash.proto | 98 +- dataplane/proto/sai/hostif.proto | 306 +- dataplane/proto/sai/icmp_echo.pb.go | 1177 + dataplane/proto/sai/icmp_echo.proto | 114 + dataplane/proto/sai/icmp_echo_grpc.pb.go | 271 + dataplane/proto/sai/ipmc.proto | 63 +- dataplane/proto/sai/ipmc_group.proto | 70 +- dataplane/proto/sai/ipsec.pb.go | 1099 +- dataplane/proto/sai/ipsec.proto | 332 +- dataplane/proto/sai/isolation_group.proto | 72 +- dataplane/proto/sai/l2mc.proto | 51 +- dataplane/proto/sai/l2mc_group.proto | 74 +- dataplane/proto/sai/lag.proto | 170 +- dataplane/proto/sai/macsec.pb.go | 1927 +- dataplane/proto/sai/macsec.proto | 430 +- dataplane/proto/sai/macsec_grpc.pb.go | 38 + dataplane/proto/sai/mcast_fdb.proto | 57 +- dataplane/proto/sai/mirror.proto | 191 +- dataplane/proto/sai/mpls.proto | 119 +- dataplane/proto/sai/my_mac.proto | 58 +- dataplane/proto/sai/nat.proto | 227 +- dataplane/proto/sai/neighbor.proto | 109 +- dataplane/proto/sai/next_hop.proto | 152 +- dataplane/proto/sai/next_hop_group.proto | 265 +- dataplane/proto/sai/poe.proto | 5 +- dataplane/proto/sai/policer.pb.go | 409 +- dataplane/proto/sai/policer.proto | 117 +- dataplane/proto/sai/port.pb.go | 3418 +- dataplane/proto/sai/port.proto | 1120 +- dataplane/proto/sai/qos_map.proto | 46 +- dataplane/proto/sai/queue.pb.go | 462 +- dataplane/proto/sai/queue.proto | 114 +- dataplane/proto/sai/route.proto | 91 +- dataplane/proto/sai/router_interface.pb.go | 571 +- dataplane/proto/sai/router_interface.proto | 189 +- dataplane/proto/sai/rpf_group.proto | 68 +- dataplane/proto/sai/samplepacket.pb.go | 262 +- dataplane/proto/sai/samplepacket.proto | 58 +- dataplane/proto/sai/scheduler.proto | 80 +- dataplane/proto/sai/scheduler_group.proto | 66 +- dataplane/proto/sai/srv6.pb.go | 938 +- dataplane/proto/sai/srv6.proto | 196 +- dataplane/proto/sai/stp.proto | 94 +- dataplane/proto/sai/switch.pb.go | 3108 +- dataplane/proto/sai/switch.proto | 1089 +- dataplane/proto/sai/system_port.proto | 62 +- dataplane/proto/sai/tam.proto | 930 +- dataplane/proto/sai/tunnel.pb.go | 1538 +- dataplane/proto/sai/tunnel.proto | 444 +- dataplane/proto/sai/twamp.proto | 5 +- dataplane/proto/sai/udf.proto | 142 +- dataplane/proto/sai/virtual_router.proto | 86 +- dataplane/proto/sai/vlan.pb.go | 942 +- dataplane/proto/sai/vlan.proto | 262 +- dataplane/proto/sai/wred.proto | 282 +- dataplane/standalone/sai/acl.cc | 5596 +- dataplane/standalone/sai/acl.h | 87 +- dataplane/standalone/sai/ars.cc | 17 +- dataplane/standalone/sai/ars.h | 6 - dataplane/standalone/sai/ars_profile.cc | 17 +- dataplane/standalone/sai/ars_profile.h | 6 - dataplane/standalone/sai/bfd.cc | 921 +- dataplane/standalone/sai/bfd.h | 29 +- dataplane/standalone/sai/bmtor.cc | 1208 +- dataplane/standalone/sai/bmtor.h | 86 +- dataplane/standalone/sai/bridge.cc | 1118 +- dataplane/standalone/sai/bridge.h | 54 +- dataplane/standalone/sai/buffer.cc | 1373 +- dataplane/standalone/sai/buffer.h | 76 +- dataplane/standalone/sai/common.h | 72 +- dataplane/standalone/sai/counter.cc | 388 +- dataplane/standalone/sai/counter.h | 27 +- dataplane/standalone/sai/dash_acl.cc | 25 +- dataplane/standalone/sai/dash_acl.h | 14 - dataplane/standalone/sai/dash_appliance.cc | 24 + dataplane/standalone/sai/dash_appliance.h | 28 + .../standalone/sai/dash_direction_lookup.cc | 19 +- .../standalone/sai/dash_direction_lookup.h | 8 - dataplane/standalone/sai/dash_eni.cc | 28 +- dataplane/standalone/sai/dash_eni.h | 17 - dataplane/standalone/sai/dash_flow.cc | 24 + dataplane/standalone/sai/dash_flow.h | 28 + dataplane/standalone/sai/dash_ha.cc | 24 + dataplane/standalone/sai/dash_ha.h | 28 + .../standalone/sai/dash_inbound_routing.cc | 19 +- .../standalone/sai/dash_inbound_routing.h | 8 - dataplane/standalone/sai/dash_meter.cc | 31 +- dataplane/standalone/sai/dash_meter.h | 20 - .../standalone/sai/dash_outbound_ca_to_pa.cc | 19 +- .../standalone/sai/dash_outbound_ca_to_pa.h | 8 - .../standalone/sai/dash_outbound_routing.cc | 19 +- .../standalone/sai/dash_outbound_routing.h | 8 - .../standalone/sai/dash_pa_validation.cc | 19 +- dataplane/standalone/sai/dash_pa_validation.h | 8 - dataplane/standalone/sai/dash_tunnel.cc | 24 + dataplane/standalone/sai/dash_tunnel.h | 28 + dataplane/standalone/sai/dash_vip.cc | 19 +- dataplane/standalone/sai/dash_vip.h | 8 - dataplane/standalone/sai/dash_vnet.cc | 19 +- dataplane/standalone/sai/dash_vnet.h | 8 - dataplane/standalone/sai/debug_counter.cc | 333 +- dataplane/standalone/sai/debug_counter.h | 14 +- dataplane/standalone/sai/dtel.cc | 1800 +- dataplane/standalone/sai/dtel.h | 61 +- dataplane/standalone/sai/enum.cc | 52609 +++++++++------- dataplane/standalone/sai/enum.h | 5120 +- dataplane/standalone/sai/fdb.cc | 630 +- dataplane/standalone/sai/fdb.h | 59 +- .../standalone/sai/generic_programmable.cc | 291 +- .../standalone/sai/generic_programmable.h | 16 +- dataplane/standalone/sai/hash.cc | 575 +- dataplane/standalone/sai/hash.h | 26 +- dataplane/standalone/sai/hostif.cc | 1754 +- dataplane/standalone/sai/hostif.h | 80 +- dataplane/standalone/sai/icmp_echo.cc | 381 + dataplane/standalone/sai/icmp_echo.h | 56 + dataplane/standalone/sai/ipmc.cc | 314 +- dataplane/standalone/sai/ipmc.h | 15 +- dataplane/standalone/sai/ipmc_group.cc | 424 +- dataplane/standalone/sai/ipmc_group.h | 25 +- dataplane/standalone/sai/ipsec.cc | 1606 +- dataplane/standalone/sai/ipsec.h | 65 +- dataplane/standalone/sai/isolation_group.cc | 443 +- dataplane/standalone/sai/isolation_group.h | 28 +- dataplane/standalone/sai/l2mc.cc | 278 +- dataplane/standalone/sai/l2mc.h | 15 +- dataplane/standalone/sai/l2mc_group.cc | 438 +- dataplane/standalone/sai/l2mc_group.h | 25 +- dataplane/standalone/sai/lag.cc | 877 +- dataplane/standalone/sai/lag.h | 42 +- dataplane/standalone/sai/macsec.cc | 2184 +- dataplane/standalone/sai/macsec.h | 119 +- dataplane/standalone/sai/mcast_fdb.cc | 301 +- dataplane/standalone/sai/mcast_fdb.h | 16 +- dataplane/standalone/sai/mirror.cc | 708 +- dataplane/standalone/sai/mirror.h | 14 +- dataplane/standalone/sai/mpls.cc | 600 +- dataplane/standalone/sai/mpls.h | 40 +- dataplane/standalone/sai/my_mac.cc | 319 +- dataplane/standalone/sai/my_mac.h | 13 +- dataplane/standalone/sai/nat.cc | 1045 +- dataplane/standalone/sai/nat.h | 68 +- dataplane/standalone/sai/neighbor.cc | 573 +- dataplane/standalone/sai/neighbor.h | 50 +- dataplane/standalone/sai/next_hop.cc | 724 +- dataplane/standalone/sai/next_hop.h | 39 +- dataplane/standalone/sai/next_hop_group.cc | 1500 +- dataplane/standalone/sai/next_hop_group.h | 103 +- dataplane/standalone/sai/poe.cc | 25 +- dataplane/standalone/sai/poe.h | 14 - dataplane/standalone/sai/policer.cc | 568 +- dataplane/standalone/sai/policer.h | 27 +- dataplane/standalone/sai/port.cc | 4225 +- dataplane/standalone/sai/port.h | 116 +- dataplane/standalone/sai/qos_map.cc | 218 +- dataplane/standalone/sai/qos_map.h | 13 +- dataplane/standalone/sai/queue.cc | 555 +- dataplane/standalone/sai/queue.h | 27 +- dataplane/standalone/sai/route.cc | 550 +- dataplane/standalone/sai/route.h | 40 +- dataplane/standalone/sai/router_interface.cc | 883 +- dataplane/standalone/sai/router_interface.h | 70 +- dataplane/standalone/sai/rpf_group.cc | 424 +- dataplane/standalone/sai/rpf_group.h | 25 +- dataplane/standalone/sai/samplepacket.cc | 317 +- dataplane/standalone/sai/samplepacket.h | 14 +- dataplane/standalone/sai/scheduler.cc | 380 +- dataplane/standalone/sai/scheduler.h | 13 +- dataplane/standalone/sai/scheduler_group.cc | 340 +- dataplane/standalone/sai/scheduler_group.h | 14 +- dataplane/standalone/sai/srv6.cc | 1075 +- dataplane/standalone/sai/srv6.h | 105 +- dataplane/standalone/sai/stp.cc | 633 +- dataplane/standalone/sai/stp.h | 42 +- dataplane/standalone/sai/switch.cc | 3157 +- dataplane/standalone/sai/switch.h | 51 +- dataplane/standalone/sai/system_port.cc | 314 +- dataplane/standalone/sai/system_port.h | 14 +- dataplane/standalone/sai/tam.cc | 4625 +- dataplane/standalone/sai/tam.h | 145 +- dataplane/standalone/sai/tunnel.cc | 2061 +- dataplane/standalone/sai/tunnel.h | 99 +- dataplane/standalone/sai/twamp.cc | 20 +- dataplane/standalone/sai/twamp.h | 9 - dataplane/standalone/sai/udf.cc | 824 +- dataplane/standalone/sai/udf.h | 34 +- dataplane/standalone/sai/virtual_router.cc | 392 +- dataplane/standalone/sai/virtual_router.h | 14 +- dataplane/standalone/sai/vlan.cc | 1187 +- dataplane/standalone/sai/vlan.h | 63 +- dataplane/standalone/sai/wred.cc | 956 +- dataplane/standalone/sai/wred.h | 12 +- patches/sai.patch | 100 +- 237 files changed, 101143 insertions(+), 78176 deletions(-) create mode 100755 dataplane/proto/sai/dash_appliance.pb.go create mode 100644 dataplane/proto/sai/dash_appliance.proto create mode 100755 dataplane/proto/sai/dash_appliance_grpc.pb.go create mode 100755 dataplane/proto/sai/dash_flow.pb.go create mode 100644 dataplane/proto/sai/dash_flow.proto create mode 100755 dataplane/proto/sai/dash_flow_grpc.pb.go create mode 100755 dataplane/proto/sai/dash_ha.pb.go create mode 100644 dataplane/proto/sai/dash_ha.proto create mode 100755 dataplane/proto/sai/dash_ha_grpc.pb.go create mode 100755 dataplane/proto/sai/dash_tunnel.pb.go create mode 100644 dataplane/proto/sai/dash_tunnel.proto create mode 100755 dataplane/proto/sai/dash_tunnel_grpc.pb.go create mode 100755 dataplane/proto/sai/icmp_echo.pb.go create mode 100644 dataplane/proto/sai/icmp_echo.proto create mode 100755 dataplane/proto/sai/icmp_echo_grpc.pb.go create mode 100644 dataplane/standalone/sai/dash_appliance.cc create mode 100644 dataplane/standalone/sai/dash_appliance.h create mode 100644 dataplane/standalone/sai/dash_flow.cc create mode 100644 dataplane/standalone/sai/dash_flow.h create mode 100644 dataplane/standalone/sai/dash_ha.cc create mode 100644 dataplane/standalone/sai/dash_ha.h create mode 100644 dataplane/standalone/sai/dash_tunnel.cc create mode 100644 dataplane/standalone/sai/dash_tunnel.h create mode 100644 dataplane/standalone/sai/icmp_echo.cc create mode 100644 dataplane/standalone/sai/icmp_echo.h diff --git a/MODULE.bazel b/MODULE.bazel index 1fcee29f8..513bfe26f 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -43,9 +43,9 @@ cc_library( """, patch_args = ["-p1"], patches = ["//patches:sai.patch"], - sha256 = "4e3a1d010bda0c589db46e077725a2cd9624a5cc255c89d1caa79deb408d1fa7", - strip_prefix = "SAI-1.14.0", - urls = ["https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.14.0.tar.gz"], + sha256 = "94b7a7dd9dbcc46bf14ba9f12b8597e9e9c2069fcb8e383a61cdf6ca172f3511", + strip_prefix = "SAI-1.15.0", + urls = ["https://github.com/opencomputeproject/SAI/archive/refs/tags/v1.15.0.tar.gz"], ) ###################################### diff --git a/dataplane/apigen/apigen.go b/dataplane/apigen/apigen.go index f11e09d34..f7b8d3df5 100644 --- a/dataplane/apigen/apigen.go +++ b/dataplane/apigen/apigen.go @@ -39,7 +39,14 @@ func parse(headers []string, includePaths ...string) (*cc.AST, error) { cfg.SysIncludePaths = append(cfg.SysIncludePaths, p) } - sources := []cc.Source{{Name: "", Value: cfg.Predefined}, {Name: "", Value: cc.Builtin}} + sources := []cc.Source{ + {Name: "", Value: cfg.Predefined}, + {Name: "", Value: cc.Builtin}, + {Name: "stdbool.h", Value: "#define bool _Bool\n#define true 1\n#define false 0"}, + {Name: "stddef.h", Value: "typedef unsigned long size_t; typedef long ptrdiff_t; typedef int wchar_t;"}, + {Name: "stdint.h", Value: "typedef signed char int8_t; typedef short int int16_t; typedef int int32_t; typedef long int int64_t; typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; typedef unsigned long int uint64_t;"}, + } + for _, hdr := range headers { sources = append(sources, cc.Source{Name: hdr}) } diff --git a/dataplane/apigen/typeinfo/typeinfo.go b/dataplane/apigen/typeinfo/typeinfo.go index a642a4d2a..7784b9fee 100644 --- a/dataplane/apigen/typeinfo/typeinfo.go +++ b/dataplane/apigen/typeinfo/typeinfo.go @@ -757,8 +757,12 @@ func CreateAttrs(startIdx int, typeName string, xmlInfo *docparser.SAIInfo, attr if strings.Contains(attr.SaiType, "sai_pointer_t") { continue } - // Proto field names can't begin with numbers, prepend _. name := attr.MemberName + // Rename attribute to avoid collision with Proto _size methods. + if name == "json_formatted_debug_data_size" { + name = "json_formatted_debug_data_sz" + } + // Proto field names can't begin with numbers, prepend _. if unicode.IsDigit(rune(attr.MemberName[0])) { name = fmt.Sprintf("_%s", name) } diff --git a/dataplane/proto/sai/BUILD b/dataplane/proto/sai/BUILD index ced905713..6d7a92c8e 100644 --- a/dataplane/proto/sai/BUILD +++ b/dataplane/proto/sai/BUILD @@ -17,13 +17,17 @@ proto_library( "common.proto", "counter.proto", "dash_acl.proto", + "dash_appliance.proto", "dash_direction_lookup.proto", "dash_eni.proto", + "dash_flow.proto", + "dash_ha.proto", "dash_inbound_routing.proto", "dash_meter.proto", "dash_outbound_ca_to_pa.proto", "dash_outbound_routing.proto", "dash_pa_validation.proto", + "dash_tunnel.proto", "dash_vip.proto", "dash_vnet.proto", "debug_counter.proto", @@ -32,6 +36,7 @@ proto_library( "generic_programmable.proto", "hash.proto", "hostif.proto", + "icmp_echo.proto", "ipmc.proto", "ipmc_group.proto", "ipsec.proto", diff --git a/dataplane/proto/sai/acl.proto b/dataplane/proto/sai/acl.proto index 6f57f0a75..7d7fb513d 100644 --- a/dataplane/proto/sai/acl.proto +++ b/dataplane/proto/sai/acl.proto @@ -7,976 +7,1048 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum AclTableAttr { - ACL_TABLE_ATTR_UNSPECIFIED = 0; - ACL_TABLE_ATTR_ACL_STAGE = 1; - ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST = 2; - ACL_TABLE_ATTR_SIZE = 3; - ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST = 4; - ACL_TABLE_ATTR_FIELD_SRC_IPV6 = 5; - ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3 = 6; - ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2 = 7; - ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1 = 8; - ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0 = 9; - ACL_TABLE_ATTR_FIELD_DST_IPV6 = 10; - ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3 = 11; - ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2 = 12; - ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1 = 13; - ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0 = 14; - ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6 = 15; - ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6 = 16; - ACL_TABLE_ATTR_FIELD_SRC_MAC = 17; - ACL_TABLE_ATTR_FIELD_DST_MAC = 18; - ACL_TABLE_ATTR_FIELD_SRC_IP = 19; - ACL_TABLE_ATTR_FIELD_DST_IP = 20; - ACL_TABLE_ATTR_FIELD_INNER_SRC_IP = 21; - ACL_TABLE_ATTR_FIELD_INNER_DST_IP = 22; - ACL_TABLE_ATTR_FIELD_IN_PORTS = 23; - ACL_TABLE_ATTR_FIELD_OUT_PORTS = 24; - ACL_TABLE_ATTR_FIELD_IN_PORT = 25; - ACL_TABLE_ATTR_FIELD_OUT_PORT = 26; - ACL_TABLE_ATTR_FIELD_SRC_PORT = 27; - ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID = 28; - ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI = 29; - ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI = 30; - ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID = 31; - ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI = 32; - ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI = 33; - ACL_TABLE_ATTR_FIELD_L4_SRC_PORT = 34; - ACL_TABLE_ATTR_FIELD_L4_DST_PORT = 35; - ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT = 36; - ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT = 37; - ACL_TABLE_ATTR_FIELD_ETHER_TYPE = 38; - ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE = 39; - ACL_TABLE_ATTR_FIELD_IP_PROTOCOL = 40; - ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL = 41; - ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION = 42; - ACL_TABLE_ATTR_FIELD_DSCP = 43; - ACL_TABLE_ATTR_FIELD_ECN = 44; - ACL_TABLE_ATTR_FIELD_TTL = 45; - ACL_TABLE_ATTR_FIELD_TOS = 46; - ACL_TABLE_ATTR_FIELD_IP_FLAGS = 47; - ACL_TABLE_ATTR_FIELD_TCP_FLAGS = 48; - ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE = 49; - ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG = 50; - ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL = 51; - ACL_TABLE_ATTR_FIELD_TC = 52; - ACL_TABLE_ATTR_FIELD_ICMP_TYPE = 53; - ACL_TABLE_ATTR_FIELD_ICMP_CODE = 54; - ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE = 55; - ACL_TABLE_ATTR_FIELD_ICMPV6_CODE = 56; - ACL_TABLE_ATTR_FIELD_PACKET_VLAN = 57; - ACL_TABLE_ATTR_FIELD_TUNNEL_VNI = 58; - ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG = 59; - ACL_TABLE_ATTR_FIELD_MACSEC_SCI = 60; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL = 61; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL = 62; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP = 63; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS = 64; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL = 65; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL = 66; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP = 67; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS = 68; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL = 69; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL = 70; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP = 71; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS = 72; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL = 73; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL = 74; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP = 75; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS = 76; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL = 77; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL = 78; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP = 79; - ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS = 80; - ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META = 81; - ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META = 82; - ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META = 83; - ACL_TABLE_ATTR_FIELD_PORT_USER_META = 84; - ACL_TABLE_ATTR_FIELD_VLAN_USER_META = 85; - ACL_TABLE_ATTR_FIELD_ACL_USER_META = 86; - ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT = 87; - ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT = 88; - ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT = 89; - ACL_TABLE_ATTR_FIELD_BTH_OPCODE = 90; - ACL_TABLE_ATTR_FIELD_AETH_SYNDROME = 91; - ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN = 92; - ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE = 93; - ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER = 94; - ACL_TABLE_ATTR_FIELD_GRE_KEY = 95; - ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE = 96; - ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC = 97; - ACL_TABLE_ATTR_FIELD_INNER_DST_MAC = 98; - ACL_TABLE_ATTR_FIELD_VRF_ID = 99; - ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT = 100; - ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED = 101; - ACL_TABLE_ATTR_ENTRY_LIST = 102; - ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY = 103; - ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER = 104; - ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE = 105; - ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6 = 106; - ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6 = 107; + ACL_TABLE_ATTR_UNSPECIFIED = 0; + ACL_TABLE_ATTR_ACL_STAGE = 1; + ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST = 2; + ACL_TABLE_ATTR_SIZE = 3; + ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST = 4; + ACL_TABLE_ATTR_FIELD_SRC_IPV6 = 5; + ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3 = 6; + ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2 = 7; + ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1 = 8; + ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0 = 9; + ACL_TABLE_ATTR_FIELD_DST_IPV6 = 10; + ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3 = 11; + ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2 = 12; + ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1 = 13; + ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0 = 14; + ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6 = 15; + ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6 = 16; + ACL_TABLE_ATTR_FIELD_SRC_MAC = 17; + ACL_TABLE_ATTR_FIELD_DST_MAC = 18; + ACL_TABLE_ATTR_FIELD_SRC_IP = 19; + ACL_TABLE_ATTR_FIELD_DST_IP = 20; + ACL_TABLE_ATTR_FIELD_INNER_SRC_IP = 21; + ACL_TABLE_ATTR_FIELD_INNER_DST_IP = 22; + ACL_TABLE_ATTR_FIELD_IN_PORTS = 23; + ACL_TABLE_ATTR_FIELD_OUT_PORTS = 24; + ACL_TABLE_ATTR_FIELD_IN_PORT = 25; + ACL_TABLE_ATTR_FIELD_OUT_PORT = 26; + ACL_TABLE_ATTR_FIELD_SRC_PORT = 27; + ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID = 28; + ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI = 29; + ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI = 30; + ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID = 31; + ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI = 32; + ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI = 33; + ACL_TABLE_ATTR_FIELD_L4_SRC_PORT = 34; + ACL_TABLE_ATTR_FIELD_L4_DST_PORT = 35; + ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT = 36; + ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT = 37; + ACL_TABLE_ATTR_FIELD_ETHER_TYPE = 38; + ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE = 39; + ACL_TABLE_ATTR_FIELD_IP_PROTOCOL = 40; + ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL = 41; + ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION = 42; + ACL_TABLE_ATTR_FIELD_DSCP = 43; + ACL_TABLE_ATTR_FIELD_ECN = 44; + ACL_TABLE_ATTR_FIELD_TTL = 45; + ACL_TABLE_ATTR_FIELD_TOS = 46; + ACL_TABLE_ATTR_FIELD_IP_FLAGS = 47; + ACL_TABLE_ATTR_FIELD_TCP_FLAGS = 48; + ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE = 49; + ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG = 50; + ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL = 51; + ACL_TABLE_ATTR_FIELD_TC = 52; + ACL_TABLE_ATTR_FIELD_ICMP_TYPE = 53; + ACL_TABLE_ATTR_FIELD_ICMP_CODE = 54; + ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE = 55; + ACL_TABLE_ATTR_FIELD_ICMPV6_CODE = 56; + ACL_TABLE_ATTR_FIELD_PACKET_VLAN = 57; + ACL_TABLE_ATTR_FIELD_TUNNEL_VNI = 58; + ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG = 59; + ACL_TABLE_ATTR_FIELD_MACSEC_SCI = 60; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL = 61; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL = 62; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP = 63; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS = 64; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL = 65; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL = 66; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP = 67; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS = 68; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL = 69; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL = 70; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP = 71; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS = 72; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL = 73; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL = 74; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP = 75; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS = 76; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL = 77; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL = 78; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP = 79; + ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS = 80; + ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META = 81; + ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META = 82; + ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META = 83; + ACL_TABLE_ATTR_FIELD_PORT_USER_META = 84; + ACL_TABLE_ATTR_FIELD_VLAN_USER_META = 85; + ACL_TABLE_ATTR_FIELD_ACL_USER_META = 86; + ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT = 87; + ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT = 88; + ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT = 89; + ACL_TABLE_ATTR_FIELD_BTH_OPCODE = 90; + ACL_TABLE_ATTR_FIELD_AETH_SYNDROME = 91; + ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN = 92; + ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE = 93; + ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER = 94; + ACL_TABLE_ATTR_FIELD_GRE_KEY = 95; + ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE = 96; + ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC = 97; + ACL_TABLE_ATTR_FIELD_INNER_DST_MAC = 98; + ACL_TABLE_ATTR_FIELD_VRF_ID = 99; + ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT = 100; + ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED = 101; + ACL_TABLE_ATTR_ENTRY_LIST = 102; + ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY = 103; + ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER = 104; + ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE = 105; + ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6 = 106; + ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6 = 107; } enum AclEntryAttr { - ACL_ENTRY_ATTR_UNSPECIFIED = 0; - ACL_ENTRY_ATTR_TABLE_ID = 1; - ACL_ENTRY_ATTR_PRIORITY = 2; - ACL_ENTRY_ATTR_ADMIN_STATE = 3; - ACL_ENTRY_ATTR_FIELD_SRC_IPV6 = 4; - ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3 = 5; - ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2 = 6; - ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1 = 7; - ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0 = 8; - ACL_ENTRY_ATTR_FIELD_DST_IPV6 = 9; - ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3 = 10; - ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2 = 11; - ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1 = 12; - ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0 = 13; - ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6 = 14; - ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6 = 15; - ACL_ENTRY_ATTR_FIELD_SRC_MAC = 16; - ACL_ENTRY_ATTR_FIELD_DST_MAC = 17; - ACL_ENTRY_ATTR_FIELD_SRC_IP = 18; - ACL_ENTRY_ATTR_FIELD_DST_IP = 19; - ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP = 20; - ACL_ENTRY_ATTR_FIELD_INNER_DST_IP = 21; - ACL_ENTRY_ATTR_FIELD_IN_PORTS = 22; - ACL_ENTRY_ATTR_FIELD_OUT_PORTS = 23; - ACL_ENTRY_ATTR_FIELD_IN_PORT = 24; - ACL_ENTRY_ATTR_FIELD_OUT_PORT = 25; - ACL_ENTRY_ATTR_FIELD_SRC_PORT = 26; - ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID = 27; - ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI = 28; - ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI = 29; - ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID = 30; - ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI = 31; - ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI = 32; - ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT = 33; - ACL_ENTRY_ATTR_FIELD_L4_DST_PORT = 34; - ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT = 35; - ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT = 36; - ACL_ENTRY_ATTR_FIELD_ETHER_TYPE = 37; - ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE = 38; - ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL = 39; - ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL = 40; - ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION = 41; - ACL_ENTRY_ATTR_FIELD_DSCP = 42; - ACL_ENTRY_ATTR_FIELD_ECN = 43; - ACL_ENTRY_ATTR_FIELD_TTL = 44; - ACL_ENTRY_ATTR_FIELD_TOS = 45; - ACL_ENTRY_ATTR_FIELD_IP_FLAGS = 46; - ACL_ENTRY_ATTR_FIELD_TCP_FLAGS = 47; - ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE = 48; - ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG = 49; - ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL = 50; - ACL_ENTRY_ATTR_FIELD_TC = 51; - ACL_ENTRY_ATTR_FIELD_ICMP_TYPE = 52; - ACL_ENTRY_ATTR_FIELD_ICMP_CODE = 53; - ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE = 54; - ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE = 55; - ACL_ENTRY_ATTR_FIELD_PACKET_VLAN = 56; - ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI = 57; - ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG = 58; - ACL_ENTRY_ATTR_FIELD_MACSEC_SCI = 59; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL = 60; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL = 61; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP = 62; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS = 63; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL = 64; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL = 65; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP = 66; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS = 67; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL = 68; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL = 69; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP = 70; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS = 71; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL = 72; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL = 73; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP = 74; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS = 75; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL = 76; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL = 77; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP = 78; - ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS = 79; - ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META = 80; - ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META = 81; - ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META = 82; - ACL_ENTRY_ATTR_FIELD_PORT_USER_META = 83; - ACL_ENTRY_ATTR_FIELD_VLAN_USER_META = 84; - ACL_ENTRY_ATTR_FIELD_ACL_USER_META = 85; - ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT = 86; - ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT = 87; - ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT = 88; - ACL_ENTRY_ATTR_FIELD_BTH_OPCODE = 89; - ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME = 90; - ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN = 91; - ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE = 92; - ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER = 93; - ACL_ENTRY_ATTR_FIELD_GRE_KEY = 94; - ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE = 95; - ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC = 96; - ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC = 97; - ACL_ENTRY_ATTR_FIELD_VRF_ID = 98; - ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT = 99; - ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED = 100; - ACL_ENTRY_ATTR_ACTION_REDIRECT = 101; - ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP = 102; - ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST = 103; - ACL_ENTRY_ATTR_ACTION_PACKET_ACTION = 104; - ACL_ENTRY_ATTR_ACTION_FLOOD = 105; - ACL_ENTRY_ATTR_ACTION_COUNTER = 106; - ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS = 107; - ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS = 108; - ACL_ENTRY_ATTR_ACTION_SET_POLICER = 109; - ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL = 110; - ACL_ENTRY_ATTR_ACTION_SET_TC = 111; - ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR = 112; - ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID = 113; - ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI = 114; - ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID = 115; - ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI = 116; - ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID = 117; - ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI = 118; - ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC = 119; - ACL_ENTRY_ATTR_ACTION_SET_DST_MAC = 120; - ACL_ENTRY_ATTR_ACTION_SET_SRC_IP = 121; - ACL_ENTRY_ATTR_ACTION_SET_DST_IP = 122; - ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6 = 123; - ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6 = 124; - ACL_ENTRY_ATTR_ACTION_SET_DSCP = 125; - ACL_ENTRY_ATTR_ACTION_SET_ECN = 126; - ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT = 127; - ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT = 128; - ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE = 129; - ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE = 130; - ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA = 131; - ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST = 132; - ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID = 133; - ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN = 134; - ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP = 135; - ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION = 136; - ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE = 137; - ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE = 138; - ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT = 139; - ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS = 140; - ACL_ENTRY_ATTR_ACTION_NO_NAT = 141; - ACL_ENTRY_ATTR_ACTION_INT_INSERT = 142; - ACL_ENTRY_ATTR_ACTION_INT_DELETE = 143; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW = 144; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS = 145; - ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS = 146; - ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT = 147; - ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP = 148; - ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW = 149; - ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID = 150; - ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID = 151; - ACL_ENTRY_ATTR_ACTION_SET_VRF = 152; - ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS = 153; - ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING = 154; - ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT = 155; - ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING = 156; - ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT = 157; + ACL_ENTRY_ATTR_UNSPECIFIED = 0; + ACL_ENTRY_ATTR_TABLE_ID = 1; + ACL_ENTRY_ATTR_PRIORITY = 2; + ACL_ENTRY_ATTR_ADMIN_STATE = 3; + ACL_ENTRY_ATTR_FIELD_SRC_IPV6 = 4; + ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3 = 5; + ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2 = 6; + ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1 = 7; + ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0 = 8; + ACL_ENTRY_ATTR_FIELD_DST_IPV6 = 9; + ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3 = 10; + ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2 = 11; + ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1 = 12; + ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0 = 13; + ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6 = 14; + ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6 = 15; + ACL_ENTRY_ATTR_FIELD_SRC_MAC = 16; + ACL_ENTRY_ATTR_FIELD_DST_MAC = 17; + ACL_ENTRY_ATTR_FIELD_SRC_IP = 18; + ACL_ENTRY_ATTR_FIELD_DST_IP = 19; + ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP = 20; + ACL_ENTRY_ATTR_FIELD_INNER_DST_IP = 21; + ACL_ENTRY_ATTR_FIELD_IN_PORTS = 22; + ACL_ENTRY_ATTR_FIELD_OUT_PORTS = 23; + ACL_ENTRY_ATTR_FIELD_IN_PORT = 24; + ACL_ENTRY_ATTR_FIELD_OUT_PORT = 25; + ACL_ENTRY_ATTR_FIELD_SRC_PORT = 26; + ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID = 27; + ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI = 28; + ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI = 29; + ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID = 30; + ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI = 31; + ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI = 32; + ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT = 33; + ACL_ENTRY_ATTR_FIELD_L4_DST_PORT = 34; + ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT = 35; + ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT = 36; + ACL_ENTRY_ATTR_FIELD_ETHER_TYPE = 37; + ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE = 38; + ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL = 39; + ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL = 40; + ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION = 41; + ACL_ENTRY_ATTR_FIELD_DSCP = 42; + ACL_ENTRY_ATTR_FIELD_ECN = 43; + ACL_ENTRY_ATTR_FIELD_TTL = 44; + ACL_ENTRY_ATTR_FIELD_TOS = 45; + ACL_ENTRY_ATTR_FIELD_IP_FLAGS = 46; + ACL_ENTRY_ATTR_FIELD_TCP_FLAGS = 47; + ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE = 48; + ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG = 49; + ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL = 50; + ACL_ENTRY_ATTR_FIELD_TC = 51; + ACL_ENTRY_ATTR_FIELD_ICMP_TYPE = 52; + ACL_ENTRY_ATTR_FIELD_ICMP_CODE = 53; + ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE = 54; + ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE = 55; + ACL_ENTRY_ATTR_FIELD_PACKET_VLAN = 56; + ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI = 57; + ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG = 58; + ACL_ENTRY_ATTR_FIELD_MACSEC_SCI = 59; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL = 60; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL = 61; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP = 62; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS = 63; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL = 64; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL = 65; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP = 66; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS = 67; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL = 68; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL = 69; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP = 70; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS = 71; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL = 72; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL = 73; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP = 74; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS = 75; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL = 76; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL = 77; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP = 78; + ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS = 79; + ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META = 80; + ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META = 81; + ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META = 82; + ACL_ENTRY_ATTR_FIELD_PORT_USER_META = 83; + ACL_ENTRY_ATTR_FIELD_VLAN_USER_META = 84; + ACL_ENTRY_ATTR_FIELD_ACL_USER_META = 85; + ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT = 86; + ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT = 87; + ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT = 88; + ACL_ENTRY_ATTR_FIELD_BTH_OPCODE = 89; + ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME = 90; + ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN = 91; + ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE = 92; + ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER = 93; + ACL_ENTRY_ATTR_FIELD_GRE_KEY = 94; + ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE = 95; + ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC = 96; + ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC = 97; + ACL_ENTRY_ATTR_FIELD_VRF_ID = 98; + ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT = 99; + ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED = 100; + ACL_ENTRY_ATTR_ACTION_REDIRECT = 101; + ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP = 102; + ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST = 103; + ACL_ENTRY_ATTR_ACTION_PACKET_ACTION = 104; + ACL_ENTRY_ATTR_ACTION_FLOOD = 105; + ACL_ENTRY_ATTR_ACTION_COUNTER = 106; + ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS = 107; + ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS = 108; + ACL_ENTRY_ATTR_ACTION_SET_POLICER = 109; + ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL = 110; + ACL_ENTRY_ATTR_ACTION_SET_TC = 111; + ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR = 112; + ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID = 113; + ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI = 114; + ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID = 115; + ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI = 116; + ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID = 117; + ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI = 118; + ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC = 119; + ACL_ENTRY_ATTR_ACTION_SET_DST_MAC = 120; + ACL_ENTRY_ATTR_ACTION_SET_SRC_IP = 121; + ACL_ENTRY_ATTR_ACTION_SET_DST_IP = 122; + ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6 = 123; + ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6 = 124; + ACL_ENTRY_ATTR_ACTION_SET_DSCP = 125; + ACL_ENTRY_ATTR_ACTION_SET_ECN = 126; + ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT = 127; + ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT = 128; + ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE = 129; + ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE = 130; + ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA = 131; + ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST = 132; + ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID = 133; + ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN = 134; + ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP = 135; + ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION = 136; + ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE = 137; + ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE = 138; + ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT = 139; + ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS = 140; + ACL_ENTRY_ATTR_ACTION_NO_NAT = 141; + ACL_ENTRY_ATTR_ACTION_INT_INSERT = 142; + ACL_ENTRY_ATTR_ACTION_INT_DELETE = 143; + ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW = 144; + ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS = 145; + ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS = 146; + ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT = 147; + ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP = 148; + ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW = 149; + ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID = 150; + ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID = 151; + ACL_ENTRY_ATTR_ACTION_SET_VRF = 152; + ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS = 153; + ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING = 154; + ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT = 155; + ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING = 156; + ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT = 157; } enum AclCounterAttr { - ACL_COUNTER_ATTR_UNSPECIFIED = 0; - ACL_COUNTER_ATTR_TABLE_ID = 1; - ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT = 2; - ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT = 3; - ACL_COUNTER_ATTR_PACKETS = 4; - ACL_COUNTER_ATTR_BYTES = 5; - ACL_COUNTER_ATTR_LABEL = 6; + ACL_COUNTER_ATTR_UNSPECIFIED = 0; + ACL_COUNTER_ATTR_TABLE_ID = 1; + ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT = 2; + ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT = 3; + ACL_COUNTER_ATTR_PACKETS = 4; + ACL_COUNTER_ATTR_BYTES = 5; + ACL_COUNTER_ATTR_LABEL = 6; } enum AclRangeAttr { - ACL_RANGE_ATTR_UNSPECIFIED = 0; - ACL_RANGE_ATTR_TYPE = 1; - ACL_RANGE_ATTR_LIMIT = 2; + ACL_RANGE_ATTR_UNSPECIFIED = 0; + ACL_RANGE_ATTR_TYPE = 1; + ACL_RANGE_ATTR_LIMIT = 2; } enum AclTableGroupAttr { - ACL_TABLE_GROUP_ATTR_UNSPECIFIED = 0; - ACL_TABLE_GROUP_ATTR_ACL_STAGE = 1; - ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST = 2; - ACL_TABLE_GROUP_ATTR_TYPE = 3; - ACL_TABLE_GROUP_ATTR_MEMBER_LIST = 4; - ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST = 5; + ACL_TABLE_GROUP_ATTR_UNSPECIFIED = 0; + ACL_TABLE_GROUP_ATTR_ACL_STAGE = 1; + ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST = 2; + ACL_TABLE_GROUP_ATTR_TYPE = 3; + ACL_TABLE_GROUP_ATTR_MEMBER_LIST = 4; + ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST = 5; } enum AclTableGroupMemberAttr { - ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID = 1; - ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID = 2; - ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY = 3; - ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID = 4; + ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID = 1; + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID = 2; + ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY = 3; + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID = 4; } enum AclTableChainGroupAttr { - ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED = 0; - ACL_TABLE_CHAIN_GROUP_ATTR_TYPE = 1; - ACL_TABLE_CHAIN_GROUP_ATTR_STAGE = 2; + ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED = 0; + ACL_TABLE_CHAIN_GROUP_ATTR_TYPE = 1; + ACL_TABLE_CHAIN_GROUP_ATTR_STAGE = 2; } message CreateAclTableRequest { - option (sai_type) = OBJECT_TYPE_ACL_TABLE; - uint64 switch = 1; - optional AclStage acl_stage = 2[(attr_enum_value) = 1]; - repeated AclBindPointType acl_bind_point_type_list = 3[(attr_enum_value) = 2]; - optional uint32 size = 4[(attr_enum_value) = 3]; - repeated AclActionType acl_action_type_list = 5[(attr_enum_value) = 4]; - optional bool field_src_ipv6 = 6[(attr_enum_value) = 5]; - optional bool field_src_ipv6_word3 = 7[(attr_enum_value) = 6]; - optional bool field_src_ipv6_word2 = 8[(attr_enum_value) = 7]; - optional bool field_src_ipv6_word1 = 9[(attr_enum_value) = 8]; - optional bool field_src_ipv6_word0 = 10[(attr_enum_value) = 9]; - optional bool field_dst_ipv6 = 11[(attr_enum_value) = 10]; - optional bool field_dst_ipv6_word3 = 12[(attr_enum_value) = 11]; - optional bool field_dst_ipv6_word2 = 13[(attr_enum_value) = 12]; - optional bool field_dst_ipv6_word1 = 14[(attr_enum_value) = 13]; - optional bool field_dst_ipv6_word0 = 15[(attr_enum_value) = 14]; - optional bool field_inner_src_ipv6 = 16[(attr_enum_value) = 15]; - optional bool field_inner_dst_ipv6 = 17[(attr_enum_value) = 16]; - optional bool field_src_mac = 18[(attr_enum_value) = 17]; - optional bool field_dst_mac = 19[(attr_enum_value) = 18]; - optional bool field_src_ip = 20[(attr_enum_value) = 19]; - optional bool field_dst_ip = 21[(attr_enum_value) = 20]; - optional bool field_inner_src_ip = 22[(attr_enum_value) = 21]; - optional bool field_inner_dst_ip = 23[(attr_enum_value) = 22]; - optional bool field_in_ports = 24[(attr_enum_value) = 23]; - optional bool field_out_ports = 25[(attr_enum_value) = 24]; - optional bool field_in_port = 26[(attr_enum_value) = 25]; - optional bool field_out_port = 27[(attr_enum_value) = 26]; - optional bool field_src_port = 28[(attr_enum_value) = 27]; - optional bool field_outer_vlan_id = 29[(attr_enum_value) = 28]; - optional bool field_outer_vlan_pri = 30[(attr_enum_value) = 29]; - optional bool field_outer_vlan_cfi = 31[(attr_enum_value) = 30]; - optional bool field_inner_vlan_id = 32[(attr_enum_value) = 31]; - optional bool field_inner_vlan_pri = 33[(attr_enum_value) = 32]; - optional bool field_inner_vlan_cfi = 34[(attr_enum_value) = 33]; - optional bool field_l4_src_port = 35[(attr_enum_value) = 34]; - optional bool field_l4_dst_port = 36[(attr_enum_value) = 35]; - optional bool field_inner_l4_src_port = 37[(attr_enum_value) = 36]; - optional bool field_inner_l4_dst_port = 38[(attr_enum_value) = 37]; - optional bool field_ether_type = 39[(attr_enum_value) = 38]; - optional bool field_inner_ether_type = 40[(attr_enum_value) = 39]; - optional bool field_ip_protocol = 41[(attr_enum_value) = 40]; - optional bool field_inner_ip_protocol = 42[(attr_enum_value) = 41]; - optional bool field_ip_identification = 43[(attr_enum_value) = 42]; - optional bool field_dscp = 44[(attr_enum_value) = 43]; - optional bool field_ecn = 45[(attr_enum_value) = 44]; - optional bool field_ttl = 46[(attr_enum_value) = 45]; - optional bool field_tos = 47[(attr_enum_value) = 46]; - optional bool field_ip_flags = 48[(attr_enum_value) = 47]; - optional bool field_tcp_flags = 49[(attr_enum_value) = 48]; - optional bool field_acl_ip_type = 50[(attr_enum_value) = 49]; - optional bool field_acl_ip_frag = 51[(attr_enum_value) = 50]; - optional bool field_ipv6_flow_label = 52[(attr_enum_value) = 51]; - optional bool field_tc = 53[(attr_enum_value) = 52]; - optional bool field_icmp_type = 54[(attr_enum_value) = 53]; - optional bool field_icmp_code = 55[(attr_enum_value) = 54]; - optional bool field_icmpv6_type = 56[(attr_enum_value) = 55]; - optional bool field_icmpv6_code = 57[(attr_enum_value) = 56]; - optional bool field_packet_vlan = 58[(attr_enum_value) = 57]; - optional bool field_tunnel_vni = 59[(attr_enum_value) = 58]; - optional bool field_has_vlan_tag = 60[(attr_enum_value) = 59]; - optional bool field_macsec_sci = 61[(attr_enum_value) = 60]; - optional bool field_mpls_label0_label = 62[(attr_enum_value) = 61]; - optional bool field_mpls_label0_ttl = 63[(attr_enum_value) = 62]; - optional bool field_mpls_label0_exp = 64[(attr_enum_value) = 63]; - optional bool field_mpls_label0_bos = 65[(attr_enum_value) = 64]; - optional bool field_mpls_label1_label = 66[(attr_enum_value) = 65]; - optional bool field_mpls_label1_ttl = 67[(attr_enum_value) = 66]; - optional bool field_mpls_label1_exp = 68[(attr_enum_value) = 67]; - optional bool field_mpls_label1_bos = 69[(attr_enum_value) = 68]; - optional bool field_mpls_label2_label = 70[(attr_enum_value) = 69]; - optional bool field_mpls_label2_ttl = 71[(attr_enum_value) = 70]; - optional bool field_mpls_label2_exp = 72[(attr_enum_value) = 71]; - optional bool field_mpls_label2_bos = 73[(attr_enum_value) = 72]; - optional bool field_mpls_label3_label = 74[(attr_enum_value) = 73]; - optional bool field_mpls_label3_ttl = 75[(attr_enum_value) = 74]; - optional bool field_mpls_label3_exp = 76[(attr_enum_value) = 75]; - optional bool field_mpls_label3_bos = 77[(attr_enum_value) = 76]; - optional bool field_mpls_label4_label = 78[(attr_enum_value) = 77]; - optional bool field_mpls_label4_ttl = 79[(attr_enum_value) = 78]; - optional bool field_mpls_label4_exp = 80[(attr_enum_value) = 79]; - optional bool field_mpls_label4_bos = 81[(attr_enum_value) = 80]; - optional bool field_fdb_dst_user_meta = 82[(attr_enum_value) = 81]; - optional bool field_route_dst_user_meta = 83[(attr_enum_value) = 82]; - optional bool field_neighbor_dst_user_meta = 84[(attr_enum_value) = 83]; - optional bool field_port_user_meta = 85[(attr_enum_value) = 84]; - optional bool field_vlan_user_meta = 86[(attr_enum_value) = 85]; - optional bool field_acl_user_meta = 87[(attr_enum_value) = 86]; - optional bool field_fdb_npu_meta_dst_hit = 88[(attr_enum_value) = 87]; - optional bool field_neighbor_npu_meta_dst_hit = 89[(attr_enum_value) = 88]; - optional bool field_route_npu_meta_dst_hit = 90[(attr_enum_value) = 89]; - optional bool field_bth_opcode = 91[(attr_enum_value) = 90]; - optional bool field_aeth_syndrome = 92[(attr_enum_value) = 91]; - map user_defined_field_group_min = 93[(attr_enum_value) = 92]; - repeated AclRangeType field_acl_range_type = 94[(attr_enum_value) = 93]; - optional bool field_ipv6_next_header = 95[(attr_enum_value) = 94]; - optional bool field_gre_key = 96[(attr_enum_value) = 95]; - optional bool field_tam_int_type = 97[(attr_enum_value) = 96]; - optional bool field_inner_src_mac = 98[(attr_enum_value) = 97]; - optional bool field_inner_dst_mac = 99[(attr_enum_value) = 98]; - optional bool field_vrf_id = 100[(attr_enum_value) = 99]; - optional bool field_ipmc_npu_meta_dst_hit = 101[(attr_enum_value) = 100]; - optional bool field_tunnel_terminated = 102[(attr_enum_value) = 101]; - optional AclTableMatchType acl_table_match_type = 103[(attr_enum_value) = 105]; - optional AclFieldData field_valid_bits_src_ipv6 = 104[(attr_enum_value) = 106]; - optional AclFieldData field_valid_bits_dst_ipv6 = 105[(attr_enum_value) = 107]; + option (sai_type) = OBJECT_TYPE_ACL_TABLE; + uint64 switch = 1; + optional AclStage acl_stage = 2 [(attr_enum_value) = 1]; + repeated AclBindPointType acl_bind_point_type_list = 3 + [(attr_enum_value) = 2]; + optional uint32 size = 4 [(attr_enum_value) = 3]; + repeated AclActionType acl_action_type_list = 5 [(attr_enum_value) = 4]; + optional bool field_src_ipv6 = 6 [(attr_enum_value) = 5]; + optional bool field_src_ipv6_word3 = 7 [(attr_enum_value) = 6]; + optional bool field_src_ipv6_word2 = 8 [(attr_enum_value) = 7]; + optional bool field_src_ipv6_word1 = 9 [(attr_enum_value) = 8]; + optional bool field_src_ipv6_word0 = 10 [(attr_enum_value) = 9]; + optional bool field_dst_ipv6 = 11 [(attr_enum_value) = 10]; + optional bool field_dst_ipv6_word3 = 12 [(attr_enum_value) = 11]; + optional bool field_dst_ipv6_word2 = 13 [(attr_enum_value) = 12]; + optional bool field_dst_ipv6_word1 = 14 [(attr_enum_value) = 13]; + optional bool field_dst_ipv6_word0 = 15 [(attr_enum_value) = 14]; + optional bool field_inner_src_ipv6 = 16 [(attr_enum_value) = 15]; + optional bool field_inner_dst_ipv6 = 17 [(attr_enum_value) = 16]; + optional bool field_src_mac = 18 [(attr_enum_value) = 17]; + optional bool field_dst_mac = 19 [(attr_enum_value) = 18]; + optional bool field_src_ip = 20 [(attr_enum_value) = 19]; + optional bool field_dst_ip = 21 [(attr_enum_value) = 20]; + optional bool field_inner_src_ip = 22 [(attr_enum_value) = 21]; + optional bool field_inner_dst_ip = 23 [(attr_enum_value) = 22]; + optional bool field_in_ports = 24 [(attr_enum_value) = 23]; + optional bool field_out_ports = 25 [(attr_enum_value) = 24]; + optional bool field_in_port = 26 [(attr_enum_value) = 25]; + optional bool field_out_port = 27 [(attr_enum_value) = 26]; + optional bool field_src_port = 28 [(attr_enum_value) = 27]; + optional bool field_outer_vlan_id = 29 [(attr_enum_value) = 28]; + optional bool field_outer_vlan_pri = 30 [(attr_enum_value) = 29]; + optional bool field_outer_vlan_cfi = 31 [(attr_enum_value) = 30]; + optional bool field_inner_vlan_id = 32 [(attr_enum_value) = 31]; + optional bool field_inner_vlan_pri = 33 [(attr_enum_value) = 32]; + optional bool field_inner_vlan_cfi = 34 [(attr_enum_value) = 33]; + optional bool field_l4_src_port = 35 [(attr_enum_value) = 34]; + optional bool field_l4_dst_port = 36 [(attr_enum_value) = 35]; + optional bool field_inner_l4_src_port = 37 [(attr_enum_value) = 36]; + optional bool field_inner_l4_dst_port = 38 [(attr_enum_value) = 37]; + optional bool field_ether_type = 39 [(attr_enum_value) = 38]; + optional bool field_inner_ether_type = 40 [(attr_enum_value) = 39]; + optional bool field_ip_protocol = 41 [(attr_enum_value) = 40]; + optional bool field_inner_ip_protocol = 42 [(attr_enum_value) = 41]; + optional bool field_ip_identification = 43 [(attr_enum_value) = 42]; + optional bool field_dscp = 44 [(attr_enum_value) = 43]; + optional bool field_ecn = 45 [(attr_enum_value) = 44]; + optional bool field_ttl = 46 [(attr_enum_value) = 45]; + optional bool field_tos = 47 [(attr_enum_value) = 46]; + optional bool field_ip_flags = 48 [(attr_enum_value) = 47]; + optional bool field_tcp_flags = 49 [(attr_enum_value) = 48]; + optional bool field_acl_ip_type = 50 [(attr_enum_value) = 49]; + optional bool field_acl_ip_frag = 51 [(attr_enum_value) = 50]; + optional bool field_ipv6_flow_label = 52 [(attr_enum_value) = 51]; + optional bool field_tc = 53 [(attr_enum_value) = 52]; + optional bool field_icmp_type = 54 [(attr_enum_value) = 53]; + optional bool field_icmp_code = 55 [(attr_enum_value) = 54]; + optional bool field_icmpv6_type = 56 [(attr_enum_value) = 55]; + optional bool field_icmpv6_code = 57 [(attr_enum_value) = 56]; + optional bool field_packet_vlan = 58 [(attr_enum_value) = 57]; + optional bool field_tunnel_vni = 59 [(attr_enum_value) = 58]; + optional bool field_has_vlan_tag = 60 [(attr_enum_value) = 59]; + optional bool field_macsec_sci = 61 [(attr_enum_value) = 60]; + optional bool field_mpls_label0_label = 62 [(attr_enum_value) = 61]; + optional bool field_mpls_label0_ttl = 63 [(attr_enum_value) = 62]; + optional bool field_mpls_label0_exp = 64 [(attr_enum_value) = 63]; + optional bool field_mpls_label0_bos = 65 [(attr_enum_value) = 64]; + optional bool field_mpls_label1_label = 66 [(attr_enum_value) = 65]; + optional bool field_mpls_label1_ttl = 67 [(attr_enum_value) = 66]; + optional bool field_mpls_label1_exp = 68 [(attr_enum_value) = 67]; + optional bool field_mpls_label1_bos = 69 [(attr_enum_value) = 68]; + optional bool field_mpls_label2_label = 70 [(attr_enum_value) = 69]; + optional bool field_mpls_label2_ttl = 71 [(attr_enum_value) = 70]; + optional bool field_mpls_label2_exp = 72 [(attr_enum_value) = 71]; + optional bool field_mpls_label2_bos = 73 [(attr_enum_value) = 72]; + optional bool field_mpls_label3_label = 74 [(attr_enum_value) = 73]; + optional bool field_mpls_label3_ttl = 75 [(attr_enum_value) = 74]; + optional bool field_mpls_label3_exp = 76 [(attr_enum_value) = 75]; + optional bool field_mpls_label3_bos = 77 [(attr_enum_value) = 76]; + optional bool field_mpls_label4_label = 78 [(attr_enum_value) = 77]; + optional bool field_mpls_label4_ttl = 79 [(attr_enum_value) = 78]; + optional bool field_mpls_label4_exp = 80 [(attr_enum_value) = 79]; + optional bool field_mpls_label4_bos = 81 [(attr_enum_value) = 80]; + optional bool field_fdb_dst_user_meta = 82 [(attr_enum_value) = 81]; + optional bool field_route_dst_user_meta = 83 [(attr_enum_value) = 82]; + optional bool field_neighbor_dst_user_meta = 84 [(attr_enum_value) = 83]; + optional bool field_port_user_meta = 85 [(attr_enum_value) = 84]; + optional bool field_vlan_user_meta = 86 [(attr_enum_value) = 85]; + optional bool field_acl_user_meta = 87 [(attr_enum_value) = 86]; + optional bool field_fdb_npu_meta_dst_hit = 88 [(attr_enum_value) = 87]; + optional bool field_neighbor_npu_meta_dst_hit = 89 [(attr_enum_value) = 88]; + optional bool field_route_npu_meta_dst_hit = 90 [(attr_enum_value) = 89]; + optional bool field_bth_opcode = 91 [(attr_enum_value) = 90]; + optional bool field_aeth_syndrome = 92 [(attr_enum_value) = 91]; + map user_defined_field_group_min = 93 + [(attr_enum_value) = 92]; + repeated AclRangeType field_acl_range_type = 94 [(attr_enum_value) = 93]; + optional bool field_ipv6_next_header = 95 [(attr_enum_value) = 94]; + optional bool field_gre_key = 96 [(attr_enum_value) = 95]; + optional bool field_tam_int_type = 97 [(attr_enum_value) = 96]; + optional bool field_inner_src_mac = 98 [(attr_enum_value) = 97]; + optional bool field_inner_dst_mac = 99 [(attr_enum_value) = 98]; + optional bool field_vrf_id = 100 [(attr_enum_value) = 99]; + optional bool field_ipmc_npu_meta_dst_hit = 101 [(attr_enum_value) = 100]; + optional bool field_tunnel_terminated = 102 [(attr_enum_value) = 101]; + optional AclTableMatchType acl_table_match_type = 103 + [(attr_enum_value) = 105]; + optional AclFieldData field_valid_bits_src_ipv6 = 104 + [(attr_enum_value) = 106]; + optional AclFieldData field_valid_bits_dst_ipv6 = 105 + [(attr_enum_value) = 107]; } message CreateAclTableResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclTableRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclTableResponse { -} +message RemoveAclTableResponse {} message GetAclTableAttributeRequest { - uint64 oid = 1; - repeated AclTableAttr attr_type = 2; + uint64 oid = 1; + repeated AclTableAttr attr_type = 2; } message GetAclTableAttributeResponse { - AclTableAttribute attr = 1; + AclTableAttribute attr = 1; } message CreateAclEntryRequest { - option (sai_type) = OBJECT_TYPE_ACL_ENTRY; - uint64 switch = 1; - optional uint64 table_id = 2[(attr_enum_value) = 1]; - optional uint32 priority = 3[(attr_enum_value) = 2]; - optional bool admin_state = 4[(attr_enum_value) = 3]; - optional AclFieldData field_src_ipv6 = 5[(attr_enum_value) = 4]; - optional AclFieldData field_src_ipv6_word3 = 6[(attr_enum_value) = 5]; - optional AclFieldData field_src_ipv6_word2 = 7[(attr_enum_value) = 6]; - optional AclFieldData field_src_ipv6_word1 = 8[(attr_enum_value) = 7]; - optional AclFieldData field_src_ipv6_word0 = 9[(attr_enum_value) = 8]; - optional AclFieldData field_dst_ipv6 = 10[(attr_enum_value) = 9]; - optional AclFieldData field_dst_ipv6_word3 = 11[(attr_enum_value) = 10]; - optional AclFieldData field_dst_ipv6_word2 = 12[(attr_enum_value) = 11]; - optional AclFieldData field_dst_ipv6_word1 = 13[(attr_enum_value) = 12]; - optional AclFieldData field_dst_ipv6_word0 = 14[(attr_enum_value) = 13]; - optional AclFieldData field_inner_src_ipv6 = 15[(attr_enum_value) = 14]; - optional AclFieldData field_inner_dst_ipv6 = 16[(attr_enum_value) = 15]; - optional AclFieldData field_src_mac = 17[(attr_enum_value) = 16]; - optional AclFieldData field_dst_mac = 18[(attr_enum_value) = 17]; - optional AclFieldData field_src_ip = 19[(attr_enum_value) = 18]; - optional AclFieldData field_dst_ip = 20[(attr_enum_value) = 19]; - optional AclFieldData field_inner_src_ip = 21[(attr_enum_value) = 20]; - optional AclFieldData field_inner_dst_ip = 22[(attr_enum_value) = 21]; - optional AclFieldData field_in_ports = 23[(attr_enum_value) = 22]; - optional AclFieldData field_out_ports = 24[(attr_enum_value) = 23]; - optional AclFieldData field_in_port = 25[(attr_enum_value) = 24]; - optional AclFieldData field_out_port = 26[(attr_enum_value) = 25]; - optional AclFieldData field_src_port = 27[(attr_enum_value) = 26]; - optional AclFieldData field_outer_vlan_id = 28[(attr_enum_value) = 27]; - optional AclFieldData field_outer_vlan_pri = 29[(attr_enum_value) = 28]; - optional AclFieldData field_outer_vlan_cfi = 30[(attr_enum_value) = 29]; - optional AclFieldData field_inner_vlan_id = 31[(attr_enum_value) = 30]; - optional AclFieldData field_inner_vlan_pri = 32[(attr_enum_value) = 31]; - optional AclFieldData field_inner_vlan_cfi = 33[(attr_enum_value) = 32]; - optional AclFieldData field_l4_src_port = 34[(attr_enum_value) = 33]; - optional AclFieldData field_l4_dst_port = 35[(attr_enum_value) = 34]; - optional AclFieldData field_inner_l4_src_port = 36[(attr_enum_value) = 35]; - optional AclFieldData field_inner_l4_dst_port = 37[(attr_enum_value) = 36]; - optional AclFieldData field_ether_type = 38[(attr_enum_value) = 37]; - optional AclFieldData field_inner_ether_type = 39[(attr_enum_value) = 38]; - optional AclFieldData field_ip_protocol = 40[(attr_enum_value) = 39]; - optional AclFieldData field_inner_ip_protocol = 41[(attr_enum_value) = 40]; - optional AclFieldData field_ip_identification = 42[(attr_enum_value) = 41]; - optional AclFieldData field_dscp = 43[(attr_enum_value) = 42]; - optional AclFieldData field_ecn = 44[(attr_enum_value) = 43]; - optional AclFieldData field_ttl = 45[(attr_enum_value) = 44]; - optional AclFieldData field_tos = 46[(attr_enum_value) = 45]; - optional AclFieldData field_ip_flags = 47[(attr_enum_value) = 46]; - optional AclFieldData field_tcp_flags = 48[(attr_enum_value) = 47]; - optional AclFieldData field_acl_ip_type = 49[(attr_enum_value) = 48]; - optional AclFieldData field_acl_ip_frag = 50[(attr_enum_value) = 49]; - optional AclFieldData field_ipv6_flow_label = 51[(attr_enum_value) = 50]; - optional AclFieldData field_tc = 52[(attr_enum_value) = 51]; - optional AclFieldData field_icmp_type = 53[(attr_enum_value) = 52]; - optional AclFieldData field_icmp_code = 54[(attr_enum_value) = 53]; - optional AclFieldData field_icmpv6_type = 55[(attr_enum_value) = 54]; - optional AclFieldData field_icmpv6_code = 56[(attr_enum_value) = 55]; - optional AclFieldData field_packet_vlan = 57[(attr_enum_value) = 56]; - optional AclFieldData field_tunnel_vni = 58[(attr_enum_value) = 57]; - optional AclFieldData field_has_vlan_tag = 59[(attr_enum_value) = 58]; - optional AclFieldData field_macsec_sci = 60[(attr_enum_value) = 59]; - optional AclFieldData field_mpls_label0_label = 61[(attr_enum_value) = 60]; - optional AclFieldData field_mpls_label0_ttl = 62[(attr_enum_value) = 61]; - optional AclFieldData field_mpls_label0_exp = 63[(attr_enum_value) = 62]; - optional AclFieldData field_mpls_label0_bos = 64[(attr_enum_value) = 63]; - optional AclFieldData field_mpls_label1_label = 65[(attr_enum_value) = 64]; - optional AclFieldData field_mpls_label1_ttl = 66[(attr_enum_value) = 65]; - optional AclFieldData field_mpls_label1_exp = 67[(attr_enum_value) = 66]; - optional AclFieldData field_mpls_label1_bos = 68[(attr_enum_value) = 67]; - optional AclFieldData field_mpls_label2_label = 69[(attr_enum_value) = 68]; - optional AclFieldData field_mpls_label2_ttl = 70[(attr_enum_value) = 69]; - optional AclFieldData field_mpls_label2_exp = 71[(attr_enum_value) = 70]; - optional AclFieldData field_mpls_label2_bos = 72[(attr_enum_value) = 71]; - optional AclFieldData field_mpls_label3_label = 73[(attr_enum_value) = 72]; - optional AclFieldData field_mpls_label3_ttl = 74[(attr_enum_value) = 73]; - optional AclFieldData field_mpls_label3_exp = 75[(attr_enum_value) = 74]; - optional AclFieldData field_mpls_label3_bos = 76[(attr_enum_value) = 75]; - optional AclFieldData field_mpls_label4_label = 77[(attr_enum_value) = 76]; - optional AclFieldData field_mpls_label4_ttl = 78[(attr_enum_value) = 77]; - optional AclFieldData field_mpls_label4_exp = 79[(attr_enum_value) = 78]; - optional AclFieldData field_mpls_label4_bos = 80[(attr_enum_value) = 79]; - optional AclFieldData field_fdb_dst_user_meta = 81[(attr_enum_value) = 80]; - optional AclFieldData field_route_dst_user_meta = 82[(attr_enum_value) = 81]; - optional AclFieldData field_neighbor_dst_user_meta = 83[(attr_enum_value) = 82]; - optional AclFieldData field_port_user_meta = 84[(attr_enum_value) = 83]; - optional AclFieldData field_vlan_user_meta = 85[(attr_enum_value) = 84]; - optional AclFieldData field_acl_user_meta = 86[(attr_enum_value) = 85]; - optional AclFieldData field_fdb_npu_meta_dst_hit = 87[(attr_enum_value) = 86]; - optional AclFieldData field_neighbor_npu_meta_dst_hit = 88[(attr_enum_value) = 87]; - optional AclFieldData field_route_npu_meta_dst_hit = 89[(attr_enum_value) = 88]; - optional AclFieldData field_bth_opcode = 90[(attr_enum_value) = 89]; - optional AclFieldData field_aeth_syndrome = 91[(attr_enum_value) = 90]; - map user_defined_field_group_min = 92[(attr_enum_value) = 91]; - optional AclFieldData field_acl_range_type = 93[(attr_enum_value) = 92]; - optional AclFieldData field_ipv6_next_header = 94[(attr_enum_value) = 93]; - optional AclFieldData field_gre_key = 95[(attr_enum_value) = 94]; - optional AclFieldData field_tam_int_type = 96[(attr_enum_value) = 95]; - optional AclFieldData field_inner_src_mac = 97[(attr_enum_value) = 96]; - optional AclFieldData field_inner_dst_mac = 98[(attr_enum_value) = 97]; - optional AclFieldData field_vrf_id = 99[(attr_enum_value) = 98]; - optional AclFieldData field_ipmc_npu_meta_dst_hit = 100[(attr_enum_value) = 99]; - optional AclFieldData field_tunnel_terminated = 101[(attr_enum_value) = 100]; - optional AclActionData action_redirect = 102[(attr_enum_value) = 101]; - optional AclActionData action_endpoint_ip = 103[(attr_enum_value) = 102]; - optional AclActionData action_redirect_list = 104[(attr_enum_value) = 103]; - optional AclActionData action_packet_action = 105[(attr_enum_value) = 104]; - optional AclActionData action_flood = 106[(attr_enum_value) = 105]; - optional AclActionData action_counter = 107[(attr_enum_value) = 106]; - optional AclActionData action_mirror_ingress = 108[(attr_enum_value) = 107]; - optional AclActionData action_mirror_egress = 109[(attr_enum_value) = 108]; - optional AclActionData action_set_policer = 110[(attr_enum_value) = 109]; - optional AclActionData action_decrement_ttl = 111[(attr_enum_value) = 110]; - optional AclActionData action_set_tc = 112[(attr_enum_value) = 111]; - optional AclActionData action_set_packet_color = 113[(attr_enum_value) = 112]; - optional AclActionData action_set_inner_vlan_id = 114[(attr_enum_value) = 113]; - optional AclActionData action_set_inner_vlan_pri = 115[(attr_enum_value) = 114]; - optional AclActionData action_set_outer_vlan_id = 116[(attr_enum_value) = 115]; - optional AclActionData action_set_outer_vlan_pri = 117[(attr_enum_value) = 116]; - optional AclActionData action_add_vlan_id = 118[(attr_enum_value) = 117]; - optional AclActionData action_add_vlan_pri = 119[(attr_enum_value) = 118]; - optional AclActionData action_set_src_mac = 120[(attr_enum_value) = 119]; - optional AclActionData action_set_dst_mac = 121[(attr_enum_value) = 120]; - optional AclActionData action_set_src_ip = 122[(attr_enum_value) = 121]; - optional AclActionData action_set_dst_ip = 123[(attr_enum_value) = 122]; - optional AclActionData action_set_src_ipv6 = 124[(attr_enum_value) = 123]; - optional AclActionData action_set_dst_ipv6 = 125[(attr_enum_value) = 124]; - optional AclActionData action_set_dscp = 126[(attr_enum_value) = 125]; - optional AclActionData action_set_ecn = 127[(attr_enum_value) = 126]; - optional AclActionData action_set_l4_src_port = 128[(attr_enum_value) = 127]; - optional AclActionData action_set_l4_dst_port = 129[(attr_enum_value) = 128]; - optional AclActionData action_ingress_samplepacket_enable = 130[(attr_enum_value) = 129]; - optional AclActionData action_egress_samplepacket_enable = 131[(attr_enum_value) = 130]; - optional AclActionData action_set_acl_meta_data = 132[(attr_enum_value) = 131]; - optional AclActionData action_egress_block_port_list = 133[(attr_enum_value) = 132]; - optional AclActionData action_set_user_trap_id = 134[(attr_enum_value) = 133]; - optional AclActionData action_set_do_not_learn = 135[(attr_enum_value) = 134]; - optional AclActionData action_acl_dtel_flow_op = 136[(attr_enum_value) = 135]; - optional AclActionData action_dtel_int_session = 137[(attr_enum_value) = 136]; - optional AclActionData action_dtel_drop_report_enable = 138[(attr_enum_value) = 137]; - optional AclActionData action_dtel_tail_drop_report_enable = 139[(attr_enum_value) = 138]; - optional AclActionData action_dtel_flow_sample_percent = 140[(attr_enum_value) = 139]; - optional AclActionData action_dtel_report_all_packets = 141[(attr_enum_value) = 140]; - optional AclActionData action_no_nat = 142[(attr_enum_value) = 141]; - optional AclActionData action_int_insert = 143[(attr_enum_value) = 142]; - optional AclActionData action_int_delete = 144[(attr_enum_value) = 143]; - optional AclActionData action_int_report_flow = 145[(attr_enum_value) = 144]; - optional AclActionData action_int_report_drops = 146[(attr_enum_value) = 145]; - optional AclActionData action_int_report_tail_drops = 147[(attr_enum_value) = 146]; - optional AclActionData action_tam_int_object = 148[(attr_enum_value) = 147]; - optional AclActionData action_set_isolation_group = 149[(attr_enum_value) = 148]; - optional AclActionData action_macsec_flow = 150[(attr_enum_value) = 149]; - optional AclActionData action_set_lag_hash_id = 151[(attr_enum_value) = 150]; - optional AclActionData action_set_ecmp_hash_id = 152[(attr_enum_value) = 151]; - optional AclActionData action_set_vrf = 153[(attr_enum_value) = 152]; - optional AclActionData action_set_forwarding_class = 154[(attr_enum_value) = 153]; - optional AclActionData action_set_ars_monitoring = 155[(attr_enum_value) = 154]; - optional AclActionData action_set_ars_object = 156[(attr_enum_value) = 155]; - optional AclActionData action_disable_ars_forwarding = 157[(attr_enum_value) = 156]; - optional AclActionData action_chain_redirect = 158[(attr_enum_value) = 157]; + option (sai_type) = OBJECT_TYPE_ACL_ENTRY; + uint64 switch = 1; + optional uint64 table_id = 2 [(attr_enum_value) = 1]; + optional uint32 priority = 3 [(attr_enum_value) = 2]; + optional bool admin_state = 4 [(attr_enum_value) = 3]; + optional AclFieldData field_src_ipv6 = 5 [(attr_enum_value) = 4]; + optional AclFieldData field_src_ipv6_word3 = 6 [(attr_enum_value) = 5]; + optional AclFieldData field_src_ipv6_word2 = 7 [(attr_enum_value) = 6]; + optional AclFieldData field_src_ipv6_word1 = 8 [(attr_enum_value) = 7]; + optional AclFieldData field_src_ipv6_word0 = 9 [(attr_enum_value) = 8]; + optional AclFieldData field_dst_ipv6 = 10 [(attr_enum_value) = 9]; + optional AclFieldData field_dst_ipv6_word3 = 11 [(attr_enum_value) = 10]; + optional AclFieldData field_dst_ipv6_word2 = 12 [(attr_enum_value) = 11]; + optional AclFieldData field_dst_ipv6_word1 = 13 [(attr_enum_value) = 12]; + optional AclFieldData field_dst_ipv6_word0 = 14 [(attr_enum_value) = 13]; + optional AclFieldData field_inner_src_ipv6 = 15 [(attr_enum_value) = 14]; + optional AclFieldData field_inner_dst_ipv6 = 16 [(attr_enum_value) = 15]; + optional AclFieldData field_src_mac = 17 [(attr_enum_value) = 16]; + optional AclFieldData field_dst_mac = 18 [(attr_enum_value) = 17]; + optional AclFieldData field_src_ip = 19 [(attr_enum_value) = 18]; + optional AclFieldData field_dst_ip = 20 [(attr_enum_value) = 19]; + optional AclFieldData field_inner_src_ip = 21 [(attr_enum_value) = 20]; + optional AclFieldData field_inner_dst_ip = 22 [(attr_enum_value) = 21]; + optional AclFieldData field_in_ports = 23 [(attr_enum_value) = 22]; + optional AclFieldData field_out_ports = 24 [(attr_enum_value) = 23]; + optional AclFieldData field_in_port = 25 [(attr_enum_value) = 24]; + optional AclFieldData field_out_port = 26 [(attr_enum_value) = 25]; + optional AclFieldData field_src_port = 27 [(attr_enum_value) = 26]; + optional AclFieldData field_outer_vlan_id = 28 [(attr_enum_value) = 27]; + optional AclFieldData field_outer_vlan_pri = 29 [(attr_enum_value) = 28]; + optional AclFieldData field_outer_vlan_cfi = 30 [(attr_enum_value) = 29]; + optional AclFieldData field_inner_vlan_id = 31 [(attr_enum_value) = 30]; + optional AclFieldData field_inner_vlan_pri = 32 [(attr_enum_value) = 31]; + optional AclFieldData field_inner_vlan_cfi = 33 [(attr_enum_value) = 32]; + optional AclFieldData field_l4_src_port = 34 [(attr_enum_value) = 33]; + optional AclFieldData field_l4_dst_port = 35 [(attr_enum_value) = 34]; + optional AclFieldData field_inner_l4_src_port = 36 [(attr_enum_value) = 35]; + optional AclFieldData field_inner_l4_dst_port = 37 [(attr_enum_value) = 36]; + optional AclFieldData field_ether_type = 38 [(attr_enum_value) = 37]; + optional AclFieldData field_inner_ether_type = 39 [(attr_enum_value) = 38]; + optional AclFieldData field_ip_protocol = 40 [(attr_enum_value) = 39]; + optional AclFieldData field_inner_ip_protocol = 41 [(attr_enum_value) = 40]; + optional AclFieldData field_ip_identification = 42 [(attr_enum_value) = 41]; + optional AclFieldData field_dscp = 43 [(attr_enum_value) = 42]; + optional AclFieldData field_ecn = 44 [(attr_enum_value) = 43]; + optional AclFieldData field_ttl = 45 [(attr_enum_value) = 44]; + optional AclFieldData field_tos = 46 [(attr_enum_value) = 45]; + optional AclFieldData field_ip_flags = 47 [(attr_enum_value) = 46]; + optional AclFieldData field_tcp_flags = 48 [(attr_enum_value) = 47]; + optional AclFieldData field_acl_ip_type = 49 [(attr_enum_value) = 48]; + optional AclFieldData field_acl_ip_frag = 50 [(attr_enum_value) = 49]; + optional AclFieldData field_ipv6_flow_label = 51 [(attr_enum_value) = 50]; + optional AclFieldData field_tc = 52 [(attr_enum_value) = 51]; + optional AclFieldData field_icmp_type = 53 [(attr_enum_value) = 52]; + optional AclFieldData field_icmp_code = 54 [(attr_enum_value) = 53]; + optional AclFieldData field_icmpv6_type = 55 [(attr_enum_value) = 54]; + optional AclFieldData field_icmpv6_code = 56 [(attr_enum_value) = 55]; + optional AclFieldData field_packet_vlan = 57 [(attr_enum_value) = 56]; + optional AclFieldData field_tunnel_vni = 58 [(attr_enum_value) = 57]; + optional AclFieldData field_has_vlan_tag = 59 [(attr_enum_value) = 58]; + optional AclFieldData field_macsec_sci = 60 [(attr_enum_value) = 59]; + optional AclFieldData field_mpls_label0_label = 61 [(attr_enum_value) = 60]; + optional AclFieldData field_mpls_label0_ttl = 62 [(attr_enum_value) = 61]; + optional AclFieldData field_mpls_label0_exp = 63 [(attr_enum_value) = 62]; + optional AclFieldData field_mpls_label0_bos = 64 [(attr_enum_value) = 63]; + optional AclFieldData field_mpls_label1_label = 65 [(attr_enum_value) = 64]; + optional AclFieldData field_mpls_label1_ttl = 66 [(attr_enum_value) = 65]; + optional AclFieldData field_mpls_label1_exp = 67 [(attr_enum_value) = 66]; + optional AclFieldData field_mpls_label1_bos = 68 [(attr_enum_value) = 67]; + optional AclFieldData field_mpls_label2_label = 69 [(attr_enum_value) = 68]; + optional AclFieldData field_mpls_label2_ttl = 70 [(attr_enum_value) = 69]; + optional AclFieldData field_mpls_label2_exp = 71 [(attr_enum_value) = 70]; + optional AclFieldData field_mpls_label2_bos = 72 [(attr_enum_value) = 71]; + optional AclFieldData field_mpls_label3_label = 73 [(attr_enum_value) = 72]; + optional AclFieldData field_mpls_label3_ttl = 74 [(attr_enum_value) = 73]; + optional AclFieldData field_mpls_label3_exp = 75 [(attr_enum_value) = 74]; + optional AclFieldData field_mpls_label3_bos = 76 [(attr_enum_value) = 75]; + optional AclFieldData field_mpls_label4_label = 77 [(attr_enum_value) = 76]; + optional AclFieldData field_mpls_label4_ttl = 78 [(attr_enum_value) = 77]; + optional AclFieldData field_mpls_label4_exp = 79 [(attr_enum_value) = 78]; + optional AclFieldData field_mpls_label4_bos = 80 [(attr_enum_value) = 79]; + optional AclFieldData field_fdb_dst_user_meta = 81 [(attr_enum_value) = 80]; + optional AclFieldData field_route_dst_user_meta = 82 [(attr_enum_value) = 81]; + optional AclFieldData field_neighbor_dst_user_meta = 83 + [(attr_enum_value) = 82]; + optional AclFieldData field_port_user_meta = 84 [(attr_enum_value) = 83]; + optional AclFieldData field_vlan_user_meta = 85 [(attr_enum_value) = 84]; + optional AclFieldData field_acl_user_meta = 86 [(attr_enum_value) = 85]; + optional AclFieldData field_fdb_npu_meta_dst_hit = 87 + [(attr_enum_value) = 86]; + optional AclFieldData field_neighbor_npu_meta_dst_hit = 88 + [(attr_enum_value) = 87]; + optional AclFieldData field_route_npu_meta_dst_hit = 89 + [(attr_enum_value) = 88]; + optional AclFieldData field_bth_opcode = 90 [(attr_enum_value) = 89]; + optional AclFieldData field_aeth_syndrome = 91 [(attr_enum_value) = 90]; + map user_defined_field_group_min = 92 + [(attr_enum_value) = 91]; + optional AclFieldData field_acl_range_type = 93 [(attr_enum_value) = 92]; + optional AclFieldData field_ipv6_next_header = 94 [(attr_enum_value) = 93]; + optional AclFieldData field_gre_key = 95 [(attr_enum_value) = 94]; + optional AclFieldData field_tam_int_type = 96 [(attr_enum_value) = 95]; + optional AclFieldData field_inner_src_mac = 97 [(attr_enum_value) = 96]; + optional AclFieldData field_inner_dst_mac = 98 [(attr_enum_value) = 97]; + optional AclFieldData field_vrf_id = 99 [(attr_enum_value) = 98]; + optional AclFieldData field_ipmc_npu_meta_dst_hit = 100 + [(attr_enum_value) = 99]; + optional AclFieldData field_tunnel_terminated = 101 [(attr_enum_value) = 100]; + optional AclActionData action_redirect = 102 [(attr_enum_value) = 101]; + optional AclActionData action_endpoint_ip = 103 [(attr_enum_value) = 102]; + optional AclActionData action_redirect_list = 104 [(attr_enum_value) = 103]; + optional AclActionData action_packet_action = 105 [(attr_enum_value) = 104]; + optional AclActionData action_flood = 106 [(attr_enum_value) = 105]; + optional AclActionData action_counter = 107 [(attr_enum_value) = 106]; + optional AclActionData action_mirror_ingress = 108 [(attr_enum_value) = 107]; + optional AclActionData action_mirror_egress = 109 [(attr_enum_value) = 108]; + optional AclActionData action_set_policer = 110 [(attr_enum_value) = 109]; + optional AclActionData action_decrement_ttl = 111 [(attr_enum_value) = 110]; + optional AclActionData action_set_tc = 112 [(attr_enum_value) = 111]; + optional AclActionData action_set_packet_color = 113 + [(attr_enum_value) = 112]; + optional AclActionData action_set_inner_vlan_id = 114 + [(attr_enum_value) = 113]; + optional AclActionData action_set_inner_vlan_pri = 115 + [(attr_enum_value) = 114]; + optional AclActionData action_set_outer_vlan_id = 116 + [(attr_enum_value) = 115]; + optional AclActionData action_set_outer_vlan_pri = 117 + [(attr_enum_value) = 116]; + optional AclActionData action_add_vlan_id = 118 [(attr_enum_value) = 117]; + optional AclActionData action_add_vlan_pri = 119 [(attr_enum_value) = 118]; + optional AclActionData action_set_src_mac = 120 [(attr_enum_value) = 119]; + optional AclActionData action_set_dst_mac = 121 [(attr_enum_value) = 120]; + optional AclActionData action_set_src_ip = 122 [(attr_enum_value) = 121]; + optional AclActionData action_set_dst_ip = 123 [(attr_enum_value) = 122]; + optional AclActionData action_set_src_ipv6 = 124 [(attr_enum_value) = 123]; + optional AclActionData action_set_dst_ipv6 = 125 [(attr_enum_value) = 124]; + optional AclActionData action_set_dscp = 126 [(attr_enum_value) = 125]; + optional AclActionData action_set_ecn = 127 [(attr_enum_value) = 126]; + optional AclActionData action_set_l4_src_port = 128 [(attr_enum_value) = 127]; + optional AclActionData action_set_l4_dst_port = 129 [(attr_enum_value) = 128]; + optional AclActionData action_ingress_samplepacket_enable = 130 + [(attr_enum_value) = 129]; + optional AclActionData action_egress_samplepacket_enable = 131 + [(attr_enum_value) = 130]; + optional AclActionData action_set_acl_meta_data = 132 + [(attr_enum_value) = 131]; + optional AclActionData action_egress_block_port_list = 133 + [(attr_enum_value) = 132]; + optional AclActionData action_set_user_trap_id = 134 + [(attr_enum_value) = 133]; + optional AclActionData action_set_do_not_learn = 135 + [(attr_enum_value) = 134]; + optional AclActionData action_acl_dtel_flow_op = 136 + [(attr_enum_value) = 135]; + optional AclActionData action_dtel_int_session = 137 + [(attr_enum_value) = 136]; + optional AclActionData action_dtel_drop_report_enable = 138 + [(attr_enum_value) = 137]; + optional AclActionData action_dtel_tail_drop_report_enable = 139 + [(attr_enum_value) = 138]; + optional AclActionData action_dtel_flow_sample_percent = 140 + [(attr_enum_value) = 139]; + optional AclActionData action_dtel_report_all_packets = 141 + [(attr_enum_value) = 140]; + optional AclActionData action_no_nat = 142 [(attr_enum_value) = 141]; + optional AclActionData action_int_insert = 143 [(attr_enum_value) = 142]; + optional AclActionData action_int_delete = 144 [(attr_enum_value) = 143]; + optional AclActionData action_int_report_flow = 145 [(attr_enum_value) = 144]; + optional AclActionData action_int_report_drops = 146 + [(attr_enum_value) = 145]; + optional AclActionData action_int_report_tail_drops = 147 + [(attr_enum_value) = 146]; + optional AclActionData action_tam_int_object = 148 [(attr_enum_value) = 147]; + optional AclActionData action_set_isolation_group = 149 + [(attr_enum_value) = 148]; + optional AclActionData action_macsec_flow = 150 [(attr_enum_value) = 149]; + optional AclActionData action_set_lag_hash_id = 151 [(attr_enum_value) = 150]; + optional AclActionData action_set_ecmp_hash_id = 152 + [(attr_enum_value) = 151]; + optional AclActionData action_set_vrf = 153 [(attr_enum_value) = 152]; + optional AclActionData action_set_forwarding_class = 154 + [(attr_enum_value) = 153]; + optional AclActionData action_set_ars_monitoring = 155 + [(attr_enum_value) = 154]; + optional AclActionData action_set_ars_object = 156 [(attr_enum_value) = 155]; + optional AclActionData action_disable_ars_forwarding = 157 + [(attr_enum_value) = 156]; + optional AclActionData action_chain_redirect = 158 [(attr_enum_value) = 157]; } message CreateAclEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclEntryResponse { -} +message RemoveAclEntryResponse {} message SetAclEntryAttributeRequest { - uint64 oid = 1; - optional uint32 priority = 2[(attr_enum_value) = 2]; - optional bool admin_state = 3[(attr_enum_value) = 3]; - optional AclFieldData field_src_ipv6 = 4[(attr_enum_value) = 4]; - optional AclFieldData field_src_ipv6_word3 = 5[(attr_enum_value) = 5]; - optional AclFieldData field_src_ipv6_word2 = 6[(attr_enum_value) = 6]; - optional AclFieldData field_src_ipv6_word1 = 7[(attr_enum_value) = 7]; - optional AclFieldData field_src_ipv6_word0 = 8[(attr_enum_value) = 8]; - optional AclFieldData field_dst_ipv6 = 9[(attr_enum_value) = 9]; - optional AclFieldData field_dst_ipv6_word3 = 10[(attr_enum_value) = 10]; - optional AclFieldData field_dst_ipv6_word2 = 11[(attr_enum_value) = 11]; - optional AclFieldData field_dst_ipv6_word1 = 12[(attr_enum_value) = 12]; - optional AclFieldData field_dst_ipv6_word0 = 13[(attr_enum_value) = 13]; - optional AclFieldData field_inner_src_ipv6 = 14[(attr_enum_value) = 14]; - optional AclFieldData field_inner_dst_ipv6 = 15[(attr_enum_value) = 15]; - optional AclFieldData field_src_mac = 16[(attr_enum_value) = 16]; - optional AclFieldData field_dst_mac = 17[(attr_enum_value) = 17]; - optional AclFieldData field_src_ip = 18[(attr_enum_value) = 18]; - optional AclFieldData field_dst_ip = 19[(attr_enum_value) = 19]; - optional AclFieldData field_inner_src_ip = 20[(attr_enum_value) = 20]; - optional AclFieldData field_inner_dst_ip = 21[(attr_enum_value) = 21]; - optional AclFieldData field_in_ports = 22[(attr_enum_value) = 22]; - optional AclFieldData field_out_ports = 23[(attr_enum_value) = 23]; - optional AclFieldData field_in_port = 24[(attr_enum_value) = 24]; - optional AclFieldData field_out_port = 25[(attr_enum_value) = 25]; - optional AclFieldData field_src_port = 26[(attr_enum_value) = 26]; - optional AclFieldData field_outer_vlan_id = 27[(attr_enum_value) = 27]; - optional AclFieldData field_outer_vlan_pri = 28[(attr_enum_value) = 28]; - optional AclFieldData field_outer_vlan_cfi = 29[(attr_enum_value) = 29]; - optional AclFieldData field_inner_vlan_id = 30[(attr_enum_value) = 30]; - optional AclFieldData field_inner_vlan_pri = 31[(attr_enum_value) = 31]; - optional AclFieldData field_inner_vlan_cfi = 32[(attr_enum_value) = 32]; - optional AclFieldData field_l4_src_port = 33[(attr_enum_value) = 33]; - optional AclFieldData field_l4_dst_port = 34[(attr_enum_value) = 34]; - optional AclFieldData field_inner_l4_src_port = 35[(attr_enum_value) = 35]; - optional AclFieldData field_inner_l4_dst_port = 36[(attr_enum_value) = 36]; - optional AclFieldData field_ether_type = 37[(attr_enum_value) = 37]; - optional AclFieldData field_inner_ether_type = 38[(attr_enum_value) = 38]; - optional AclFieldData field_ip_protocol = 39[(attr_enum_value) = 39]; - optional AclFieldData field_inner_ip_protocol = 40[(attr_enum_value) = 40]; - optional AclFieldData field_ip_identification = 41[(attr_enum_value) = 41]; - optional AclFieldData field_dscp = 42[(attr_enum_value) = 42]; - optional AclFieldData field_ecn = 43[(attr_enum_value) = 43]; - optional AclFieldData field_ttl = 44[(attr_enum_value) = 44]; - optional AclFieldData field_tos = 45[(attr_enum_value) = 45]; - optional AclFieldData field_ip_flags = 46[(attr_enum_value) = 46]; - optional AclFieldData field_tcp_flags = 47[(attr_enum_value) = 47]; - optional AclFieldData field_acl_ip_type = 48[(attr_enum_value) = 48]; - optional AclFieldData field_acl_ip_frag = 49[(attr_enum_value) = 49]; - optional AclFieldData field_ipv6_flow_label = 50[(attr_enum_value) = 50]; - optional AclFieldData field_tc = 51[(attr_enum_value) = 51]; - optional AclFieldData field_icmp_type = 52[(attr_enum_value) = 52]; - optional AclFieldData field_icmp_code = 53[(attr_enum_value) = 53]; - optional AclFieldData field_icmpv6_type = 54[(attr_enum_value) = 54]; - optional AclFieldData field_icmpv6_code = 55[(attr_enum_value) = 55]; - optional AclFieldData field_packet_vlan = 56[(attr_enum_value) = 56]; - optional AclFieldData field_tunnel_vni = 57[(attr_enum_value) = 57]; - optional AclFieldData field_has_vlan_tag = 58[(attr_enum_value) = 58]; - optional AclFieldData field_macsec_sci = 59[(attr_enum_value) = 59]; - optional AclFieldData field_mpls_label0_label = 60[(attr_enum_value) = 60]; - optional AclFieldData field_mpls_label0_ttl = 61[(attr_enum_value) = 61]; - optional AclFieldData field_mpls_label0_exp = 62[(attr_enum_value) = 62]; - optional AclFieldData field_mpls_label0_bos = 63[(attr_enum_value) = 63]; - optional AclFieldData field_mpls_label1_label = 64[(attr_enum_value) = 64]; - optional AclFieldData field_mpls_label1_ttl = 65[(attr_enum_value) = 65]; - optional AclFieldData field_mpls_label1_exp = 66[(attr_enum_value) = 66]; - optional AclFieldData field_mpls_label1_bos = 67[(attr_enum_value) = 67]; - optional AclFieldData field_mpls_label2_label = 68[(attr_enum_value) = 68]; - optional AclFieldData field_mpls_label2_ttl = 69[(attr_enum_value) = 69]; - optional AclFieldData field_mpls_label2_exp = 70[(attr_enum_value) = 70]; - optional AclFieldData field_mpls_label2_bos = 71[(attr_enum_value) = 71]; - optional AclFieldData field_mpls_label3_label = 72[(attr_enum_value) = 72]; - optional AclFieldData field_mpls_label3_ttl = 73[(attr_enum_value) = 73]; - optional AclFieldData field_mpls_label3_exp = 74[(attr_enum_value) = 74]; - optional AclFieldData field_mpls_label3_bos = 75[(attr_enum_value) = 75]; - optional AclFieldData field_mpls_label4_label = 76[(attr_enum_value) = 76]; - optional AclFieldData field_mpls_label4_ttl = 77[(attr_enum_value) = 77]; - optional AclFieldData field_mpls_label4_exp = 78[(attr_enum_value) = 78]; - optional AclFieldData field_mpls_label4_bos = 79[(attr_enum_value) = 79]; - optional AclFieldData field_fdb_dst_user_meta = 80[(attr_enum_value) = 80]; - optional AclFieldData field_route_dst_user_meta = 81[(attr_enum_value) = 81]; - optional AclFieldData field_neighbor_dst_user_meta = 82[(attr_enum_value) = 82]; - optional AclFieldData field_port_user_meta = 83[(attr_enum_value) = 83]; - optional AclFieldData field_vlan_user_meta = 84[(attr_enum_value) = 84]; - optional AclFieldData field_acl_user_meta = 85[(attr_enum_value) = 85]; - optional AclFieldData field_fdb_npu_meta_dst_hit = 86[(attr_enum_value) = 86]; - optional AclFieldData field_neighbor_npu_meta_dst_hit = 87[(attr_enum_value) = 87]; - optional AclFieldData field_route_npu_meta_dst_hit = 88[(attr_enum_value) = 88]; - optional AclFieldData field_bth_opcode = 89[(attr_enum_value) = 89]; - optional AclFieldData field_aeth_syndrome = 90[(attr_enum_value) = 90]; - map user_defined_field_group_min = 91[(attr_enum_value) = 91]; - optional AclFieldData field_acl_range_type = 92[(attr_enum_value) = 92]; - optional AclFieldData field_ipv6_next_header = 93[(attr_enum_value) = 93]; - optional AclFieldData field_gre_key = 94[(attr_enum_value) = 94]; - optional AclFieldData field_tam_int_type = 95[(attr_enum_value) = 95]; - optional AclFieldData field_inner_src_mac = 96[(attr_enum_value) = 96]; - optional AclFieldData field_inner_dst_mac = 97[(attr_enum_value) = 97]; - optional AclFieldData field_vrf_id = 98[(attr_enum_value) = 98]; - optional AclFieldData field_ipmc_npu_meta_dst_hit = 99[(attr_enum_value) = 99]; - optional AclFieldData field_tunnel_terminated = 100[(attr_enum_value) = 100]; - optional AclActionData action_redirect = 101[(attr_enum_value) = 101]; - optional AclActionData action_endpoint_ip = 102[(attr_enum_value) = 102]; - optional AclActionData action_redirect_list = 103[(attr_enum_value) = 103]; - optional AclActionData action_packet_action = 104[(attr_enum_value) = 104]; - optional AclActionData action_flood = 105[(attr_enum_value) = 105]; - optional AclActionData action_counter = 106[(attr_enum_value) = 106]; - optional AclActionData action_mirror_ingress = 107[(attr_enum_value) = 107]; - optional AclActionData action_mirror_egress = 108[(attr_enum_value) = 108]; - optional AclActionData action_set_policer = 109[(attr_enum_value) = 109]; - optional AclActionData action_decrement_ttl = 110[(attr_enum_value) = 110]; - optional AclActionData action_set_tc = 111[(attr_enum_value) = 111]; - optional AclActionData action_set_packet_color = 112[(attr_enum_value) = 112]; - optional AclActionData action_set_inner_vlan_id = 113[(attr_enum_value) = 113]; - optional AclActionData action_set_inner_vlan_pri = 114[(attr_enum_value) = 114]; - optional AclActionData action_set_outer_vlan_id = 115[(attr_enum_value) = 115]; - optional AclActionData action_set_outer_vlan_pri = 116[(attr_enum_value) = 116]; - optional AclActionData action_add_vlan_id = 117[(attr_enum_value) = 117]; - optional AclActionData action_add_vlan_pri = 118[(attr_enum_value) = 118]; - optional AclActionData action_set_src_mac = 119[(attr_enum_value) = 119]; - optional AclActionData action_set_dst_mac = 120[(attr_enum_value) = 120]; - optional AclActionData action_set_src_ip = 121[(attr_enum_value) = 121]; - optional AclActionData action_set_dst_ip = 122[(attr_enum_value) = 122]; - optional AclActionData action_set_src_ipv6 = 123[(attr_enum_value) = 123]; - optional AclActionData action_set_dst_ipv6 = 124[(attr_enum_value) = 124]; - optional AclActionData action_set_dscp = 125[(attr_enum_value) = 125]; - optional AclActionData action_set_ecn = 126[(attr_enum_value) = 126]; - optional AclActionData action_set_l4_src_port = 127[(attr_enum_value) = 127]; - optional AclActionData action_set_l4_dst_port = 128[(attr_enum_value) = 128]; - optional AclActionData action_ingress_samplepacket_enable = 129[(attr_enum_value) = 129]; - optional AclActionData action_egress_samplepacket_enable = 130[(attr_enum_value) = 130]; - optional AclActionData action_set_acl_meta_data = 131[(attr_enum_value) = 131]; - optional AclActionData action_egress_block_port_list = 132[(attr_enum_value) = 132]; - optional AclActionData action_set_user_trap_id = 133[(attr_enum_value) = 133]; - optional AclActionData action_set_do_not_learn = 134[(attr_enum_value) = 134]; - optional AclActionData action_acl_dtel_flow_op = 135[(attr_enum_value) = 135]; - optional AclActionData action_dtel_int_session = 136[(attr_enum_value) = 136]; - optional AclActionData action_dtel_drop_report_enable = 137[(attr_enum_value) = 137]; - optional AclActionData action_dtel_tail_drop_report_enable = 138[(attr_enum_value) = 138]; - optional AclActionData action_dtel_flow_sample_percent = 139[(attr_enum_value) = 139]; - optional AclActionData action_dtel_report_all_packets = 140[(attr_enum_value) = 140]; - optional AclActionData action_no_nat = 141[(attr_enum_value) = 141]; - optional AclActionData action_int_insert = 142[(attr_enum_value) = 142]; - optional AclActionData action_int_delete = 143[(attr_enum_value) = 143]; - optional AclActionData action_int_report_flow = 144[(attr_enum_value) = 144]; - optional AclActionData action_int_report_drops = 145[(attr_enum_value) = 145]; - optional AclActionData action_int_report_tail_drops = 146[(attr_enum_value) = 146]; - optional AclActionData action_tam_int_object = 147[(attr_enum_value) = 147]; - optional AclActionData action_set_isolation_group = 148[(attr_enum_value) = 148]; - optional AclActionData action_macsec_flow = 149[(attr_enum_value) = 149]; - optional AclActionData action_set_lag_hash_id = 150[(attr_enum_value) = 150]; - optional AclActionData action_set_ecmp_hash_id = 151[(attr_enum_value) = 151]; - optional AclActionData action_set_vrf = 152[(attr_enum_value) = 152]; - optional AclActionData action_set_forwarding_class = 153[(attr_enum_value) = 153]; - optional AclActionData action_set_ars_monitoring = 154[(attr_enum_value) = 154]; - optional AclActionData action_set_ars_object = 155[(attr_enum_value) = 155]; - optional AclActionData action_disable_ars_forwarding = 156[(attr_enum_value) = 156]; - optional AclActionData action_chain_redirect = 157[(attr_enum_value) = 157]; -} - -message SetAclEntryAttributeResponse { + uint64 oid = 1; + optional uint32 priority = 2 [(attr_enum_value) = 2]; + optional bool admin_state = 3 [(attr_enum_value) = 3]; + optional AclFieldData field_src_ipv6 = 4 [(attr_enum_value) = 4]; + optional AclFieldData field_src_ipv6_word3 = 5 [(attr_enum_value) = 5]; + optional AclFieldData field_src_ipv6_word2 = 6 [(attr_enum_value) = 6]; + optional AclFieldData field_src_ipv6_word1 = 7 [(attr_enum_value) = 7]; + optional AclFieldData field_src_ipv6_word0 = 8 [(attr_enum_value) = 8]; + optional AclFieldData field_dst_ipv6 = 9 [(attr_enum_value) = 9]; + optional AclFieldData field_dst_ipv6_word3 = 10 [(attr_enum_value) = 10]; + optional AclFieldData field_dst_ipv6_word2 = 11 [(attr_enum_value) = 11]; + optional AclFieldData field_dst_ipv6_word1 = 12 [(attr_enum_value) = 12]; + optional AclFieldData field_dst_ipv6_word0 = 13 [(attr_enum_value) = 13]; + optional AclFieldData field_inner_src_ipv6 = 14 [(attr_enum_value) = 14]; + optional AclFieldData field_inner_dst_ipv6 = 15 [(attr_enum_value) = 15]; + optional AclFieldData field_src_mac = 16 [(attr_enum_value) = 16]; + optional AclFieldData field_dst_mac = 17 [(attr_enum_value) = 17]; + optional AclFieldData field_src_ip = 18 [(attr_enum_value) = 18]; + optional AclFieldData field_dst_ip = 19 [(attr_enum_value) = 19]; + optional AclFieldData field_inner_src_ip = 20 [(attr_enum_value) = 20]; + optional AclFieldData field_inner_dst_ip = 21 [(attr_enum_value) = 21]; + optional AclFieldData field_in_ports = 22 [(attr_enum_value) = 22]; + optional AclFieldData field_out_ports = 23 [(attr_enum_value) = 23]; + optional AclFieldData field_in_port = 24 [(attr_enum_value) = 24]; + optional AclFieldData field_out_port = 25 [(attr_enum_value) = 25]; + optional AclFieldData field_src_port = 26 [(attr_enum_value) = 26]; + optional AclFieldData field_outer_vlan_id = 27 [(attr_enum_value) = 27]; + optional AclFieldData field_outer_vlan_pri = 28 [(attr_enum_value) = 28]; + optional AclFieldData field_outer_vlan_cfi = 29 [(attr_enum_value) = 29]; + optional AclFieldData field_inner_vlan_id = 30 [(attr_enum_value) = 30]; + optional AclFieldData field_inner_vlan_pri = 31 [(attr_enum_value) = 31]; + optional AclFieldData field_inner_vlan_cfi = 32 [(attr_enum_value) = 32]; + optional AclFieldData field_l4_src_port = 33 [(attr_enum_value) = 33]; + optional AclFieldData field_l4_dst_port = 34 [(attr_enum_value) = 34]; + optional AclFieldData field_inner_l4_src_port = 35 [(attr_enum_value) = 35]; + optional AclFieldData field_inner_l4_dst_port = 36 [(attr_enum_value) = 36]; + optional AclFieldData field_ether_type = 37 [(attr_enum_value) = 37]; + optional AclFieldData field_inner_ether_type = 38 [(attr_enum_value) = 38]; + optional AclFieldData field_ip_protocol = 39 [(attr_enum_value) = 39]; + optional AclFieldData field_inner_ip_protocol = 40 [(attr_enum_value) = 40]; + optional AclFieldData field_ip_identification = 41 [(attr_enum_value) = 41]; + optional AclFieldData field_dscp = 42 [(attr_enum_value) = 42]; + optional AclFieldData field_ecn = 43 [(attr_enum_value) = 43]; + optional AclFieldData field_ttl = 44 [(attr_enum_value) = 44]; + optional AclFieldData field_tos = 45 [(attr_enum_value) = 45]; + optional AclFieldData field_ip_flags = 46 [(attr_enum_value) = 46]; + optional AclFieldData field_tcp_flags = 47 [(attr_enum_value) = 47]; + optional AclFieldData field_acl_ip_type = 48 [(attr_enum_value) = 48]; + optional AclFieldData field_acl_ip_frag = 49 [(attr_enum_value) = 49]; + optional AclFieldData field_ipv6_flow_label = 50 [(attr_enum_value) = 50]; + optional AclFieldData field_tc = 51 [(attr_enum_value) = 51]; + optional AclFieldData field_icmp_type = 52 [(attr_enum_value) = 52]; + optional AclFieldData field_icmp_code = 53 [(attr_enum_value) = 53]; + optional AclFieldData field_icmpv6_type = 54 [(attr_enum_value) = 54]; + optional AclFieldData field_icmpv6_code = 55 [(attr_enum_value) = 55]; + optional AclFieldData field_packet_vlan = 56 [(attr_enum_value) = 56]; + optional AclFieldData field_tunnel_vni = 57 [(attr_enum_value) = 57]; + optional AclFieldData field_has_vlan_tag = 58 [(attr_enum_value) = 58]; + optional AclFieldData field_macsec_sci = 59 [(attr_enum_value) = 59]; + optional AclFieldData field_mpls_label0_label = 60 [(attr_enum_value) = 60]; + optional AclFieldData field_mpls_label0_ttl = 61 [(attr_enum_value) = 61]; + optional AclFieldData field_mpls_label0_exp = 62 [(attr_enum_value) = 62]; + optional AclFieldData field_mpls_label0_bos = 63 [(attr_enum_value) = 63]; + optional AclFieldData field_mpls_label1_label = 64 [(attr_enum_value) = 64]; + optional AclFieldData field_mpls_label1_ttl = 65 [(attr_enum_value) = 65]; + optional AclFieldData field_mpls_label1_exp = 66 [(attr_enum_value) = 66]; + optional AclFieldData field_mpls_label1_bos = 67 [(attr_enum_value) = 67]; + optional AclFieldData field_mpls_label2_label = 68 [(attr_enum_value) = 68]; + optional AclFieldData field_mpls_label2_ttl = 69 [(attr_enum_value) = 69]; + optional AclFieldData field_mpls_label2_exp = 70 [(attr_enum_value) = 70]; + optional AclFieldData field_mpls_label2_bos = 71 [(attr_enum_value) = 71]; + optional AclFieldData field_mpls_label3_label = 72 [(attr_enum_value) = 72]; + optional AclFieldData field_mpls_label3_ttl = 73 [(attr_enum_value) = 73]; + optional AclFieldData field_mpls_label3_exp = 74 [(attr_enum_value) = 74]; + optional AclFieldData field_mpls_label3_bos = 75 [(attr_enum_value) = 75]; + optional AclFieldData field_mpls_label4_label = 76 [(attr_enum_value) = 76]; + optional AclFieldData field_mpls_label4_ttl = 77 [(attr_enum_value) = 77]; + optional AclFieldData field_mpls_label4_exp = 78 [(attr_enum_value) = 78]; + optional AclFieldData field_mpls_label4_bos = 79 [(attr_enum_value) = 79]; + optional AclFieldData field_fdb_dst_user_meta = 80 [(attr_enum_value) = 80]; + optional AclFieldData field_route_dst_user_meta = 81 [(attr_enum_value) = 81]; + optional AclFieldData field_neighbor_dst_user_meta = 82 + [(attr_enum_value) = 82]; + optional AclFieldData field_port_user_meta = 83 [(attr_enum_value) = 83]; + optional AclFieldData field_vlan_user_meta = 84 [(attr_enum_value) = 84]; + optional AclFieldData field_acl_user_meta = 85 [(attr_enum_value) = 85]; + optional AclFieldData field_fdb_npu_meta_dst_hit = 86 + [(attr_enum_value) = 86]; + optional AclFieldData field_neighbor_npu_meta_dst_hit = 87 + [(attr_enum_value) = 87]; + optional AclFieldData field_route_npu_meta_dst_hit = 88 + [(attr_enum_value) = 88]; + optional AclFieldData field_bth_opcode = 89 [(attr_enum_value) = 89]; + optional AclFieldData field_aeth_syndrome = 90 [(attr_enum_value) = 90]; + map user_defined_field_group_min = 91 + [(attr_enum_value) = 91]; + optional AclFieldData field_acl_range_type = 92 [(attr_enum_value) = 92]; + optional AclFieldData field_ipv6_next_header = 93 [(attr_enum_value) = 93]; + optional AclFieldData field_gre_key = 94 [(attr_enum_value) = 94]; + optional AclFieldData field_tam_int_type = 95 [(attr_enum_value) = 95]; + optional AclFieldData field_inner_src_mac = 96 [(attr_enum_value) = 96]; + optional AclFieldData field_inner_dst_mac = 97 [(attr_enum_value) = 97]; + optional AclFieldData field_vrf_id = 98 [(attr_enum_value) = 98]; + optional AclFieldData field_ipmc_npu_meta_dst_hit = 99 + [(attr_enum_value) = 99]; + optional AclFieldData field_tunnel_terminated = 100 [(attr_enum_value) = 100]; + optional AclActionData action_redirect = 101 [(attr_enum_value) = 101]; + optional AclActionData action_endpoint_ip = 102 [(attr_enum_value) = 102]; + optional AclActionData action_redirect_list = 103 [(attr_enum_value) = 103]; + optional AclActionData action_packet_action = 104 [(attr_enum_value) = 104]; + optional AclActionData action_flood = 105 [(attr_enum_value) = 105]; + optional AclActionData action_counter = 106 [(attr_enum_value) = 106]; + optional AclActionData action_mirror_ingress = 107 [(attr_enum_value) = 107]; + optional AclActionData action_mirror_egress = 108 [(attr_enum_value) = 108]; + optional AclActionData action_set_policer = 109 [(attr_enum_value) = 109]; + optional AclActionData action_decrement_ttl = 110 [(attr_enum_value) = 110]; + optional AclActionData action_set_tc = 111 [(attr_enum_value) = 111]; + optional AclActionData action_set_packet_color = 112 + [(attr_enum_value) = 112]; + optional AclActionData action_set_inner_vlan_id = 113 + [(attr_enum_value) = 113]; + optional AclActionData action_set_inner_vlan_pri = 114 + [(attr_enum_value) = 114]; + optional AclActionData action_set_outer_vlan_id = 115 + [(attr_enum_value) = 115]; + optional AclActionData action_set_outer_vlan_pri = 116 + [(attr_enum_value) = 116]; + optional AclActionData action_add_vlan_id = 117 [(attr_enum_value) = 117]; + optional AclActionData action_add_vlan_pri = 118 [(attr_enum_value) = 118]; + optional AclActionData action_set_src_mac = 119 [(attr_enum_value) = 119]; + optional AclActionData action_set_dst_mac = 120 [(attr_enum_value) = 120]; + optional AclActionData action_set_src_ip = 121 [(attr_enum_value) = 121]; + optional AclActionData action_set_dst_ip = 122 [(attr_enum_value) = 122]; + optional AclActionData action_set_src_ipv6 = 123 [(attr_enum_value) = 123]; + optional AclActionData action_set_dst_ipv6 = 124 [(attr_enum_value) = 124]; + optional AclActionData action_set_dscp = 125 [(attr_enum_value) = 125]; + optional AclActionData action_set_ecn = 126 [(attr_enum_value) = 126]; + optional AclActionData action_set_l4_src_port = 127 [(attr_enum_value) = 127]; + optional AclActionData action_set_l4_dst_port = 128 [(attr_enum_value) = 128]; + optional AclActionData action_ingress_samplepacket_enable = 129 + [(attr_enum_value) = 129]; + optional AclActionData action_egress_samplepacket_enable = 130 + [(attr_enum_value) = 130]; + optional AclActionData action_set_acl_meta_data = 131 + [(attr_enum_value) = 131]; + optional AclActionData action_egress_block_port_list = 132 + [(attr_enum_value) = 132]; + optional AclActionData action_set_user_trap_id = 133 + [(attr_enum_value) = 133]; + optional AclActionData action_set_do_not_learn = 134 + [(attr_enum_value) = 134]; + optional AclActionData action_acl_dtel_flow_op = 135 + [(attr_enum_value) = 135]; + optional AclActionData action_dtel_int_session = 136 + [(attr_enum_value) = 136]; + optional AclActionData action_dtel_drop_report_enable = 137 + [(attr_enum_value) = 137]; + optional AclActionData action_dtel_tail_drop_report_enable = 138 + [(attr_enum_value) = 138]; + optional AclActionData action_dtel_flow_sample_percent = 139 + [(attr_enum_value) = 139]; + optional AclActionData action_dtel_report_all_packets = 140 + [(attr_enum_value) = 140]; + optional AclActionData action_no_nat = 141 [(attr_enum_value) = 141]; + optional AclActionData action_int_insert = 142 [(attr_enum_value) = 142]; + optional AclActionData action_int_delete = 143 [(attr_enum_value) = 143]; + optional AclActionData action_int_report_flow = 144 [(attr_enum_value) = 144]; + optional AclActionData action_int_report_drops = 145 + [(attr_enum_value) = 145]; + optional AclActionData action_int_report_tail_drops = 146 + [(attr_enum_value) = 146]; + optional AclActionData action_tam_int_object = 147 [(attr_enum_value) = 147]; + optional AclActionData action_set_isolation_group = 148 + [(attr_enum_value) = 148]; + optional AclActionData action_macsec_flow = 149 [(attr_enum_value) = 149]; + optional AclActionData action_set_lag_hash_id = 150 [(attr_enum_value) = 150]; + optional AclActionData action_set_ecmp_hash_id = 151 + [(attr_enum_value) = 151]; + optional AclActionData action_set_vrf = 152 [(attr_enum_value) = 152]; + optional AclActionData action_set_forwarding_class = 153 + [(attr_enum_value) = 153]; + optional AclActionData action_set_ars_monitoring = 154 + [(attr_enum_value) = 154]; + optional AclActionData action_set_ars_object = 155 [(attr_enum_value) = 155]; + optional AclActionData action_disable_ars_forwarding = 156 + [(attr_enum_value) = 156]; + optional AclActionData action_chain_redirect = 157 [(attr_enum_value) = 157]; } +message SetAclEntryAttributeResponse {} + message GetAclEntryAttributeRequest { - uint64 oid = 1; - repeated AclEntryAttr attr_type = 2; + uint64 oid = 1; + repeated AclEntryAttr attr_type = 2; } message GetAclEntryAttributeResponse { - AclEntryAttribute attr = 1; + AclEntryAttribute attr = 1; } message CreateAclCounterRequest { - option (sai_type) = OBJECT_TYPE_ACL_COUNTER; - uint64 switch = 1; - optional uint64 table_id = 2[(attr_enum_value) = 1]; - optional bool enable_packet_count = 3[(attr_enum_value) = 2]; - optional bool enable_byte_count = 4[(attr_enum_value) = 3]; - optional uint64 packets = 5[(attr_enum_value) = 4]; - optional uint64 bytes = 6[(attr_enum_value) = 5]; - optional bytes label = 7[(attr_enum_value) = 6]; + option (sai_type) = OBJECT_TYPE_ACL_COUNTER; + uint64 switch = 1; + optional uint64 table_id = 2 [(attr_enum_value) = 1]; + optional bool enable_packet_count = 3 [(attr_enum_value) = 2]; + optional bool enable_byte_count = 4 [(attr_enum_value) = 3]; + optional uint64 packets = 5 [(attr_enum_value) = 4]; + optional uint64 bytes = 6 [(attr_enum_value) = 5]; + optional bytes label = 7 [(attr_enum_value) = 6]; } message CreateAclCounterResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclCounterRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclCounterResponse { -} +message RemoveAclCounterResponse {} message SetAclCounterAttributeRequest { - uint64 oid = 1; - optional uint64 packets = 2[(attr_enum_value) = 4]; - optional uint64 bytes = 3[(attr_enum_value) = 5]; - optional bytes label = 4[(attr_enum_value) = 6]; + uint64 oid = 1; + optional uint64 packets = 2 [(attr_enum_value) = 4]; + optional uint64 bytes = 3 [(attr_enum_value) = 5]; + optional bytes label = 4 [(attr_enum_value) = 6]; } -message SetAclCounterAttributeResponse { -} +message SetAclCounterAttributeResponse {} message GetAclCounterAttributeRequest { - uint64 oid = 1; - repeated AclCounterAttr attr_type = 2; + uint64 oid = 1; + repeated AclCounterAttr attr_type = 2; } message GetAclCounterAttributeResponse { - AclCounterAttribute attr = 1; + AclCounterAttribute attr = 1; } message CreateAclRangeRequest { - option (sai_type) = OBJECT_TYPE_ACL_RANGE; - uint64 switch = 1; - optional AclRangeType type = 2[(attr_enum_value) = 1]; - optional Uint32Range limit = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_ACL_RANGE; + uint64 switch = 1; + optional AclRangeType type = 2 [(attr_enum_value) = 1]; + optional Uint32Range limit = 3 [(attr_enum_value) = 2]; } message CreateAclRangeResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclRangeRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclRangeResponse { -} +message RemoveAclRangeResponse {} message GetAclRangeAttributeRequest { - uint64 oid = 1; - repeated AclRangeAttr attr_type = 2; + uint64 oid = 1; + repeated AclRangeAttr attr_type = 2; } message GetAclRangeAttributeResponse { - AclRangeAttribute attr = 1; + AclRangeAttribute attr = 1; } message CreateAclTableGroupRequest { - option (sai_type) = OBJECT_TYPE_ACL_TABLE_GROUP; - uint64 switch = 1; - optional AclStage acl_stage = 2[(attr_enum_value) = 1]; - repeated AclBindPointType acl_bind_point_type_list = 3[(attr_enum_value) = 2]; - optional AclTableGroupType type = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_ACL_TABLE_GROUP; + uint64 switch = 1; + optional AclStage acl_stage = 2 [(attr_enum_value) = 1]; + repeated AclBindPointType acl_bind_point_type_list = 3 + [(attr_enum_value) = 2]; + optional AclTableGroupType type = 4 [(attr_enum_value) = 3]; } message CreateAclTableGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclTableGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclTableGroupResponse { -} +message RemoveAclTableGroupResponse {} message GetAclTableGroupAttributeRequest { - uint64 oid = 1; - repeated AclTableGroupAttr attr_type = 2; + uint64 oid = 1; + repeated AclTableGroupAttr attr_type = 2; } message GetAclTableGroupAttributeResponse { - AclTableGroupAttribute attr = 1; + AclTableGroupAttribute attr = 1; } message CreateAclTableGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 acl_table_group_id = 2[(attr_enum_value) = 1]; - optional uint64 acl_table_id = 3[(attr_enum_value) = 2]; - optional uint32 priority = 4[(attr_enum_value) = 3]; - optional uint64 acl_table_chain_group_id = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 acl_table_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 acl_table_id = 3 [(attr_enum_value) = 2]; + optional uint32 priority = 4 [(attr_enum_value) = 3]; + optional uint64 acl_table_chain_group_id = 5 [(attr_enum_value) = 4]; } message CreateAclTableGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclTableGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclTableGroupMemberResponse { -} +message RemoveAclTableGroupMemberResponse {} message SetAclTableGroupMemberAttributeRequest { - uint64 oid = 1; - optional uint64 acl_table_chain_group_id = 2[(attr_enum_value) = 4]; + uint64 oid = 1; + optional uint64 acl_table_chain_group_id = 2 [(attr_enum_value) = 4]; } -message SetAclTableGroupMemberAttributeResponse { -} +message SetAclTableGroupMemberAttributeResponse {} message GetAclTableGroupMemberAttributeRequest { - uint64 oid = 1; - repeated AclTableGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated AclTableGroupMemberAttr attr_type = 2; } message GetAclTableGroupMemberAttributeResponse { - AclTableGroupMemberAttribute attr = 1; + AclTableGroupMemberAttribute attr = 1; } message CreateAclTableChainGroupRequest { - option (sai_type) = OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; - uint64 switch = 1; - optional AclTableChainGroupType type = 2[(attr_enum_value) = 1]; - optional AclTableChainGroupStage stage = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; + uint64 switch = 1; + optional AclTableChainGroupType type = 2 [(attr_enum_value) = 1]; + optional AclTableChainGroupStage stage = 3 [(attr_enum_value) = 2]; } message CreateAclTableChainGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveAclTableChainGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveAclTableChainGroupResponse { -} +message RemoveAclTableChainGroupResponse {} message GetAclTableChainGroupAttributeRequest { - uint64 oid = 1; - repeated AclTableChainGroupAttr attr_type = 2; + uint64 oid = 1; + repeated AclTableChainGroupAttr attr_type = 2; } message GetAclTableChainGroupAttributeResponse { - AclTableChainGroupAttribute attr = 1; + AclTableChainGroupAttribute attr = 1; } - service Acl { - rpc CreateAclTable (CreateAclTableRequest) returns (CreateAclTableResponse) {} - rpc RemoveAclTable (RemoveAclTableRequest) returns (RemoveAclTableResponse) {} - rpc GetAclTableAttribute (GetAclTableAttributeRequest) returns (GetAclTableAttributeResponse) {} - rpc CreateAclEntry (CreateAclEntryRequest) returns (CreateAclEntryResponse) {} - rpc RemoveAclEntry (RemoveAclEntryRequest) returns (RemoveAclEntryResponse) {} - rpc SetAclEntryAttribute (SetAclEntryAttributeRequest) returns (SetAclEntryAttributeResponse) {} - rpc GetAclEntryAttribute (GetAclEntryAttributeRequest) returns (GetAclEntryAttributeResponse) {} - rpc CreateAclCounter (CreateAclCounterRequest) returns (CreateAclCounterResponse) {} - rpc RemoveAclCounter (RemoveAclCounterRequest) returns (RemoveAclCounterResponse) {} - rpc SetAclCounterAttribute (SetAclCounterAttributeRequest) returns (SetAclCounterAttributeResponse) {} - rpc GetAclCounterAttribute (GetAclCounterAttributeRequest) returns (GetAclCounterAttributeResponse) {} - rpc CreateAclRange (CreateAclRangeRequest) returns (CreateAclRangeResponse) {} - rpc RemoveAclRange (RemoveAclRangeRequest) returns (RemoveAclRangeResponse) {} - rpc GetAclRangeAttribute (GetAclRangeAttributeRequest) returns (GetAclRangeAttributeResponse) {} - rpc CreateAclTableGroup (CreateAclTableGroupRequest) returns (CreateAclTableGroupResponse) {} - rpc RemoveAclTableGroup (RemoveAclTableGroupRequest) returns (RemoveAclTableGroupResponse) {} - rpc GetAclTableGroupAttribute (GetAclTableGroupAttributeRequest) returns (GetAclTableGroupAttributeResponse) {} - rpc CreateAclTableGroupMember (CreateAclTableGroupMemberRequest) returns (CreateAclTableGroupMemberResponse) {} - rpc RemoveAclTableGroupMember (RemoveAclTableGroupMemberRequest) returns (RemoveAclTableGroupMemberResponse) {} - rpc SetAclTableGroupMemberAttribute (SetAclTableGroupMemberAttributeRequest) returns (SetAclTableGroupMemberAttributeResponse) {} - rpc GetAclTableGroupMemberAttribute (GetAclTableGroupMemberAttributeRequest) returns (GetAclTableGroupMemberAttributeResponse) {} - rpc CreateAclTableChainGroup (CreateAclTableChainGroupRequest) returns (CreateAclTableChainGroupResponse) {} - rpc RemoveAclTableChainGroup (RemoveAclTableChainGroupRequest) returns (RemoveAclTableChainGroupResponse) {} - rpc GetAclTableChainGroupAttribute (GetAclTableChainGroupAttributeRequest) returns (GetAclTableChainGroupAttributeResponse) {} + rpc CreateAclTable(CreateAclTableRequest) returns (CreateAclTableResponse) {} + rpc RemoveAclTable(RemoveAclTableRequest) returns (RemoveAclTableResponse) {} + rpc GetAclTableAttribute(GetAclTableAttributeRequest) + returns (GetAclTableAttributeResponse) {} + rpc CreateAclEntry(CreateAclEntryRequest) returns (CreateAclEntryResponse) {} + rpc RemoveAclEntry(RemoveAclEntryRequest) returns (RemoveAclEntryResponse) {} + rpc SetAclEntryAttribute(SetAclEntryAttributeRequest) + returns (SetAclEntryAttributeResponse) {} + rpc GetAclEntryAttribute(GetAclEntryAttributeRequest) + returns (GetAclEntryAttributeResponse) {} + rpc CreateAclCounter(CreateAclCounterRequest) + returns (CreateAclCounterResponse) {} + rpc RemoveAclCounter(RemoveAclCounterRequest) + returns (RemoveAclCounterResponse) {} + rpc SetAclCounterAttribute(SetAclCounterAttributeRequest) + returns (SetAclCounterAttributeResponse) {} + rpc GetAclCounterAttribute(GetAclCounterAttributeRequest) + returns (GetAclCounterAttributeResponse) {} + rpc CreateAclRange(CreateAclRangeRequest) returns (CreateAclRangeResponse) {} + rpc RemoveAclRange(RemoveAclRangeRequest) returns (RemoveAclRangeResponse) {} + rpc GetAclRangeAttribute(GetAclRangeAttributeRequest) + returns (GetAclRangeAttributeResponse) {} + rpc CreateAclTableGroup(CreateAclTableGroupRequest) + returns (CreateAclTableGroupResponse) {} + rpc RemoveAclTableGroup(RemoveAclTableGroupRequest) + returns (RemoveAclTableGroupResponse) {} + rpc GetAclTableGroupAttribute(GetAclTableGroupAttributeRequest) + returns (GetAclTableGroupAttributeResponse) {} + rpc CreateAclTableGroupMember(CreateAclTableGroupMemberRequest) + returns (CreateAclTableGroupMemberResponse) {} + rpc RemoveAclTableGroupMember(RemoveAclTableGroupMemberRequest) + returns (RemoveAclTableGroupMemberResponse) {} + rpc SetAclTableGroupMemberAttribute(SetAclTableGroupMemberAttributeRequest) + returns (SetAclTableGroupMemberAttributeResponse) {} + rpc GetAclTableGroupMemberAttribute(GetAclTableGroupMemberAttributeRequest) + returns (GetAclTableGroupMemberAttributeResponse) {} + rpc CreateAclTableChainGroup(CreateAclTableChainGroupRequest) + returns (CreateAclTableChainGroupResponse) {} + rpc RemoveAclTableChainGroup(RemoveAclTableChainGroupRequest) + returns (RemoveAclTableChainGroupResponse) {} + rpc GetAclTableChainGroupAttribute(GetAclTableChainGroupAttributeRequest) + returns (GetAclTableChainGroupAttributeResponse) {} } diff --git a/dataplane/proto/sai/ars.proto b/dataplane/proto/sai/ars.proto index 17937d6d3..415423294 100644 --- a/dataplane/proto/sai/ars.proto +++ b/dataplane/proto/sai/ars.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service Ars { -} +service Ars {} diff --git a/dataplane/proto/sai/ars_profile.proto b/dataplane/proto/sai/ars_profile.proto index ba6a363fc..a551b7931 100644 --- a/dataplane/proto/sai/ars_profile.proto +++ b/dataplane/proto/sai/ars_profile.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service ArsProfile { -} +service ArsProfile {} diff --git a/dataplane/proto/sai/bfd.pb.go b/dataplane/proto/sai/bfd.pb.go index 42523ddd6..b2b626073 100644 --- a/dataplane/proto/sai/bfd.pb.go +++ b/dataplane/proto/sai/bfd.pb.go @@ -66,6 +66,8 @@ const ( BfdSessionAttr_BFD_SESSION_ATTR_REMOTE_DIAG BfdSessionAttr = 39 BfdSessionAttr_BFD_SESSION_ATTR_REMOTE_MULTIPLIER BfdSessionAttr = 40 BfdSessionAttr_BFD_SESSION_ATTR_SRV6_SIDLIST_ID BfdSessionAttr = 41 + BfdSessionAttr_BFD_SESSION_ATTR_STATS_COUNT_MODE BfdSessionAttr = 42 + BfdSessionAttr_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST BfdSessionAttr = 43 ) // Enum value maps for BfdSessionAttr. @@ -113,6 +115,8 @@ var ( 39: "BFD_SESSION_ATTR_REMOTE_DIAG", 40: "BFD_SESSION_ATTR_REMOTE_MULTIPLIER", 41: "BFD_SESSION_ATTR_SRV6_SIDLIST_ID", + 42: "BFD_SESSION_ATTR_STATS_COUNT_MODE", + 43: "BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST", } BfdSessionAttr_value = map[string]int32{ "BFD_SESSION_ATTR_UNSPECIFIED": 0, @@ -157,6 +161,8 @@ var ( "BFD_SESSION_ATTR_REMOTE_DIAG": 39, "BFD_SESSION_ATTR_REMOTE_MULTIPLIER": 40, "BFD_SESSION_ATTR_SRV6_SIDLIST_ID": 41, + "BFD_SESSION_ATTR_STATS_COUNT_MODE": 42, + "BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST": 43, } ) @@ -223,6 +229,8 @@ type CreateBfdSessionRequest struct { Multiplier *uint32 `protobuf:"varint,32,opt,name=multiplier,proto3,oneof" json:"multiplier,omitempty"` OffloadType *BfdSessionOffloadType `protobuf:"varint,33,opt,name=offload_type,json=offloadType,proto3,enum=lemming.dataplane.sai.BfdSessionOffloadType,oneof" json:"offload_type,omitempty"` Srv6SidlistId *uint64 `protobuf:"varint,34,opt,name=srv6_sidlist_id,json=srv6SidlistId,proto3,oneof" json:"srv6_sidlist_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,35,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,36,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -495,6 +503,20 @@ func (x *CreateBfdSessionRequest) GetSrv6SidlistId() uint64 { return 0 } +func (x *CreateBfdSessionRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateBfdSessionRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateBfdSessionResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -620,27 +642,29 @@ func (*RemoveBfdSessionResponse) Descriptor() ([]byte, []int) { } type SetBfdSessionAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - VirtualRouter *uint64 `protobuf:"varint,2,opt,name=virtual_router,json=virtualRouter,proto3,oneof" json:"virtual_router,omitempty"` - Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` - Tc *uint32 `protobuf:"varint,4,opt,name=tc,proto3,oneof" json:"tc,omitempty"` - VlanTpid *uint32 `protobuf:"varint,5,opt,name=vlan_tpid,json=vlanTpid,proto3,oneof" json:"vlan_tpid,omitempty"` - VlanPri *uint32 `protobuf:"varint,6,opt,name=vlan_pri,json=vlanPri,proto3,oneof" json:"vlan_pri,omitempty"` - VlanCfi *uint32 `protobuf:"varint,7,opt,name=vlan_cfi,json=vlanCfi,proto3,oneof" json:"vlan_cfi,omitempty"` - IphdrVersion *uint32 `protobuf:"varint,8,opt,name=iphdr_version,json=iphdrVersion,proto3,oneof" json:"iphdr_version,omitempty"` - Tos *uint32 `protobuf:"varint,9,opt,name=tos,proto3,oneof" json:"tos,omitempty"` - Ttl *uint32 `protobuf:"varint,10,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` - TunnelTos *uint32 `protobuf:"varint,11,opt,name=tunnel_tos,json=tunnelTos,proto3,oneof" json:"tunnel_tos,omitempty"` - TunnelTtl *uint32 `protobuf:"varint,12,opt,name=tunnel_ttl,json=tunnelTtl,proto3,oneof" json:"tunnel_ttl,omitempty"` - SrcMacAddress []byte `protobuf:"bytes,13,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` - DstMacAddress []byte `protobuf:"bytes,14,opt,name=dst_mac_address,json=dstMacAddress,proto3,oneof" json:"dst_mac_address,omitempty"` - EchoEnable *bool `protobuf:"varint,15,opt,name=echo_enable,json=echoEnable,proto3,oneof" json:"echo_enable,omitempty"` - MinTx *uint32 `protobuf:"varint,16,opt,name=min_tx,json=minTx,proto3,oneof" json:"min_tx,omitempty"` - MinRx *uint32 `protobuf:"varint,17,opt,name=min_rx,json=minRx,proto3,oneof" json:"min_rx,omitempty"` - Multiplier *uint32 `protobuf:"varint,18,opt,name=multiplier,proto3,oneof" json:"multiplier,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + VirtualRouter *uint64 `protobuf:"varint,2,opt,name=virtual_router,json=virtualRouter,proto3,oneof" json:"virtual_router,omitempty"` + Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` + Tc *uint32 `protobuf:"varint,4,opt,name=tc,proto3,oneof" json:"tc,omitempty"` + VlanTpid *uint32 `protobuf:"varint,5,opt,name=vlan_tpid,json=vlanTpid,proto3,oneof" json:"vlan_tpid,omitempty"` + VlanPri *uint32 `protobuf:"varint,6,opt,name=vlan_pri,json=vlanPri,proto3,oneof" json:"vlan_pri,omitempty"` + VlanCfi *uint32 `protobuf:"varint,7,opt,name=vlan_cfi,json=vlanCfi,proto3,oneof" json:"vlan_cfi,omitempty"` + IphdrVersion *uint32 `protobuf:"varint,8,opt,name=iphdr_version,json=iphdrVersion,proto3,oneof" json:"iphdr_version,omitempty"` + Tos *uint32 `protobuf:"varint,9,opt,name=tos,proto3,oneof" json:"tos,omitempty"` + Ttl *uint32 `protobuf:"varint,10,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + TunnelTos *uint32 `protobuf:"varint,11,opt,name=tunnel_tos,json=tunnelTos,proto3,oneof" json:"tunnel_tos,omitempty"` + TunnelTtl *uint32 `protobuf:"varint,12,opt,name=tunnel_ttl,json=tunnelTtl,proto3,oneof" json:"tunnel_ttl,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,13,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + DstMacAddress []byte `protobuf:"bytes,14,opt,name=dst_mac_address,json=dstMacAddress,proto3,oneof" json:"dst_mac_address,omitempty"` + EchoEnable *bool `protobuf:"varint,15,opt,name=echo_enable,json=echoEnable,proto3,oneof" json:"echo_enable,omitempty"` + MinTx *uint32 `protobuf:"varint,16,opt,name=min_tx,json=minTx,proto3,oneof" json:"min_tx,omitempty"` + MinRx *uint32 `protobuf:"varint,17,opt,name=min_rx,json=minRx,proto3,oneof" json:"min_rx,omitempty"` + Multiplier *uint32 `protobuf:"varint,18,opt,name=multiplier,proto3,oneof" json:"multiplier,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,19,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,20,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetBfdSessionAttributeRequest) Reset() { @@ -799,6 +823,20 @@ func (x *SetBfdSessionAttributeRequest) GetMultiplier() uint32 { return 0 } +func (x *SetBfdSessionAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetBfdSessionAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetBfdSessionAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1035,7 +1073,7 @@ var file_dataplane_proto_sai_bfd_proto_rawDesc = string([]byte{ 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x11, 0x0a, 0x17, 0x43, 0x72, 0x65, + 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x13, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x46, 0x0a, 0x04, @@ -1142,273 +1180,300 @@ var file_dataplane_proto_sai_bfd_proto_rawDesc = string([]byte{ 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x20, 0x52, 0x0d, 0x73, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, - 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x46, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x68, - 0x77, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, - 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, - 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x05, 0x0a, 0x03, - 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, - 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, - 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, - 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x23, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x2a, 0x48, 0x21, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x24, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x52, + 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x46, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x68, 0x77, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, + 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x66, + 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x68, 0x6f, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x62, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, + 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, + 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x8b, 0x09, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x74, + 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x02, 0x52, 0x02, 0x74, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x48, 0x03, 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x04, 0x52, 0x07, + 0x76, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x05, 0x52, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, + 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0f, 0x48, 0x06, 0x52, 0x0c, 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x07, 0x52, 0x03, 0x74, 0x6f, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x09, + 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x0a, 0x52, 0x09, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x0b, 0x52, 0x0d, 0x73, + 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, + 0x48, 0x0c, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x1a, 0x48, 0x0d, 0x52, 0x0a, 0x65, 0x63, 0x68, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x0e, 0x52, 0x05, 0x6d, 0x69, + 0x6e, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x0f, + 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x10, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, + 0x6c, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, + 0x48, 0x11, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x14, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x52, 0x14, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x74, 0x70, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, + 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, - 0x63, 0x68, 0x6f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x68, 0x6f, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x62, 0x69, 0x74, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, - 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, - 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xda, 0x07, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, + 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, + 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x74, 0x63, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x02, - 0x52, 0x02, 0x74, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x74, 0x70, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x09, 0x48, 0x03, 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x04, 0x52, 0x07, 0x76, - 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0c, 0x48, 0x05, 0x52, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, - 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, - 0x48, 0x06, 0x52, 0x0c, 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x07, 0x52, 0x03, 0x74, 0x6f, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x09, 0x52, - 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, - 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x0a, 0x52, 0x09, 0x74, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x0b, 0x52, 0x0d, 0x73, 0x72, - 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, - 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, - 0x0c, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, - 0x48, 0x0d, 0x52, 0x0a, 0x65, 0x63, 0x68, 0x6f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x0e, 0x52, 0x05, 0x6d, 0x69, 0x6e, - 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x0f, 0x52, - 0x05, 0x6d, 0x69, 0x6e, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x10, 0x52, 0x0a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, - 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, - 0x69, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x74, 0x74, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, - 0x6f, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, - 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, - 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x63, - 0x68, 0x6f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, - 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x22, 0x20, - 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, - 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, - 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x66, - 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, + 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, - 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0xb4, 0x0b, 0x0a, 0x0e, 0x42, 0x66, 0x64, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, - 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, - 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, 0x4c, 0x4f, - 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, - 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, - 0x03, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, - 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, - 0x41, 0x54, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, - 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x10, - 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x43, 0x10, 0x08, 0x12, 0x1e, 0x0a, - 0x1a, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x09, 0x12, 0x1c, 0x0a, - 0x18, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x42, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, + 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x88, 0x0c, 0x0a, 0x0e, 0x42, 0x66, 0x64, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x46, - 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x0c, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, - 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, - 0x0d, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, - 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x22, - 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x49, 0x50, 0x48, 0x44, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x0f, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x10, 0x12, 0x18, 0x0a, 0x14, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, + 0x15, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, + 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x02, 0x12, 0x23, + 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, + 0x52, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x28, + 0x0a, 0x24, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, + 0x49, 0x4e, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x52, 0x49, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x4f, + 0x52, 0x10, 0x06, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x43, 0x10, 0x08, 0x12, + 0x1e, 0x0a, 0x1a, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x09, 0x12, + 0x1c, 0x0a, 0x18, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0a, 0x12, 0x1d, 0x0a, + 0x19, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x11, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, - 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x12, 0x12, 0x23, 0x0a, 0x1f, 0x42, + 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x43, 0x46, 0x49, 0x10, 0x0c, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x13, - 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x4f, 0x53, 0x10, - 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, - 0x10, 0x15, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x52, - 0x43, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x16, 0x12, 0x2a, - 0x0a, 0x26, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, - 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x17, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, - 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, - 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x18, - 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x19, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, - 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x1a, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x46, 0x44, 0x5f, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x55, 0x4c, - 0x54, 0x49, 0x48, 0x4f, 0x50, 0x10, 0x1b, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x46, 0x44, 0x5f, 0x53, - 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x42, 0x49, 0x54, - 0x10, 0x1c, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x58, 0x10, 0x1d, 0x12, - 0x1b, 0x0a, 0x17, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x52, 0x58, 0x10, 0x1e, 0x12, 0x1f, 0x0a, 0x1b, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x10, 0x0d, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, + 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0e, + 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x48, 0x44, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, + 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4f, 0x53, 0x10, 0x10, 0x12, 0x18, + 0x0a, 0x14, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x11, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, + 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x12, 0x12, 0x23, 0x0a, + 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x13, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x4f, + 0x53, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x54, 0x4c, 0x10, 0x15, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x16, + 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x17, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x49, 0x45, 0x52, 0x10, 0x1f, 0x12, 0x22, 0x0a, - 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x58, 0x10, - 0x20, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, 0x49, 0x4e, - 0x5f, 0x52, 0x58, 0x10, 0x21, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0x22, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x23, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x47, 0x4f, 0x54, 0x49, 0x41, - 0x54, 0x45, 0x44, 0x5f, 0x54, 0x58, 0x10, 0x24, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x47, - 0x4f, 0x54, 0x49, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x58, 0x10, 0x25, 0x12, 0x1f, 0x0a, 0x1b, - 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x49, 0x41, 0x47, 0x10, 0x26, 0x12, 0x20, 0x0a, - 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x41, 0x47, 0x10, 0x27, 0x12, - 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x50, 0x4c, 0x49, 0x45, 0x52, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, 0x53, - 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, - 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x29, 0x32, 0x84, 0x05, - 0x0a, 0x03, 0x42, 0x66, 0x64, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, - 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, - 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, - 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x18, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, + 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x19, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x48, + 0x4f, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x1a, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x46, + 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, + 0x55, 0x4c, 0x54, 0x49, 0x48, 0x4f, 0x50, 0x10, 0x1b, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x46, 0x44, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x42, + 0x49, 0x54, 0x10, 0x1c, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, 0x58, 0x10, + 0x1d, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x52, 0x58, 0x10, 0x1e, 0x12, 0x1f, + 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x49, 0x45, 0x52, 0x10, 0x1f, 0x12, + 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x54, + 0x58, 0x10, 0x20, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, + 0x49, 0x4e, 0x5f, 0x52, 0x58, 0x10, 0x21, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x46, 0x44, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0x22, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x23, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x47, 0x4f, 0x54, + 0x49, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x58, 0x10, 0x24, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, + 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, + 0x45, 0x47, 0x4f, 0x54, 0x49, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x58, 0x10, 0x25, 0x12, 0x1f, + 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x44, 0x49, 0x41, 0x47, 0x10, 0x26, 0x12, + 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x41, 0x47, 0x10, + 0x27, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x4d, 0x55, 0x4c, + 0x54, 0x49, 0x50, 0x4c, 0x49, 0x45, 0x52, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x46, 0x44, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, + 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x29, 0x12, + 0x25, 0x0a, 0x21, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x2a, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x2b, 0x32, 0x84, 0x05, 0x0a, 0x03, 0x42, 0x66, 0x64, 0x12, 0x75, 0x0a, 0x10, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, + 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x66, + 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, + 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, + 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x66, - 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, + 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1440,31 +1505,34 @@ var file_dataplane_proto_sai_bfd_proto_goTypes = []any{ (BfdSessionType)(0), // 11: lemming.dataplane.sai.BfdSessionType (BfdEncapsulationType)(0), // 12: lemming.dataplane.sai.BfdEncapsulationType (BfdSessionOffloadType)(0), // 13: lemming.dataplane.sai.BfdSessionOffloadType - (*BfdSessionAttribute)(nil), // 14: lemming.dataplane.sai.BfdSessionAttribute - (BfdSessionStat)(0), // 15: lemming.dataplane.sai.BfdSessionStat + (StatsCountMode)(0), // 14: lemming.dataplane.sai.StatsCountMode + (*BfdSessionAttribute)(nil), // 15: lemming.dataplane.sai.BfdSessionAttribute + (BfdSessionStat)(0), // 16: lemming.dataplane.sai.BfdSessionStat } var file_dataplane_proto_sai_bfd_proto_depIdxs = []int32{ 11, // 0: lemming.dataplane.sai.CreateBfdSessionRequest.type:type_name -> lemming.dataplane.sai.BfdSessionType 12, // 1: lemming.dataplane.sai.CreateBfdSessionRequest.bfd_encapsulation_type:type_name -> lemming.dataplane.sai.BfdEncapsulationType 13, // 2: lemming.dataplane.sai.CreateBfdSessionRequest.offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 0, // 3: lemming.dataplane.sai.GetBfdSessionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BfdSessionAttr - 14, // 4: lemming.dataplane.sai.GetBfdSessionAttributeResponse.attr:type_name -> lemming.dataplane.sai.BfdSessionAttribute - 15, // 5: lemming.dataplane.sai.GetBfdSessionStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BfdSessionStat - 1, // 6: lemming.dataplane.sai.Bfd.CreateBfdSession:input_type -> lemming.dataplane.sai.CreateBfdSessionRequest - 3, // 7: lemming.dataplane.sai.Bfd.RemoveBfdSession:input_type -> lemming.dataplane.sai.RemoveBfdSessionRequest - 5, // 8: lemming.dataplane.sai.Bfd.SetBfdSessionAttribute:input_type -> lemming.dataplane.sai.SetBfdSessionAttributeRequest - 7, // 9: lemming.dataplane.sai.Bfd.GetBfdSessionAttribute:input_type -> lemming.dataplane.sai.GetBfdSessionAttributeRequest - 9, // 10: lemming.dataplane.sai.Bfd.GetBfdSessionStats:input_type -> lemming.dataplane.sai.GetBfdSessionStatsRequest - 2, // 11: lemming.dataplane.sai.Bfd.CreateBfdSession:output_type -> lemming.dataplane.sai.CreateBfdSessionResponse - 4, // 12: lemming.dataplane.sai.Bfd.RemoveBfdSession:output_type -> lemming.dataplane.sai.RemoveBfdSessionResponse - 6, // 13: lemming.dataplane.sai.Bfd.SetBfdSessionAttribute:output_type -> lemming.dataplane.sai.SetBfdSessionAttributeResponse - 8, // 14: lemming.dataplane.sai.Bfd.GetBfdSessionAttribute:output_type -> lemming.dataplane.sai.GetBfdSessionAttributeResponse - 10, // 15: lemming.dataplane.sai.Bfd.GetBfdSessionStats:output_type -> lemming.dataplane.sai.GetBfdSessionStatsResponse - 11, // [11:16] is the sub-list for method output_type - 6, // [6:11] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 14, // 3: lemming.dataplane.sai.CreateBfdSessionRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 14, // 4: lemming.dataplane.sai.SetBfdSessionAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 5: lemming.dataplane.sai.GetBfdSessionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BfdSessionAttr + 15, // 6: lemming.dataplane.sai.GetBfdSessionAttributeResponse.attr:type_name -> lemming.dataplane.sai.BfdSessionAttribute + 16, // 7: lemming.dataplane.sai.GetBfdSessionStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BfdSessionStat + 1, // 8: lemming.dataplane.sai.Bfd.CreateBfdSession:input_type -> lemming.dataplane.sai.CreateBfdSessionRequest + 3, // 9: lemming.dataplane.sai.Bfd.RemoveBfdSession:input_type -> lemming.dataplane.sai.RemoveBfdSessionRequest + 5, // 10: lemming.dataplane.sai.Bfd.SetBfdSessionAttribute:input_type -> lemming.dataplane.sai.SetBfdSessionAttributeRequest + 7, // 11: lemming.dataplane.sai.Bfd.GetBfdSessionAttribute:input_type -> lemming.dataplane.sai.GetBfdSessionAttributeRequest + 9, // 12: lemming.dataplane.sai.Bfd.GetBfdSessionStats:input_type -> lemming.dataplane.sai.GetBfdSessionStatsRequest + 2, // 13: lemming.dataplane.sai.Bfd.CreateBfdSession:output_type -> lemming.dataplane.sai.CreateBfdSessionResponse + 4, // 14: lemming.dataplane.sai.Bfd.RemoveBfdSession:output_type -> lemming.dataplane.sai.RemoveBfdSessionResponse + 6, // 15: lemming.dataplane.sai.Bfd.SetBfdSessionAttribute:output_type -> lemming.dataplane.sai.SetBfdSessionAttributeResponse + 8, // 16: lemming.dataplane.sai.Bfd.GetBfdSessionAttribute:output_type -> lemming.dataplane.sai.GetBfdSessionAttributeResponse + 10, // 17: lemming.dataplane.sai.Bfd.GetBfdSessionStats:output_type -> lemming.dataplane.sai.GetBfdSessionStatsResponse + 13, // [13:18] is the sub-list for method output_type + 8, // [8:13] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_bfd_proto_init() } diff --git a/dataplane/proto/sai/bfd.proto b/dataplane/proto/sai/bfd.proto index c2577d070..2c8a7a68b 100644 --- a/dataplane/proto/sai/bfd.proto +++ b/dataplane/proto/sai/bfd.proto @@ -7,148 +7,156 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum BfdSessionAttr { - BFD_SESSION_ATTR_UNSPECIFIED = 0; - BFD_SESSION_ATTR_TYPE = 1; - BFD_SESSION_ATTR_HW_LOOKUP_VALID = 2; - BFD_SESSION_ATTR_VIRTUAL_ROUTER = 3; - BFD_SESSION_ATTR_PORT = 4; - BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR = 5; - BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR = 6; - BFD_SESSION_ATTR_UDP_SRC_PORT = 7; - BFD_SESSION_ATTR_TC = 8; - BFD_SESSION_ATTR_VLAN_TPID = 9; - BFD_SESSION_ATTR_VLAN_ID = 10; - BFD_SESSION_ATTR_VLAN_PRI = 11; - BFD_SESSION_ATTR_VLAN_CFI = 12; - BFD_SESSION_ATTR_VLAN_HEADER_VALID = 13; - BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE = 14; - BFD_SESSION_ATTR_IPHDR_VERSION = 15; - BFD_SESSION_ATTR_TOS = 16; - BFD_SESSION_ATTR_TTL = 17; - BFD_SESSION_ATTR_SRC_IP_ADDRESS = 18; - BFD_SESSION_ATTR_DST_IP_ADDRESS = 19; - BFD_SESSION_ATTR_TUNNEL_TOS = 20; - BFD_SESSION_ATTR_TUNNEL_TTL = 21; - BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS = 22; - BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS = 23; - BFD_SESSION_ATTR_SRC_MAC_ADDRESS = 24; - BFD_SESSION_ATTR_DST_MAC_ADDRESS = 25; - BFD_SESSION_ATTR_ECHO_ENABLE = 26; - BFD_SESSION_ATTR_MULTIHOP = 27; - BFD_SESSION_ATTR_CBIT = 28; - BFD_SESSION_ATTR_MIN_TX = 29; - BFD_SESSION_ATTR_MIN_RX = 30; - BFD_SESSION_ATTR_MULTIPLIER = 31; - BFD_SESSION_ATTR_REMOTE_MIN_TX = 32; - BFD_SESSION_ATTR_REMOTE_MIN_RX = 33; - BFD_SESSION_ATTR_STATE = 34; - BFD_SESSION_ATTR_OFFLOAD_TYPE = 35; - BFD_SESSION_ATTR_NEGOTIATED_TX = 36; - BFD_SESSION_ATTR_NEGOTIATED_RX = 37; - BFD_SESSION_ATTR_LOCAL_DIAG = 38; - BFD_SESSION_ATTR_REMOTE_DIAG = 39; - BFD_SESSION_ATTR_REMOTE_MULTIPLIER = 40; - BFD_SESSION_ATTR_SRV6_SIDLIST_ID = 41; + BFD_SESSION_ATTR_UNSPECIFIED = 0; + BFD_SESSION_ATTR_TYPE = 1; + BFD_SESSION_ATTR_HW_LOOKUP_VALID = 2; + BFD_SESSION_ATTR_VIRTUAL_ROUTER = 3; + BFD_SESSION_ATTR_PORT = 4; + BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR = 5; + BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR = 6; + BFD_SESSION_ATTR_UDP_SRC_PORT = 7; + BFD_SESSION_ATTR_TC = 8; + BFD_SESSION_ATTR_VLAN_TPID = 9; + BFD_SESSION_ATTR_VLAN_ID = 10; + BFD_SESSION_ATTR_VLAN_PRI = 11; + BFD_SESSION_ATTR_VLAN_CFI = 12; + BFD_SESSION_ATTR_VLAN_HEADER_VALID = 13; + BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE = 14; + BFD_SESSION_ATTR_IPHDR_VERSION = 15; + BFD_SESSION_ATTR_TOS = 16; + BFD_SESSION_ATTR_TTL = 17; + BFD_SESSION_ATTR_SRC_IP_ADDRESS = 18; + BFD_SESSION_ATTR_DST_IP_ADDRESS = 19; + BFD_SESSION_ATTR_TUNNEL_TOS = 20; + BFD_SESSION_ATTR_TUNNEL_TTL = 21; + BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS = 22; + BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS = 23; + BFD_SESSION_ATTR_SRC_MAC_ADDRESS = 24; + BFD_SESSION_ATTR_DST_MAC_ADDRESS = 25; + BFD_SESSION_ATTR_ECHO_ENABLE = 26; + BFD_SESSION_ATTR_MULTIHOP = 27; + BFD_SESSION_ATTR_CBIT = 28; + BFD_SESSION_ATTR_MIN_TX = 29; + BFD_SESSION_ATTR_MIN_RX = 30; + BFD_SESSION_ATTR_MULTIPLIER = 31; + BFD_SESSION_ATTR_REMOTE_MIN_TX = 32; + BFD_SESSION_ATTR_REMOTE_MIN_RX = 33; + BFD_SESSION_ATTR_STATE = 34; + BFD_SESSION_ATTR_OFFLOAD_TYPE = 35; + BFD_SESSION_ATTR_NEGOTIATED_TX = 36; + BFD_SESSION_ATTR_NEGOTIATED_RX = 37; + BFD_SESSION_ATTR_LOCAL_DIAG = 38; + BFD_SESSION_ATTR_REMOTE_DIAG = 39; + BFD_SESSION_ATTR_REMOTE_MULTIPLIER = 40; + BFD_SESSION_ATTR_SRV6_SIDLIST_ID = 41; + BFD_SESSION_ATTR_STATS_COUNT_MODE = 42; + BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST = 43; } message CreateBfdSessionRequest { - option (sai_type) = OBJECT_TYPE_BFD_SESSION; - uint64 switch = 1; - optional BfdSessionType type = 2[(attr_enum_value) = 1]; - optional bool hw_lookup_valid = 3[(attr_enum_value) = 2]; - optional uint64 virtual_router = 4[(attr_enum_value) = 3]; - optional uint64 port = 5[(attr_enum_value) = 4]; - optional uint32 local_discriminator = 6[(attr_enum_value) = 5]; - optional uint32 remote_discriminator = 7[(attr_enum_value) = 6]; - optional uint32 udp_src_port = 8[(attr_enum_value) = 7]; - optional uint32 tc = 9[(attr_enum_value) = 8]; - optional uint32 vlan_tpid = 10[(attr_enum_value) = 9]; - optional uint32 vlan_id = 11[(attr_enum_value) = 10]; - optional uint32 vlan_pri = 12[(attr_enum_value) = 11]; - optional uint32 vlan_cfi = 13[(attr_enum_value) = 12]; - optional bool vlan_header_valid = 14[(attr_enum_value) = 13]; - optional BfdEncapsulationType bfd_encapsulation_type = 15[(attr_enum_value) = 14]; - optional uint32 iphdr_version = 16[(attr_enum_value) = 15]; - optional uint32 tos = 17[(attr_enum_value) = 16]; - optional uint32 ttl = 18[(attr_enum_value) = 17]; - optional bytes src_ip_address = 19[(attr_enum_value) = 18]; - optional bytes dst_ip_address = 20[(attr_enum_value) = 19]; - optional uint32 tunnel_tos = 21[(attr_enum_value) = 20]; - optional uint32 tunnel_ttl = 22[(attr_enum_value) = 21]; - optional bytes tunnel_src_ip_address = 23[(attr_enum_value) = 22]; - optional bytes tunnel_dst_ip_address = 24[(attr_enum_value) = 23]; - optional bytes src_mac_address = 25[(attr_enum_value) = 24]; - optional bytes dst_mac_address = 26[(attr_enum_value) = 25]; - optional bool echo_enable = 27[(attr_enum_value) = 26]; - optional bool multihop = 28[(attr_enum_value) = 27]; - optional bool cbit = 29[(attr_enum_value) = 28]; - optional uint32 min_tx = 30[(attr_enum_value) = 29]; - optional uint32 min_rx = 31[(attr_enum_value) = 30]; - optional uint32 multiplier = 32[(attr_enum_value) = 31]; - optional BfdSessionOffloadType offload_type = 33[(attr_enum_value) = 35]; - optional uint64 srv6_sidlist_id = 34[(attr_enum_value) = 41]; + option (sai_type) = OBJECT_TYPE_BFD_SESSION; + uint64 switch = 1; + optional BfdSessionType type = 2 [(attr_enum_value) = 1]; + optional bool hw_lookup_valid = 3 [(attr_enum_value) = 2]; + optional uint64 virtual_router = 4 [(attr_enum_value) = 3]; + optional uint64 port = 5 [(attr_enum_value) = 4]; + optional uint32 local_discriminator = 6 [(attr_enum_value) = 5]; + optional uint32 remote_discriminator = 7 [(attr_enum_value) = 6]; + optional uint32 udp_src_port = 8 [(attr_enum_value) = 7]; + optional uint32 tc = 9 [(attr_enum_value) = 8]; + optional uint32 vlan_tpid = 10 [(attr_enum_value) = 9]; + optional uint32 vlan_id = 11 [(attr_enum_value) = 10]; + optional uint32 vlan_pri = 12 [(attr_enum_value) = 11]; + optional uint32 vlan_cfi = 13 [(attr_enum_value) = 12]; + optional bool vlan_header_valid = 14 [(attr_enum_value) = 13]; + optional BfdEncapsulationType bfd_encapsulation_type = 15 + [(attr_enum_value) = 14]; + optional uint32 iphdr_version = 16 [(attr_enum_value) = 15]; + optional uint32 tos = 17 [(attr_enum_value) = 16]; + optional uint32 ttl = 18 [(attr_enum_value) = 17]; + optional bytes src_ip_address = 19 [(attr_enum_value) = 18]; + optional bytes dst_ip_address = 20 [(attr_enum_value) = 19]; + optional uint32 tunnel_tos = 21 [(attr_enum_value) = 20]; + optional uint32 tunnel_ttl = 22 [(attr_enum_value) = 21]; + optional bytes tunnel_src_ip_address = 23 [(attr_enum_value) = 22]; + optional bytes tunnel_dst_ip_address = 24 [(attr_enum_value) = 23]; + optional bytes src_mac_address = 25 [(attr_enum_value) = 24]; + optional bytes dst_mac_address = 26 [(attr_enum_value) = 25]; + optional bool echo_enable = 27 [(attr_enum_value) = 26]; + optional bool multihop = 28 [(attr_enum_value) = 27]; + optional bool cbit = 29 [(attr_enum_value) = 28]; + optional uint32 min_tx = 30 [(attr_enum_value) = 29]; + optional uint32 min_rx = 31 [(attr_enum_value) = 30]; + optional uint32 multiplier = 32 [(attr_enum_value) = 31]; + optional BfdSessionOffloadType offload_type = 33 [(attr_enum_value) = 35]; + optional uint64 srv6_sidlist_id = 34 [(attr_enum_value) = 41]; + optional StatsCountMode stats_count_mode = 35 [(attr_enum_value) = 42]; + repeated uint64 selective_counter_list = 36 [(attr_enum_value) = 43]; } message CreateBfdSessionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveBfdSessionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveBfdSessionResponse { -} +message RemoveBfdSessionResponse {} message SetBfdSessionAttributeRequest { - uint64 oid = 1; - optional uint64 virtual_router = 2[(attr_enum_value) = 3]; - optional uint64 port = 3[(attr_enum_value) = 4]; - optional uint32 tc = 4[(attr_enum_value) = 8]; - optional uint32 vlan_tpid = 5[(attr_enum_value) = 9]; - optional uint32 vlan_pri = 6[(attr_enum_value) = 11]; - optional uint32 vlan_cfi = 7[(attr_enum_value) = 12]; - optional uint32 iphdr_version = 8[(attr_enum_value) = 15]; - optional uint32 tos = 9[(attr_enum_value) = 16]; - optional uint32 ttl = 10[(attr_enum_value) = 17]; - optional uint32 tunnel_tos = 11[(attr_enum_value) = 20]; - optional uint32 tunnel_ttl = 12[(attr_enum_value) = 21]; - optional bytes src_mac_address = 13[(attr_enum_value) = 24]; - optional bytes dst_mac_address = 14[(attr_enum_value) = 25]; - optional bool echo_enable = 15[(attr_enum_value) = 26]; - optional uint32 min_tx = 16[(attr_enum_value) = 29]; - optional uint32 min_rx = 17[(attr_enum_value) = 30]; - optional uint32 multiplier = 18[(attr_enum_value) = 31]; + uint64 oid = 1; + optional uint64 virtual_router = 2 [(attr_enum_value) = 3]; + optional uint64 port = 3 [(attr_enum_value) = 4]; + optional uint32 tc = 4 [(attr_enum_value) = 8]; + optional uint32 vlan_tpid = 5 [(attr_enum_value) = 9]; + optional uint32 vlan_pri = 6 [(attr_enum_value) = 11]; + optional uint32 vlan_cfi = 7 [(attr_enum_value) = 12]; + optional uint32 iphdr_version = 8 [(attr_enum_value) = 15]; + optional uint32 tos = 9 [(attr_enum_value) = 16]; + optional uint32 ttl = 10 [(attr_enum_value) = 17]; + optional uint32 tunnel_tos = 11 [(attr_enum_value) = 20]; + optional uint32 tunnel_ttl = 12 [(attr_enum_value) = 21]; + optional bytes src_mac_address = 13 [(attr_enum_value) = 24]; + optional bytes dst_mac_address = 14 [(attr_enum_value) = 25]; + optional bool echo_enable = 15 [(attr_enum_value) = 26]; + optional uint32 min_tx = 16 [(attr_enum_value) = 29]; + optional uint32 min_rx = 17 [(attr_enum_value) = 30]; + optional uint32 multiplier = 18 [(attr_enum_value) = 31]; + optional StatsCountMode stats_count_mode = 19 [(attr_enum_value) = 42]; + repeated uint64 selective_counter_list = 20 [(attr_enum_value) = 43]; } -message SetBfdSessionAttributeResponse { -} +message SetBfdSessionAttributeResponse {} message GetBfdSessionAttributeRequest { - uint64 oid = 1; - repeated BfdSessionAttr attr_type = 2; + uint64 oid = 1; + repeated BfdSessionAttr attr_type = 2; } message GetBfdSessionAttributeResponse { - BfdSessionAttribute attr = 1; + BfdSessionAttribute attr = 1; } message GetBfdSessionStatsRequest { - uint64 oid = 1; - repeated BfdSessionStat counter_ids = 2; + uint64 oid = 1; + repeated BfdSessionStat counter_ids = 2; } message GetBfdSessionStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Bfd { - rpc CreateBfdSession (CreateBfdSessionRequest) returns (CreateBfdSessionResponse) {} - rpc RemoveBfdSession (RemoveBfdSessionRequest) returns (RemoveBfdSessionResponse) {} - rpc SetBfdSessionAttribute (SetBfdSessionAttributeRequest) returns (SetBfdSessionAttributeResponse) {} - rpc GetBfdSessionAttribute (GetBfdSessionAttributeRequest) returns (GetBfdSessionAttributeResponse) {} - rpc GetBfdSessionStats (GetBfdSessionStatsRequest) returns (GetBfdSessionStatsResponse) {} + rpc CreateBfdSession(CreateBfdSessionRequest) + returns (CreateBfdSessionResponse) {} + rpc RemoveBfdSession(RemoveBfdSessionRequest) + returns (RemoveBfdSessionResponse) {} + rpc SetBfdSessionAttribute(SetBfdSessionAttributeRequest) + returns (SetBfdSessionAttributeResponse) {} + rpc GetBfdSessionAttribute(GetBfdSessionAttributeRequest) + returns (GetBfdSessionAttributeResponse) {} + rpc GetBfdSessionStats(GetBfdSessionStatsRequest) + returns (GetBfdSessionStatsResponse) {} } diff --git a/dataplane/proto/sai/bmtor.proto b/dataplane/proto/sai/bmtor.proto index 8f30c362d..681ef7b90 100644 --- a/dataplane/proto/sai/bmtor.proto +++ b/dataplane/proto/sai/bmtor.proto @@ -7,169 +7,182 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum TableBitmapClassificationEntryAttr { - TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_UNSPECIFIED = 0; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION = 1; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY = 2; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT = 3; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA = 4; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_UNSPECIFIED = 0; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION = 1; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY = 2; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT = 3; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA = 4; } enum TableBitmapRouterEntryAttr { - TABLE_BITMAP_ROUTER_ENTRY_ATTR_UNSPECIFIED = 0; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION = 1; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY = 2; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY = 3; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK = 4; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY = 5; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX = 6; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP = 7; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE = 8; - TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID = 9; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_UNSPECIFIED = 0; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION = 1; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY = 2; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY = 3; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK = 4; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY = 5; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX = 6; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP = 7; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE = 8; + TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID = 9; } enum TableMetaTunnelEntryAttr { - TABLE_META_TUNNEL_ENTRY_ATTR_UNSPECIFIED = 0; - TABLE_META_TUNNEL_ENTRY_ATTR_ACTION = 1; - TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY = 2; - TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT = 3; - TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID = 4; - TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP = 5; + TABLE_META_TUNNEL_ENTRY_ATTR_UNSPECIFIED = 0; + TABLE_META_TUNNEL_ENTRY_ATTR_ACTION = 1; + TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY = 2; + TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT = 3; + TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID = 4; + TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP = 5; } message CreateTableBitmapClassificationEntryRequest { - option (sai_type) = OBJECT_TYPE_UNSPECIFIED; - uint64 switch = 1; - optional TableBitmapClassificationEntryAction action = 2[(attr_enum_value) = 1]; - optional uint64 router_interface_key = 3[(attr_enum_value) = 2]; - optional bool is_default = 4[(attr_enum_value) = 3]; - optional uint32 in_rif_metadata = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_UNSPECIFIED; + uint64 switch = 1; + optional TableBitmapClassificationEntryAction action = 2 + [(attr_enum_value) = 1]; + optional uint64 router_interface_key = 3 [(attr_enum_value) = 2]; + optional bool is_default = 4 [(attr_enum_value) = 3]; + optional uint32 in_rif_metadata = 5 [(attr_enum_value) = 4]; } message CreateTableBitmapClassificationEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTableBitmapClassificationEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTableBitmapClassificationEntryResponse { -} +message RemoveTableBitmapClassificationEntryResponse {} message GetTableBitmapClassificationEntryAttributeRequest { - uint64 oid = 1; - repeated TableBitmapClassificationEntryAttr attr_type = 2; + uint64 oid = 1; + repeated TableBitmapClassificationEntryAttr attr_type = 2; } message GetTableBitmapClassificationEntryAttributeResponse { - TableBitmapClassificationEntryAttribute attr = 1; + TableBitmapClassificationEntryAttribute attr = 1; } message GetTableBitmapClassificationEntryStatsRequest { - uint64 oid = 1; - repeated TableBitmapClassificationEntryStat counter_ids = 2; + uint64 oid = 1; + repeated TableBitmapClassificationEntryStat counter_ids = 2; } message GetTableBitmapClassificationEntryStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateTableBitmapRouterEntryRequest { - option (sai_type) = OBJECT_TYPE_UNSPECIFIED; - uint64 switch = 1; - optional TableBitmapRouterEntryAction action = 2[(attr_enum_value) = 1]; - optional uint32 priority = 3[(attr_enum_value) = 2]; - optional uint32 in_rif_metadata_key = 4[(attr_enum_value) = 3]; - optional uint32 in_rif_metadata_mask = 5[(attr_enum_value) = 4]; - optional IpPrefix dst_ip_key = 6[(attr_enum_value) = 5]; - optional uint32 tunnel_index = 7[(attr_enum_value) = 6]; - optional uint64 next_hop = 8[(attr_enum_value) = 7]; - optional uint64 router_interface = 9[(attr_enum_value) = 8]; - optional uint64 trap_id = 10[(attr_enum_value) = 9]; + option (sai_type) = OBJECT_TYPE_UNSPECIFIED; + uint64 switch = 1; + optional TableBitmapRouterEntryAction action = 2 [(attr_enum_value) = 1]; + optional uint32 priority = 3 [(attr_enum_value) = 2]; + optional uint32 in_rif_metadata_key = 4 [(attr_enum_value) = 3]; + optional uint32 in_rif_metadata_mask = 5 [(attr_enum_value) = 4]; + optional IpPrefix dst_ip_key = 6 [(attr_enum_value) = 5]; + optional uint32 tunnel_index = 7 [(attr_enum_value) = 6]; + optional uint64 next_hop = 8 [(attr_enum_value) = 7]; + optional uint64 router_interface = 9 [(attr_enum_value) = 8]; + optional uint64 trap_id = 10 [(attr_enum_value) = 9]; } message CreateTableBitmapRouterEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTableBitmapRouterEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTableBitmapRouterEntryResponse { -} +message RemoveTableBitmapRouterEntryResponse {} message GetTableBitmapRouterEntryAttributeRequest { - uint64 oid = 1; - repeated TableBitmapRouterEntryAttr attr_type = 2; + uint64 oid = 1; + repeated TableBitmapRouterEntryAttr attr_type = 2; } message GetTableBitmapRouterEntryAttributeResponse { - TableBitmapRouterEntryAttribute attr = 1; + TableBitmapRouterEntryAttribute attr = 1; } message GetTableBitmapRouterEntryStatsRequest { - uint64 oid = 1; - repeated TableBitmapRouterEntryStat counter_ids = 2; + uint64 oid = 1; + repeated TableBitmapRouterEntryStat counter_ids = 2; } message GetTableBitmapRouterEntryStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateTableMetaTunnelEntryRequest { - option (sai_type) = OBJECT_TYPE_UNSPECIFIED; - uint64 switch = 1; - optional TableMetaTunnelEntryAction action = 2[(attr_enum_value) = 1]; - optional uint32 metadata_key = 3[(attr_enum_value) = 2]; - optional bool is_default = 4[(attr_enum_value) = 3]; - optional uint64 tunnel_id = 5[(attr_enum_value) = 4]; - optional bytes underlay_dip = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_UNSPECIFIED; + uint64 switch = 1; + optional TableMetaTunnelEntryAction action = 2 [(attr_enum_value) = 1]; + optional uint32 metadata_key = 3 [(attr_enum_value) = 2]; + optional bool is_default = 4 [(attr_enum_value) = 3]; + optional uint64 tunnel_id = 5 [(attr_enum_value) = 4]; + optional bytes underlay_dip = 6 [(attr_enum_value) = 5]; } message CreateTableMetaTunnelEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTableMetaTunnelEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTableMetaTunnelEntryResponse { -} +message RemoveTableMetaTunnelEntryResponse {} message GetTableMetaTunnelEntryAttributeRequest { - uint64 oid = 1; - repeated TableMetaTunnelEntryAttr attr_type = 2; + uint64 oid = 1; + repeated TableMetaTunnelEntryAttr attr_type = 2; } message GetTableMetaTunnelEntryAttributeResponse { - TableMetaTunnelEntryAttribute attr = 1; + TableMetaTunnelEntryAttribute attr = 1; } message GetTableMetaTunnelEntryStatsRequest { - uint64 oid = 1; - repeated TableMetaTunnelEntryStat counter_ids = 2; + uint64 oid = 1; + repeated TableMetaTunnelEntryStat counter_ids = 2; } message GetTableMetaTunnelEntryStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Bmtor { - rpc CreateTableBitmapClassificationEntry (CreateTableBitmapClassificationEntryRequest) returns (CreateTableBitmapClassificationEntryResponse) {} - rpc RemoveTableBitmapClassificationEntry (RemoveTableBitmapClassificationEntryRequest) returns (RemoveTableBitmapClassificationEntryResponse) {} - rpc GetTableBitmapClassificationEntryAttribute (GetTableBitmapClassificationEntryAttributeRequest) returns (GetTableBitmapClassificationEntryAttributeResponse) {} - rpc GetTableBitmapClassificationEntryStats (GetTableBitmapClassificationEntryStatsRequest) returns (GetTableBitmapClassificationEntryStatsResponse) {} - rpc CreateTableBitmapRouterEntry (CreateTableBitmapRouterEntryRequest) returns (CreateTableBitmapRouterEntryResponse) {} - rpc RemoveTableBitmapRouterEntry (RemoveTableBitmapRouterEntryRequest) returns (RemoveTableBitmapRouterEntryResponse) {} - rpc GetTableBitmapRouterEntryAttribute (GetTableBitmapRouterEntryAttributeRequest) returns (GetTableBitmapRouterEntryAttributeResponse) {} - rpc GetTableBitmapRouterEntryStats (GetTableBitmapRouterEntryStatsRequest) returns (GetTableBitmapRouterEntryStatsResponse) {} - rpc CreateTableMetaTunnelEntry (CreateTableMetaTunnelEntryRequest) returns (CreateTableMetaTunnelEntryResponse) {} - rpc RemoveTableMetaTunnelEntry (RemoveTableMetaTunnelEntryRequest) returns (RemoveTableMetaTunnelEntryResponse) {} - rpc GetTableMetaTunnelEntryAttribute (GetTableMetaTunnelEntryAttributeRequest) returns (GetTableMetaTunnelEntryAttributeResponse) {} - rpc GetTableMetaTunnelEntryStats (GetTableMetaTunnelEntryStatsRequest) returns (GetTableMetaTunnelEntryStatsResponse) {} + rpc CreateTableBitmapClassificationEntry( + CreateTableBitmapClassificationEntryRequest) + returns (CreateTableBitmapClassificationEntryResponse) {} + rpc RemoveTableBitmapClassificationEntry( + RemoveTableBitmapClassificationEntryRequest) + returns (RemoveTableBitmapClassificationEntryResponse) {} + rpc GetTableBitmapClassificationEntryAttribute( + GetTableBitmapClassificationEntryAttributeRequest) + returns (GetTableBitmapClassificationEntryAttributeResponse) {} + rpc GetTableBitmapClassificationEntryStats( + GetTableBitmapClassificationEntryStatsRequest) + returns (GetTableBitmapClassificationEntryStatsResponse) {} + rpc CreateTableBitmapRouterEntry(CreateTableBitmapRouterEntryRequest) + returns (CreateTableBitmapRouterEntryResponse) {} + rpc RemoveTableBitmapRouterEntry(RemoveTableBitmapRouterEntryRequest) + returns (RemoveTableBitmapRouterEntryResponse) {} + rpc GetTableBitmapRouterEntryAttribute( + GetTableBitmapRouterEntryAttributeRequest) + returns (GetTableBitmapRouterEntryAttributeResponse) {} + rpc GetTableBitmapRouterEntryStats(GetTableBitmapRouterEntryStatsRequest) + returns (GetTableBitmapRouterEntryStatsResponse) {} + rpc CreateTableMetaTunnelEntry(CreateTableMetaTunnelEntryRequest) + returns (CreateTableMetaTunnelEntryResponse) {} + rpc RemoveTableMetaTunnelEntry(RemoveTableMetaTunnelEntryRequest) + returns (RemoveTableMetaTunnelEntryResponse) {} + rpc GetTableMetaTunnelEntryAttribute(GetTableMetaTunnelEntryAttributeRequest) + returns (GetTableMetaTunnelEntryAttributeResponse) {} + rpc GetTableMetaTunnelEntryStats(GetTableMetaTunnelEntryStatsRequest) + returns (GetTableMetaTunnelEntryStatsResponse) {} } diff --git a/dataplane/proto/sai/bridge.pb.go b/dataplane/proto/sai/bridge.pb.go index 29e0da071..a2f1d5a72 100644 --- a/dataplane/proto/sai/bridge.pb.go +++ b/dataplane/proto/sai/bridge.pb.go @@ -35,6 +35,8 @@ const ( BridgeAttr_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP BridgeAttr = 8 BridgeAttr_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE BridgeAttr = 9 BridgeAttr_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP BridgeAttr = 10 + BridgeAttr_BRIDGE_ATTR_STATS_COUNT_MODE BridgeAttr = 11 + BridgeAttr_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST BridgeAttr = 12 ) // Enum value maps for BridgeAttr. @@ -51,6 +53,8 @@ var ( 8: "BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP", 9: "BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE", 10: "BRIDGE_ATTR_BROADCAST_FLOOD_GROUP", + 11: "BRIDGE_ATTR_STATS_COUNT_MODE", + 12: "BRIDGE_ATTR_SELECTIVE_COUNTER_LIST", } BridgeAttr_value = map[string]int32{ "BRIDGE_ATTR_UNSPECIFIED": 0, @@ -64,6 +68,8 @@ var ( "BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP": 8, "BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE": 9, "BRIDGE_ATTR_BROADCAST_FLOOD_GROUP": 10, + "BRIDGE_ATTR_STATS_COUNT_MODE": 11, + "BRIDGE_ATTR_SELECTIVE_COUNTER_LIST": 12, } ) @@ -112,6 +118,8 @@ const ( BridgePortAttr_BRIDGE_PORT_ATTR_INGRESS_FILTERING BridgePortAttr = 12 BridgePortAttr_BRIDGE_PORT_ATTR_EGRESS_FILTERING BridgePortAttr = 13 BridgePortAttr_BRIDGE_PORT_ATTR_ISOLATION_GROUP BridgePortAttr = 14 + BridgePortAttr_BRIDGE_PORT_ATTR_STATS_COUNT_MODE BridgePortAttr = 15 + BridgePortAttr_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST BridgePortAttr = 16 ) // Enum value maps for BridgePortAttr. @@ -132,6 +140,8 @@ var ( 12: "BRIDGE_PORT_ATTR_INGRESS_FILTERING", 13: "BRIDGE_PORT_ATTR_EGRESS_FILTERING", 14: "BRIDGE_PORT_ATTR_ISOLATION_GROUP", + 15: "BRIDGE_PORT_ATTR_STATS_COUNT_MODE", + 16: "BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST", } BridgePortAttr_value = map[string]int32{ "BRIDGE_PORT_ATTR_UNSPECIFIED": 0, @@ -149,6 +159,8 @@ var ( "BRIDGE_PORT_ATTR_INGRESS_FILTERING": 12, "BRIDGE_PORT_ATTR_EGRESS_FILTERING": 13, "BRIDGE_PORT_ATTR_ISOLATION_GROUP": 14, + "BRIDGE_PORT_ATTR_STATS_COUNT_MODE": 15, + "BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST": 16, } ) @@ -191,6 +203,8 @@ type CreateBridgeRequest struct { UnknownMulticastFloodGroup *uint64 `protobuf:"varint,8,opt,name=unknown_multicast_flood_group,json=unknownMulticastFloodGroup,proto3,oneof" json:"unknown_multicast_flood_group,omitempty"` BroadcastFloodControlType *BridgeFloodControlType `protobuf:"varint,9,opt,name=broadcast_flood_control_type,json=broadcastFloodControlType,proto3,enum=lemming.dataplane.sai.BridgeFloodControlType,oneof" json:"broadcast_flood_control_type,omitempty"` BroadcastFloodGroup *uint64 `protobuf:"varint,10,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,11,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,12,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -295,6 +309,20 @@ func (x *CreateBridgeRequest) GetBroadcastFloodGroup() uint64 { return 0 } +func (x *CreateBridgeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateBridgeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateBridgeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -430,6 +458,8 @@ type SetBridgeAttributeRequest struct { UnknownMulticastFloodGroup *uint64 `protobuf:"varint,7,opt,name=unknown_multicast_flood_group,json=unknownMulticastFloodGroup,proto3,oneof" json:"unknown_multicast_flood_group,omitempty"` BroadcastFloodControlType *BridgeFloodControlType `protobuf:"varint,8,opt,name=broadcast_flood_control_type,json=broadcastFloodControlType,proto3,enum=lemming.dataplane.sai.BridgeFloodControlType,oneof" json:"broadcast_flood_control_type,omitempty"` BroadcastFloodGroup *uint64 `protobuf:"varint,9,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,10,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,11,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -527,6 +557,20 @@ func (x *SetBridgeAttributeRequest) GetBroadcastFloodGroup() uint64 { return 0 } +func (x *SetBridgeAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetBridgeAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetBridgeAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -772,6 +816,8 @@ type CreateBridgePortRequest struct { IngressFiltering *bool `protobuf:"varint,13,opt,name=ingress_filtering,json=ingressFiltering,proto3,oneof" json:"ingress_filtering,omitempty"` EgressFiltering *bool `protobuf:"varint,14,opt,name=egress_filtering,json=egressFiltering,proto3,oneof" json:"egress_filtering,omitempty"` IsolationGroup *uint64 `protobuf:"varint,15,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,16,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,17,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -911,6 +957,20 @@ func (x *CreateBridgePortRequest) GetIsolationGroup() uint64 { return 0 } +func (x *CreateBridgePortRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateBridgePortRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateBridgePortResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1047,6 +1107,8 @@ type SetBridgePortAttributeRequest struct { IngressFiltering *bool `protobuf:"varint,8,opt,name=ingress_filtering,json=ingressFiltering,proto3,oneof" json:"ingress_filtering,omitempty"` EgressFiltering *bool `protobuf:"varint,9,opt,name=egress_filtering,json=egressFiltering,proto3,oneof" json:"egress_filtering,omitempty"` IsolationGroup *uint64 `protobuf:"varint,10,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,11,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,12,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1151,6 +1213,20 @@ func (x *SetBridgePortAttributeRequest) GetIsolationGroup() uint64 { return 0 } +func (x *SetBridgePortAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetBridgePortAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetBridgePortAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1387,7 +1463,7 @@ var file_dataplane_proto_sai_bridge_proto_rawDesc = string([]byte{ 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xde, 0x08, 0x0a, 0x13, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x0a, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x42, 0x0a, 0x04, 0x74, @@ -1441,430 +1517,484 @@ var file_dataplane_proto_sai_bridge_proto_rawDesc = string([]byte{ 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, - 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3a, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, - 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, + 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3a, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, + 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x25, 0x0a, 0x23, 0x5f, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x28, 0x0a, 0x14, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, - 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x08, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, - 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, - 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, - 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, - 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x22, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, - 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, - 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, + 0x70, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x03, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x8a, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, - 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, + 0x75, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x1a, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, - 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1c, - 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x19, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, - 0x48, 0x07, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, - 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, - 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, - 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, - 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, + 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x28, 0x0a, + 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, - 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xba, 0x09, 0x0a, 0x19, 0x53, 0x65, 0x74, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, + 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, + 0x00, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, + 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x22, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, + 0x02, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, + 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x48, 0x03, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x8a, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, + 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, + 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x1a, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, + 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, + 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x19, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x07, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, + 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0c, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, + 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, + 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6d, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6d, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xba, 0x09, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, - 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, - 0x0c, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x74, 0x61, 0x67, - 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x72, 0x69, 0x66, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x11, 0x66, 0x64, 0x62, - 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, - 0x52, 0x0f, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x13, 0x6d, - 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x2a, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x25, 0x66, 0x64, 0x62, 0x4c, 0x65, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x69, 0x6f, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, - 0x48, 0x0a, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x38, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, - 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, - 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x3b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, - 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x96, 0x07, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x5c, 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x00, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x01, 0x52, 0x08, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x47, + 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xeb, 0x0a, + 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x74, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, + 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x72, + 0x69, 0x66, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x11, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, - 0x48, 0x02, 0x52, 0x0f, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, + 0x48, 0x07, 0x52, 0x0f, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x03, 0x52, + 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x2a, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, 0x52, 0x25, 0x66, 0x64, 0x62, + 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x25, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0b, 0x48, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, - 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, - 0x07, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, + 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0c, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x66, + 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x11, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x10, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3b, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x64, 0x62, + 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x66, 0x64, 0x62, + 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, + 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xc7, 0x08, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x5c, 0x0a, 0x0c, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, + 0x01, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, + 0x0a, 0x11, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, + 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x08, 0x48, 0x02, 0x52, 0x0f, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, + 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x03, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x2a, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, - 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, - 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, - 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x2a, 0xbb, 0x03, 0x0a, 0x0a, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, - 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, - 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x25, 0x0a, - 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, - 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, - 0x45, 0x53, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, - 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x52, 0x49, 0x44, 0x47, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, 0x52, 0x25, + 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, + 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, 0x52, 0x10, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x10, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0d, 0x48, 0x07, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x10, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x64, + 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x66, 0x64, + 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x1e, + 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, + 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x85, 0x04, 0x0a, 0x0a, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x14, 0x0a, 0x10, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x02, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, + 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x5f, 0x44, 0x49, + 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x55, - 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x10, 0x06, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x52, - 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, - 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x08, 0x12, 0x2c, 0x0a, 0x28, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, - 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, - 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x2a, 0xb5, - 0x04, 0x0a, 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1c, - 0x0a, 0x18, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, + 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, + 0x57, 0x4e, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x12, 0x34, 0x0a, 0x30, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x2d, + 0x0a, 0x29, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, + 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x08, 0x12, 0x2c, 0x0a, + 0x28, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, + 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, + 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x0b, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0c, 0x2a, 0x89, 0x05, 0x0a, + 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, - 0x1c, 0x0a, 0x18, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x1b, 0x0a, - 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x52, 0x49, 0x46, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, - 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, - 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, - 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x08, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, - 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x09, 0x12, 0x3f, - 0x0a, 0x3b, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, - 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, - 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0x0b, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x49, - 0x4c, 0x54, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x0d, - 0x12, 0x24, 0x0a, 0x20, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0e, 0x32, 0xc8, 0x09, 0x0a, 0x06, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x42, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, + 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x1c, 0x0a, + 0x18, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x52, 0x49, 0x46, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, + 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, + 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x08, + 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, + 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x09, 0x12, 0x3f, 0x0a, 0x3b, + 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x49, + 0x4d, 0x49, 0x54, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x20, 0x0a, + 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0b, 0x12, + 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, + 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x0d, 0x12, 0x24, + 0x0a, 0x20, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x2b, 0x0a, 0x27, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x10, 0x32, 0xc8, 0x09, 0x0a, 0x06, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, + 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x2a, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x74, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x2e, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1906,61 +2036,66 @@ var file_dataplane_proto_sai_bridge_proto_goTypes = []any{ (*GetBridgePortStatsResponse)(nil), // 21: lemming.dataplane.sai.GetBridgePortStatsResponse (BridgeType)(0), // 22: lemming.dataplane.sai.BridgeType (BridgeFloodControlType)(0), // 23: lemming.dataplane.sai.BridgeFloodControlType - (*BridgeAttribute)(nil), // 24: lemming.dataplane.sai.BridgeAttribute - (BridgeStat)(0), // 25: lemming.dataplane.sai.BridgeStat - (BridgePortType)(0), // 26: lemming.dataplane.sai.BridgePortType - (BridgePortTaggingMode)(0), // 27: lemming.dataplane.sai.BridgePortTaggingMode - (BridgePortFdbLearningMode)(0), // 28: lemming.dataplane.sai.BridgePortFdbLearningMode - (PacketAction)(0), // 29: lemming.dataplane.sai.PacketAction - (*BridgePortAttribute)(nil), // 30: lemming.dataplane.sai.BridgePortAttribute - (BridgePortStat)(0), // 31: lemming.dataplane.sai.BridgePortStat + (StatsCountMode)(0), // 24: lemming.dataplane.sai.StatsCountMode + (*BridgeAttribute)(nil), // 25: lemming.dataplane.sai.BridgeAttribute + (BridgeStat)(0), // 26: lemming.dataplane.sai.BridgeStat + (BridgePortType)(0), // 27: lemming.dataplane.sai.BridgePortType + (BridgePortTaggingMode)(0), // 28: lemming.dataplane.sai.BridgePortTaggingMode + (BridgePortFdbLearningMode)(0), // 29: lemming.dataplane.sai.BridgePortFdbLearningMode + (PacketAction)(0), // 30: lemming.dataplane.sai.PacketAction + (*BridgePortAttribute)(nil), // 31: lemming.dataplane.sai.BridgePortAttribute + (BridgePortStat)(0), // 32: lemming.dataplane.sai.BridgePortStat } var file_dataplane_proto_sai_bridge_proto_depIdxs = []int32{ 22, // 0: lemming.dataplane.sai.CreateBridgeRequest.type:type_name -> lemming.dataplane.sai.BridgeType 23, // 1: lemming.dataplane.sai.CreateBridgeRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType 23, // 2: lemming.dataplane.sai.CreateBridgeRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType 23, // 3: lemming.dataplane.sai.CreateBridgeRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 23, // 4: lemming.dataplane.sai.SetBridgeAttributeRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 23, // 5: lemming.dataplane.sai.SetBridgeAttributeRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 23, // 6: lemming.dataplane.sai.SetBridgeAttributeRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 0, // 7: lemming.dataplane.sai.GetBridgeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BridgeAttr - 24, // 8: lemming.dataplane.sai.GetBridgeAttributeResponse.attr:type_name -> lemming.dataplane.sai.BridgeAttribute - 25, // 9: lemming.dataplane.sai.GetBridgeStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BridgeStat - 26, // 10: lemming.dataplane.sai.CreateBridgePortRequest.type:type_name -> lemming.dataplane.sai.BridgePortType - 27, // 11: lemming.dataplane.sai.CreateBridgePortRequest.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode - 28, // 12: lemming.dataplane.sai.CreateBridgePortRequest.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode - 29, // 13: lemming.dataplane.sai.CreateBridgePortRequest.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 27, // 14: lemming.dataplane.sai.SetBridgePortAttributeRequest.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode - 28, // 15: lemming.dataplane.sai.SetBridgePortAttributeRequest.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode - 29, // 16: lemming.dataplane.sai.SetBridgePortAttributeRequest.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 1, // 17: lemming.dataplane.sai.GetBridgePortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BridgePortAttr - 30, // 18: lemming.dataplane.sai.GetBridgePortAttributeResponse.attr:type_name -> lemming.dataplane.sai.BridgePortAttribute - 31, // 19: lemming.dataplane.sai.GetBridgePortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BridgePortStat - 2, // 20: lemming.dataplane.sai.Bridge.CreateBridge:input_type -> lemming.dataplane.sai.CreateBridgeRequest - 4, // 21: lemming.dataplane.sai.Bridge.RemoveBridge:input_type -> lemming.dataplane.sai.RemoveBridgeRequest - 6, // 22: lemming.dataplane.sai.Bridge.SetBridgeAttribute:input_type -> lemming.dataplane.sai.SetBridgeAttributeRequest - 8, // 23: lemming.dataplane.sai.Bridge.GetBridgeAttribute:input_type -> lemming.dataplane.sai.GetBridgeAttributeRequest - 10, // 24: lemming.dataplane.sai.Bridge.GetBridgeStats:input_type -> lemming.dataplane.sai.GetBridgeStatsRequest - 12, // 25: lemming.dataplane.sai.Bridge.CreateBridgePort:input_type -> lemming.dataplane.sai.CreateBridgePortRequest - 14, // 26: lemming.dataplane.sai.Bridge.RemoveBridgePort:input_type -> lemming.dataplane.sai.RemoveBridgePortRequest - 16, // 27: lemming.dataplane.sai.Bridge.SetBridgePortAttribute:input_type -> lemming.dataplane.sai.SetBridgePortAttributeRequest - 18, // 28: lemming.dataplane.sai.Bridge.GetBridgePortAttribute:input_type -> lemming.dataplane.sai.GetBridgePortAttributeRequest - 20, // 29: lemming.dataplane.sai.Bridge.GetBridgePortStats:input_type -> lemming.dataplane.sai.GetBridgePortStatsRequest - 3, // 30: lemming.dataplane.sai.Bridge.CreateBridge:output_type -> lemming.dataplane.sai.CreateBridgeResponse - 5, // 31: lemming.dataplane.sai.Bridge.RemoveBridge:output_type -> lemming.dataplane.sai.RemoveBridgeResponse - 7, // 32: lemming.dataplane.sai.Bridge.SetBridgeAttribute:output_type -> lemming.dataplane.sai.SetBridgeAttributeResponse - 9, // 33: lemming.dataplane.sai.Bridge.GetBridgeAttribute:output_type -> lemming.dataplane.sai.GetBridgeAttributeResponse - 11, // 34: lemming.dataplane.sai.Bridge.GetBridgeStats:output_type -> lemming.dataplane.sai.GetBridgeStatsResponse - 13, // 35: lemming.dataplane.sai.Bridge.CreateBridgePort:output_type -> lemming.dataplane.sai.CreateBridgePortResponse - 15, // 36: lemming.dataplane.sai.Bridge.RemoveBridgePort:output_type -> lemming.dataplane.sai.RemoveBridgePortResponse - 17, // 37: lemming.dataplane.sai.Bridge.SetBridgePortAttribute:output_type -> lemming.dataplane.sai.SetBridgePortAttributeResponse - 19, // 38: lemming.dataplane.sai.Bridge.GetBridgePortAttribute:output_type -> lemming.dataplane.sai.GetBridgePortAttributeResponse - 21, // 39: lemming.dataplane.sai.Bridge.GetBridgePortStats:output_type -> lemming.dataplane.sai.GetBridgePortStatsResponse - 30, // [30:40] is the sub-list for method output_type - 20, // [20:30] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 24, // 4: lemming.dataplane.sai.CreateBridgeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 23, // 5: lemming.dataplane.sai.SetBridgeAttributeRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 23, // 6: lemming.dataplane.sai.SetBridgeAttributeRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 23, // 7: lemming.dataplane.sai.SetBridgeAttributeRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 24, // 8: lemming.dataplane.sai.SetBridgeAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 9: lemming.dataplane.sai.GetBridgeAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BridgeAttr + 25, // 10: lemming.dataplane.sai.GetBridgeAttributeResponse.attr:type_name -> lemming.dataplane.sai.BridgeAttribute + 26, // 11: lemming.dataplane.sai.GetBridgeStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BridgeStat + 27, // 12: lemming.dataplane.sai.CreateBridgePortRequest.type:type_name -> lemming.dataplane.sai.BridgePortType + 28, // 13: lemming.dataplane.sai.CreateBridgePortRequest.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode + 29, // 14: lemming.dataplane.sai.CreateBridgePortRequest.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode + 30, // 15: lemming.dataplane.sai.CreateBridgePortRequest.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 24, // 16: lemming.dataplane.sai.CreateBridgePortRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 28, // 17: lemming.dataplane.sai.SetBridgePortAttributeRequest.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode + 29, // 18: lemming.dataplane.sai.SetBridgePortAttributeRequest.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode + 30, // 19: lemming.dataplane.sai.SetBridgePortAttributeRequest.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 24, // 20: lemming.dataplane.sai.SetBridgePortAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 1, // 21: lemming.dataplane.sai.GetBridgePortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BridgePortAttr + 31, // 22: lemming.dataplane.sai.GetBridgePortAttributeResponse.attr:type_name -> lemming.dataplane.sai.BridgePortAttribute + 32, // 23: lemming.dataplane.sai.GetBridgePortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BridgePortStat + 2, // 24: lemming.dataplane.sai.Bridge.CreateBridge:input_type -> lemming.dataplane.sai.CreateBridgeRequest + 4, // 25: lemming.dataplane.sai.Bridge.RemoveBridge:input_type -> lemming.dataplane.sai.RemoveBridgeRequest + 6, // 26: lemming.dataplane.sai.Bridge.SetBridgeAttribute:input_type -> lemming.dataplane.sai.SetBridgeAttributeRequest + 8, // 27: lemming.dataplane.sai.Bridge.GetBridgeAttribute:input_type -> lemming.dataplane.sai.GetBridgeAttributeRequest + 10, // 28: lemming.dataplane.sai.Bridge.GetBridgeStats:input_type -> lemming.dataplane.sai.GetBridgeStatsRequest + 12, // 29: lemming.dataplane.sai.Bridge.CreateBridgePort:input_type -> lemming.dataplane.sai.CreateBridgePortRequest + 14, // 30: lemming.dataplane.sai.Bridge.RemoveBridgePort:input_type -> lemming.dataplane.sai.RemoveBridgePortRequest + 16, // 31: lemming.dataplane.sai.Bridge.SetBridgePortAttribute:input_type -> lemming.dataplane.sai.SetBridgePortAttributeRequest + 18, // 32: lemming.dataplane.sai.Bridge.GetBridgePortAttribute:input_type -> lemming.dataplane.sai.GetBridgePortAttributeRequest + 20, // 33: lemming.dataplane.sai.Bridge.GetBridgePortStats:input_type -> lemming.dataplane.sai.GetBridgePortStatsRequest + 3, // 34: lemming.dataplane.sai.Bridge.CreateBridge:output_type -> lemming.dataplane.sai.CreateBridgeResponse + 5, // 35: lemming.dataplane.sai.Bridge.RemoveBridge:output_type -> lemming.dataplane.sai.RemoveBridgeResponse + 7, // 36: lemming.dataplane.sai.Bridge.SetBridgeAttribute:output_type -> lemming.dataplane.sai.SetBridgeAttributeResponse + 9, // 37: lemming.dataplane.sai.Bridge.GetBridgeAttribute:output_type -> lemming.dataplane.sai.GetBridgeAttributeResponse + 11, // 38: lemming.dataplane.sai.Bridge.GetBridgeStats:output_type -> lemming.dataplane.sai.GetBridgeStatsResponse + 13, // 39: lemming.dataplane.sai.Bridge.CreateBridgePort:output_type -> lemming.dataplane.sai.CreateBridgePortResponse + 15, // 40: lemming.dataplane.sai.Bridge.RemoveBridgePort:output_type -> lemming.dataplane.sai.RemoveBridgePortResponse + 17, // 41: lemming.dataplane.sai.Bridge.SetBridgePortAttribute:output_type -> lemming.dataplane.sai.SetBridgePortAttributeResponse + 19, // 42: lemming.dataplane.sai.Bridge.GetBridgePortAttribute:output_type -> lemming.dataplane.sai.GetBridgePortAttributeResponse + 21, // 43: lemming.dataplane.sai.Bridge.GetBridgePortStats:output_type -> lemming.dataplane.sai.GetBridgePortStatsResponse + 34, // [34:44] is the sub-list for method output_type + 24, // [24:34] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_bridge_proto_init() } diff --git a/dataplane/proto/sai/bridge.proto b/dataplane/proto/sai/bridge.proto index a868290cf..d8734ad16 100644 --- a/dataplane/proto/sai/bridge.proto +++ b/dataplane/proto/sai/bridge.proto @@ -7,171 +7,194 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum BridgeAttr { - BRIDGE_ATTR_UNSPECIFIED = 0; - BRIDGE_ATTR_TYPE = 1; - BRIDGE_ATTR_PORT_LIST = 2; - BRIDGE_ATTR_MAX_LEARNED_ADDRESSES = 3; - BRIDGE_ATTR_LEARN_DISABLE = 4; - BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE = 5; - BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP = 6; - BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE = 7; - BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP = 8; - BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE = 9; - BRIDGE_ATTR_BROADCAST_FLOOD_GROUP = 10; + BRIDGE_ATTR_UNSPECIFIED = 0; + BRIDGE_ATTR_TYPE = 1; + BRIDGE_ATTR_PORT_LIST = 2; + BRIDGE_ATTR_MAX_LEARNED_ADDRESSES = 3; + BRIDGE_ATTR_LEARN_DISABLE = 4; + BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE = 5; + BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP = 6; + BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE = 7; + BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP = 8; + BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE = 9; + BRIDGE_ATTR_BROADCAST_FLOOD_GROUP = 10; + BRIDGE_ATTR_STATS_COUNT_MODE = 11; + BRIDGE_ATTR_SELECTIVE_COUNTER_LIST = 12; } enum BridgePortAttr { - BRIDGE_PORT_ATTR_UNSPECIFIED = 0; - BRIDGE_PORT_ATTR_TYPE = 1; - BRIDGE_PORT_ATTR_PORT_ID = 2; - BRIDGE_PORT_ATTR_TAGGING_MODE = 3; - BRIDGE_PORT_ATTR_VLAN_ID = 4; - BRIDGE_PORT_ATTR_RIF_ID = 5; - BRIDGE_PORT_ATTR_TUNNEL_ID = 6; - BRIDGE_PORT_ATTR_BRIDGE_ID = 7; - BRIDGE_PORT_ATTR_FDB_LEARNING_MODE = 8; - BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES = 9; - BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION = 10; - BRIDGE_PORT_ATTR_ADMIN_STATE = 11; - BRIDGE_PORT_ATTR_INGRESS_FILTERING = 12; - BRIDGE_PORT_ATTR_EGRESS_FILTERING = 13; - BRIDGE_PORT_ATTR_ISOLATION_GROUP = 14; + BRIDGE_PORT_ATTR_UNSPECIFIED = 0; + BRIDGE_PORT_ATTR_TYPE = 1; + BRIDGE_PORT_ATTR_PORT_ID = 2; + BRIDGE_PORT_ATTR_TAGGING_MODE = 3; + BRIDGE_PORT_ATTR_VLAN_ID = 4; + BRIDGE_PORT_ATTR_RIF_ID = 5; + BRIDGE_PORT_ATTR_TUNNEL_ID = 6; + BRIDGE_PORT_ATTR_BRIDGE_ID = 7; + BRIDGE_PORT_ATTR_FDB_LEARNING_MODE = 8; + BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES = 9; + BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION = 10; + BRIDGE_PORT_ATTR_ADMIN_STATE = 11; + BRIDGE_PORT_ATTR_INGRESS_FILTERING = 12; + BRIDGE_PORT_ATTR_EGRESS_FILTERING = 13; + BRIDGE_PORT_ATTR_ISOLATION_GROUP = 14; + BRIDGE_PORT_ATTR_STATS_COUNT_MODE = 15; + BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST = 16; } message CreateBridgeRequest { - option (sai_type) = OBJECT_TYPE_BRIDGE; - uint64 switch = 1; - optional BridgeType type = 2[(attr_enum_value) = 1]; - optional uint32 max_learned_addresses = 3[(attr_enum_value) = 3]; - optional bool learn_disable = 4[(attr_enum_value) = 4]; - optional BridgeFloodControlType unknown_unicast_flood_control_type = 5[(attr_enum_value) = 5]; - optional uint64 unknown_unicast_flood_group = 6[(attr_enum_value) = 6]; - optional BridgeFloodControlType unknown_multicast_flood_control_type = 7[(attr_enum_value) = 7]; - optional uint64 unknown_multicast_flood_group = 8[(attr_enum_value) = 8]; - optional BridgeFloodControlType broadcast_flood_control_type = 9[(attr_enum_value) = 9]; - optional uint64 broadcast_flood_group = 10[(attr_enum_value) = 10]; + option (sai_type) = OBJECT_TYPE_BRIDGE; + uint64 switch = 1; + optional BridgeType type = 2 [(attr_enum_value) = 1]; + optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; + optional bool learn_disable = 4 [(attr_enum_value) = 4]; + optional BridgeFloodControlType unknown_unicast_flood_control_type = 5 + [(attr_enum_value) = 5]; + optional uint64 unknown_unicast_flood_group = 6 [(attr_enum_value) = 6]; + optional BridgeFloodControlType unknown_multicast_flood_control_type = 7 + [(attr_enum_value) = 7]; + optional uint64 unknown_multicast_flood_group = 8 [(attr_enum_value) = 8]; + optional BridgeFloodControlType broadcast_flood_control_type = 9 + [(attr_enum_value) = 9]; + optional uint64 broadcast_flood_group = 10 [(attr_enum_value) = 10]; + optional StatsCountMode stats_count_mode = 11 [(attr_enum_value) = 11]; + repeated uint64 selective_counter_list = 12 [(attr_enum_value) = 12]; } message CreateBridgeResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveBridgeRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveBridgeResponse { -} +message RemoveBridgeResponse {} message SetBridgeAttributeRequest { - uint64 oid = 1; - optional uint32 max_learned_addresses = 2[(attr_enum_value) = 3]; - optional bool learn_disable = 3[(attr_enum_value) = 4]; - optional BridgeFloodControlType unknown_unicast_flood_control_type = 4[(attr_enum_value) = 5]; - optional uint64 unknown_unicast_flood_group = 5[(attr_enum_value) = 6]; - optional BridgeFloodControlType unknown_multicast_flood_control_type = 6[(attr_enum_value) = 7]; - optional uint64 unknown_multicast_flood_group = 7[(attr_enum_value) = 8]; - optional BridgeFloodControlType broadcast_flood_control_type = 8[(attr_enum_value) = 9]; - optional uint64 broadcast_flood_group = 9[(attr_enum_value) = 10]; -} - -message SetBridgeAttributeResponse { -} + uint64 oid = 1; + optional uint32 max_learned_addresses = 2 [(attr_enum_value) = 3]; + optional bool learn_disable = 3 [(attr_enum_value) = 4]; + optional BridgeFloodControlType unknown_unicast_flood_control_type = 4 + [(attr_enum_value) = 5]; + optional uint64 unknown_unicast_flood_group = 5 [(attr_enum_value) = 6]; + optional BridgeFloodControlType unknown_multicast_flood_control_type = 6 + [(attr_enum_value) = 7]; + optional uint64 unknown_multicast_flood_group = 7 [(attr_enum_value) = 8]; + optional BridgeFloodControlType broadcast_flood_control_type = 8 + [(attr_enum_value) = 9]; + optional uint64 broadcast_flood_group = 9 [(attr_enum_value) = 10]; + optional StatsCountMode stats_count_mode = 10 [(attr_enum_value) = 11]; + repeated uint64 selective_counter_list = 11 [(attr_enum_value) = 12]; +} + +message SetBridgeAttributeResponse {} message GetBridgeAttributeRequest { - uint64 oid = 1; - repeated BridgeAttr attr_type = 2; + uint64 oid = 1; + repeated BridgeAttr attr_type = 2; } message GetBridgeAttributeResponse { - BridgeAttribute attr = 1; + BridgeAttribute attr = 1; } message GetBridgeStatsRequest { - uint64 oid = 1; - repeated BridgeStat counter_ids = 2; + uint64 oid = 1; + repeated BridgeStat counter_ids = 2; } message GetBridgeStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateBridgePortRequest { - option (sai_type) = OBJECT_TYPE_BRIDGE_PORT; - uint64 switch = 1; - optional BridgePortType type = 2[(attr_enum_value) = 1]; - optional uint64 port_id = 3[(attr_enum_value) = 2]; - optional BridgePortTaggingMode tagging_mode = 4[(attr_enum_value) = 3]; - optional uint32 vlan_id = 5[(attr_enum_value) = 4]; - optional uint64 rif_id = 6[(attr_enum_value) = 5]; - optional uint64 tunnel_id = 7[(attr_enum_value) = 6]; - optional uint64 bridge_id = 8[(attr_enum_value) = 7]; - optional BridgePortFdbLearningMode fdb_learning_mode = 9[(attr_enum_value) = 8]; - optional uint32 max_learned_addresses = 10[(attr_enum_value) = 9]; - optional PacketAction fdb_learning_limit_violation_packet_action = 11[(attr_enum_value) = 10]; - optional bool admin_state = 12[(attr_enum_value) = 11]; - optional bool ingress_filtering = 13[(attr_enum_value) = 12]; - optional bool egress_filtering = 14[(attr_enum_value) = 13]; - optional uint64 isolation_group = 15[(attr_enum_value) = 14]; + option (sai_type) = OBJECT_TYPE_BRIDGE_PORT; + uint64 switch = 1; + optional BridgePortType type = 2 [(attr_enum_value) = 1]; + optional uint64 port_id = 3 [(attr_enum_value) = 2]; + optional BridgePortTaggingMode tagging_mode = 4 [(attr_enum_value) = 3]; + optional uint32 vlan_id = 5 [(attr_enum_value) = 4]; + optional uint64 rif_id = 6 [(attr_enum_value) = 5]; + optional uint64 tunnel_id = 7 [(attr_enum_value) = 6]; + optional uint64 bridge_id = 8 [(attr_enum_value) = 7]; + optional BridgePortFdbLearningMode fdb_learning_mode = 9 + [(attr_enum_value) = 8]; + optional uint32 max_learned_addresses = 10 [(attr_enum_value) = 9]; + optional PacketAction fdb_learning_limit_violation_packet_action = 11 + [(attr_enum_value) = 10]; + optional bool admin_state = 12 [(attr_enum_value) = 11]; + optional bool ingress_filtering = 13 [(attr_enum_value) = 12]; + optional bool egress_filtering = 14 [(attr_enum_value) = 13]; + optional uint64 isolation_group = 15 [(attr_enum_value) = 14]; + optional StatsCountMode stats_count_mode = 16 [(attr_enum_value) = 15]; + repeated uint64 selective_counter_list = 17 [(attr_enum_value) = 16]; } message CreateBridgePortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveBridgePortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveBridgePortResponse { -} +message RemoveBridgePortResponse {} message SetBridgePortAttributeRequest { - uint64 oid = 1; - optional BridgePortTaggingMode tagging_mode = 2[(attr_enum_value) = 3]; - optional uint64 bridge_id = 3[(attr_enum_value) = 7]; - optional BridgePortFdbLearningMode fdb_learning_mode = 4[(attr_enum_value) = 8]; - optional uint32 max_learned_addresses = 5[(attr_enum_value) = 9]; - optional PacketAction fdb_learning_limit_violation_packet_action = 6[(attr_enum_value) = 10]; - optional bool admin_state = 7[(attr_enum_value) = 11]; - optional bool ingress_filtering = 8[(attr_enum_value) = 12]; - optional bool egress_filtering = 9[(attr_enum_value) = 13]; - optional uint64 isolation_group = 10[(attr_enum_value) = 14]; -} - -message SetBridgePortAttributeResponse { -} + uint64 oid = 1; + optional BridgePortTaggingMode tagging_mode = 2 [(attr_enum_value) = 3]; + optional uint64 bridge_id = 3 [(attr_enum_value) = 7]; + optional BridgePortFdbLearningMode fdb_learning_mode = 4 + [(attr_enum_value) = 8]; + optional uint32 max_learned_addresses = 5 [(attr_enum_value) = 9]; + optional PacketAction fdb_learning_limit_violation_packet_action = 6 + [(attr_enum_value) = 10]; + optional bool admin_state = 7 [(attr_enum_value) = 11]; + optional bool ingress_filtering = 8 [(attr_enum_value) = 12]; + optional bool egress_filtering = 9 [(attr_enum_value) = 13]; + optional uint64 isolation_group = 10 [(attr_enum_value) = 14]; + optional StatsCountMode stats_count_mode = 11 [(attr_enum_value) = 15]; + repeated uint64 selective_counter_list = 12 [(attr_enum_value) = 16]; +} + +message SetBridgePortAttributeResponse {} message GetBridgePortAttributeRequest { - uint64 oid = 1; - repeated BridgePortAttr attr_type = 2; + uint64 oid = 1; + repeated BridgePortAttr attr_type = 2; } message GetBridgePortAttributeResponse { - BridgePortAttribute attr = 1; + BridgePortAttribute attr = 1; } message GetBridgePortStatsRequest { - uint64 oid = 1; - repeated BridgePortStat counter_ids = 2; + uint64 oid = 1; + repeated BridgePortStat counter_ids = 2; } message GetBridgePortStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Bridge { - rpc CreateBridge (CreateBridgeRequest) returns (CreateBridgeResponse) {} - rpc RemoveBridge (RemoveBridgeRequest) returns (RemoveBridgeResponse) {} - rpc SetBridgeAttribute (SetBridgeAttributeRequest) returns (SetBridgeAttributeResponse) {} - rpc GetBridgeAttribute (GetBridgeAttributeRequest) returns (GetBridgeAttributeResponse) {} - rpc GetBridgeStats (GetBridgeStatsRequest) returns (GetBridgeStatsResponse) {} - rpc CreateBridgePort (CreateBridgePortRequest) returns (CreateBridgePortResponse) {} - rpc RemoveBridgePort (RemoveBridgePortRequest) returns (RemoveBridgePortResponse) {} - rpc SetBridgePortAttribute (SetBridgePortAttributeRequest) returns (SetBridgePortAttributeResponse) {} - rpc GetBridgePortAttribute (GetBridgePortAttributeRequest) returns (GetBridgePortAttributeResponse) {} - rpc GetBridgePortStats (GetBridgePortStatsRequest) returns (GetBridgePortStatsResponse) {} + rpc CreateBridge(CreateBridgeRequest) returns (CreateBridgeResponse) {} + rpc RemoveBridge(RemoveBridgeRequest) returns (RemoveBridgeResponse) {} + rpc SetBridgeAttribute(SetBridgeAttributeRequest) + returns (SetBridgeAttributeResponse) {} + rpc GetBridgeAttribute(GetBridgeAttributeRequest) + returns (GetBridgeAttributeResponse) {} + rpc GetBridgeStats(GetBridgeStatsRequest) returns (GetBridgeStatsResponse) {} + rpc CreateBridgePort(CreateBridgePortRequest) + returns (CreateBridgePortResponse) {} + rpc RemoveBridgePort(RemoveBridgePortRequest) + returns (RemoveBridgePortResponse) {} + rpc SetBridgePortAttribute(SetBridgePortAttributeRequest) + returns (SetBridgePortAttributeResponse) {} + rpc GetBridgePortAttribute(GetBridgePortAttributeRequest) + returns (GetBridgePortAttributeResponse) {} + rpc GetBridgePortStats(GetBridgePortStatsRequest) + returns (GetBridgePortStatsResponse) {} } diff --git a/dataplane/proto/sai/buffer.pb.go b/dataplane/proto/sai/buffer.pb.go index c30ecfaba..4c2038b22 100644 --- a/dataplane/proto/sai/buffer.pb.go +++ b/dataplane/proto/sai/buffer.pb.go @@ -24,14 +24,16 @@ const ( type BufferPoolAttr int32 const ( - BufferPoolAttr_BUFFER_POOL_ATTR_UNSPECIFIED BufferPoolAttr = 0 - BufferPoolAttr_BUFFER_POOL_ATTR_SHARED_SIZE BufferPoolAttr = 1 - BufferPoolAttr_BUFFER_POOL_ATTR_TYPE BufferPoolAttr = 2 - BufferPoolAttr_BUFFER_POOL_ATTR_SIZE BufferPoolAttr = 3 - BufferPoolAttr_BUFFER_POOL_ATTR_THRESHOLD_MODE BufferPoolAttr = 4 - BufferPoolAttr_BUFFER_POOL_ATTR_TAM BufferPoolAttr = 5 - BufferPoolAttr_BUFFER_POOL_ATTR_XOFF_SIZE BufferPoolAttr = 6 - BufferPoolAttr_BUFFER_POOL_ATTR_WRED_PROFILE_ID BufferPoolAttr = 7 + BufferPoolAttr_BUFFER_POOL_ATTR_UNSPECIFIED BufferPoolAttr = 0 + BufferPoolAttr_BUFFER_POOL_ATTR_SHARED_SIZE BufferPoolAttr = 1 + BufferPoolAttr_BUFFER_POOL_ATTR_TYPE BufferPoolAttr = 2 + BufferPoolAttr_BUFFER_POOL_ATTR_SIZE BufferPoolAttr = 3 + BufferPoolAttr_BUFFER_POOL_ATTR_THRESHOLD_MODE BufferPoolAttr = 4 + BufferPoolAttr_BUFFER_POOL_ATTR_TAM BufferPoolAttr = 5 + BufferPoolAttr_BUFFER_POOL_ATTR_XOFF_SIZE BufferPoolAttr = 6 + BufferPoolAttr_BUFFER_POOL_ATTR_WRED_PROFILE_ID BufferPoolAttr = 7 + BufferPoolAttr_BUFFER_POOL_ATTR_STATS_COUNT_MODE BufferPoolAttr = 8 + BufferPoolAttr_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST BufferPoolAttr = 9 ) // Enum value maps for BufferPoolAttr. @@ -45,16 +47,20 @@ var ( 5: "BUFFER_POOL_ATTR_TAM", 6: "BUFFER_POOL_ATTR_XOFF_SIZE", 7: "BUFFER_POOL_ATTR_WRED_PROFILE_ID", + 8: "BUFFER_POOL_ATTR_STATS_COUNT_MODE", + 9: "BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST", } BufferPoolAttr_value = map[string]int32{ - "BUFFER_POOL_ATTR_UNSPECIFIED": 0, - "BUFFER_POOL_ATTR_SHARED_SIZE": 1, - "BUFFER_POOL_ATTR_TYPE": 2, - "BUFFER_POOL_ATTR_SIZE": 3, - "BUFFER_POOL_ATTR_THRESHOLD_MODE": 4, - "BUFFER_POOL_ATTR_TAM": 5, - "BUFFER_POOL_ATTR_XOFF_SIZE": 6, - "BUFFER_POOL_ATTR_WRED_PROFILE_ID": 7, + "BUFFER_POOL_ATTR_UNSPECIFIED": 0, + "BUFFER_POOL_ATTR_SHARED_SIZE": 1, + "BUFFER_POOL_ATTR_TYPE": 2, + "BUFFER_POOL_ATTR_SIZE": 3, + "BUFFER_POOL_ATTR_THRESHOLD_MODE": 4, + "BUFFER_POOL_ATTR_TAM": 5, + "BUFFER_POOL_ATTR_XOFF_SIZE": 6, + "BUFFER_POOL_ATTR_WRED_PROFILE_ID": 7, + "BUFFER_POOL_ATTR_STATS_COUNT_MODE": 8, + "BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST": 9, } ) @@ -88,11 +94,13 @@ func (BufferPoolAttr) EnumDescriptor() ([]byte, []int) { type IngressPriorityGroupAttr int32 const ( - IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED IngressPriorityGroupAttr = 0 - IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE IngressPriorityGroupAttr = 1 - IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_PORT IngressPriorityGroupAttr = 2 - IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_TAM IngressPriorityGroupAttr = 3 - IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_INDEX IngressPriorityGroupAttr = 4 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED IngressPriorityGroupAttr = 0 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE IngressPriorityGroupAttr = 1 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_PORT IngressPriorityGroupAttr = 2 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_TAM IngressPriorityGroupAttr = 3 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_INDEX IngressPriorityGroupAttr = 4 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE IngressPriorityGroupAttr = 5 + IngressPriorityGroupAttr_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST IngressPriorityGroupAttr = 6 ) // Enum value maps for IngressPriorityGroupAttr. @@ -103,13 +111,17 @@ var ( 2: "INGRESS_PRIORITY_GROUP_ATTR_PORT", 3: "INGRESS_PRIORITY_GROUP_ATTR_TAM", 4: "INGRESS_PRIORITY_GROUP_ATTR_INDEX", + 5: "INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE", + 6: "INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST", } IngressPriorityGroupAttr_value = map[string]int32{ - "INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED": 0, - "INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE": 1, - "INGRESS_PRIORITY_GROUP_ATTR_PORT": 2, - "INGRESS_PRIORITY_GROUP_ATTR_TAM": 3, - "INGRESS_PRIORITY_GROUP_ATTR_INDEX": 4, + "INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED": 0, + "INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE": 1, + "INGRESS_PRIORITY_GROUP_ATTR_PORT": 2, + "INGRESS_PRIORITY_GROUP_ATTR_TAM": 3, + "INGRESS_PRIORITY_GROUP_ATTR_INDEX": 4, + "INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE": 5, + "INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST": 6, } ) @@ -208,16 +220,18 @@ func (BufferProfileAttr) EnumDescriptor() ([]byte, []int) { } type CreateBufferPoolRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - Type *BufferPoolType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.BufferPoolType,oneof" json:"type,omitempty"` - Size *uint64 `protobuf:"varint,3,opt,name=size,proto3,oneof" json:"size,omitempty"` - ThresholdMode *BufferPoolThresholdMode `protobuf:"varint,4,opt,name=threshold_mode,json=thresholdMode,proto3,enum=lemming.dataplane.sai.BufferPoolThresholdMode,oneof" json:"threshold_mode,omitempty"` - Tam []uint64 `protobuf:"varint,5,rep,packed,name=tam,proto3" json:"tam,omitempty"` - XoffSize *uint64 `protobuf:"varint,6,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` - WredProfileId *uint64 `protobuf:"varint,7,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + Type *BufferPoolType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.BufferPoolType,oneof" json:"type,omitempty"` + Size *uint64 `protobuf:"varint,3,opt,name=size,proto3,oneof" json:"size,omitempty"` + ThresholdMode *BufferPoolThresholdMode `protobuf:"varint,4,opt,name=threshold_mode,json=thresholdMode,proto3,enum=lemming.dataplane.sai.BufferPoolThresholdMode,oneof" json:"threshold_mode,omitempty"` + Tam []uint64 `protobuf:"varint,5,rep,packed,name=tam,proto3" json:"tam,omitempty"` + XoffSize *uint64 `protobuf:"varint,6,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` + WredProfileId *uint64 `protobuf:"varint,7,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,8,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,9,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateBufferPoolRequest) Reset() { @@ -299,6 +313,20 @@ func (x *CreateBufferPoolRequest) GetWredProfileId() uint64 { return 0 } +func (x *CreateBufferPoolRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateBufferPoolRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateBufferPoolResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -424,14 +452,16 @@ func (*RemoveBufferPoolResponse) Descriptor() ([]byte, []int) { } type SetBufferPoolAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - Size *uint64 `protobuf:"varint,2,opt,name=size,proto3,oneof" json:"size,omitempty"` - Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` - XoffSize *uint64 `protobuf:"varint,4,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` - WredProfileId *uint64 `protobuf:"varint,5,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + Size *uint64 `protobuf:"varint,2,opt,name=size,proto3,oneof" json:"size,omitempty"` + Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` + XoffSize *uint64 `protobuf:"varint,4,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` + WredProfileId *uint64 `protobuf:"varint,5,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,6,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,7,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetBufferPoolAttributeRequest) Reset() { @@ -499,6 +529,20 @@ func (x *SetBufferPoolAttributeRequest) GetWredProfileId() uint64 { return 0 } +func (x *SetBufferPoolAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetBufferPoolAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetBufferPoolAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -728,14 +772,16 @@ func (x *GetBufferPoolStatsResponse) GetValues() []uint64 { } type CreateIngressPriorityGroupRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - BufferProfile *uint64 `protobuf:"varint,2,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` - Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` - Tam []uint64 `protobuf:"varint,4,rep,packed,name=tam,proto3" json:"tam,omitempty"` - Index *uint32 `protobuf:"varint,5,opt,name=index,proto3,oneof" json:"index,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + BufferProfile *uint64 `protobuf:"varint,2,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` + Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` + Tam []uint64 `protobuf:"varint,4,rep,packed,name=tam,proto3" json:"tam,omitempty"` + Index *uint32 `protobuf:"varint,5,opt,name=index,proto3,oneof" json:"index,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,6,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,7,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateIngressPriorityGroupRequest) Reset() { @@ -803,6 +849,20 @@ func (x *CreateIngressPriorityGroupRequest) GetIndex() uint32 { return 0 } +func (x *CreateIngressPriorityGroupRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateIngressPriorityGroupRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateIngressPriorityGroupResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -928,12 +988,14 @@ func (*RemoveIngressPriorityGroupResponse) Descriptor() ([]byte, []int) { } type SetIngressPriorityGroupAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - BufferProfile *uint64 `protobuf:"varint,2,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` - Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + BufferProfile *uint64 `protobuf:"varint,2,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` + Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,4,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,5,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetIngressPriorityGroupAttributeRequest) Reset() { @@ -987,6 +1049,20 @@ func (x *SetIngressPriorityGroupAttributeRequest) GetTam() []uint64 { return nil } +func (x *SetIngressPriorityGroupAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetIngressPriorityGroupAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetIngressPriorityGroupAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1679,7 +1755,7 @@ var file_dataplane_proto_sai_buffer_proto_rawDesc = string([]byte{ 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc6, 0x03, 0x0a, 0x17, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x04, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, @@ -1703,405 +1779,461 @@ var file_dataplane_proto_sai_buffer_proto_rawDesc = string([]byte{ 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x19, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, - 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, - 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x1d, - 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, - 0x1f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x09, 0x78, 0x6f, - 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x01, 0x52, 0x08, 0x78, 0x6f, 0x66, 0x66, 0x53, 0x69, 0x7a, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x02, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, - 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, - 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, - 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xfb, 0x01, 0x0a, - 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, - 0x90, 0xad, 0x0f, 0x1b, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x36, 0x0a, 0x22, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x22, 0x35, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x24, 0x0a, 0x22, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x9c, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x32, 0x0a, - 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x0d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, + 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x14, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x19, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa7, 0x03, 0x0a, + 0x1d, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x2a, - 0x0a, 0x28, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x27, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, - 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x74, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x89, 0x01, 0x0a, - 0x23, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x50, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3e, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x49, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x09, 0x78, + 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x01, 0x52, 0x08, 0x78, 0x6f, 0x66, 0x66, 0x53, 0x69, + 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x02, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x08, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, + 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, + 0x6c, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, + 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, + 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xac, + 0x03, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x32, 0x0a, 0x0e, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x04, 0x48, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x1b, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x36, 0x0a, + 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x35, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xff, 0x04, 0x0a, 0x1a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, - 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x12, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, - 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x54, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x78, - 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x06, 0x78, 0x6f, 0x66, 0x66, 0x54, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x06, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x05, 0x78, 0x6f, 0x6e, - 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x78, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x54, 0x68, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x1a, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, - 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x78, 0x6f, 0x6e, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x22, 0x2f, 0x0a, 0x1b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x1a, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcb, 0x03, 0x0a, 0x20, 0x53, - 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x12, 0x72, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x37, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, - 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x44, 0x79, 0x6e, - 0x61, 0x6d, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x0e, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x07, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x06, 0x78, 0x6f, 0x66, - 0x66, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, - 0x52, 0x05, 0x78, 0x6f, 0x6e, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x78, 0x6f, - 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x0b, 0x78, 0x6f, 0x6e, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x68, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, - 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, - 0x20, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x47, 0x65, - 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x41, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, - 0x74, 0x72, 0x2a, 0x8f, 0x02, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, - 0x6c, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, 0x46, 0x45, - 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, - 0x45, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x46, - 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x03, 0x12, - 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x05, 0x12, 0x1e, - 0x0a, 0x1a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x06, 0x12, 0x24, - 0x0a, 0x20, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, - 0x49, 0x44, 0x10, 0x07, 0x2a, 0xe9, 0x01, 0x0a, 0x18, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x24, 0x0a, 0x22, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xcd, 0x02, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x32, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x22, 0x2a, 0x0a, 0x28, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, - 0x72, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, - 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, - 0x0a, 0x2a, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x55, - 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x24, - 0x0a, 0x20, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x47, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, + 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, + 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x74, 0x0a, 0x28, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x22, 0x89, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x50, 0x0a, 0x0b, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x3e, 0x0a, 0x24, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xff, 0x04, 0x0a, + 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, + 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x44, 0x79, 0x6e, 0x61, + 0x6d, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x68, + 0x61, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x07, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x06, 0x78, 0x6f, 0x66, 0x66, + 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, + 0x05, 0x78, 0x6f, 0x6e, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x78, 0x6f, 0x6e, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x78, 0x6f, 0x6e, 0x4f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x68, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x1a, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, + 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, + 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x22, 0x2f, + 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, + 0x2e, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, + 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcb, + 0x03, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x12, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, + 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, + 0x64, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, + 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, + 0x02, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, + 0x06, 0x78, 0x6f, 0x66, 0x66, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x78, 0x6f, + 0x6e, 0x5f, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x04, 0x52, 0x05, 0x78, 0x6f, 0x6e, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x0d, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, + 0x0b, 0x78, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x68, 0x88, 0x01, 0x01, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x5f, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x78, + 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x22, 0x23, 0x0a, 0x21, + 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x7b, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xe3, 0x02, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, + 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, + 0x15, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x49, 0x5a, + 0x45, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, + 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, + 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, + 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, + 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x08, 0x12, + 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x09, 0x2a, 0xd3, 0x02, 0x0a, + 0x18, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, - 0x2a, 0xec, 0x02, 0x0a, 0x11, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, - 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, - 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, + 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, + 0x46, 0x49, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, + 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x10, + 0x03, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x4e, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x36, 0x0a, 0x32, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, + 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0x06, 0x2a, 0xec, 0x02, 0x0a, 0x11, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, + 0x1b, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x2c, + 0x0a, 0x28, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x42, 0x55, 0x46, - 0x46, 0x45, 0x52, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, + 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, + 0x45, 0x44, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x54, 0x48, 0x10, 0x04, 0x12, + 0x28, 0x0a, 0x24, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x49, 0x43, 0x5f, 0x54, 0x48, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x46, + 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x54, 0x48, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, - 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, - 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x54, 0x48, 0x10, 0x04, 0x12, 0x28, 0x0a, - 0x24, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x43, 0x5f, 0x54, 0x48, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x55, 0x46, 0x46, 0x45, - 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x58, - 0x4f, 0x46, 0x46, 0x5f, 0x54, 0x48, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x55, 0x46, 0x46, - 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x58, 0x4f, 0x4e, 0x5f, 0x54, 0x48, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x46, 0x46, - 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x58, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x48, 0x10, 0x08, 0x32, - 0xc5, 0x0f, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2e, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, - 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x52, 0x5f, 0x58, 0x4f, 0x4e, 0x5f, 0x54, 0x48, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, + 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x58, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x48, 0x10, + 0x08, 0x32, 0xc5, 0x0f, 0x0a, 0x06, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x75, 0x0a, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, + 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, + 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, + 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x93, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, 0x01, - 0x0a, 0x20, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0xa5, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x99, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0x75, 0x66, 0x66, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, + 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -2152,58 +2284,63 @@ var file_dataplane_proto_sai_buffer_proto_goTypes = []any{ (*GetBufferProfileAttributeResponse)(nil), // 30: lemming.dataplane.sai.GetBufferProfileAttributeResponse (BufferPoolType)(0), // 31: lemming.dataplane.sai.BufferPoolType (BufferPoolThresholdMode)(0), // 32: lemming.dataplane.sai.BufferPoolThresholdMode - (*BufferPoolAttribute)(nil), // 33: lemming.dataplane.sai.BufferPoolAttribute - (BufferPoolStat)(0), // 34: lemming.dataplane.sai.BufferPoolStat - (*IngressPriorityGroupAttribute)(nil), // 35: lemming.dataplane.sai.IngressPriorityGroupAttribute - (IngressPriorityGroupStat)(0), // 36: lemming.dataplane.sai.IngressPriorityGroupStat - (BufferProfileThresholdMode)(0), // 37: lemming.dataplane.sai.BufferProfileThresholdMode - (*BufferProfileAttribute)(nil), // 38: lemming.dataplane.sai.BufferProfileAttribute + (StatsCountMode)(0), // 33: lemming.dataplane.sai.StatsCountMode + (*BufferPoolAttribute)(nil), // 34: lemming.dataplane.sai.BufferPoolAttribute + (BufferPoolStat)(0), // 35: lemming.dataplane.sai.BufferPoolStat + (*IngressPriorityGroupAttribute)(nil), // 36: lemming.dataplane.sai.IngressPriorityGroupAttribute + (IngressPriorityGroupStat)(0), // 37: lemming.dataplane.sai.IngressPriorityGroupStat + (BufferProfileThresholdMode)(0), // 38: lemming.dataplane.sai.BufferProfileThresholdMode + (*BufferProfileAttribute)(nil), // 39: lemming.dataplane.sai.BufferProfileAttribute } var file_dataplane_proto_sai_buffer_proto_depIdxs = []int32{ 31, // 0: lemming.dataplane.sai.CreateBufferPoolRequest.type:type_name -> lemming.dataplane.sai.BufferPoolType 32, // 1: lemming.dataplane.sai.CreateBufferPoolRequest.threshold_mode:type_name -> lemming.dataplane.sai.BufferPoolThresholdMode - 0, // 2: lemming.dataplane.sai.GetBufferPoolAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BufferPoolAttr - 33, // 3: lemming.dataplane.sai.GetBufferPoolAttributeResponse.attr:type_name -> lemming.dataplane.sai.BufferPoolAttribute - 34, // 4: lemming.dataplane.sai.GetBufferPoolStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BufferPoolStat - 1, // 5: lemming.dataplane.sai.GetIngressPriorityGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IngressPriorityGroupAttr - 35, // 6: lemming.dataplane.sai.GetIngressPriorityGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.IngressPriorityGroupAttribute - 36, // 7: lemming.dataplane.sai.GetIngressPriorityGroupStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IngressPriorityGroupStat - 37, // 8: lemming.dataplane.sai.CreateBufferProfileRequest.threshold_mode:type_name -> lemming.dataplane.sai.BufferProfileThresholdMode - 2, // 9: lemming.dataplane.sai.GetBufferProfileAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BufferProfileAttr - 38, // 10: lemming.dataplane.sai.GetBufferProfileAttributeResponse.attr:type_name -> lemming.dataplane.sai.BufferProfileAttribute - 3, // 11: lemming.dataplane.sai.Buffer.CreateBufferPool:input_type -> lemming.dataplane.sai.CreateBufferPoolRequest - 5, // 12: lemming.dataplane.sai.Buffer.RemoveBufferPool:input_type -> lemming.dataplane.sai.RemoveBufferPoolRequest - 7, // 13: lemming.dataplane.sai.Buffer.SetBufferPoolAttribute:input_type -> lemming.dataplane.sai.SetBufferPoolAttributeRequest - 9, // 14: lemming.dataplane.sai.Buffer.GetBufferPoolAttribute:input_type -> lemming.dataplane.sai.GetBufferPoolAttributeRequest - 11, // 15: lemming.dataplane.sai.Buffer.GetBufferPoolStats:input_type -> lemming.dataplane.sai.GetBufferPoolStatsRequest - 13, // 16: lemming.dataplane.sai.Buffer.CreateIngressPriorityGroup:input_type -> lemming.dataplane.sai.CreateIngressPriorityGroupRequest - 15, // 17: lemming.dataplane.sai.Buffer.RemoveIngressPriorityGroup:input_type -> lemming.dataplane.sai.RemoveIngressPriorityGroupRequest - 17, // 18: lemming.dataplane.sai.Buffer.SetIngressPriorityGroupAttribute:input_type -> lemming.dataplane.sai.SetIngressPriorityGroupAttributeRequest - 19, // 19: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupAttribute:input_type -> lemming.dataplane.sai.GetIngressPriorityGroupAttributeRequest - 21, // 20: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupStats:input_type -> lemming.dataplane.sai.GetIngressPriorityGroupStatsRequest - 23, // 21: lemming.dataplane.sai.Buffer.CreateBufferProfile:input_type -> lemming.dataplane.sai.CreateBufferProfileRequest - 25, // 22: lemming.dataplane.sai.Buffer.RemoveBufferProfile:input_type -> lemming.dataplane.sai.RemoveBufferProfileRequest - 27, // 23: lemming.dataplane.sai.Buffer.SetBufferProfileAttribute:input_type -> lemming.dataplane.sai.SetBufferProfileAttributeRequest - 29, // 24: lemming.dataplane.sai.Buffer.GetBufferProfileAttribute:input_type -> lemming.dataplane.sai.GetBufferProfileAttributeRequest - 4, // 25: lemming.dataplane.sai.Buffer.CreateBufferPool:output_type -> lemming.dataplane.sai.CreateBufferPoolResponse - 6, // 26: lemming.dataplane.sai.Buffer.RemoveBufferPool:output_type -> lemming.dataplane.sai.RemoveBufferPoolResponse - 8, // 27: lemming.dataplane.sai.Buffer.SetBufferPoolAttribute:output_type -> lemming.dataplane.sai.SetBufferPoolAttributeResponse - 10, // 28: lemming.dataplane.sai.Buffer.GetBufferPoolAttribute:output_type -> lemming.dataplane.sai.GetBufferPoolAttributeResponse - 12, // 29: lemming.dataplane.sai.Buffer.GetBufferPoolStats:output_type -> lemming.dataplane.sai.GetBufferPoolStatsResponse - 14, // 30: lemming.dataplane.sai.Buffer.CreateIngressPriorityGroup:output_type -> lemming.dataplane.sai.CreateIngressPriorityGroupResponse - 16, // 31: lemming.dataplane.sai.Buffer.RemoveIngressPriorityGroup:output_type -> lemming.dataplane.sai.RemoveIngressPriorityGroupResponse - 18, // 32: lemming.dataplane.sai.Buffer.SetIngressPriorityGroupAttribute:output_type -> lemming.dataplane.sai.SetIngressPriorityGroupAttributeResponse - 20, // 33: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupAttribute:output_type -> lemming.dataplane.sai.GetIngressPriorityGroupAttributeResponse - 22, // 34: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupStats:output_type -> lemming.dataplane.sai.GetIngressPriorityGroupStatsResponse - 24, // 35: lemming.dataplane.sai.Buffer.CreateBufferProfile:output_type -> lemming.dataplane.sai.CreateBufferProfileResponse - 26, // 36: lemming.dataplane.sai.Buffer.RemoveBufferProfile:output_type -> lemming.dataplane.sai.RemoveBufferProfileResponse - 28, // 37: lemming.dataplane.sai.Buffer.SetBufferProfileAttribute:output_type -> lemming.dataplane.sai.SetBufferProfileAttributeResponse - 30, // 38: lemming.dataplane.sai.Buffer.GetBufferProfileAttribute:output_type -> lemming.dataplane.sai.GetBufferProfileAttributeResponse - 25, // [25:39] is the sub-list for method output_type - 11, // [11:25] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 33, // 2: lemming.dataplane.sai.CreateBufferPoolRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 33, // 3: lemming.dataplane.sai.SetBufferPoolAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 4: lemming.dataplane.sai.GetBufferPoolAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BufferPoolAttr + 34, // 5: lemming.dataplane.sai.GetBufferPoolAttributeResponse.attr:type_name -> lemming.dataplane.sai.BufferPoolAttribute + 35, // 6: lemming.dataplane.sai.GetBufferPoolStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.BufferPoolStat + 33, // 7: lemming.dataplane.sai.CreateIngressPriorityGroupRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 33, // 8: lemming.dataplane.sai.SetIngressPriorityGroupAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 1, // 9: lemming.dataplane.sai.GetIngressPriorityGroupAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IngressPriorityGroupAttr + 36, // 10: lemming.dataplane.sai.GetIngressPriorityGroupAttributeResponse.attr:type_name -> lemming.dataplane.sai.IngressPriorityGroupAttribute + 37, // 11: lemming.dataplane.sai.GetIngressPriorityGroupStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IngressPriorityGroupStat + 38, // 12: lemming.dataplane.sai.CreateBufferProfileRequest.threshold_mode:type_name -> lemming.dataplane.sai.BufferProfileThresholdMode + 2, // 13: lemming.dataplane.sai.GetBufferProfileAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.BufferProfileAttr + 39, // 14: lemming.dataplane.sai.GetBufferProfileAttributeResponse.attr:type_name -> lemming.dataplane.sai.BufferProfileAttribute + 3, // 15: lemming.dataplane.sai.Buffer.CreateBufferPool:input_type -> lemming.dataplane.sai.CreateBufferPoolRequest + 5, // 16: lemming.dataplane.sai.Buffer.RemoveBufferPool:input_type -> lemming.dataplane.sai.RemoveBufferPoolRequest + 7, // 17: lemming.dataplane.sai.Buffer.SetBufferPoolAttribute:input_type -> lemming.dataplane.sai.SetBufferPoolAttributeRequest + 9, // 18: lemming.dataplane.sai.Buffer.GetBufferPoolAttribute:input_type -> lemming.dataplane.sai.GetBufferPoolAttributeRequest + 11, // 19: lemming.dataplane.sai.Buffer.GetBufferPoolStats:input_type -> lemming.dataplane.sai.GetBufferPoolStatsRequest + 13, // 20: lemming.dataplane.sai.Buffer.CreateIngressPriorityGroup:input_type -> lemming.dataplane.sai.CreateIngressPriorityGroupRequest + 15, // 21: lemming.dataplane.sai.Buffer.RemoveIngressPriorityGroup:input_type -> lemming.dataplane.sai.RemoveIngressPriorityGroupRequest + 17, // 22: lemming.dataplane.sai.Buffer.SetIngressPriorityGroupAttribute:input_type -> lemming.dataplane.sai.SetIngressPriorityGroupAttributeRequest + 19, // 23: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupAttribute:input_type -> lemming.dataplane.sai.GetIngressPriorityGroupAttributeRequest + 21, // 24: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupStats:input_type -> lemming.dataplane.sai.GetIngressPriorityGroupStatsRequest + 23, // 25: lemming.dataplane.sai.Buffer.CreateBufferProfile:input_type -> lemming.dataplane.sai.CreateBufferProfileRequest + 25, // 26: lemming.dataplane.sai.Buffer.RemoveBufferProfile:input_type -> lemming.dataplane.sai.RemoveBufferProfileRequest + 27, // 27: lemming.dataplane.sai.Buffer.SetBufferProfileAttribute:input_type -> lemming.dataplane.sai.SetBufferProfileAttributeRequest + 29, // 28: lemming.dataplane.sai.Buffer.GetBufferProfileAttribute:input_type -> lemming.dataplane.sai.GetBufferProfileAttributeRequest + 4, // 29: lemming.dataplane.sai.Buffer.CreateBufferPool:output_type -> lemming.dataplane.sai.CreateBufferPoolResponse + 6, // 30: lemming.dataplane.sai.Buffer.RemoveBufferPool:output_type -> lemming.dataplane.sai.RemoveBufferPoolResponse + 8, // 31: lemming.dataplane.sai.Buffer.SetBufferPoolAttribute:output_type -> lemming.dataplane.sai.SetBufferPoolAttributeResponse + 10, // 32: lemming.dataplane.sai.Buffer.GetBufferPoolAttribute:output_type -> lemming.dataplane.sai.GetBufferPoolAttributeResponse + 12, // 33: lemming.dataplane.sai.Buffer.GetBufferPoolStats:output_type -> lemming.dataplane.sai.GetBufferPoolStatsResponse + 14, // 34: lemming.dataplane.sai.Buffer.CreateIngressPriorityGroup:output_type -> lemming.dataplane.sai.CreateIngressPriorityGroupResponse + 16, // 35: lemming.dataplane.sai.Buffer.RemoveIngressPriorityGroup:output_type -> lemming.dataplane.sai.RemoveIngressPriorityGroupResponse + 18, // 36: lemming.dataplane.sai.Buffer.SetIngressPriorityGroupAttribute:output_type -> lemming.dataplane.sai.SetIngressPriorityGroupAttributeResponse + 20, // 37: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupAttribute:output_type -> lemming.dataplane.sai.GetIngressPriorityGroupAttributeResponse + 22, // 38: lemming.dataplane.sai.Buffer.GetIngressPriorityGroupStats:output_type -> lemming.dataplane.sai.GetIngressPriorityGroupStatsResponse + 24, // 39: lemming.dataplane.sai.Buffer.CreateBufferProfile:output_type -> lemming.dataplane.sai.CreateBufferProfileResponse + 26, // 40: lemming.dataplane.sai.Buffer.RemoveBufferProfile:output_type -> lemming.dataplane.sai.RemoveBufferProfileResponse + 28, // 41: lemming.dataplane.sai.Buffer.SetBufferProfileAttribute:output_type -> lemming.dataplane.sai.SetBufferProfileAttributeResponse + 30, // 42: lemming.dataplane.sai.Buffer.GetBufferProfileAttribute:output_type -> lemming.dataplane.sai.GetBufferProfileAttributeResponse + 29, // [29:43] is the sub-list for method output_type + 15, // [15:29] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_buffer_proto_init() } diff --git a/dataplane/proto/sai/buffer.proto b/dataplane/proto/sai/buffer.proto index d4d20bbd0..81fa387f1 100644 --- a/dataplane/proto/sai/buffer.proto +++ b/dataplane/proto/sai/buffer.proto @@ -7,196 +7,215 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum BufferPoolAttr { - BUFFER_POOL_ATTR_UNSPECIFIED = 0; - BUFFER_POOL_ATTR_SHARED_SIZE = 1; - BUFFER_POOL_ATTR_TYPE = 2; - BUFFER_POOL_ATTR_SIZE = 3; - BUFFER_POOL_ATTR_THRESHOLD_MODE = 4; - BUFFER_POOL_ATTR_TAM = 5; - BUFFER_POOL_ATTR_XOFF_SIZE = 6; - BUFFER_POOL_ATTR_WRED_PROFILE_ID = 7; + BUFFER_POOL_ATTR_UNSPECIFIED = 0; + BUFFER_POOL_ATTR_SHARED_SIZE = 1; + BUFFER_POOL_ATTR_TYPE = 2; + BUFFER_POOL_ATTR_SIZE = 3; + BUFFER_POOL_ATTR_THRESHOLD_MODE = 4; + BUFFER_POOL_ATTR_TAM = 5; + BUFFER_POOL_ATTR_XOFF_SIZE = 6; + BUFFER_POOL_ATTR_WRED_PROFILE_ID = 7; + BUFFER_POOL_ATTR_STATS_COUNT_MODE = 8; + BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST = 9; } enum IngressPriorityGroupAttr { - INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED = 0; - INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE = 1; - INGRESS_PRIORITY_GROUP_ATTR_PORT = 2; - INGRESS_PRIORITY_GROUP_ATTR_TAM = 3; - INGRESS_PRIORITY_GROUP_ATTR_INDEX = 4; + INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED = 0; + INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE = 1; + INGRESS_PRIORITY_GROUP_ATTR_PORT = 2; + INGRESS_PRIORITY_GROUP_ATTR_TAM = 3; + INGRESS_PRIORITY_GROUP_ATTR_INDEX = 4; + INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE = 5; + INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST = 6; } enum BufferProfileAttr { - BUFFER_PROFILE_ATTR_UNSPECIFIED = 0; - BUFFER_PROFILE_ATTR_POOL_ID = 1; - BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE = 2; - BUFFER_PROFILE_ATTR_THRESHOLD_MODE = 3; - BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH = 4; - BUFFER_PROFILE_ATTR_SHARED_STATIC_TH = 5; - BUFFER_PROFILE_ATTR_XOFF_TH = 6; - BUFFER_PROFILE_ATTR_XON_TH = 7; - BUFFER_PROFILE_ATTR_XON_OFFSET_TH = 8; + BUFFER_PROFILE_ATTR_UNSPECIFIED = 0; + BUFFER_PROFILE_ATTR_POOL_ID = 1; + BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE = 2; + BUFFER_PROFILE_ATTR_THRESHOLD_MODE = 3; + BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH = 4; + BUFFER_PROFILE_ATTR_SHARED_STATIC_TH = 5; + BUFFER_PROFILE_ATTR_XOFF_TH = 6; + BUFFER_PROFILE_ATTR_XON_TH = 7; + BUFFER_PROFILE_ATTR_XON_OFFSET_TH = 8; } message CreateBufferPoolRequest { - option (sai_type) = OBJECT_TYPE_BUFFER_POOL; - uint64 switch = 1; - optional BufferPoolType type = 2[(attr_enum_value) = 2]; - optional uint64 size = 3[(attr_enum_value) = 3]; - optional BufferPoolThresholdMode threshold_mode = 4[(attr_enum_value) = 4]; - repeated uint64 tam = 5[(attr_enum_value) = 5]; - optional uint64 xoff_size = 6[(attr_enum_value) = 6]; - optional uint64 wred_profile_id = 7[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_BUFFER_POOL; + uint64 switch = 1; + optional BufferPoolType type = 2 [(attr_enum_value) = 2]; + optional uint64 size = 3 [(attr_enum_value) = 3]; + optional BufferPoolThresholdMode threshold_mode = 4 [(attr_enum_value) = 4]; + repeated uint64 tam = 5 [(attr_enum_value) = 5]; + optional uint64 xoff_size = 6 [(attr_enum_value) = 6]; + optional uint64 wred_profile_id = 7 [(attr_enum_value) = 7]; + optional StatsCountMode stats_count_mode = 8 [(attr_enum_value) = 8]; + repeated uint64 selective_counter_list = 9 [(attr_enum_value) = 9]; } message CreateBufferPoolResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveBufferPoolRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveBufferPoolResponse { -} +message RemoveBufferPoolResponse {} message SetBufferPoolAttributeRequest { - uint64 oid = 1; - optional uint64 size = 2[(attr_enum_value) = 3]; - repeated uint64 tam = 3[(attr_enum_value) = 5]; - optional uint64 xoff_size = 4[(attr_enum_value) = 6]; - optional uint64 wred_profile_id = 5[(attr_enum_value) = 7]; + uint64 oid = 1; + optional uint64 size = 2 [(attr_enum_value) = 3]; + repeated uint64 tam = 3 [(attr_enum_value) = 5]; + optional uint64 xoff_size = 4 [(attr_enum_value) = 6]; + optional uint64 wred_profile_id = 5 [(attr_enum_value) = 7]; + optional StatsCountMode stats_count_mode = 6 [(attr_enum_value) = 8]; + repeated uint64 selective_counter_list = 7 [(attr_enum_value) = 9]; } -message SetBufferPoolAttributeResponse { -} +message SetBufferPoolAttributeResponse {} message GetBufferPoolAttributeRequest { - uint64 oid = 1; - repeated BufferPoolAttr attr_type = 2; + uint64 oid = 1; + repeated BufferPoolAttr attr_type = 2; } message GetBufferPoolAttributeResponse { - BufferPoolAttribute attr = 1; + BufferPoolAttribute attr = 1; } message GetBufferPoolStatsRequest { - uint64 oid = 1; - repeated BufferPoolStat counter_ids = 2; + uint64 oid = 1; + repeated BufferPoolStat counter_ids = 2; } message GetBufferPoolStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateIngressPriorityGroupRequest { - option (sai_type) = OBJECT_TYPE_INGRESS_PRIORITY_GROUP; - uint64 switch = 1; - optional uint64 buffer_profile = 2[(attr_enum_value) = 1]; - optional uint64 port = 3[(attr_enum_value) = 2]; - repeated uint64 tam = 4[(attr_enum_value) = 3]; - optional uint32 index = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_INGRESS_PRIORITY_GROUP; + uint64 switch = 1; + optional uint64 buffer_profile = 2 [(attr_enum_value) = 1]; + optional uint64 port = 3 [(attr_enum_value) = 2]; + repeated uint64 tam = 4 [(attr_enum_value) = 3]; + optional uint32 index = 5 [(attr_enum_value) = 4]; + optional StatsCountMode stats_count_mode = 6 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 7 [(attr_enum_value) = 6]; } message CreateIngressPriorityGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIngressPriorityGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIngressPriorityGroupResponse { -} +message RemoveIngressPriorityGroupResponse {} message SetIngressPriorityGroupAttributeRequest { - uint64 oid = 1; - optional uint64 buffer_profile = 2[(attr_enum_value) = 1]; - repeated uint64 tam = 3[(attr_enum_value) = 3]; + uint64 oid = 1; + optional uint64 buffer_profile = 2 [(attr_enum_value) = 1]; + repeated uint64 tam = 3 [(attr_enum_value) = 3]; + optional StatsCountMode stats_count_mode = 4 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 5 [(attr_enum_value) = 6]; } -message SetIngressPriorityGroupAttributeResponse { -} +message SetIngressPriorityGroupAttributeResponse {} message GetIngressPriorityGroupAttributeRequest { - uint64 oid = 1; - repeated IngressPriorityGroupAttr attr_type = 2; + uint64 oid = 1; + repeated IngressPriorityGroupAttr attr_type = 2; } message GetIngressPriorityGroupAttributeResponse { - IngressPriorityGroupAttribute attr = 1; + IngressPriorityGroupAttribute attr = 1; } message GetIngressPriorityGroupStatsRequest { - uint64 oid = 1; - repeated IngressPriorityGroupStat counter_ids = 2; + uint64 oid = 1; + repeated IngressPriorityGroupStat counter_ids = 2; } message GetIngressPriorityGroupStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateBufferProfileRequest { - option (sai_type) = OBJECT_TYPE_BUFFER_PROFILE; - uint64 switch = 1; - optional uint64 pool_id = 2[(attr_enum_value) = 1]; - optional uint64 reserved_buffer_size = 3[(attr_enum_value) = 2]; - optional BufferProfileThresholdMode threshold_mode = 4[(attr_enum_value) = 3]; - optional int32 shared_dynamic_th = 5[(attr_enum_value) = 4]; - optional uint64 shared_static_th = 6[(attr_enum_value) = 5]; - optional uint64 xoff_th = 7[(attr_enum_value) = 6]; - optional uint64 xon_th = 8[(attr_enum_value) = 7]; - optional uint64 xon_offset_th = 9[(attr_enum_value) = 8]; + option (sai_type) = OBJECT_TYPE_BUFFER_PROFILE; + uint64 switch = 1; + optional uint64 pool_id = 2 [(attr_enum_value) = 1]; + optional uint64 reserved_buffer_size = 3 [(attr_enum_value) = 2]; + optional BufferProfileThresholdMode threshold_mode = 4 + [(attr_enum_value) = 3]; + optional int32 shared_dynamic_th = 5 [(attr_enum_value) = 4]; + optional uint64 shared_static_th = 6 [(attr_enum_value) = 5]; + optional uint64 xoff_th = 7 [(attr_enum_value) = 6]; + optional uint64 xon_th = 8 [(attr_enum_value) = 7]; + optional uint64 xon_offset_th = 9 [(attr_enum_value) = 8]; } message CreateBufferProfileResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveBufferProfileRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveBufferProfileResponse { -} +message RemoveBufferProfileResponse {} message SetBufferProfileAttributeRequest { - uint64 oid = 1; - optional uint64 reserved_buffer_size = 2[(attr_enum_value) = 2]; - optional int32 shared_dynamic_th = 3[(attr_enum_value) = 4]; - optional uint64 shared_static_th = 4[(attr_enum_value) = 5]; - optional uint64 xoff_th = 5[(attr_enum_value) = 6]; - optional uint64 xon_th = 6[(attr_enum_value) = 7]; - optional uint64 xon_offset_th = 7[(attr_enum_value) = 8]; + uint64 oid = 1; + optional uint64 reserved_buffer_size = 2 [(attr_enum_value) = 2]; + optional int32 shared_dynamic_th = 3 [(attr_enum_value) = 4]; + optional uint64 shared_static_th = 4 [(attr_enum_value) = 5]; + optional uint64 xoff_th = 5 [(attr_enum_value) = 6]; + optional uint64 xon_th = 6 [(attr_enum_value) = 7]; + optional uint64 xon_offset_th = 7 [(attr_enum_value) = 8]; } -message SetBufferProfileAttributeResponse { -} +message SetBufferProfileAttributeResponse {} message GetBufferProfileAttributeRequest { - uint64 oid = 1; - repeated BufferProfileAttr attr_type = 2; + uint64 oid = 1; + repeated BufferProfileAttr attr_type = 2; } message GetBufferProfileAttributeResponse { - BufferProfileAttribute attr = 1; + BufferProfileAttribute attr = 1; } - service Buffer { - rpc CreateBufferPool (CreateBufferPoolRequest) returns (CreateBufferPoolResponse) {} - rpc RemoveBufferPool (RemoveBufferPoolRequest) returns (RemoveBufferPoolResponse) {} - rpc SetBufferPoolAttribute (SetBufferPoolAttributeRequest) returns (SetBufferPoolAttributeResponse) {} - rpc GetBufferPoolAttribute (GetBufferPoolAttributeRequest) returns (GetBufferPoolAttributeResponse) {} - rpc GetBufferPoolStats (GetBufferPoolStatsRequest) returns (GetBufferPoolStatsResponse) {} - rpc CreateIngressPriorityGroup (CreateIngressPriorityGroupRequest) returns (CreateIngressPriorityGroupResponse) {} - rpc RemoveIngressPriorityGroup (RemoveIngressPriorityGroupRequest) returns (RemoveIngressPriorityGroupResponse) {} - rpc SetIngressPriorityGroupAttribute (SetIngressPriorityGroupAttributeRequest) returns (SetIngressPriorityGroupAttributeResponse) {} - rpc GetIngressPriorityGroupAttribute (GetIngressPriorityGroupAttributeRequest) returns (GetIngressPriorityGroupAttributeResponse) {} - rpc GetIngressPriorityGroupStats (GetIngressPriorityGroupStatsRequest) returns (GetIngressPriorityGroupStatsResponse) {} - rpc CreateBufferProfile (CreateBufferProfileRequest) returns (CreateBufferProfileResponse) {} - rpc RemoveBufferProfile (RemoveBufferProfileRequest) returns (RemoveBufferProfileResponse) {} - rpc SetBufferProfileAttribute (SetBufferProfileAttributeRequest) returns (SetBufferProfileAttributeResponse) {} - rpc GetBufferProfileAttribute (GetBufferProfileAttributeRequest) returns (GetBufferProfileAttributeResponse) {} + rpc CreateBufferPool(CreateBufferPoolRequest) + returns (CreateBufferPoolResponse) {} + rpc RemoveBufferPool(RemoveBufferPoolRequest) + returns (RemoveBufferPoolResponse) {} + rpc SetBufferPoolAttribute(SetBufferPoolAttributeRequest) + returns (SetBufferPoolAttributeResponse) {} + rpc GetBufferPoolAttribute(GetBufferPoolAttributeRequest) + returns (GetBufferPoolAttributeResponse) {} + rpc GetBufferPoolStats(GetBufferPoolStatsRequest) + returns (GetBufferPoolStatsResponse) {} + rpc CreateIngressPriorityGroup(CreateIngressPriorityGroupRequest) + returns (CreateIngressPriorityGroupResponse) {} + rpc RemoveIngressPriorityGroup(RemoveIngressPriorityGroupRequest) + returns (RemoveIngressPriorityGroupResponse) {} + rpc SetIngressPriorityGroupAttribute(SetIngressPriorityGroupAttributeRequest) + returns (SetIngressPriorityGroupAttributeResponse) {} + rpc GetIngressPriorityGroupAttribute(GetIngressPriorityGroupAttributeRequest) + returns (GetIngressPriorityGroupAttributeResponse) {} + rpc GetIngressPriorityGroupStats(GetIngressPriorityGroupStatsRequest) + returns (GetIngressPriorityGroupStatsResponse) {} + rpc CreateBufferProfile(CreateBufferProfileRequest) + returns (CreateBufferProfileResponse) {} + rpc RemoveBufferProfile(RemoveBufferProfileRequest) + returns (RemoveBufferProfileResponse) {} + rpc SetBufferProfileAttribute(SetBufferProfileAttributeRequest) + returns (SetBufferProfileAttributeResponse) {} + rpc GetBufferProfileAttribute(GetBufferProfileAttributeRequest) + returns (GetBufferProfileAttributeResponse) {} } diff --git a/dataplane/proto/sai/common.pb.go b/dataplane/proto/sai/common.pb.go index 15df712b5..fd2c1219d 100644 --- a/dataplane/proto/sai/common.pb.go +++ b/dataplane/proto/sai/common.pb.go @@ -858,54 +858,66 @@ type ApiExtensions int32 const ( ApiExtensions_API_EXTENSIONS_UNSPECIFIED ApiExtensions = 0 - ApiExtensions_API_EXTENSIONS_RANGE_START ApiExtensions = 53 - ApiExtensions_API_BMTOR ApiExtensions = 53 - ApiExtensions_API_DASH_ACL ApiExtensions = 54 - ApiExtensions_API_DASH_DIRECTION_LOOKUP ApiExtensions = 55 - ApiExtensions_API_DASH_ENI ApiExtensions = 56 - ApiExtensions_API_DASH_INBOUND_ROUTING ApiExtensions = 57 - ApiExtensions_API_DASH_METER ApiExtensions = 58 - ApiExtensions_API_DASH_OUTBOUND_CA_TO_PA ApiExtensions = 59 - ApiExtensions_API_DASH_OUTBOUND_ROUTING ApiExtensions = 60 - ApiExtensions_API_DASH_VNET ApiExtensions = 61 - ApiExtensions_API_DASH_PA_VALIDATION ApiExtensions = 62 - ApiExtensions_API_DASH_VIP ApiExtensions = 63 - ApiExtensions_API_EXTENSIONS_RANGE_END ApiExtensions = 64 + ApiExtensions_API_EXTENSIONS_RANGE_START ApiExtensions = 536870913 + ApiExtensions_API_BMTOR ApiExtensions = 536870913 + ApiExtensions_API_DASH_ACL ApiExtensions = 536870914 + ApiExtensions_API_DASH_DIRECTION_LOOKUP ApiExtensions = 536870915 + ApiExtensions_API_DASH_ENI ApiExtensions = 536870916 + ApiExtensions_API_DASH_INBOUND_ROUTING ApiExtensions = 536870917 + ApiExtensions_API_DASH_METER ApiExtensions = 536870918 + ApiExtensions_API_DASH_OUTBOUND_CA_TO_PA ApiExtensions = 536870919 + ApiExtensions_API_DASH_OUTBOUND_ROUTING ApiExtensions = 536870920 + ApiExtensions_API_DASH_VNET ApiExtensions = 536870921 + ApiExtensions_API_DASH_PA_VALIDATION ApiExtensions = 536870922 + ApiExtensions_API_DASH_VIP ApiExtensions = 536870923 + ApiExtensions_API_DASH_HA ApiExtensions = 536870924 + ApiExtensions_API_DASH_TUNNEL ApiExtensions = 536870925 + ApiExtensions_API_DASH_FLOW ApiExtensions = 536870926 + ApiExtensions_API_DASH_APPLIANCE ApiExtensions = 536870927 + ApiExtensions_API_EXTENSIONS_RANGE_END ApiExtensions = 536870928 ) // Enum value maps for ApiExtensions. var ( ApiExtensions_name = map[int32]string{ - 0: "API_EXTENSIONS_UNSPECIFIED", - 53: "API_EXTENSIONS_RANGE_START", - // Duplicate value: 53: "API_BMTOR", - 54: "API_DASH_ACL", - 55: "API_DASH_DIRECTION_LOOKUP", - 56: "API_DASH_ENI", - 57: "API_DASH_INBOUND_ROUTING", - 58: "API_DASH_METER", - 59: "API_DASH_OUTBOUND_CA_TO_PA", - 60: "API_DASH_OUTBOUND_ROUTING", - 61: "API_DASH_VNET", - 62: "API_DASH_PA_VALIDATION", - 63: "API_DASH_VIP", - 64: "API_EXTENSIONS_RANGE_END", + 0: "API_EXTENSIONS_UNSPECIFIED", + 536870913: "API_EXTENSIONS_RANGE_START", + // Duplicate value: 536870913: "API_BMTOR", + 536870914: "API_DASH_ACL", + 536870915: "API_DASH_DIRECTION_LOOKUP", + 536870916: "API_DASH_ENI", + 536870917: "API_DASH_INBOUND_ROUTING", + 536870918: "API_DASH_METER", + 536870919: "API_DASH_OUTBOUND_CA_TO_PA", + 536870920: "API_DASH_OUTBOUND_ROUTING", + 536870921: "API_DASH_VNET", + 536870922: "API_DASH_PA_VALIDATION", + 536870923: "API_DASH_VIP", + 536870924: "API_DASH_HA", + 536870925: "API_DASH_TUNNEL", + 536870926: "API_DASH_FLOW", + 536870927: "API_DASH_APPLIANCE", + 536870928: "API_EXTENSIONS_RANGE_END", } ApiExtensions_value = map[string]int32{ "API_EXTENSIONS_UNSPECIFIED": 0, - "API_EXTENSIONS_RANGE_START": 53, - "API_BMTOR": 53, - "API_DASH_ACL": 54, - "API_DASH_DIRECTION_LOOKUP": 55, - "API_DASH_ENI": 56, - "API_DASH_INBOUND_ROUTING": 57, - "API_DASH_METER": 58, - "API_DASH_OUTBOUND_CA_TO_PA": 59, - "API_DASH_OUTBOUND_ROUTING": 60, - "API_DASH_VNET": 61, - "API_DASH_PA_VALIDATION": 62, - "API_DASH_VIP": 63, - "API_EXTENSIONS_RANGE_END": 64, + "API_EXTENSIONS_RANGE_START": 536870913, + "API_BMTOR": 536870913, + "API_DASH_ACL": 536870914, + "API_DASH_DIRECTION_LOOKUP": 536870915, + "API_DASH_ENI": 536870916, + "API_DASH_INBOUND_ROUTING": 536870917, + "API_DASH_METER": 536870918, + "API_DASH_OUTBOUND_CA_TO_PA": 536870919, + "API_DASH_OUTBOUND_ROUTING": 536870920, + "API_DASH_VNET": 536870921, + "API_DASH_PA_VALIDATION": 536870922, + "API_DASH_VIP": 536870923, + "API_DASH_HA": 536870924, + "API_DASH_TUNNEL": 536870925, + "API_DASH_FLOW": 536870926, + "API_DASH_APPLIANCE": 536870927, + "API_EXTENSIONS_RANGE_END": 536870928, } ) @@ -939,181 +951,181 @@ func (ApiExtensions) EnumDescriptor() ([]byte, []int) { type Api int32 const ( - Api_API_UNSPECIFIED Api = 0 - Api_API_SAI_UNSPECIFIED Api = 1 - Api_API_SWITCH Api = 2 - Api_API_PORT Api = 3 - Api_API_FDB Api = 4 - Api_API_VLAN Api = 5 - Api_API_VIRTUAL_ROUTER Api = 6 - Api_API_ROUTE Api = 7 - Api_API_NEXT_HOP Api = 8 - Api_API_NEXT_HOP_GROUP Api = 9 - Api_API_ROUTER_INTERFACE Api = 10 - Api_API_NEIGHBOR Api = 11 - Api_API_ACL Api = 12 - Api_API_HOSTIF Api = 13 - Api_API_MIRROR Api = 14 - Api_API_SAMPLEPACKET Api = 15 - Api_API_STP Api = 16 - Api_API_LAG Api = 17 - Api_API_POLICER Api = 18 - Api_API_WRED Api = 19 - Api_API_QOS_MAP Api = 20 - Api_API_QUEUE Api = 21 - Api_API_SCHEDULER Api = 22 - Api_API_SCHEDULER_GROUP Api = 23 - Api_API_BUFFER Api = 24 - Api_API_HASH Api = 25 - Api_API_UDF Api = 26 - Api_API_TUNNEL Api = 27 - Api_API_L2MC Api = 28 - Api_API_IPMC Api = 29 - Api_API_RPF_GROUP Api = 30 - Api_API_L2MC_GROUP Api = 31 - Api_API_IPMC_GROUP Api = 32 - Api_API_MCAST_FDB Api = 33 - Api_API_BRIDGE Api = 34 - Api_API_TAM Api = 35 - Api_API_SRV6 Api = 36 - Api_API_MPLS Api = 37 - Api_API_DTEL Api = 38 - Api_API_BFD Api = 39 - Api_API_ISOLATION_GROUP Api = 40 - Api_API_NAT Api = 41 - Api_API_COUNTER Api = 42 - Api_API_DEBUG_COUNTER Api = 43 - Api_API_MACSEC Api = 44 - Api_API_SYSTEM_PORT Api = 45 - Api_API_MY_MAC Api = 46 - Api_API_IPSEC Api = 47 - Api_API_GENERIC_PROGRAMMABLE Api = 48 - Api_API_ARS Api = 49 - Api_API_ARS_PROFILE Api = 50 - Api_API_TWAMP Api = 51 - Api_API_POE Api = 52 - Api_API_MAX Api = 53 - Api_API_CUSTOM_RANGE_START Api = 257 - Api_API_CUSTOM_RANGE_END Api = 258 + Api_API_UNSPECIFIED Api = 0 + Api_API_SAI_UNSPECIFIED Api = 1 + Api_API_SWITCH Api = 2 + Api_API_PORT Api = 3 + Api_API_FDB Api = 4 + Api_API_VLAN Api = 5 + Api_API_VIRTUAL_ROUTER Api = 6 + Api_API_ROUTE Api = 7 + Api_API_NEXT_HOP Api = 8 + Api_API_NEXT_HOP_GROUP Api = 9 + Api_API_ROUTER_INTERFACE Api = 10 + Api_API_NEIGHBOR Api = 11 + Api_API_ACL Api = 12 + Api_API_HOSTIF Api = 13 + Api_API_MIRROR Api = 14 + Api_API_SAMPLEPACKET Api = 15 + Api_API_STP Api = 16 + Api_API_LAG Api = 17 + Api_API_POLICER Api = 18 + Api_API_WRED Api = 19 + Api_API_QOS_MAP Api = 20 + Api_API_QUEUE Api = 21 + Api_API_SCHEDULER Api = 22 + Api_API_SCHEDULER_GROUP Api = 23 + Api_API_BUFFER Api = 24 + Api_API_HASH Api = 25 + Api_API_UDF Api = 26 + Api_API_TUNNEL Api = 27 + Api_API_L2MC Api = 28 + Api_API_IPMC Api = 29 + Api_API_RPF_GROUP Api = 30 + Api_API_L2MC_GROUP Api = 31 + Api_API_IPMC_GROUP Api = 32 + Api_API_MCAST_FDB Api = 33 + Api_API_BRIDGE Api = 34 + Api_API_TAM Api = 35 + Api_API_SRV6 Api = 36 + Api_API_MPLS Api = 37 + Api_API_DTEL Api = 38 + Api_API_BFD Api = 39 + Api_API_ISOLATION_GROUP Api = 40 + Api_API_NAT Api = 41 + Api_API_COUNTER Api = 42 + Api_API_DEBUG_COUNTER Api = 43 + Api_API_MACSEC Api = 44 + Api_API_SYSTEM_PORT Api = 45 + Api_API_MY_MAC Api = 46 + Api_API_IPSEC Api = 47 + Api_API_GENERIC_PROGRAMMABLE Api = 48 + Api_API_ARS Api = 49 + Api_API_ARS_PROFILE Api = 50 + Api_API_TWAMP Api = 51 + Api_API_POE Api = 52 + Api_API_ICMP_ECHO Api = 53 + Api_API_MAX Api = 54 + Api_API_EXTENSIONS_RANGE_BASE Api = 536870913 ) // Enum value maps for Api. var ( Api_name = map[int32]string{ - 0: "API_UNSPECIFIED", - 1: "API_SAI_UNSPECIFIED", - 2: "API_SWITCH", - 3: "API_PORT", - 4: "API_FDB", - 5: "API_VLAN", - 6: "API_VIRTUAL_ROUTER", - 7: "API_ROUTE", - 8: "API_NEXT_HOP", - 9: "API_NEXT_HOP_GROUP", - 10: "API_ROUTER_INTERFACE", - 11: "API_NEIGHBOR", - 12: "API_ACL", - 13: "API_HOSTIF", - 14: "API_MIRROR", - 15: "API_SAMPLEPACKET", - 16: "API_STP", - 17: "API_LAG", - 18: "API_POLICER", - 19: "API_WRED", - 20: "API_QOS_MAP", - 21: "API_QUEUE", - 22: "API_SCHEDULER", - 23: "API_SCHEDULER_GROUP", - 24: "API_BUFFER", - 25: "API_HASH", - 26: "API_UDF", - 27: "API_TUNNEL", - 28: "API_L2MC", - 29: "API_IPMC", - 30: "API_RPF_GROUP", - 31: "API_L2MC_GROUP", - 32: "API_IPMC_GROUP", - 33: "API_MCAST_FDB", - 34: "API_BRIDGE", - 35: "API_TAM", - 36: "API_SRV6", - 37: "API_MPLS", - 38: "API_DTEL", - 39: "API_BFD", - 40: "API_ISOLATION_GROUP", - 41: "API_NAT", - 42: "API_COUNTER", - 43: "API_DEBUG_COUNTER", - 44: "API_MACSEC", - 45: "API_SYSTEM_PORT", - 46: "API_MY_MAC", - 47: "API_IPSEC", - 48: "API_GENERIC_PROGRAMMABLE", - 49: "API_ARS", - 50: "API_ARS_PROFILE", - 51: "API_TWAMP", - 52: "API_POE", - 53: "API_MAX", - 257: "API_CUSTOM_RANGE_START", - 258: "API_CUSTOM_RANGE_END", + 0: "API_UNSPECIFIED", + 1: "API_SAI_UNSPECIFIED", + 2: "API_SWITCH", + 3: "API_PORT", + 4: "API_FDB", + 5: "API_VLAN", + 6: "API_VIRTUAL_ROUTER", + 7: "API_ROUTE", + 8: "API_NEXT_HOP", + 9: "API_NEXT_HOP_GROUP", + 10: "API_ROUTER_INTERFACE", + 11: "API_NEIGHBOR", + 12: "API_ACL", + 13: "API_HOSTIF", + 14: "API_MIRROR", + 15: "API_SAMPLEPACKET", + 16: "API_STP", + 17: "API_LAG", + 18: "API_POLICER", + 19: "API_WRED", + 20: "API_QOS_MAP", + 21: "API_QUEUE", + 22: "API_SCHEDULER", + 23: "API_SCHEDULER_GROUP", + 24: "API_BUFFER", + 25: "API_HASH", + 26: "API_UDF", + 27: "API_TUNNEL", + 28: "API_L2MC", + 29: "API_IPMC", + 30: "API_RPF_GROUP", + 31: "API_L2MC_GROUP", + 32: "API_IPMC_GROUP", + 33: "API_MCAST_FDB", + 34: "API_BRIDGE", + 35: "API_TAM", + 36: "API_SRV6", + 37: "API_MPLS", + 38: "API_DTEL", + 39: "API_BFD", + 40: "API_ISOLATION_GROUP", + 41: "API_NAT", + 42: "API_COUNTER", + 43: "API_DEBUG_COUNTER", + 44: "API_MACSEC", + 45: "API_SYSTEM_PORT", + 46: "API_MY_MAC", + 47: "API_IPSEC", + 48: "API_GENERIC_PROGRAMMABLE", + 49: "API_ARS", + 50: "API_ARS_PROFILE", + 51: "API_TWAMP", + 52: "API_POE", + 53: "API_ICMP_ECHO", + 54: "API_MAX", + 536870913: "API_EXTENSIONS_RANGE_BASE", } Api_value = map[string]int32{ - "API_UNSPECIFIED": 0, - "API_SAI_UNSPECIFIED": 1, - "API_SWITCH": 2, - "API_PORT": 3, - "API_FDB": 4, - "API_VLAN": 5, - "API_VIRTUAL_ROUTER": 6, - "API_ROUTE": 7, - "API_NEXT_HOP": 8, - "API_NEXT_HOP_GROUP": 9, - "API_ROUTER_INTERFACE": 10, - "API_NEIGHBOR": 11, - "API_ACL": 12, - "API_HOSTIF": 13, - "API_MIRROR": 14, - "API_SAMPLEPACKET": 15, - "API_STP": 16, - "API_LAG": 17, - "API_POLICER": 18, - "API_WRED": 19, - "API_QOS_MAP": 20, - "API_QUEUE": 21, - "API_SCHEDULER": 22, - "API_SCHEDULER_GROUP": 23, - "API_BUFFER": 24, - "API_HASH": 25, - "API_UDF": 26, - "API_TUNNEL": 27, - "API_L2MC": 28, - "API_IPMC": 29, - "API_RPF_GROUP": 30, - "API_L2MC_GROUP": 31, - "API_IPMC_GROUP": 32, - "API_MCAST_FDB": 33, - "API_BRIDGE": 34, - "API_TAM": 35, - "API_SRV6": 36, - "API_MPLS": 37, - "API_DTEL": 38, - "API_BFD": 39, - "API_ISOLATION_GROUP": 40, - "API_NAT": 41, - "API_COUNTER": 42, - "API_DEBUG_COUNTER": 43, - "API_MACSEC": 44, - "API_SYSTEM_PORT": 45, - "API_MY_MAC": 46, - "API_IPSEC": 47, - "API_GENERIC_PROGRAMMABLE": 48, - "API_ARS": 49, - "API_ARS_PROFILE": 50, - "API_TWAMP": 51, - "API_POE": 52, - "API_MAX": 53, - "API_CUSTOM_RANGE_START": 257, - "API_CUSTOM_RANGE_END": 258, + "API_UNSPECIFIED": 0, + "API_SAI_UNSPECIFIED": 1, + "API_SWITCH": 2, + "API_PORT": 3, + "API_FDB": 4, + "API_VLAN": 5, + "API_VIRTUAL_ROUTER": 6, + "API_ROUTE": 7, + "API_NEXT_HOP": 8, + "API_NEXT_HOP_GROUP": 9, + "API_ROUTER_INTERFACE": 10, + "API_NEIGHBOR": 11, + "API_ACL": 12, + "API_HOSTIF": 13, + "API_MIRROR": 14, + "API_SAMPLEPACKET": 15, + "API_STP": 16, + "API_LAG": 17, + "API_POLICER": 18, + "API_WRED": 19, + "API_QOS_MAP": 20, + "API_QUEUE": 21, + "API_SCHEDULER": 22, + "API_SCHEDULER_GROUP": 23, + "API_BUFFER": 24, + "API_HASH": 25, + "API_UDF": 26, + "API_TUNNEL": 27, + "API_L2MC": 28, + "API_IPMC": 29, + "API_RPF_GROUP": 30, + "API_L2MC_GROUP": 31, + "API_IPMC_GROUP": 32, + "API_MCAST_FDB": 33, + "API_BRIDGE": 34, + "API_TAM": 35, + "API_SRV6": 36, + "API_MPLS": 37, + "API_DTEL": 38, + "API_BFD": 39, + "API_ISOLATION_GROUP": 40, + "API_NAT": 41, + "API_COUNTER": 42, + "API_DEBUG_COUNTER": 43, + "API_MACSEC": 44, + "API_SYSTEM_PORT": 45, + "API_MY_MAC": 46, + "API_IPSEC": 47, + "API_GENERIC_PROGRAMMABLE": 48, + "API_ARS": 49, + "API_ARS_PROFILE": 50, + "API_TWAMP": 51, + "API_POE": 52, + "API_ICMP_ECHO": 53, + "API_MAX": 54, + "API_EXTENSIONS_RANGE_BASE": 536870913, } ) @@ -2230,6 +2242,7 @@ type CounterType int32 const ( CounterType_COUNTER_TYPE_UNSPECIFIED CounterType = 0 CounterType_COUNTER_TYPE_REGULAR CounterType = 1 + CounterType_COUNTER_TYPE_SELECTIVE CounterType = 2 ) // Enum value maps for CounterType. @@ -2237,10 +2250,12 @@ var ( CounterType_name = map[int32]string{ 0: "COUNTER_TYPE_UNSPECIFIED", 1: "COUNTER_TYPE_REGULAR", + 2: "COUNTER_TYPE_SELECTIVE", } CounterType_value = map[string]int32{ "COUNTER_TYPE_UNSPECIFIED": 0, "COUNTER_TYPE_REGULAR": 1, + "COUNTER_TYPE_SELECTIVE": 2, } ) @@ -2271,6 +2286,55 @@ func (CounterType) EnumDescriptor() ([]byte, []int) { return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{33} } +type DashCapsHaScopeLevel int32 + +const ( + DashCapsHaScopeLevel_DASH_CAPS_HA_SCOPE_LEVEL_UNSPECIFIED DashCapsHaScopeLevel = 0 + DashCapsHaScopeLevel_DASH_CAPS_HA_SCOPE_LEVEL_CARD DashCapsHaScopeLevel = 1 + DashCapsHaScopeLevel_DASH_CAPS_HA_SCOPE_LEVEL_ENI DashCapsHaScopeLevel = 2 +) + +// Enum value maps for DashCapsHaScopeLevel. +var ( + DashCapsHaScopeLevel_name = map[int32]string{ + 0: "DASH_CAPS_HA_SCOPE_LEVEL_UNSPECIFIED", + 1: "DASH_CAPS_HA_SCOPE_LEVEL_CARD", + 2: "DASH_CAPS_HA_SCOPE_LEVEL_ENI", + } + DashCapsHaScopeLevel_value = map[string]int32{ + "DASH_CAPS_HA_SCOPE_LEVEL_UNSPECIFIED": 0, + "DASH_CAPS_HA_SCOPE_LEVEL_CARD": 1, + "DASH_CAPS_HA_SCOPE_LEVEL_ENI": 2, + } +) + +func (x DashCapsHaScopeLevel) Enum() *DashCapsHaScopeLevel { + p := new(DashCapsHaScopeLevel) + *p = x + return p +} + +func (x DashCapsHaScopeLevel) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashCapsHaScopeLevel) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[34].Descriptor() +} + +func (DashCapsHaScopeLevel) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[34] +} + +func (x DashCapsHaScopeLevel) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashCapsHaScopeLevel.Descriptor instead. +func (DashCapsHaScopeLevel) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{34} +} + type DashDirection int32 const ( @@ -2307,11 +2371,11 @@ func (x DashDirection) String() string { } func (DashDirection) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[34].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[35].Descriptor() } func (DashDirection) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[34] + return &file_dataplane_proto_sai_common_proto_enumTypes[35] } func (x DashDirection) Number() protoreflect.EnumNumber { @@ -2320,7 +2384,7 @@ func (x DashDirection) Number() protoreflect.EnumNumber { // Deprecated: Use DashDirection.Descriptor instead. func (DashDirection) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{34} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{35} } type DashEncapsulation int32 @@ -2359,11 +2423,11 @@ func (x DashEncapsulation) String() string { } func (DashEncapsulation) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[35].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[36].Descriptor() } func (DashEncapsulation) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[35] + return &file_dataplane_proto_sai_common_proto_enumTypes[36] } func (x DashEncapsulation) Number() protoreflect.EnumNumber { @@ -2372,7 +2436,553 @@ func (x DashEncapsulation) Number() protoreflect.EnumNumber { // Deprecated: Use DashEncapsulation.Descriptor instead. func (DashEncapsulation) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{35} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{36} +} + +type DashEniMacOverrideType int32 + +const ( + DashEniMacOverrideType_DASH_ENI_MAC_OVERRIDE_TYPE_UNSPECIFIED DashEniMacOverrideType = 0 + DashEniMacOverrideType_DASH_ENI_MAC_OVERRIDE_TYPE_NONE DashEniMacOverrideType = 1 + DashEniMacOverrideType_DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC DashEniMacOverrideType = 2 + DashEniMacOverrideType_DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC DashEniMacOverrideType = 3 +) + +// Enum value maps for DashEniMacOverrideType. +var ( + DashEniMacOverrideType_name = map[int32]string{ + 0: "DASH_ENI_MAC_OVERRIDE_TYPE_UNSPECIFIED", + 1: "DASH_ENI_MAC_OVERRIDE_TYPE_NONE", + 2: "DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC", + 3: "DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC", + } + DashEniMacOverrideType_value = map[string]int32{ + "DASH_ENI_MAC_OVERRIDE_TYPE_UNSPECIFIED": 0, + "DASH_ENI_MAC_OVERRIDE_TYPE_NONE": 1, + "DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC": 2, + "DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC": 3, + } +) + +func (x DashEniMacOverrideType) Enum() *DashEniMacOverrideType { + p := new(DashEniMacOverrideType) + *p = x + return p +} + +func (x DashEniMacOverrideType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashEniMacOverrideType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[37].Descriptor() +} + +func (DashEniMacOverrideType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[37] +} + +func (x DashEniMacOverrideType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashEniMacOverrideType.Descriptor instead. +func (DashEniMacOverrideType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{37} +} + +type DashFlowAction int32 + +const ( + DashFlowAction_DASH_FLOW_ACTION_UNSPECIFIED DashFlowAction = 0 + DashFlowAction_DASH_FLOW_ACTION_NONE DashFlowAction = 1 +) + +// Enum value maps for DashFlowAction. +var ( + DashFlowAction_name = map[int32]string{ + 0: "DASH_FLOW_ACTION_UNSPECIFIED", + 1: "DASH_FLOW_ACTION_NONE", + } + DashFlowAction_value = map[string]int32{ + "DASH_FLOW_ACTION_UNSPECIFIED": 0, + "DASH_FLOW_ACTION_NONE": 1, + } +) + +func (x DashFlowAction) Enum() *DashFlowAction { + p := new(DashFlowAction) + *p = x + return p +} + +func (x DashFlowAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashFlowAction) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[38].Descriptor() +} + +func (DashFlowAction) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[38] +} + +func (x DashFlowAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashFlowAction.Descriptor instead. +func (DashFlowAction) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{38} +} + +type DashFlowEnabledKey int32 + +const ( + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_UNSPECIFIED DashFlowEnabledKey = 0 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_ENI_MAC DashFlowEnabledKey = 2 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_VNI DashFlowEnabledKey = 3 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_PROTOCOL DashFlowEnabledKey = 5 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_SRC_IP DashFlowEnabledKey = 9 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_DST_IP DashFlowEnabledKey = 17 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_SRC_PORT DashFlowEnabledKey = 33 + DashFlowEnabledKey_DASH_FLOW_ENABLED_KEY_DST_PORT DashFlowEnabledKey = 65 +) + +// Enum value maps for DashFlowEnabledKey. +var ( + DashFlowEnabledKey_name = map[int32]string{ + 0: "DASH_FLOW_ENABLED_KEY_UNSPECIFIED", + 2: "DASH_FLOW_ENABLED_KEY_ENI_MAC", + 3: "DASH_FLOW_ENABLED_KEY_VNI", + 5: "DASH_FLOW_ENABLED_KEY_PROTOCOL", + 9: "DASH_FLOW_ENABLED_KEY_SRC_IP", + 17: "DASH_FLOW_ENABLED_KEY_DST_IP", + 33: "DASH_FLOW_ENABLED_KEY_SRC_PORT", + 65: "DASH_FLOW_ENABLED_KEY_DST_PORT", + } + DashFlowEnabledKey_value = map[string]int32{ + "DASH_FLOW_ENABLED_KEY_UNSPECIFIED": 0, + "DASH_FLOW_ENABLED_KEY_ENI_MAC": 2, + "DASH_FLOW_ENABLED_KEY_VNI": 3, + "DASH_FLOW_ENABLED_KEY_PROTOCOL": 5, + "DASH_FLOW_ENABLED_KEY_SRC_IP": 9, + "DASH_FLOW_ENABLED_KEY_DST_IP": 17, + "DASH_FLOW_ENABLED_KEY_SRC_PORT": 33, + "DASH_FLOW_ENABLED_KEY_DST_PORT": 65, + } +) + +func (x DashFlowEnabledKey) Enum() *DashFlowEnabledKey { + p := new(DashFlowEnabledKey) + *p = x + return p +} + +func (x DashFlowEnabledKey) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashFlowEnabledKey) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[39].Descriptor() +} + +func (DashFlowEnabledKey) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[39] +} + +func (x DashFlowEnabledKey) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashFlowEnabledKey.Descriptor instead. +func (DashFlowEnabledKey) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{39} +} + +type DashFlowEntryBulkGetSessionFilterKey int32 + +const ( + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_UNSPECIFIED DashFlowEntryBulkGetSessionFilterKey = 0 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD DashFlowEntryBulkGetSessionFilterKey = 1 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID DashFlowEntryBulkGetSessionFilterKey = 2 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR DashFlowEntryBulkGetSessionFilterKey = 3 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL DashFlowEntryBulkGetSessionFilterKey = 4 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR DashFlowEntryBulkGetSessionFilterKey = 5 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR DashFlowEntryBulkGetSessionFilterKey = 6 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT DashFlowEntryBulkGetSessionFilterKey = 7 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT DashFlowEntryBulkGetSessionFilterKey = 8 + DashFlowEntryBulkGetSessionFilterKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION DashFlowEntryBulkGetSessionFilterKey = 9 +) + +// Enum value maps for DashFlowEntryBulkGetSessionFilterKey. +var ( + DashFlowEntryBulkGetSessionFilterKey_name = map[int32]string{ + 0: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_UNSPECIFIED", + 1: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD", + 2: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID", + 3: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR", + 4: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL", + 5: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR", + 6: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR", + 7: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT", + 8: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT", + 9: "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION", + } + DashFlowEntryBulkGetSessionFilterKey_value = map[string]int32{ + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_UNSPECIFIED": 0, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD": 1, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID": 2, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR": 3, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL": 4, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR": 5, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR": 6, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT": 7, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT": 8, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION": 9, + } +) + +func (x DashFlowEntryBulkGetSessionFilterKey) Enum() *DashFlowEntryBulkGetSessionFilterKey { + p := new(DashFlowEntryBulkGetSessionFilterKey) + *p = x + return p +} + +func (x DashFlowEntryBulkGetSessionFilterKey) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashFlowEntryBulkGetSessionFilterKey) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[40].Descriptor() +} + +func (DashFlowEntryBulkGetSessionFilterKey) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[40] +} + +func (x DashFlowEntryBulkGetSessionFilterKey) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashFlowEntryBulkGetSessionFilterKey.Descriptor instead. +func (DashFlowEntryBulkGetSessionFilterKey) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{40} +} + +type DashFlowEntryBulkGetSessionMode int32 + +const ( + DashFlowEntryBulkGetSessionMode_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_UNSPECIFIED DashFlowEntryBulkGetSessionMode = 0 + DashFlowEntryBulkGetSessionMode_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC DashFlowEntryBulkGetSessionMode = 1 + DashFlowEntryBulkGetSessionMode_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR DashFlowEntryBulkGetSessionMode = 2 + DashFlowEntryBulkGetSessionMode_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT DashFlowEntryBulkGetSessionMode = 3 + DashFlowEntryBulkGetSessionMode_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE DashFlowEntryBulkGetSessionMode = 4 +) + +// Enum value maps for DashFlowEntryBulkGetSessionMode. +var ( + DashFlowEntryBulkGetSessionMode_name = map[int32]string{ + 0: "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_UNSPECIFIED", + 1: "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC", + 2: "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR", + 3: "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT", + 4: "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE", + } + DashFlowEntryBulkGetSessionMode_value = map[string]int32{ + "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_UNSPECIFIED": 0, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC": 1, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR": 2, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT": 3, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE": 4, + } +) + +func (x DashFlowEntryBulkGetSessionMode) Enum() *DashFlowEntryBulkGetSessionMode { + p := new(DashFlowEntryBulkGetSessionMode) + *p = x + return p +} + +func (x DashFlowEntryBulkGetSessionMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashFlowEntryBulkGetSessionMode) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[41].Descriptor() +} + +func (DashFlowEntryBulkGetSessionMode) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[41] +} + +func (x DashFlowEntryBulkGetSessionMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashFlowEntryBulkGetSessionMode.Descriptor instead. +func (DashFlowEntryBulkGetSessionMode) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{41} +} + +type DashFlowEntryBulkGetSessionOpKey int32 + +const ( + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_UNSPECIFIED DashFlowEntryBulkGetSessionOpKey = 0 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID DashFlowEntryBulkGetSessionOpKey = 1 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO DashFlowEntryBulkGetSessionOpKey = 2 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN DashFlowEntryBulkGetSessionOpKey = 3 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO DashFlowEntryBulkGetSessionOpKey = 4 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN DashFlowEntryBulkGetSessionOpKey = 5 + DashFlowEntryBulkGetSessionOpKey_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO DashFlowEntryBulkGetSessionOpKey = 6 +) + +// Enum value maps for DashFlowEntryBulkGetSessionOpKey. +var ( + DashFlowEntryBulkGetSessionOpKey_name = map[int32]string{ + 0: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_UNSPECIFIED", + 1: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID", + 2: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO", + 3: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN", + 4: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO", + 5: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN", + 6: "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO", + } + DashFlowEntryBulkGetSessionOpKey_value = map[string]int32{ + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_UNSPECIFIED": 0, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID": 1, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO": 2, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN": 3, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO": 4, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN": 5, + "DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO": 6, + } +) + +func (x DashFlowEntryBulkGetSessionOpKey) Enum() *DashFlowEntryBulkGetSessionOpKey { + p := new(DashFlowEntryBulkGetSessionOpKey) + *p = x + return p +} + +func (x DashFlowEntryBulkGetSessionOpKey) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashFlowEntryBulkGetSessionOpKey) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[42].Descriptor() +} + +func (DashFlowEntryBulkGetSessionOpKey) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[42] +} + +func (x DashFlowEntryBulkGetSessionOpKey) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashFlowEntryBulkGetSessionOpKey.Descriptor instead. +func (DashFlowEntryBulkGetSessionOpKey) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{42} +} + +type DashHaRole int32 + +const ( + DashHaRole_DASH_HA_ROLE_UNSPECIFIED DashHaRole = 0 + DashHaRole_DASH_HA_ROLE_DEAD DashHaRole = 1 + DashHaRole_DASH_HA_ROLE_ACTIVE DashHaRole = 2 + DashHaRole_DASH_HA_ROLE_STANDBY DashHaRole = 3 + DashHaRole_DASH_HA_ROLE_STANDALONE DashHaRole = 4 + DashHaRole_DASH_HA_ROLE_SWITCHING_TO_ACTIVE DashHaRole = 5 +) + +// Enum value maps for DashHaRole. +var ( + DashHaRole_name = map[int32]string{ + 0: "DASH_HA_ROLE_UNSPECIFIED", + 1: "DASH_HA_ROLE_DEAD", + 2: "DASH_HA_ROLE_ACTIVE", + 3: "DASH_HA_ROLE_STANDBY", + 4: "DASH_HA_ROLE_STANDALONE", + 5: "DASH_HA_ROLE_SWITCHING_TO_ACTIVE", + } + DashHaRole_value = map[string]int32{ + "DASH_HA_ROLE_UNSPECIFIED": 0, + "DASH_HA_ROLE_DEAD": 1, + "DASH_HA_ROLE_ACTIVE": 2, + "DASH_HA_ROLE_STANDBY": 3, + "DASH_HA_ROLE_STANDALONE": 4, + "DASH_HA_ROLE_SWITCHING_TO_ACTIVE": 5, + } +) + +func (x DashHaRole) Enum() *DashHaRole { + p := new(DashHaRole) + *p = x + return p +} + +func (x DashHaRole) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashHaRole) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[43].Descriptor() +} + +func (DashHaRole) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[43] +} + +func (x DashHaRole) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashHaRole.Descriptor instead. +func (DashHaRole) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{43} +} + +type DashHaState int32 + +const ( + DashHaState_DASH_HA_STATE_UNSPECIFIED DashHaState = 0 + DashHaState_DASH_HA_STATE_DEAD DashHaState = 1 + DashHaState_DASH_HA_STATE_CONNECTING DashHaState = 2 + DashHaState_DASH_HA_STATE_CONNECTED DashHaState = 3 + DashHaState_DASH_HA_STATE_INITIALIZING_TO_ACTIVE DashHaState = 4 + DashHaState_DASH_HA_STATE_INITIALIZING_TO_STANDBY DashHaState = 5 + DashHaState_DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION DashHaState = 6 + DashHaState_DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION DashHaState = 7 + DashHaState_DASH_HA_STATE_PENDING_STANDBY_ACTIVATION DashHaState = 8 + DashHaState_DASH_HA_STATE_STANDALONE DashHaState = 9 + DashHaState_DASH_HA_STATE_ACTIVE DashHaState = 10 + DashHaState_DASH_HA_STATE_STANDBY DashHaState = 11 + DashHaState_DASH_HA_STATE_DESTROYING DashHaState = 12 + DashHaState_DASH_HA_STATE_SWITCHING_TO_STANDALONE DashHaState = 13 +) + +// Enum value maps for DashHaState. +var ( + DashHaState_name = map[int32]string{ + 0: "DASH_HA_STATE_UNSPECIFIED", + 1: "DASH_HA_STATE_DEAD", + 2: "DASH_HA_STATE_CONNECTING", + 3: "DASH_HA_STATE_CONNECTED", + 4: "DASH_HA_STATE_INITIALIZING_TO_ACTIVE", + 5: "DASH_HA_STATE_INITIALIZING_TO_STANDBY", + 6: "DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION", + 7: "DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION", + 8: "DASH_HA_STATE_PENDING_STANDBY_ACTIVATION", + 9: "DASH_HA_STATE_STANDALONE", + 10: "DASH_HA_STATE_ACTIVE", + 11: "DASH_HA_STATE_STANDBY", + 12: "DASH_HA_STATE_DESTROYING", + 13: "DASH_HA_STATE_SWITCHING_TO_STANDALONE", + } + DashHaState_value = map[string]int32{ + "DASH_HA_STATE_UNSPECIFIED": 0, + "DASH_HA_STATE_DEAD": 1, + "DASH_HA_STATE_CONNECTING": 2, + "DASH_HA_STATE_CONNECTED": 3, + "DASH_HA_STATE_INITIALIZING_TO_ACTIVE": 4, + "DASH_HA_STATE_INITIALIZING_TO_STANDBY": 5, + "DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION": 6, + "DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION": 7, + "DASH_HA_STATE_PENDING_STANDBY_ACTIVATION": 8, + "DASH_HA_STATE_STANDALONE": 9, + "DASH_HA_STATE_ACTIVE": 10, + "DASH_HA_STATE_STANDBY": 11, + "DASH_HA_STATE_DESTROYING": 12, + "DASH_HA_STATE_SWITCHING_TO_STANDALONE": 13, + } +) + +func (x DashHaState) Enum() *DashHaState { + p := new(DashHaState) + *p = x + return p +} + +func (x DashHaState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashHaState) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[44].Descriptor() +} + +func (DashHaState) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[44] +} + +func (x DashHaState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashHaState.Descriptor instead. +func (DashHaState) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{44} +} + +type DashRoutingActions int32 + +const ( + DashRoutingActions_DASH_ROUTING_ACTIONS_UNSPECIFIED DashRoutingActions = 0 + DashRoutingActions_DASH_ROUTING_ACTIONS_STATIC_ENCAP DashRoutingActions = 2 + DashRoutingActions_DASH_ROUTING_ACTIONS_NAT DashRoutingActions = 3 + DashRoutingActions_DASH_ROUTING_ACTIONS_NAT46 DashRoutingActions = 5 + DashRoutingActions_DASH_ROUTING_ACTIONS_NAT64 DashRoutingActions = 9 + DashRoutingActions_DASH_ROUTING_ACTIONS_NAT_PORT DashRoutingActions = 17 +) + +// Enum value maps for DashRoutingActions. +var ( + DashRoutingActions_name = map[int32]string{ + 0: "DASH_ROUTING_ACTIONS_UNSPECIFIED", + 2: "DASH_ROUTING_ACTIONS_STATIC_ENCAP", + 3: "DASH_ROUTING_ACTIONS_NAT", + 5: "DASH_ROUTING_ACTIONS_NAT46", + 9: "DASH_ROUTING_ACTIONS_NAT64", + 17: "DASH_ROUTING_ACTIONS_NAT_PORT", + } + DashRoutingActions_value = map[string]int32{ + "DASH_ROUTING_ACTIONS_UNSPECIFIED": 0, + "DASH_ROUTING_ACTIONS_STATIC_ENCAP": 2, + "DASH_ROUTING_ACTIONS_NAT": 3, + "DASH_ROUTING_ACTIONS_NAT46": 5, + "DASH_ROUTING_ACTIONS_NAT64": 9, + "DASH_ROUTING_ACTIONS_NAT_PORT": 17, + } +) + +func (x DashRoutingActions) Enum() *DashRoutingActions { + p := new(DashRoutingActions) + *p = x + return p +} + +func (x DashRoutingActions) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DashRoutingActions) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[45].Descriptor() +} + +func (DashRoutingActions) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[45] +} + +func (x DashRoutingActions) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DashRoutingActions.Descriptor instead. +func (DashRoutingActions) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{45} } type DashTunnelDscpMode int32 @@ -2408,11 +3018,11 @@ func (x DashTunnelDscpMode) String() string { } func (DashTunnelDscpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[36].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[46].Descriptor() } func (DashTunnelDscpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[36] + return &file_dataplane_proto_sai_common_proto_enumTypes[46] } func (x DashTunnelDscpMode) Number() protoreflect.EnumNumber { @@ -2421,7 +3031,7 @@ func (x DashTunnelDscpMode) Number() protoreflect.EnumNumber { // Deprecated: Use DashTunnelDscpMode.Descriptor instead. func (DashTunnelDscpMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{36} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{46} } type DebugCounterBindMethod int32 @@ -2454,11 +3064,11 @@ func (x DebugCounterBindMethod) String() string { } func (DebugCounterBindMethod) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[37].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[47].Descriptor() } func (DebugCounterBindMethod) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[37] + return &file_dataplane_proto_sai_common_proto_enumTypes[47] } func (x DebugCounterBindMethod) Number() protoreflect.EnumNumber { @@ -2467,7 +3077,7 @@ func (x DebugCounterBindMethod) Number() protoreflect.EnumNumber { // Deprecated: Use DebugCounterBindMethod.Descriptor instead. func (DebugCounterBindMethod) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{37} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{47} } type DebugCounterType int32 @@ -2509,11 +3119,11 @@ func (x DebugCounterType) String() string { } func (DebugCounterType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[38].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[48].Descriptor() } func (DebugCounterType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[38] + return &file_dataplane_proto_sai_common_proto_enumTypes[48] } func (x DebugCounterType) Number() protoreflect.EnumNumber { @@ -2522,7 +3132,7 @@ func (x DebugCounterType) Number() protoreflect.EnumNumber { // Deprecated: Use DebugCounterType.Descriptor instead. func (DebugCounterType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{38} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{48} } type DtelEventType int32 @@ -2573,11 +3183,11 @@ func (x DtelEventType) String() string { } func (DtelEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[39].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[49].Descriptor() } func (DtelEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[39] + return &file_dataplane_proto_sai_common_proto_enumTypes[49] } func (x DtelEventType) Number() protoreflect.EnumNumber { @@ -2586,7 +3196,7 @@ func (x DtelEventType) Number() protoreflect.EnumNumber { // Deprecated: Use DtelEventType.Descriptor instead. func (DtelEventType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{39} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{49} } type EcnMarkMode int32 @@ -2640,11 +3250,11 @@ func (x EcnMarkMode) String() string { } func (EcnMarkMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[40].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[50].Descriptor() } func (EcnMarkMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[40] + return &file_dataplane_proto_sai_common_proto_enumTypes[50] } func (x EcnMarkMode) Number() protoreflect.EnumNumber { @@ -2653,7 +3263,7 @@ func (x EcnMarkMode) Number() protoreflect.EnumNumber { // Deprecated: Use EcnMarkMode.Descriptor instead. func (EcnMarkMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{40} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{50} } type ErspanEncapsulationType int32 @@ -2686,11 +3296,11 @@ func (x ErspanEncapsulationType) String() string { } func (ErspanEncapsulationType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[41].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[51].Descriptor() } func (ErspanEncapsulationType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[41] + return &file_dataplane_proto_sai_common_proto_enumTypes[51] } func (x ErspanEncapsulationType) Number() protoreflect.EnumNumber { @@ -2699,7 +3309,7 @@ func (x ErspanEncapsulationType) Number() protoreflect.EnumNumber { // Deprecated: Use ErspanEncapsulationType.Descriptor instead. func (ErspanEncapsulationType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{41} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{51} } type FdbEntryType int32 @@ -2735,11 +3345,11 @@ func (x FdbEntryType) String() string { } func (FdbEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[42].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[52].Descriptor() } func (FdbEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[42] + return &file_dataplane_proto_sai_common_proto_enumTypes[52] } func (x FdbEntryType) Number() protoreflect.EnumNumber { @@ -2748,7 +3358,7 @@ func (x FdbEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use FdbEntryType.Descriptor instead. func (FdbEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{42} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{52} } type FdbEvent int32 @@ -2790,11 +3400,11 @@ func (x FdbEvent) String() string { } func (FdbEvent) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[43].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[53].Descriptor() } func (FdbEvent) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[43] + return &file_dataplane_proto_sai_common_proto_enumTypes[53] } func (x FdbEvent) Number() protoreflect.EnumNumber { @@ -2803,7 +3413,7 @@ func (x FdbEvent) Number() protoreflect.EnumNumber { // Deprecated: Use FdbEvent.Descriptor instead. func (FdbEvent) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{43} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{53} } type FdbFlushEntryType int32 @@ -2842,11 +3452,11 @@ func (x FdbFlushEntryType) String() string { } func (FdbFlushEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[44].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[54].Descriptor() } func (FdbFlushEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[44] + return &file_dataplane_proto_sai_common_proto_enumTypes[54] } func (x FdbFlushEntryType) Number() protoreflect.EnumNumber { @@ -2855,7 +3465,108 @@ func (x FdbFlushEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use FdbFlushEntryType.Descriptor instead. func (FdbFlushEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{44} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{54} +} + +type HaScopeEvent int32 + +const ( + HaScopeEvent_HA_SCOPE_EVENT_UNSPECIFIED HaScopeEvent = 0 + HaScopeEvent_HA_SCOPE_EVENT_STATE_CHANGED HaScopeEvent = 1 + HaScopeEvent_HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED HaScopeEvent = 2 + HaScopeEvent_HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED HaScopeEvent = 3 +) + +// Enum value maps for HaScopeEvent. +var ( + HaScopeEvent_name = map[int32]string{ + 0: "HA_SCOPE_EVENT_UNSPECIFIED", + 1: "HA_SCOPE_EVENT_STATE_CHANGED", + 2: "HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED", + 3: "HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED", + } + HaScopeEvent_value = map[string]int32{ + "HA_SCOPE_EVENT_UNSPECIFIED": 0, + "HA_SCOPE_EVENT_STATE_CHANGED": 1, + "HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED": 2, + "HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED": 3, + } +) + +func (x HaScopeEvent) Enum() *HaScopeEvent { + p := new(HaScopeEvent) + *p = x + return p +} + +func (x HaScopeEvent) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HaScopeEvent) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[55].Descriptor() +} + +func (HaScopeEvent) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[55] +} + +func (x HaScopeEvent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HaScopeEvent.Descriptor instead. +func (HaScopeEvent) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{55} +} + +type HaSetEvent int32 + +const ( + HaSetEvent_HA_SET_EVENT_UNSPECIFIED HaSetEvent = 0 + HaSetEvent_HA_SET_EVENT_DP_CHANNEL_UP HaSetEvent = 1 + HaSetEvent_HA_SET_EVENT_DP_CHANNEL_DOWN HaSetEvent = 2 +) + +// Enum value maps for HaSetEvent. +var ( + HaSetEvent_name = map[int32]string{ + 0: "HA_SET_EVENT_UNSPECIFIED", + 1: "HA_SET_EVENT_DP_CHANNEL_UP", + 2: "HA_SET_EVENT_DP_CHANNEL_DOWN", + } + HaSetEvent_value = map[string]int32{ + "HA_SET_EVENT_UNSPECIFIED": 0, + "HA_SET_EVENT_DP_CHANNEL_UP": 1, + "HA_SET_EVENT_DP_CHANNEL_DOWN": 2, + } +) + +func (x HaSetEvent) Enum() *HaSetEvent { + p := new(HaSetEvent) + *p = x + return p +} + +func (x HaSetEvent) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (HaSetEvent) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[56].Descriptor() +} + +func (HaSetEvent) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[56] +} + +func (x HaSetEvent) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use HaSetEvent.Descriptor instead. +func (HaSetEvent) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{56} } type HashAlgorithm int32 @@ -2906,11 +3617,11 @@ func (x HashAlgorithm) String() string { } func (HashAlgorithm) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[45].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[57].Descriptor() } func (HashAlgorithm) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[45] + return &file_dataplane_proto_sai_common_proto_enumTypes[57] } func (x HashAlgorithm) Number() protoreflect.EnumNumber { @@ -2919,7 +3630,7 @@ func (x HashAlgorithm) Number() protoreflect.EnumNumber { // Deprecated: Use HashAlgorithm.Descriptor instead. func (HashAlgorithm) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{45} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{57} } type HealthDataType int32 @@ -2927,6 +3638,7 @@ type HealthDataType int32 const ( HealthDataType_HEALTH_DATA_TYPE_UNSPECIFIED HealthDataType = 0 HealthDataType_HEALTH_DATA_TYPE_GENERAL HealthDataType = 1 + HealthDataType_HEALTH_DATA_TYPE_SER HealthDataType = 2 ) // Enum value maps for HealthDataType. @@ -2934,10 +3646,12 @@ var ( HealthDataType_name = map[int32]string{ 0: "HEALTH_DATA_TYPE_UNSPECIFIED", 1: "HEALTH_DATA_TYPE_GENERAL", + 2: "HEALTH_DATA_TYPE_SER", } HealthDataType_value = map[string]int32{ "HEALTH_DATA_TYPE_UNSPECIFIED": 0, "HEALTH_DATA_TYPE_GENERAL": 1, + "HEALTH_DATA_TYPE_SER": 2, } ) @@ -2952,11 +3666,11 @@ func (x HealthDataType) String() string { } func (HealthDataType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[46].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[58].Descriptor() } func (HealthDataType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[46] + return &file_dataplane_proto_sai_common_proto_enumTypes[58] } func (x HealthDataType) Number() protoreflect.EnumNumber { @@ -2965,7 +3679,7 @@ func (x HealthDataType) Number() protoreflect.EnumNumber { // Deprecated: Use HealthDataType.Descriptor instead. func (HealthDataType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{46} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{58} } type HostifTableEntryChannelType int32 @@ -3013,11 +3727,11 @@ func (x HostifTableEntryChannelType) String() string { } func (HostifTableEntryChannelType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[47].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[59].Descriptor() } func (HostifTableEntryChannelType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[47] + return &file_dataplane_proto_sai_common_proto_enumTypes[59] } func (x HostifTableEntryChannelType) Number() protoreflect.EnumNumber { @@ -3026,7 +3740,7 @@ func (x HostifTableEntryChannelType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifTableEntryChannelType.Descriptor instead. func (HostifTableEntryChannelType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{47} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{59} } type HostifTableEntryType int32 @@ -3071,11 +3785,11 @@ func (x HostifTableEntryType) String() string { } func (HostifTableEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[48].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[60].Descriptor() } func (HostifTableEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[48] + return &file_dataplane_proto_sai_common_proto_enumTypes[60] } func (x HostifTableEntryType) Number() protoreflect.EnumNumber { @@ -3084,7 +3798,7 @@ func (x HostifTableEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifTableEntryType.Descriptor instead. func (HostifTableEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{48} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{60} } type HostifTrapType int32 @@ -3134,6 +3848,7 @@ const ( HostifTrapType_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION HostifTrapType = 8211 HostifTrapType_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT HostifTrapType = 8212 HostifTrapType_HOSTIF_TRAP_TYPE_ISIS HostifTrapType = 8213 + HostifTrapType_HOSTIF_TRAP_TYPE_NEIGHBOR_MISS HostifTrapType = 8214 HostifTrapType_HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE HostifTrapType = 12289 HostifTrapType_HOSTIF_TRAP_TYPE_IP2ME HostifTrapType = 16385 HostifTrapType_HOSTIF_TRAP_TYPE_SSH HostifTrapType = 16386 @@ -3212,6 +3927,7 @@ var ( 8211: "HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION", 8212: "HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT", 8213: "HOSTIF_TRAP_TYPE_ISIS", + 8214: "HOSTIF_TRAP_TYPE_NEIGHBOR_MISS", 12289: "HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE", 16385: "HOSTIF_TRAP_TYPE_IP2ME", 16386: "HOSTIF_TRAP_TYPE_SSH", @@ -3287,6 +4003,7 @@ var ( "HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION": 8211, "HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT": 8212, "HOSTIF_TRAP_TYPE_ISIS": 8213, + "HOSTIF_TRAP_TYPE_NEIGHBOR_MISS": 8214, "HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE": 12289, "HOSTIF_TRAP_TYPE_IP2ME": 16385, "HOSTIF_TRAP_TYPE_SSH": 16386, @@ -3330,11 +4047,11 @@ func (x HostifTrapType) String() string { } func (HostifTrapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[49].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[61].Descriptor() } func (HostifTrapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[49] + return &file_dataplane_proto_sai_common_proto_enumTypes[61] } func (x HostifTrapType) Number() protoreflect.EnumNumber { @@ -3343,7 +4060,7 @@ func (x HostifTrapType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifTrapType.Descriptor instead. func (HostifTrapType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{49} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{61} } type HostifTxType int32 @@ -3382,11 +4099,11 @@ func (x HostifTxType) String() string { } func (HostifTxType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[50].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[62].Descriptor() } func (HostifTxType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[50] + return &file_dataplane_proto_sai_common_proto_enumTypes[62] } func (x HostifTxType) Number() protoreflect.EnumNumber { @@ -3395,7 +4112,7 @@ func (x HostifTxType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifTxType.Descriptor instead. func (HostifTxType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{50} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{62} } type HostifType int32 @@ -3434,11 +4151,11 @@ func (x HostifType) String() string { } func (HostifType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[51].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[63].Descriptor() } func (HostifType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[51] + return &file_dataplane_proto_sai_common_proto_enumTypes[63] } func (x HostifType) Number() protoreflect.EnumNumber { @@ -3447,7 +4164,7 @@ func (x HostifType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifType.Descriptor instead. func (HostifType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{51} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{63} } type HostifUserDefinedTrapType int32 @@ -3507,11 +4224,11 @@ func (x HostifUserDefinedTrapType) String() string { } func (HostifUserDefinedTrapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[52].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[64].Descriptor() } func (HostifUserDefinedTrapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[52] + return &file_dataplane_proto_sai_common_proto_enumTypes[64] } func (x HostifUserDefinedTrapType) Number() protoreflect.EnumNumber { @@ -3520,7 +4237,7 @@ func (x HostifUserDefinedTrapType) Number() protoreflect.EnumNumber { // Deprecated: Use HostifUserDefinedTrapType.Descriptor instead. func (HostifUserDefinedTrapType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{52} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{64} } type HostifVlanTag int32 @@ -3559,11 +4276,11 @@ func (x HostifVlanTag) String() string { } func (HostifVlanTag) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[53].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[65].Descriptor() } func (HostifVlanTag) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[53] + return &file_dataplane_proto_sai_common_proto_enumTypes[65] } func (x HostifVlanTag) Number() protoreflect.EnumNumber { @@ -3572,7 +4289,105 @@ func (x HostifVlanTag) Number() protoreflect.EnumNumber { // Deprecated: Use HostifVlanTag.Descriptor instead. func (HostifVlanTag) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{53} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{65} +} + +type IcmpEchoSessionStat int32 + +const ( + IcmpEchoSessionStat_ICMP_ECHO_SESSION_STAT_UNSPECIFIED IcmpEchoSessionStat = 0 + IcmpEchoSessionStat_ICMP_ECHO_SESSION_STAT_IN_PACKETS IcmpEchoSessionStat = 1 + IcmpEchoSessionStat_ICMP_ECHO_SESSION_STAT_OUT_PACKETS IcmpEchoSessionStat = 2 +) + +// Enum value maps for IcmpEchoSessionStat. +var ( + IcmpEchoSessionStat_name = map[int32]string{ + 0: "ICMP_ECHO_SESSION_STAT_UNSPECIFIED", + 1: "ICMP_ECHO_SESSION_STAT_IN_PACKETS", + 2: "ICMP_ECHO_SESSION_STAT_OUT_PACKETS", + } + IcmpEchoSessionStat_value = map[string]int32{ + "ICMP_ECHO_SESSION_STAT_UNSPECIFIED": 0, + "ICMP_ECHO_SESSION_STAT_IN_PACKETS": 1, + "ICMP_ECHO_SESSION_STAT_OUT_PACKETS": 2, + } +) + +func (x IcmpEchoSessionStat) Enum() *IcmpEchoSessionStat { + p := new(IcmpEchoSessionStat) + *p = x + return p +} + +func (x IcmpEchoSessionStat) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IcmpEchoSessionStat) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[66].Descriptor() +} + +func (IcmpEchoSessionStat) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[66] +} + +func (x IcmpEchoSessionStat) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IcmpEchoSessionStat.Descriptor instead. +func (IcmpEchoSessionStat) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{66} +} + +type IcmpEchoSessionState int32 + +const ( + IcmpEchoSessionState_ICMP_ECHO_SESSION_STATE_UNSPECIFIED IcmpEchoSessionState = 0 + IcmpEchoSessionState_ICMP_ECHO_SESSION_STATE_DOWN IcmpEchoSessionState = 1 + IcmpEchoSessionState_ICMP_ECHO_SESSION_STATE_UP IcmpEchoSessionState = 2 +) + +// Enum value maps for IcmpEchoSessionState. +var ( + IcmpEchoSessionState_name = map[int32]string{ + 0: "ICMP_ECHO_SESSION_STATE_UNSPECIFIED", + 1: "ICMP_ECHO_SESSION_STATE_DOWN", + 2: "ICMP_ECHO_SESSION_STATE_UP", + } + IcmpEchoSessionState_value = map[string]int32{ + "ICMP_ECHO_SESSION_STATE_UNSPECIFIED": 0, + "ICMP_ECHO_SESSION_STATE_DOWN": 1, + "ICMP_ECHO_SESSION_STATE_UP": 2, + } +) + +func (x IcmpEchoSessionState) Enum() *IcmpEchoSessionState { + p := new(IcmpEchoSessionState) + *p = x + return p +} + +func (x IcmpEchoSessionState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IcmpEchoSessionState) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[67].Descriptor() +} + +func (IcmpEchoSessionState) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[67] +} + +func (x IcmpEchoSessionState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IcmpEchoSessionState.Descriptor instead. +func (IcmpEchoSessionState) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{67} } type InDropReason int32 @@ -3779,11 +4594,11 @@ func (x InDropReason) String() string { } func (InDropReason) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[54].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[68].Descriptor() } func (InDropReason) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[54] + return &file_dataplane_proto_sai_common_proto_enumTypes[68] } func (x InDropReason) Number() protoreflect.EnumNumber { @@ -3792,7 +4607,7 @@ func (x InDropReason) Number() protoreflect.EnumNumber { // Deprecated: Use InDropReason.Descriptor instead. func (InDropReason) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{54} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{68} } type IngressPriorityGroupStat int32 @@ -3852,11 +4667,11 @@ func (x IngressPriorityGroupStat) String() string { } func (IngressPriorityGroupStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[55].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[69].Descriptor() } func (IngressPriorityGroupStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[55] + return &file_dataplane_proto_sai_common_proto_enumTypes[69] } func (x IngressPriorityGroupStat) Number() protoreflect.EnumNumber { @@ -3865,7 +4680,7 @@ func (x IngressPriorityGroupStat) Number() protoreflect.EnumNumber { // Deprecated: Use IngressPriorityGroupStat.Descriptor instead. func (IngressPriorityGroupStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{55} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} } type InsegEntryPopQosMode int32 @@ -3901,11 +4716,11 @@ func (x InsegEntryPopQosMode) String() string { } func (InsegEntryPopQosMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[56].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[70].Descriptor() } func (InsegEntryPopQosMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[56] + return &file_dataplane_proto_sai_common_proto_enumTypes[70] } func (x InsegEntryPopQosMode) Number() protoreflect.EnumNumber { @@ -3914,7 +4729,7 @@ func (x InsegEntryPopQosMode) Number() protoreflect.EnumNumber { // Deprecated: Use InsegEntryPopQosMode.Descriptor instead. func (InsegEntryPopQosMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{56} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} } type InsegEntryPopTtlMode int32 @@ -3950,11 +4765,11 @@ func (x InsegEntryPopTtlMode) String() string { } func (InsegEntryPopTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[57].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[71].Descriptor() } func (InsegEntryPopTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[57] + return &file_dataplane_proto_sai_common_proto_enumTypes[71] } func (x InsegEntryPopTtlMode) Number() protoreflect.EnumNumber { @@ -3963,7 +4778,7 @@ func (x InsegEntryPopTtlMode) Number() protoreflect.EnumNumber { // Deprecated: Use InsegEntryPopTtlMode.Descriptor instead. func (InsegEntryPopTtlMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{57} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} } type InsegEntryPscType int32 @@ -3999,11 +4814,11 @@ func (x InsegEntryPscType) String() string { } func (InsegEntryPscType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[58].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[72].Descriptor() } func (InsegEntryPscType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[58] + return &file_dataplane_proto_sai_common_proto_enumTypes[72] } func (x InsegEntryPscType) Number() protoreflect.EnumNumber { @@ -4012,7 +4827,7 @@ func (x InsegEntryPscType) Number() protoreflect.EnumNumber { // Deprecated: Use InsegEntryPscType.Descriptor instead. func (InsegEntryPscType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{58} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} } type IpAddrFamily int32 @@ -4048,11 +4863,11 @@ func (x IpAddrFamily) String() string { } func (IpAddrFamily) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[59].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[73].Descriptor() } func (IpAddrFamily) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[59] + return &file_dataplane_proto_sai_common_proto_enumTypes[73] } func (x IpAddrFamily) Number() protoreflect.EnumNumber { @@ -4061,7 +4876,7 @@ func (x IpAddrFamily) Number() protoreflect.EnumNumber { // Deprecated: Use IpAddrFamily.Descriptor instead. func (IpAddrFamily) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{59} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} } type IpmcEntryType int32 @@ -4097,11 +4912,11 @@ func (x IpmcEntryType) String() string { } func (IpmcEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[60].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[74].Descriptor() } func (IpmcEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[60] + return &file_dataplane_proto_sai_common_proto_enumTypes[74] } func (x IpmcEntryType) Number() protoreflect.EnumNumber { @@ -4110,7 +4925,7 @@ func (x IpmcEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use IpmcEntryType.Descriptor instead. func (IpmcEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{60} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} } type IpsecCipher int32 @@ -4152,11 +4967,11 @@ func (x IpsecCipher) String() string { } func (IpsecCipher) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[61].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[75].Descriptor() } func (IpsecCipher) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[61] + return &file_dataplane_proto_sai_common_proto_enumTypes[75] } func (x IpsecCipher) Number() protoreflect.EnumNumber { @@ -4165,7 +4980,7 @@ func (x IpsecCipher) Number() protoreflect.EnumNumber { // Deprecated: Use IpsecCipher.Descriptor instead. func (IpsecCipher) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{61} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} } type IpsecDirection int32 @@ -4201,11 +5016,11 @@ func (x IpsecDirection) String() string { } func (IpsecDirection) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[62].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[76].Descriptor() } func (IpsecDirection) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[62] + return &file_dataplane_proto_sai_common_proto_enumTypes[76] } func (x IpsecDirection) Number() protoreflect.EnumNumber { @@ -4214,7 +5029,7 @@ func (x IpsecDirection) Number() protoreflect.EnumNumber { // Deprecated: Use IpsecDirection.Descriptor instead. func (IpsecDirection) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{62} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} } type IpsecPortStat int32 @@ -4262,11 +5077,11 @@ func (x IpsecPortStat) String() string { } func (IpsecPortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[63].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[77].Descriptor() } func (IpsecPortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[63] + return &file_dataplane_proto_sai_common_proto_enumTypes[77] } func (x IpsecPortStat) Number() protoreflect.EnumNumber { @@ -4275,7 +5090,7 @@ func (x IpsecPortStat) Number() protoreflect.EnumNumber { // Deprecated: Use IpsecPortStat.Descriptor instead. func (IpsecPortStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{63} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} } type IpsecSaOctetCountStatus int32 @@ -4314,11 +5129,11 @@ func (x IpsecSaOctetCountStatus) String() string { } func (IpsecSaOctetCountStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[64].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[78].Descriptor() } func (IpsecSaOctetCountStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[64] + return &file_dataplane_proto_sai_common_proto_enumTypes[78] } func (x IpsecSaOctetCountStatus) Number() protoreflect.EnumNumber { @@ -4327,7 +5142,7 @@ func (x IpsecSaOctetCountStatus) Number() protoreflect.EnumNumber { // Deprecated: Use IpsecSaOctetCountStatus.Descriptor instead. func (IpsecSaOctetCountStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{64} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} } type IpsecSaStat int32 @@ -4387,11 +5202,11 @@ func (x IpsecSaStat) String() string { } func (IpsecSaStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[65].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[79].Descriptor() } func (IpsecSaStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[65] + return &file_dataplane_proto_sai_common_proto_enumTypes[79] } func (x IpsecSaStat) Number() protoreflect.EnumNumber { @@ -4400,7 +5215,7 @@ func (x IpsecSaStat) Number() protoreflect.EnumNumber { // Deprecated: Use IpsecSaStat.Descriptor instead. func (IpsecSaStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{65} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} } type IsolationGroupType int32 @@ -4436,11 +5251,11 @@ func (x IsolationGroupType) String() string { } func (IsolationGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[66].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[80].Descriptor() } func (IsolationGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[66] + return &file_dataplane_proto_sai_common_proto_enumTypes[80] } func (x IsolationGroupType) Number() protoreflect.EnumNumber { @@ -4449,7 +5264,7 @@ func (x IsolationGroupType) Number() protoreflect.EnumNumber { // Deprecated: Use IsolationGroupType.Descriptor instead. func (IsolationGroupType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{66} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} } type L2McEntryType int32 @@ -4485,11 +5300,11 @@ func (x L2McEntryType) String() string { } func (L2McEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[67].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[81].Descriptor() } func (L2McEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[67] + return &file_dataplane_proto_sai_common_proto_enumTypes[81] } func (x L2McEntryType) Number() protoreflect.EnumNumber { @@ -4498,7 +5313,7 @@ func (x L2McEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use L2McEntryType.Descriptor instead. func (L2McEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{67} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} } type LogLevel int32 @@ -4546,11 +5361,11 @@ func (x LogLevel) String() string { } func (LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[68].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[82].Descriptor() } func (LogLevel) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[68] + return &file_dataplane_proto_sai_common_proto_enumTypes[82] } func (x LogLevel) Number() protoreflect.EnumNumber { @@ -4559,7 +5374,7 @@ func (x LogLevel) Number() protoreflect.EnumNumber { // Deprecated: Use LogLevel.Descriptor instead. func (LogLevel) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{68} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} } type MacsecCipherSuite int32 @@ -4601,11 +5416,11 @@ func (x MacsecCipherSuite) String() string { } func (MacsecCipherSuite) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[69].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[83].Descriptor() } func (MacsecCipherSuite) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[69] + return &file_dataplane_proto_sai_common_proto_enumTypes[83] } func (x MacsecCipherSuite) Number() protoreflect.EnumNumber { @@ -4614,7 +5429,7 @@ func (x MacsecCipherSuite) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecCipherSuite.Descriptor instead. func (MacsecCipherSuite) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} } type MacsecDirection int32 @@ -4650,11 +5465,11 @@ func (x MacsecDirection) String() string { } func (MacsecDirection) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[70].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[84].Descriptor() } func (MacsecDirection) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[70] + return &file_dataplane_proto_sai_common_proto_enumTypes[84] } func (x MacsecDirection) Number() protoreflect.EnumNumber { @@ -4663,7 +5478,7 @@ func (x MacsecDirection) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecDirection.Descriptor instead. func (MacsecDirection) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} } type MacsecFlowStat int32 @@ -4750,11 +5565,11 @@ func (x MacsecFlowStat) String() string { } func (MacsecFlowStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[71].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[85].Descriptor() } func (MacsecFlowStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[71] + return &file_dataplane_proto_sai_common_proto_enumTypes[85] } func (x MacsecFlowStat) Number() protoreflect.EnumNumber { @@ -4763,7 +5578,7 @@ func (x MacsecFlowStat) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecFlowStat.Descriptor instead. func (MacsecFlowStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} } type MacsecMaxSecureAssociationsPerSc int32 @@ -4799,11 +5614,11 @@ func (x MacsecMaxSecureAssociationsPerSc) String() string { } func (MacsecMaxSecureAssociationsPerSc) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[72].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[86].Descriptor() } func (MacsecMaxSecureAssociationsPerSc) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[72] + return &file_dataplane_proto_sai_common_proto_enumTypes[86] } func (x MacsecMaxSecureAssociationsPerSc) Number() protoreflect.EnumNumber { @@ -4812,7 +5627,7 @@ func (x MacsecMaxSecureAssociationsPerSc) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecMaxSecureAssociationsPerSc.Descriptor instead. func (MacsecMaxSecureAssociationsPerSc) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} } type MacsecPortStat int32 @@ -4851,11 +5666,11 @@ func (x MacsecPortStat) String() string { } func (MacsecPortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[73].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[87].Descriptor() } func (MacsecPortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[73] + return &file_dataplane_proto_sai_common_proto_enumTypes[87] } func (x MacsecPortStat) Number() protoreflect.EnumNumber { @@ -4864,7 +5679,7 @@ func (x MacsecPortStat) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecPortStat.Descriptor instead. func (MacsecPortStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} } type MacsecSaStat int32 @@ -4930,11 +5745,11 @@ func (x MacsecSaStat) String() string { } func (MacsecSaStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[74].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[88].Descriptor() } func (MacsecSaStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[74] + return &file_dataplane_proto_sai_common_proto_enumTypes[88] } func (x MacsecSaStat) Number() protoreflect.EnumNumber { @@ -4943,7 +5758,7 @@ func (x MacsecSaStat) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecSaStat.Descriptor instead. func (MacsecSaStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} } type MacsecScStat int32 @@ -4976,11 +5791,11 @@ func (x MacsecScStat) String() string { } func (MacsecScStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[75].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[89].Descriptor() } func (MacsecScStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[75] + return &file_dataplane_proto_sai_common_proto_enumTypes[89] } func (x MacsecScStat) Number() protoreflect.EnumNumber { @@ -4989,7 +5804,7 @@ func (x MacsecScStat) Number() protoreflect.EnumNumber { // Deprecated: Use MacsecScStat.Descriptor instead. func (MacsecScStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} } type MeterType int32 @@ -5028,11 +5843,11 @@ func (x MeterType) String() string { } func (MeterType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[76].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[90].Descriptor() } func (MeterType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[76] + return &file_dataplane_proto_sai_common_proto_enumTypes[90] } func (x MeterType) Number() protoreflect.EnumNumber { @@ -5041,7 +5856,7 @@ func (x MeterType) Number() protoreflect.EnumNumber { // Deprecated: Use MeterType.Descriptor instead. func (MeterType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} } type MirrorSessionCongestionMode int32 @@ -5077,11 +5892,11 @@ func (x MirrorSessionCongestionMode) String() string { } func (MirrorSessionCongestionMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[77].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[91].Descriptor() } func (MirrorSessionCongestionMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[77] + return &file_dataplane_proto_sai_common_proto_enumTypes[91] } func (x MirrorSessionCongestionMode) Number() protoreflect.EnumNumber { @@ -5090,7 +5905,7 @@ func (x MirrorSessionCongestionMode) Number() protoreflect.EnumNumber { // Deprecated: Use MirrorSessionCongestionMode.Descriptor instead. func (MirrorSessionCongestionMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} } type MirrorSessionType int32 @@ -5132,11 +5947,11 @@ func (x MirrorSessionType) String() string { } func (MirrorSessionType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[78].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[92].Descriptor() } func (MirrorSessionType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[78] + return &file_dataplane_proto_sai_common_proto_enumTypes[92] } func (x MirrorSessionType) Number() protoreflect.EnumNumber { @@ -5145,7 +5960,7 @@ func (x MirrorSessionType) Number() protoreflect.EnumNumber { // Deprecated: Use MirrorSessionType.Descriptor instead. func (MirrorSessionType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} } type MySidEntryEndpointBehaviorFlavor int32 @@ -5199,11 +6014,11 @@ func (x MySidEntryEndpointBehaviorFlavor) String() string { } func (MySidEntryEndpointBehaviorFlavor) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[79].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[93].Descriptor() } func (MySidEntryEndpointBehaviorFlavor) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[79] + return &file_dataplane_proto_sai_common_proto_enumTypes[93] } func (x MySidEntryEndpointBehaviorFlavor) Number() protoreflect.EnumNumber { @@ -5212,7 +6027,7 @@ func (x MySidEntryEndpointBehaviorFlavor) Number() protoreflect.EnumNumber { // Deprecated: Use MySidEntryEndpointBehaviorFlavor.Descriptor instead. func (MySidEntryEndpointBehaviorFlavor) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} } type MySidEntryEndpointBehavior int32 @@ -5290,11 +6105,11 @@ func (x MySidEntryEndpointBehavior) String() string { } func (MySidEntryEndpointBehavior) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[80].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[94].Descriptor() } func (MySidEntryEndpointBehavior) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[80] + return &file_dataplane_proto_sai_common_proto_enumTypes[94] } func (x MySidEntryEndpointBehavior) Number() protoreflect.EnumNumber { @@ -5303,7 +6118,7 @@ func (x MySidEntryEndpointBehavior) Number() protoreflect.EnumNumber { // Deprecated: Use MySidEntryEndpointBehavior.Descriptor instead. func (MySidEntryEndpointBehavior) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} } type NatEvent int32 @@ -5339,11 +6154,11 @@ func (x NatEvent) String() string { } func (NatEvent) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[81].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[95].Descriptor() } func (NatEvent) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[81] + return &file_dataplane_proto_sai_common_proto_enumTypes[95] } func (x NatEvent) Number() protoreflect.EnumNumber { @@ -5352,7 +6167,7 @@ func (x NatEvent) Number() protoreflect.EnumNumber { // Deprecated: Use NatEvent.Descriptor instead. func (NatEvent) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} } type NatType int32 @@ -5397,11 +6212,11 @@ func (x NatType) String() string { } func (NatType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[82].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[96].Descriptor() } func (NatType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[82] + return &file_dataplane_proto_sai_common_proto_enumTypes[96] } func (x NatType) Number() protoreflect.EnumNumber { @@ -5410,7 +6225,7 @@ func (x NatType) Number() protoreflect.EnumNumber { // Deprecated: Use NatType.Descriptor instead. func (NatType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} } type NativeHashField int32 @@ -5542,11 +6357,11 @@ func (x NativeHashField) String() string { } func (NativeHashField) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[83].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[97].Descriptor() } func (NativeHashField) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[83] + return &file_dataplane_proto_sai_common_proto_enumTypes[97] } func (x NativeHashField) Number() protoreflect.EnumNumber { @@ -5555,7 +6370,7 @@ func (x NativeHashField) Number() protoreflect.EnumNumber { // Deprecated: Use NativeHashField.Descriptor instead. func (NativeHashField) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} } type NextHopGroupMapType int32 @@ -5588,11 +6403,11 @@ func (x NextHopGroupMapType) String() string { } func (NextHopGroupMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[84].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[98].Descriptor() } func (NextHopGroupMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[84] + return &file_dataplane_proto_sai_common_proto_enumTypes[98] } func (x NextHopGroupMapType) Number() protoreflect.EnumNumber { @@ -5601,7 +6416,7 @@ func (x NextHopGroupMapType) Number() protoreflect.EnumNumber { // Deprecated: Use NextHopGroupMapType.Descriptor instead. func (NextHopGroupMapType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} } type NextHopGroupMemberConfiguredRole int32 @@ -5637,11 +6452,11 @@ func (x NextHopGroupMemberConfiguredRole) String() string { } func (NextHopGroupMemberConfiguredRole) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[85].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[99].Descriptor() } func (NextHopGroupMemberConfiguredRole) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[85] + return &file_dataplane_proto_sai_common_proto_enumTypes[99] } func (x NextHopGroupMemberConfiguredRole) Number() protoreflect.EnumNumber { @@ -5650,7 +6465,7 @@ func (x NextHopGroupMemberConfiguredRole) Number() protoreflect.EnumNumber { // Deprecated: Use NextHopGroupMemberConfiguredRole.Descriptor instead. func (NextHopGroupMemberConfiguredRole) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} } type NextHopGroupMemberObservedRole int32 @@ -5686,11 +6501,11 @@ func (x NextHopGroupMemberObservedRole) String() string { } func (NextHopGroupMemberObservedRole) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[86].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[100].Descriptor() } func (NextHopGroupMemberObservedRole) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[86] + return &file_dataplane_proto_sai_common_proto_enumTypes[100] } func (x NextHopGroupMemberObservedRole) Number() protoreflect.EnumNumber { @@ -5699,7 +6514,7 @@ func (x NextHopGroupMemberObservedRole) Number() protoreflect.EnumNumber { // Deprecated: Use NextHopGroupMemberObservedRole.Descriptor instead. func (NextHopGroupMemberObservedRole) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} } type NextHopGroupType int32 @@ -5712,7 +6527,8 @@ const ( NextHopGroupType_NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP NextHopGroupType = 3 NextHopGroupType_NEXT_HOP_GROUP_TYPE_PROTECTION NextHopGroupType = 4 NextHopGroupType_NEXT_HOP_GROUP_TYPE_CLASS_BASED NextHopGroupType = 5 - NextHopGroupType_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS NextHopGroupType = 6 + NextHopGroupType_NEXT_HOP_GROUP_TYPE_HW_PROTECTION NextHopGroupType = 6 + NextHopGroupType_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS NextHopGroupType = 7 ) // Enum value maps for NextHopGroupType. @@ -5725,7 +6541,8 @@ var ( 3: "NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP", 4: "NEXT_HOP_GROUP_TYPE_PROTECTION", 5: "NEXT_HOP_GROUP_TYPE_CLASS_BASED", - 6: "NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS", + 6: "NEXT_HOP_GROUP_TYPE_HW_PROTECTION", + 7: "NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS", } NextHopGroupType_value = map[string]int32{ "NEXT_HOP_GROUP_TYPE_UNSPECIFIED": 0, @@ -5735,7 +6552,8 @@ var ( "NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP": 3, "NEXT_HOP_GROUP_TYPE_PROTECTION": 4, "NEXT_HOP_GROUP_TYPE_CLASS_BASED": 5, - "NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS": 6, + "NEXT_HOP_GROUP_TYPE_HW_PROTECTION": 6, + "NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS": 7, } ) @@ -5750,11 +6568,11 @@ func (x NextHopGroupType) String() string { } func (NextHopGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[87].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[101].Descriptor() } func (NextHopGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[87] + return &file_dataplane_proto_sai_common_proto_enumTypes[101] } func (x NextHopGroupType) Number() protoreflect.EnumNumber { @@ -5763,7 +6581,7 @@ func (x NextHopGroupType) Number() protoreflect.EnumNumber { // Deprecated: Use NextHopGroupType.Descriptor instead. func (NextHopGroupType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} } type NextHopType int32 @@ -5808,11 +6626,11 @@ func (x NextHopType) String() string { } func (NextHopType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[88].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[102].Descriptor() } func (NextHopType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[88] + return &file_dataplane_proto_sai_common_proto_enumTypes[102] } func (x NextHopType) Number() protoreflect.EnumNumber { @@ -5821,7 +6639,7 @@ func (x NextHopType) Number() protoreflect.EnumNumber { // Deprecated: Use NextHopType.Descriptor instead. func (NextHopType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} } type ObjectStage int32 @@ -5860,11 +6678,11 @@ func (x ObjectStage) String() string { } func (ObjectStage) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[89].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[103].Descriptor() } func (ObjectStage) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[89] + return &file_dataplane_proto_sai_common_proto_enumTypes[103] } func (x ObjectStage) Number() protoreflect.EnumNumber { @@ -5873,79 +6691,106 @@ func (x ObjectStage) Number() protoreflect.EnumNumber { // Deprecated: Use ObjectStage.Descriptor instead. func (ObjectStage) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} } type ObjectTypeExtensions int32 const ( - ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_UNSPECIFIED ObjectTypeExtensions = 0 - ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_START ObjectTypeExtensions = 112 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY ObjectTypeExtensions = 112 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY ObjectTypeExtensions = 113 - ObjectTypeExtensions_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY ObjectTypeExtensions = 114 - ObjectTypeExtensions_OBJECT_TYPE_DASH_ACL_GROUP ObjectTypeExtensions = 115 - ObjectTypeExtensions_OBJECT_TYPE_DASH_ACL_RULE ObjectTypeExtensions = 116 - ObjectTypeExtensions_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY ObjectTypeExtensions = 117 - ObjectTypeExtensions_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY ObjectTypeExtensions = 118 - ObjectTypeExtensions_OBJECT_TYPE_ENI ObjectTypeExtensions = 119 - ObjectTypeExtensions_OBJECT_TYPE_INBOUND_ROUTING_ENTRY ObjectTypeExtensions = 120 - ObjectTypeExtensions_OBJECT_TYPE_METER_BUCKET ObjectTypeExtensions = 121 - ObjectTypeExtensions_OBJECT_TYPE_METER_POLICY ObjectTypeExtensions = 122 - ObjectTypeExtensions_OBJECT_TYPE_METER_RULE ObjectTypeExtensions = 123 - ObjectTypeExtensions_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY ObjectTypeExtensions = 124 - ObjectTypeExtensions_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY ObjectTypeExtensions = 125 - ObjectTypeExtensions_OBJECT_TYPE_VNET ObjectTypeExtensions = 126 - ObjectTypeExtensions_OBJECT_TYPE_PA_VALIDATION_ENTRY ObjectTypeExtensions = 127 - ObjectTypeExtensions_OBJECT_TYPE_VIP_ENTRY ObjectTypeExtensions = 128 - ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_END ObjectTypeExtensions = 129 + ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_UNSPECIFIED ObjectTypeExtensions = 0 + ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_START ObjectTypeExtensions = 536870913 + ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY ObjectTypeExtensions = 536870913 + ObjectTypeExtensions_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY ObjectTypeExtensions = 536870914 + ObjectTypeExtensions_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY ObjectTypeExtensions = 536870915 + ObjectTypeExtensions_OBJECT_TYPE_DASH_ACL_GROUP ObjectTypeExtensions = 536870916 + ObjectTypeExtensions_OBJECT_TYPE_DASH_ACL_RULE ObjectTypeExtensions = 536870917 + ObjectTypeExtensions_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY ObjectTypeExtensions = 536870918 + ObjectTypeExtensions_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY ObjectTypeExtensions = 536870919 + ObjectTypeExtensions_OBJECT_TYPE_ENI ObjectTypeExtensions = 536870920 + ObjectTypeExtensions_OBJECT_TYPE_INBOUND_ROUTING_ENTRY ObjectTypeExtensions = 536870921 + ObjectTypeExtensions_OBJECT_TYPE_METER_BUCKET_ENTRY ObjectTypeExtensions = 536870922 + ObjectTypeExtensions_OBJECT_TYPE_METER_POLICY ObjectTypeExtensions = 536870923 + ObjectTypeExtensions_OBJECT_TYPE_METER_RULE ObjectTypeExtensions = 536870924 + ObjectTypeExtensions_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY ObjectTypeExtensions = 536870925 + ObjectTypeExtensions_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY ObjectTypeExtensions = 536870926 + ObjectTypeExtensions_OBJECT_TYPE_VNET ObjectTypeExtensions = 536870927 + ObjectTypeExtensions_OBJECT_TYPE_PA_VALIDATION_ENTRY ObjectTypeExtensions = 536870928 + ObjectTypeExtensions_OBJECT_TYPE_VIP_ENTRY ObjectTypeExtensions = 536870929 + ObjectTypeExtensions_OBJECT_TYPE_HA_SET ObjectTypeExtensions = 536870930 + ObjectTypeExtensions_OBJECT_TYPE_HA_SCOPE ObjectTypeExtensions = 536870931 + ObjectTypeExtensions_OBJECT_TYPE_DASH_TUNNEL ObjectTypeExtensions = 536870932 + ObjectTypeExtensions_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP ObjectTypeExtensions = 536870933 + ObjectTypeExtensions_OBJECT_TYPE_FLOW_TABLE ObjectTypeExtensions = 536870934 + ObjectTypeExtensions_OBJECT_TYPE_FLOW_ENTRY ObjectTypeExtensions = 536870935 + ObjectTypeExtensions_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER ObjectTypeExtensions = 536870936 + ObjectTypeExtensions_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION ObjectTypeExtensions = 536870937 + ObjectTypeExtensions_OBJECT_TYPE_DASH_APPLIANCE ObjectTypeExtensions = 536870938 + ObjectTypeExtensions_OBJECT_TYPE_EXTENSIONS_RANGE_END ObjectTypeExtensions = 536870939 ) // Enum value maps for ObjectTypeExtensions. var ( ObjectTypeExtensions_name = map[int32]string{ - 0: "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED", - 112: "OBJECT_TYPE_EXTENSIONS_RANGE_START", - // Duplicate value: 112: "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY", - 113: "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY", - 114: "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY", - 115: "OBJECT_TYPE_DASH_ACL_GROUP", - 116: "OBJECT_TYPE_DASH_ACL_RULE", - 117: "OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY", - 118: "OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY", - 119: "OBJECT_TYPE_ENI", - 120: "OBJECT_TYPE_INBOUND_ROUTING_ENTRY", - 121: "OBJECT_TYPE_METER_BUCKET", - 122: "OBJECT_TYPE_METER_POLICY", - 123: "OBJECT_TYPE_METER_RULE", - 124: "OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY", - 125: "OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", - 126: "OBJECT_TYPE_VNET", - 127: "OBJECT_TYPE_PA_VALIDATION_ENTRY", - 128: "OBJECT_TYPE_VIP_ENTRY", - 129: "OBJECT_TYPE_EXTENSIONS_RANGE_END", + 0: "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED", + 536870913: "OBJECT_TYPE_EXTENSIONS_RANGE_START", + // Duplicate value: 536870913: "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY", + 536870914: "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY", + 536870915: "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY", + 536870916: "OBJECT_TYPE_DASH_ACL_GROUP", + 536870917: "OBJECT_TYPE_DASH_ACL_RULE", + 536870918: "OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY", + 536870919: "OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY", + 536870920: "OBJECT_TYPE_ENI", + 536870921: "OBJECT_TYPE_INBOUND_ROUTING_ENTRY", + 536870922: "OBJECT_TYPE_METER_BUCKET_ENTRY", + 536870923: "OBJECT_TYPE_METER_POLICY", + 536870924: "OBJECT_TYPE_METER_RULE", + 536870925: "OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY", + 536870926: "OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY", + 536870927: "OBJECT_TYPE_VNET", + 536870928: "OBJECT_TYPE_PA_VALIDATION_ENTRY", + 536870929: "OBJECT_TYPE_VIP_ENTRY", + 536870930: "OBJECT_TYPE_HA_SET", + 536870931: "OBJECT_TYPE_HA_SCOPE", + 536870932: "OBJECT_TYPE_DASH_TUNNEL", + 536870933: "OBJECT_TYPE_OUTBOUND_ROUTING_GROUP", + 536870934: "OBJECT_TYPE_FLOW_TABLE", + 536870935: "OBJECT_TYPE_FLOW_ENTRY", + 536870936: "OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER", + 536870937: "OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION", + 536870938: "OBJECT_TYPE_DASH_APPLIANCE", + 536870939: "OBJECT_TYPE_EXTENSIONS_RANGE_END", } ObjectTypeExtensions_value = map[string]int32{ - "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED": 0, - "OBJECT_TYPE_EXTENSIONS_RANGE_START": 112, - "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY": 112, - "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY": 113, - "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY": 114, - "OBJECT_TYPE_DASH_ACL_GROUP": 115, - "OBJECT_TYPE_DASH_ACL_RULE": 116, - "OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY": 117, - "OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY": 118, - "OBJECT_TYPE_ENI": 119, - "OBJECT_TYPE_INBOUND_ROUTING_ENTRY": 120, - "OBJECT_TYPE_METER_BUCKET": 121, - "OBJECT_TYPE_METER_POLICY": 122, - "OBJECT_TYPE_METER_RULE": 123, - "OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY": 124, - "OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY": 125, - "OBJECT_TYPE_VNET": 126, - "OBJECT_TYPE_PA_VALIDATION_ENTRY": 127, - "OBJECT_TYPE_VIP_ENTRY": 128, - "OBJECT_TYPE_EXTENSIONS_RANGE_END": 129, + "OBJECT_TYPE_EXTENSIONS_UNSPECIFIED": 0, + "OBJECT_TYPE_EXTENSIONS_RANGE_START": 536870913, + "OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY": 536870913, + "OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY": 536870914, + "OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY": 536870915, + "OBJECT_TYPE_DASH_ACL_GROUP": 536870916, + "OBJECT_TYPE_DASH_ACL_RULE": 536870917, + "OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY": 536870918, + "OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY": 536870919, + "OBJECT_TYPE_ENI": 536870920, + "OBJECT_TYPE_INBOUND_ROUTING_ENTRY": 536870921, + "OBJECT_TYPE_METER_BUCKET_ENTRY": 536870922, + "OBJECT_TYPE_METER_POLICY": 536870923, + "OBJECT_TYPE_METER_RULE": 536870924, + "OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY": 536870925, + "OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY": 536870926, + "OBJECT_TYPE_VNET": 536870927, + "OBJECT_TYPE_PA_VALIDATION_ENTRY": 536870928, + "OBJECT_TYPE_VIP_ENTRY": 536870929, + "OBJECT_TYPE_HA_SET": 536870930, + "OBJECT_TYPE_HA_SCOPE": 536870931, + "OBJECT_TYPE_DASH_TUNNEL": 536870932, + "OBJECT_TYPE_OUTBOUND_ROUTING_GROUP": 536870933, + "OBJECT_TYPE_FLOW_TABLE": 536870934, + "OBJECT_TYPE_FLOW_ENTRY": 536870935, + "OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER": 536870936, + "OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION": 536870937, + "OBJECT_TYPE_DASH_APPLIANCE": 536870938, + "OBJECT_TYPE_EXTENSIONS_RANGE_END": 536870939, } ) @@ -5960,11 +6805,11 @@ func (x ObjectTypeExtensions) String() string { } func (ObjectTypeExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[90].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[104].Descriptor() } func (ObjectTypeExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[90] + return &file_dataplane_proto_sai_common_proto_enumTypes[104] } func (x ObjectTypeExtensions) Number() protoreflect.EnumNumber { @@ -5973,7 +6818,7 @@ func (x ObjectTypeExtensions) Number() protoreflect.EnumNumber { // Deprecated: Use ObjectTypeExtensions.Descriptor instead. func (ObjectTypeExtensions) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} } type ObjectType int32 @@ -6091,129 +6936,129 @@ const ( ObjectType_OBJECT_TYPE_POE_DEVICE ObjectType = 109 ObjectType_OBJECT_TYPE_POE_PSE ObjectType = 110 ObjectType_OBJECT_TYPE_POE_PORT ObjectType = 111 - ObjectType_OBJECT_TYPE_MAX ObjectType = 112 - ObjectType_OBJECT_TYPE_CUSTOM_RANGE_START ObjectType = 257 - ObjectType_OBJECT_TYPE_CUSTOM_RANGE_END ObjectType = 258 + ObjectType_OBJECT_TYPE_ICMP_ECHO_SESSION ObjectType = 112 + ObjectType_OBJECT_TYPE_MAX ObjectType = 113 + ObjectType_OBJECT_TYPE_EXTENSIONS_RANGE_BASE ObjectType = 536870913 ) // Enum value maps for ObjectType. var ( ObjectType_name = map[int32]string{ - 0: "OBJECT_TYPE_UNSPECIFIED", - 1: "OBJECT_TYPE_NULL", - 2: "OBJECT_TYPE_PORT", - 3: "OBJECT_TYPE_LAG", - 4: "OBJECT_TYPE_VIRTUAL_ROUTER", - 5: "OBJECT_TYPE_NEXT_HOP", - 6: "OBJECT_TYPE_NEXT_HOP_GROUP", - 7: "OBJECT_TYPE_ROUTER_INTERFACE", - 8: "OBJECT_TYPE_ACL_TABLE", - 9: "OBJECT_TYPE_ACL_ENTRY", - 10: "OBJECT_TYPE_ACL_COUNTER", - 11: "OBJECT_TYPE_ACL_RANGE", - 12: "OBJECT_TYPE_ACL_TABLE_GROUP", - 13: "OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER", - 14: "OBJECT_TYPE_HOSTIF", - 15: "OBJECT_TYPE_MIRROR_SESSION", - 16: "OBJECT_TYPE_SAMPLEPACKET", - 17: "OBJECT_TYPE_STP", - 18: "OBJECT_TYPE_HOSTIF_TRAP_GROUP", - 19: "OBJECT_TYPE_POLICER", - 20: "OBJECT_TYPE_WRED", - 21: "OBJECT_TYPE_QOS_MAP", - 22: "OBJECT_TYPE_QUEUE", - 23: "OBJECT_TYPE_SCHEDULER", - 24: "OBJECT_TYPE_SCHEDULER_GROUP", - 25: "OBJECT_TYPE_BUFFER_POOL", - 26: "OBJECT_TYPE_BUFFER_PROFILE", - 27: "OBJECT_TYPE_INGRESS_PRIORITY_GROUP", - 28: "OBJECT_TYPE_LAG_MEMBER", - 29: "OBJECT_TYPE_HASH", - 30: "OBJECT_TYPE_UDF", - 31: "OBJECT_TYPE_UDF_MATCH", - 32: "OBJECT_TYPE_UDF_GROUP", - 33: "OBJECT_TYPE_FDB_ENTRY", - 34: "OBJECT_TYPE_SWITCH", - 35: "OBJECT_TYPE_HOSTIF_TRAP", - 36: "OBJECT_TYPE_HOSTIF_TABLE_ENTRY", - 37: "OBJECT_TYPE_NEIGHBOR_ENTRY", - 38: "OBJECT_TYPE_ROUTE_ENTRY", - 39: "OBJECT_TYPE_VLAN", - 40: "OBJECT_TYPE_VLAN_MEMBER", - 41: "OBJECT_TYPE_HOSTIF_PACKET", - 42: "OBJECT_TYPE_TUNNEL_MAP", - 43: "OBJECT_TYPE_TUNNEL", - 44: "OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY", - 45: "OBJECT_TYPE_FDB_FLUSH", - 46: "OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER", - 47: "OBJECT_TYPE_STP_PORT", - 48: "OBJECT_TYPE_RPF_GROUP", - 49: "OBJECT_TYPE_RPF_GROUP_MEMBER", - 50: "OBJECT_TYPE_L2MC_GROUP", - 51: "OBJECT_TYPE_L2MC_GROUP_MEMBER", - 52: "OBJECT_TYPE_IPMC_GROUP", - 53: "OBJECT_TYPE_IPMC_GROUP_MEMBER", - 54: "OBJECT_TYPE_L2MC_ENTRY", - 55: "OBJECT_TYPE_IPMC_ENTRY", - 56: "OBJECT_TYPE_MCAST_FDB_ENTRY", - 57: "OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP", - 58: "OBJECT_TYPE_BRIDGE", - 59: "OBJECT_TYPE_BRIDGE_PORT", - 60: "OBJECT_TYPE_TUNNEL_MAP_ENTRY", - 61: "OBJECT_TYPE_TAM", - 62: "OBJECT_TYPE_SRV6_SIDLIST", - 63: "OBJECT_TYPE_PORT_POOL", - 64: "OBJECT_TYPE_INSEG_ENTRY", - 65: "OBJECT_TYPE_DTEL", - 66: "OBJECT_TYPE_DTEL_QUEUE_REPORT", - 67: "OBJECT_TYPE_DTEL_INT_SESSION", - 68: "OBJECT_TYPE_DTEL_REPORT_SESSION", - 69: "OBJECT_TYPE_DTEL_EVENT", - 70: "OBJECT_TYPE_BFD_SESSION", - 71: "OBJECT_TYPE_ISOLATION_GROUP", - 72: "OBJECT_TYPE_ISOLATION_GROUP_MEMBER", - 73: "OBJECT_TYPE_TAM_MATH_FUNC", - 74: "OBJECT_TYPE_TAM_REPORT", - 75: "OBJECT_TYPE_TAM_EVENT_THRESHOLD", - 76: "OBJECT_TYPE_TAM_TEL_TYPE", - 77: "OBJECT_TYPE_TAM_TRANSPORT", - 78: "OBJECT_TYPE_TAM_TELEMETRY", - 79: "OBJECT_TYPE_TAM_COLLECTOR", - 80: "OBJECT_TYPE_TAM_EVENT_ACTION", - 81: "OBJECT_TYPE_TAM_EVENT", - 82: "OBJECT_TYPE_NAT_ZONE_COUNTER", - 83: "OBJECT_TYPE_NAT_ENTRY", - 84: "OBJECT_TYPE_TAM_INT", - 85: "OBJECT_TYPE_COUNTER", - 86: "OBJECT_TYPE_DEBUG_COUNTER", - 87: "OBJECT_TYPE_PORT_CONNECTOR", - 88: "OBJECT_TYPE_PORT_SERDES", - 89: "OBJECT_TYPE_MACSEC", - 90: "OBJECT_TYPE_MACSEC_PORT", - 91: "OBJECT_TYPE_MACSEC_FLOW", - 92: "OBJECT_TYPE_MACSEC_SC", - 93: "OBJECT_TYPE_MACSEC_SA", - 94: "OBJECT_TYPE_SYSTEM_PORT", - 95: "OBJECT_TYPE_FINE_GRAINED_HASH_FIELD", - 96: "OBJECT_TYPE_SWITCH_TUNNEL", - 97: "OBJECT_TYPE_MY_SID_ENTRY", - 98: "OBJECT_TYPE_MY_MAC", - 99: "OBJECT_TYPE_NEXT_HOP_GROUP_MAP", - 100: "OBJECT_TYPE_IPSEC", - 101: "OBJECT_TYPE_IPSEC_PORT", - 102: "OBJECT_TYPE_IPSEC_SA", - 103: "OBJECT_TYPE_GENERIC_PROGRAMMABLE", - 104: "OBJECT_TYPE_ARS_PROFILE", - 105: "OBJECT_TYPE_ARS", - 106: "OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP", - 107: "OBJECT_TYPE_TWAMP_SESSION", - 108: "OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION", - 109: "OBJECT_TYPE_POE_DEVICE", - 110: "OBJECT_TYPE_POE_PSE", - 111: "OBJECT_TYPE_POE_PORT", - 112: "OBJECT_TYPE_MAX", - 257: "OBJECT_TYPE_CUSTOM_RANGE_START", - 258: "OBJECT_TYPE_CUSTOM_RANGE_END", + 0: "OBJECT_TYPE_UNSPECIFIED", + 1: "OBJECT_TYPE_NULL", + 2: "OBJECT_TYPE_PORT", + 3: "OBJECT_TYPE_LAG", + 4: "OBJECT_TYPE_VIRTUAL_ROUTER", + 5: "OBJECT_TYPE_NEXT_HOP", + 6: "OBJECT_TYPE_NEXT_HOP_GROUP", + 7: "OBJECT_TYPE_ROUTER_INTERFACE", + 8: "OBJECT_TYPE_ACL_TABLE", + 9: "OBJECT_TYPE_ACL_ENTRY", + 10: "OBJECT_TYPE_ACL_COUNTER", + 11: "OBJECT_TYPE_ACL_RANGE", + 12: "OBJECT_TYPE_ACL_TABLE_GROUP", + 13: "OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER", + 14: "OBJECT_TYPE_HOSTIF", + 15: "OBJECT_TYPE_MIRROR_SESSION", + 16: "OBJECT_TYPE_SAMPLEPACKET", + 17: "OBJECT_TYPE_STP", + 18: "OBJECT_TYPE_HOSTIF_TRAP_GROUP", + 19: "OBJECT_TYPE_POLICER", + 20: "OBJECT_TYPE_WRED", + 21: "OBJECT_TYPE_QOS_MAP", + 22: "OBJECT_TYPE_QUEUE", + 23: "OBJECT_TYPE_SCHEDULER", + 24: "OBJECT_TYPE_SCHEDULER_GROUP", + 25: "OBJECT_TYPE_BUFFER_POOL", + 26: "OBJECT_TYPE_BUFFER_PROFILE", + 27: "OBJECT_TYPE_INGRESS_PRIORITY_GROUP", + 28: "OBJECT_TYPE_LAG_MEMBER", + 29: "OBJECT_TYPE_HASH", + 30: "OBJECT_TYPE_UDF", + 31: "OBJECT_TYPE_UDF_MATCH", + 32: "OBJECT_TYPE_UDF_GROUP", + 33: "OBJECT_TYPE_FDB_ENTRY", + 34: "OBJECT_TYPE_SWITCH", + 35: "OBJECT_TYPE_HOSTIF_TRAP", + 36: "OBJECT_TYPE_HOSTIF_TABLE_ENTRY", + 37: "OBJECT_TYPE_NEIGHBOR_ENTRY", + 38: "OBJECT_TYPE_ROUTE_ENTRY", + 39: "OBJECT_TYPE_VLAN", + 40: "OBJECT_TYPE_VLAN_MEMBER", + 41: "OBJECT_TYPE_HOSTIF_PACKET", + 42: "OBJECT_TYPE_TUNNEL_MAP", + 43: "OBJECT_TYPE_TUNNEL", + 44: "OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY", + 45: "OBJECT_TYPE_FDB_FLUSH", + 46: "OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER", + 47: "OBJECT_TYPE_STP_PORT", + 48: "OBJECT_TYPE_RPF_GROUP", + 49: "OBJECT_TYPE_RPF_GROUP_MEMBER", + 50: "OBJECT_TYPE_L2MC_GROUP", + 51: "OBJECT_TYPE_L2MC_GROUP_MEMBER", + 52: "OBJECT_TYPE_IPMC_GROUP", + 53: "OBJECT_TYPE_IPMC_GROUP_MEMBER", + 54: "OBJECT_TYPE_L2MC_ENTRY", + 55: "OBJECT_TYPE_IPMC_ENTRY", + 56: "OBJECT_TYPE_MCAST_FDB_ENTRY", + 57: "OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP", + 58: "OBJECT_TYPE_BRIDGE", + 59: "OBJECT_TYPE_BRIDGE_PORT", + 60: "OBJECT_TYPE_TUNNEL_MAP_ENTRY", + 61: "OBJECT_TYPE_TAM", + 62: "OBJECT_TYPE_SRV6_SIDLIST", + 63: "OBJECT_TYPE_PORT_POOL", + 64: "OBJECT_TYPE_INSEG_ENTRY", + 65: "OBJECT_TYPE_DTEL", + 66: "OBJECT_TYPE_DTEL_QUEUE_REPORT", + 67: "OBJECT_TYPE_DTEL_INT_SESSION", + 68: "OBJECT_TYPE_DTEL_REPORT_SESSION", + 69: "OBJECT_TYPE_DTEL_EVENT", + 70: "OBJECT_TYPE_BFD_SESSION", + 71: "OBJECT_TYPE_ISOLATION_GROUP", + 72: "OBJECT_TYPE_ISOLATION_GROUP_MEMBER", + 73: "OBJECT_TYPE_TAM_MATH_FUNC", + 74: "OBJECT_TYPE_TAM_REPORT", + 75: "OBJECT_TYPE_TAM_EVENT_THRESHOLD", + 76: "OBJECT_TYPE_TAM_TEL_TYPE", + 77: "OBJECT_TYPE_TAM_TRANSPORT", + 78: "OBJECT_TYPE_TAM_TELEMETRY", + 79: "OBJECT_TYPE_TAM_COLLECTOR", + 80: "OBJECT_TYPE_TAM_EVENT_ACTION", + 81: "OBJECT_TYPE_TAM_EVENT", + 82: "OBJECT_TYPE_NAT_ZONE_COUNTER", + 83: "OBJECT_TYPE_NAT_ENTRY", + 84: "OBJECT_TYPE_TAM_INT", + 85: "OBJECT_TYPE_COUNTER", + 86: "OBJECT_TYPE_DEBUG_COUNTER", + 87: "OBJECT_TYPE_PORT_CONNECTOR", + 88: "OBJECT_TYPE_PORT_SERDES", + 89: "OBJECT_TYPE_MACSEC", + 90: "OBJECT_TYPE_MACSEC_PORT", + 91: "OBJECT_TYPE_MACSEC_FLOW", + 92: "OBJECT_TYPE_MACSEC_SC", + 93: "OBJECT_TYPE_MACSEC_SA", + 94: "OBJECT_TYPE_SYSTEM_PORT", + 95: "OBJECT_TYPE_FINE_GRAINED_HASH_FIELD", + 96: "OBJECT_TYPE_SWITCH_TUNNEL", + 97: "OBJECT_TYPE_MY_SID_ENTRY", + 98: "OBJECT_TYPE_MY_MAC", + 99: "OBJECT_TYPE_NEXT_HOP_GROUP_MAP", + 100: "OBJECT_TYPE_IPSEC", + 101: "OBJECT_TYPE_IPSEC_PORT", + 102: "OBJECT_TYPE_IPSEC_SA", + 103: "OBJECT_TYPE_GENERIC_PROGRAMMABLE", + 104: "OBJECT_TYPE_ARS_PROFILE", + 105: "OBJECT_TYPE_ARS", + 106: "OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP", + 107: "OBJECT_TYPE_TWAMP_SESSION", + 108: "OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION", + 109: "OBJECT_TYPE_POE_DEVICE", + 110: "OBJECT_TYPE_POE_PSE", + 111: "OBJECT_TYPE_POE_PORT", + 112: "OBJECT_TYPE_ICMP_ECHO_SESSION", + 113: "OBJECT_TYPE_MAX", + 536870913: "OBJECT_TYPE_EXTENSIONS_RANGE_BASE", } ObjectType_value = map[string]int32{ "OBJECT_TYPE_UNSPECIFIED": 0, @@ -6328,9 +7173,9 @@ var ( "OBJECT_TYPE_POE_DEVICE": 109, "OBJECT_TYPE_POE_PSE": 110, "OBJECT_TYPE_POE_PORT": 111, - "OBJECT_TYPE_MAX": 112, - "OBJECT_TYPE_CUSTOM_RANGE_START": 257, - "OBJECT_TYPE_CUSTOM_RANGE_END": 258, + "OBJECT_TYPE_ICMP_ECHO_SESSION": 112, + "OBJECT_TYPE_MAX": 113, + "OBJECT_TYPE_EXTENSIONS_RANGE_BASE": 536870913, } ) @@ -6345,11 +7190,11 @@ func (x ObjectType) String() string { } func (ObjectType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[91].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[105].Descriptor() } func (ObjectType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[91] + return &file_dataplane_proto_sai_common_proto_enumTypes[105] } func (x ObjectType) Number() protoreflect.EnumNumber { @@ -6358,7 +7203,7 @@ func (x ObjectType) Number() protoreflect.EnumNumber { // Deprecated: Use ObjectType.Descriptor instead. func (ObjectType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} } type OutDropReason int32 @@ -6415,11 +7260,11 @@ func (x OutDropReason) String() string { } func (OutDropReason) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[92].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[106].Descriptor() } func (OutDropReason) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[92] + return &file_dataplane_proto_sai_common_proto_enumTypes[106] } func (x OutDropReason) Number() protoreflect.EnumNumber { @@ -6428,7 +7273,7 @@ func (x OutDropReason) Number() protoreflect.EnumNumber { // Deprecated: Use OutDropReason.Descriptor instead. func (OutDropReason) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} } type OutsegExpMode int32 @@ -6464,11 +7309,11 @@ func (x OutsegExpMode) String() string { } func (OutsegExpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[93].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[107].Descriptor() } func (OutsegExpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[93] + return &file_dataplane_proto_sai_common_proto_enumTypes[107] } func (x OutsegExpMode) Number() protoreflect.EnumNumber { @@ -6477,7 +7322,7 @@ func (x OutsegExpMode) Number() protoreflect.EnumNumber { // Deprecated: Use OutsegExpMode.Descriptor instead. func (OutsegExpMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} } type OutsegTtlMode int32 @@ -6513,11 +7358,11 @@ func (x OutsegTtlMode) String() string { } func (OutsegTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[94].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[108].Descriptor() } func (OutsegTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[94] + return &file_dataplane_proto_sai_common_proto_enumTypes[108] } func (x OutsegTtlMode) Number() protoreflect.EnumNumber { @@ -6526,7 +7371,7 @@ func (x OutsegTtlMode) Number() protoreflect.EnumNumber { // Deprecated: Use OutsegTtlMode.Descriptor instead. func (OutsegTtlMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} } type OutsegType int32 @@ -6562,11 +7407,11 @@ func (x OutsegType) String() string { } func (OutsegType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[95].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[109].Descriptor() } func (OutsegType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[95] + return &file_dataplane_proto_sai_common_proto_enumTypes[109] } func (x OutsegType) Number() protoreflect.EnumNumber { @@ -6575,7 +7420,7 @@ func (x OutsegType) Number() protoreflect.EnumNumber { // Deprecated: Use OutsegType.Descriptor instead. func (OutsegType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} } type PacketAction int32 @@ -6632,11 +7477,11 @@ func (x PacketAction) String() string { } func (PacketAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[96].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[110].Descriptor() } func (PacketAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[96] + return &file_dataplane_proto_sai_common_proto_enumTypes[110] } func (x PacketAction) Number() protoreflect.EnumNumber { @@ -6645,7 +7490,7 @@ func (x PacketAction) Number() protoreflect.EnumNumber { // Deprecated: Use PacketAction.Descriptor instead. func (PacketAction) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} } type PacketColor int32 @@ -6684,11 +7529,11 @@ func (x PacketColor) String() string { } func (PacketColor) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[97].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[111].Descriptor() } func (PacketColor) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[97] + return &file_dataplane_proto_sai_common_proto_enumTypes[111] } func (x PacketColor) Number() protoreflect.EnumNumber { @@ -6697,7 +7542,7 @@ func (x PacketColor) Number() protoreflect.EnumNumber { // Deprecated: Use PacketColor.Descriptor instead. func (PacketColor) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} } type PacketVlan int32 @@ -6736,11 +7581,11 @@ func (x PacketVlan) String() string { } func (PacketVlan) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[98].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[112].Descriptor() } func (PacketVlan) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[98] + return &file_dataplane_proto_sai_common_proto_enumTypes[112] } func (x PacketVlan) Number() protoreflect.EnumNumber { @@ -6749,7 +7594,7 @@ func (x PacketVlan) Number() protoreflect.EnumNumber { // Deprecated: Use PacketVlan.Descriptor instead. func (PacketVlan) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} } type PoePortActiveChannelType int32 @@ -6788,11 +7633,11 @@ func (x PoePortActiveChannelType) String() string { } func (PoePortActiveChannelType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[99].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[113].Descriptor() } func (PoePortActiveChannelType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[99] + return &file_dataplane_proto_sai_common_proto_enumTypes[113] } func (x PoePortActiveChannelType) Number() protoreflect.EnumNumber { @@ -6801,7 +7646,7 @@ func (x PoePortActiveChannelType) Number() protoreflect.EnumNumber { // Deprecated: Use PoePortActiveChannelType.Descriptor instead. func (PoePortActiveChannelType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} } type PoePortClassMethodType int32 @@ -6837,11 +7682,11 @@ func (x PoePortClassMethodType) String() string { } func (PoePortClassMethodType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[100].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[114].Descriptor() } func (PoePortClassMethodType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[100] + return &file_dataplane_proto_sai_common_proto_enumTypes[114] } func (x PoePortClassMethodType) Number() protoreflect.EnumNumber { @@ -6850,7 +7695,7 @@ func (x PoePortClassMethodType) Number() protoreflect.EnumNumber { // Deprecated: Use PoePortClassMethodType.Descriptor instead. func (PoePortClassMethodType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} } type PoePortSignatureType int32 @@ -6886,11 +7731,11 @@ func (x PoePortSignatureType) String() string { } func (PoePortSignatureType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[101].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[115].Descriptor() } func (PoePortSignatureType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[101] + return &file_dataplane_proto_sai_common_proto_enumTypes[115] } func (x PoePortSignatureType) Number() protoreflect.EnumNumber { @@ -6899,7 +7744,7 @@ func (x PoePortSignatureType) Number() protoreflect.EnumNumber { // Deprecated: Use PoePortSignatureType.Descriptor instead. func (PoePortSignatureType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} } type PolicerColorSource int32 @@ -6938,11 +7783,11 @@ func (x PolicerColorSource) String() string { } func (PolicerColorSource) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[102].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[116].Descriptor() } func (PolicerColorSource) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[102] + return &file_dataplane_proto_sai_common_proto_enumTypes[116] } func (x PolicerColorSource) Number() protoreflect.EnumNumber { @@ -6951,7 +7796,7 @@ func (x PolicerColorSource) Number() protoreflect.EnumNumber { // Deprecated: Use PolicerColorSource.Descriptor instead. func (PolicerColorSource) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} } type PolicerMode int32 @@ -6993,11 +7838,11 @@ func (x PolicerMode) String() string { } func (PolicerMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[103].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[117].Descriptor() } func (PolicerMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[103] + return &file_dataplane_proto_sai_common_proto_enumTypes[117] } func (x PolicerMode) Number() protoreflect.EnumNumber { @@ -7006,7 +7851,7 @@ func (x PolicerMode) Number() protoreflect.EnumNumber { // Deprecated: Use PolicerMode.Descriptor instead. func (PolicerMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} } type PolicerStat int32 @@ -7063,11 +7908,11 @@ func (x PolicerStat) String() string { } func (PolicerStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[104].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[118].Descriptor() } func (PolicerStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[104] + return &file_dataplane_proto_sai_common_proto_enumTypes[118] } func (x PolicerStat) Number() protoreflect.EnumNumber { @@ -7076,28 +7921,28 @@ func (x PolicerStat) Number() protoreflect.EnumNumber { // Deprecated: Use PolicerStat.Descriptor instead. func (PolicerStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} } type PortAttrExtensions int32 const ( PortAttrExtensions_PORT_ATTR_EXTENSIONS_UNSPECIFIED PortAttrExtensions = 0 - PortAttrExtensions_PORT_ATTR_EXTENSIONS_RANGE_START PortAttrExtensions = 179 - PortAttrExtensions_PORT_ATTR_EXTENSIONS_RANGE_END PortAttrExtensions = 180 + PortAttrExtensions_PORT_ATTR_EXTENSIONS_RANGE_START PortAttrExtensions = 536870913 + PortAttrExtensions_PORT_ATTR_EXTENSIONS_RANGE_END PortAttrExtensions = 536870914 ) // Enum value maps for PortAttrExtensions. var ( PortAttrExtensions_name = map[int32]string{ - 0: "PORT_ATTR_EXTENSIONS_UNSPECIFIED", - 179: "PORT_ATTR_EXTENSIONS_RANGE_START", - 180: "PORT_ATTR_EXTENSIONS_RANGE_END", + 0: "PORT_ATTR_EXTENSIONS_UNSPECIFIED", + 536870913: "PORT_ATTR_EXTENSIONS_RANGE_START", + 536870914: "PORT_ATTR_EXTENSIONS_RANGE_END", } PortAttrExtensions_value = map[string]int32{ "PORT_ATTR_EXTENSIONS_UNSPECIFIED": 0, - "PORT_ATTR_EXTENSIONS_RANGE_START": 179, - "PORT_ATTR_EXTENSIONS_RANGE_END": 180, + "PORT_ATTR_EXTENSIONS_RANGE_START": 536870913, + "PORT_ATTR_EXTENSIONS_RANGE_END": 536870914, } ) @@ -7112,11 +7957,11 @@ func (x PortAttrExtensions) String() string { } func (PortAttrExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[105].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[119].Descriptor() } func (PortAttrExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[105] + return &file_dataplane_proto_sai_common_proto_enumTypes[119] } func (x PortAttrExtensions) Number() protoreflect.EnumNumber { @@ -7125,7 +7970,7 @@ func (x PortAttrExtensions) Number() protoreflect.EnumNumber { // Deprecated: Use PortAttrExtensions.Descriptor instead. func (PortAttrExtensions) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} } type PortAutoNegConfigMode int32 @@ -7167,11 +8012,11 @@ func (x PortAutoNegConfigMode) String() string { } func (PortAutoNegConfigMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[106].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[120].Descriptor() } func (PortAutoNegConfigMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[106] + return &file_dataplane_proto_sai_common_proto_enumTypes[120] } func (x PortAutoNegConfigMode) Number() protoreflect.EnumNumber { @@ -7180,7 +8025,7 @@ func (x PortAutoNegConfigMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortAutoNegConfigMode.Descriptor instead. func (PortAutoNegConfigMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} } type PortBreakoutModeType int32 @@ -7190,7 +8035,8 @@ const ( PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_1_LANE PortBreakoutModeType = 1 PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_2_LANE PortBreakoutModeType = 2 PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_4_LANE PortBreakoutModeType = 3 - PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_MAX PortBreakoutModeType = 4 + PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_8_LANE PortBreakoutModeType = 4 + PortBreakoutModeType_PORT_BREAKOUT_MODE_TYPE_MAX PortBreakoutModeType = 5 ) // Enum value maps for PortBreakoutModeType. @@ -7200,14 +8046,16 @@ var ( 1: "PORT_BREAKOUT_MODE_TYPE_1_LANE", 2: "PORT_BREAKOUT_MODE_TYPE_2_LANE", 3: "PORT_BREAKOUT_MODE_TYPE_4_LANE", - 4: "PORT_BREAKOUT_MODE_TYPE_MAX", + 4: "PORT_BREAKOUT_MODE_TYPE_8_LANE", + 5: "PORT_BREAKOUT_MODE_TYPE_MAX", } PortBreakoutModeType_value = map[string]int32{ "PORT_BREAKOUT_MODE_TYPE_UNSPECIFIED": 0, "PORT_BREAKOUT_MODE_TYPE_1_LANE": 1, "PORT_BREAKOUT_MODE_TYPE_2_LANE": 2, "PORT_BREAKOUT_MODE_TYPE_4_LANE": 3, - "PORT_BREAKOUT_MODE_TYPE_MAX": 4, + "PORT_BREAKOUT_MODE_TYPE_8_LANE": 4, + "PORT_BREAKOUT_MODE_TYPE_MAX": 5, } ) @@ -7222,11 +8070,11 @@ func (x PortBreakoutModeType) String() string { } func (PortBreakoutModeType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[107].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[121].Descriptor() } func (PortBreakoutModeType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[107] + return &file_dataplane_proto_sai_common_proto_enumTypes[121] } func (x PortBreakoutModeType) Number() protoreflect.EnumNumber { @@ -7235,7 +8083,7 @@ func (x PortBreakoutModeType) Number() protoreflect.EnumNumber { // Deprecated: Use PortBreakoutModeType.Descriptor instead. func (PortBreakoutModeType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} } type PortCablePairState int32 @@ -7280,11 +8128,11 @@ func (x PortCablePairState) String() string { } func (PortCablePairState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[108].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[122].Descriptor() } func (PortCablePairState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[108] + return &file_dataplane_proto_sai_common_proto_enumTypes[122] } func (x PortCablePairState) Number() protoreflect.EnumNumber { @@ -7293,7 +8141,7 @@ func (x PortCablePairState) Number() protoreflect.EnumNumber { // Deprecated: Use PortCablePairState.Descriptor instead. func (PortCablePairState) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} } type PortCableType int32 @@ -7341,11 +8189,11 @@ func (x PortCableType) String() string { } func (PortCableType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[109].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[123].Descriptor() } func (PortCableType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[109] + return &file_dataplane_proto_sai_common_proto_enumTypes[123] } func (x PortCableType) Number() protoreflect.EnumNumber { @@ -7354,7 +8202,7 @@ func (x PortCableType) Number() protoreflect.EnumNumber { // Deprecated: Use PortCableType.Descriptor instead. func (PortCableType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} } type PortConnectorFailoverMode int32 @@ -7393,11 +8241,11 @@ func (x PortConnectorFailoverMode) String() string { } func (PortConnectorFailoverMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[110].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[124].Descriptor() } func (PortConnectorFailoverMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[110] + return &file_dataplane_proto_sai_common_proto_enumTypes[124] } func (x PortConnectorFailoverMode) Number() protoreflect.EnumNumber { @@ -7406,7 +8254,7 @@ func (x PortConnectorFailoverMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortConnectorFailoverMode.Descriptor instead. func (PortConnectorFailoverMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} } type PortDatapathEnable int32 @@ -7442,11 +8290,11 @@ func (x PortDatapathEnable) String() string { } func (PortDatapathEnable) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[111].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[125].Descriptor() } func (PortDatapathEnable) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[111] + return &file_dataplane_proto_sai_common_proto_enumTypes[125] } func (x PortDatapathEnable) Number() protoreflect.EnumNumber { @@ -7455,7 +8303,7 @@ func (x PortDatapathEnable) Number() protoreflect.EnumNumber { // Deprecated: Use PortDatapathEnable.Descriptor instead. func (PortDatapathEnable) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} } type PortDualMedia int32 @@ -7500,11 +8348,11 @@ func (x PortDualMedia) String() string { } func (PortDualMedia) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[112].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[126].Descriptor() } func (PortDualMedia) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[112] + return &file_dataplane_proto_sai_common_proto_enumTypes[126] } func (x PortDualMedia) Number() protoreflect.EnumNumber { @@ -7513,7 +8361,7 @@ func (x PortDualMedia) Number() protoreflect.EnumNumber { // Deprecated: Use PortDualMedia.Descriptor instead. func (PortDualMedia) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} } type PortErrStatus int32 @@ -7570,11 +8418,11 @@ func (x PortErrStatus) String() string { } func (PortErrStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[113].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[127].Descriptor() } func (PortErrStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[113] + return &file_dataplane_proto_sai_common_proto_enumTypes[127] } func (x PortErrStatus) Number() protoreflect.EnumNumber { @@ -7583,7 +8431,92 @@ func (x PortErrStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortErrStatus.Descriptor instead. func (PortErrStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} +} + +type PortErrorStatus int32 + +const ( + PortErrorStatus_PORT_ERROR_STATUS_UNSPECIFIED PortErrorStatus = 0 + PortErrorStatus_PORT_ERROR_STATUS_CLEAR PortErrorStatus = 1 + PortErrorStatus_PORT_ERROR_STATUS_MAC_LOCAL_FAULT PortErrorStatus = 2 + PortErrorStatus_PORT_ERROR_STATUS_MAC_REMOTE_FAULT PortErrorStatus = 3 + PortErrorStatus_PORT_ERROR_STATUS_FEC_SYNC_LOSS PortErrorStatus = 5 + PortErrorStatus_PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER PortErrorStatus = 9 + PortErrorStatus_PORT_ERROR_STATUS_HIGH_SER PortErrorStatus = 17 + PortErrorStatus_PORT_ERROR_STATUS_HIGH_BER PortErrorStatus = 33 + PortErrorStatus_PORT_ERROR_STATUS_CRC_RATE PortErrorStatus = 65 + PortErrorStatus_PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR PortErrorStatus = 129 + PortErrorStatus_PORT_ERROR_STATUS_DATA_UNIT_SIZE PortErrorStatus = 257 + PortErrorStatus_PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR PortErrorStatus = 513 + PortErrorStatus_PORT_ERROR_STATUS_CODE_GROUP_ERROR PortErrorStatus = 1025 + PortErrorStatus_PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR PortErrorStatus = 2049 + PortErrorStatus_PORT_ERROR_STATUS_NO_RX_REACHABILITY PortErrorStatus = 4097 +) + +// Enum value maps for PortErrorStatus. +var ( + PortErrorStatus_name = map[int32]string{ + 0: "PORT_ERROR_STATUS_UNSPECIFIED", + 1: "PORT_ERROR_STATUS_CLEAR", + 2: "PORT_ERROR_STATUS_MAC_LOCAL_FAULT", + 3: "PORT_ERROR_STATUS_MAC_REMOTE_FAULT", + 5: "PORT_ERROR_STATUS_FEC_SYNC_LOSS", + 9: "PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER", + 17: "PORT_ERROR_STATUS_HIGH_SER", + 33: "PORT_ERROR_STATUS_HIGH_BER", + 65: "PORT_ERROR_STATUS_CRC_RATE", + 129: "PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR", + 257: "PORT_ERROR_STATUS_DATA_UNIT_SIZE", + 513: "PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR", + 1025: "PORT_ERROR_STATUS_CODE_GROUP_ERROR", + 2049: "PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR", + 4097: "PORT_ERROR_STATUS_NO_RX_REACHABILITY", + } + PortErrorStatus_value = map[string]int32{ + "PORT_ERROR_STATUS_UNSPECIFIED": 0, + "PORT_ERROR_STATUS_CLEAR": 1, + "PORT_ERROR_STATUS_MAC_LOCAL_FAULT": 2, + "PORT_ERROR_STATUS_MAC_REMOTE_FAULT": 3, + "PORT_ERROR_STATUS_FEC_SYNC_LOSS": 5, + "PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER": 9, + "PORT_ERROR_STATUS_HIGH_SER": 17, + "PORT_ERROR_STATUS_HIGH_BER": 33, + "PORT_ERROR_STATUS_CRC_RATE": 65, + "PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR": 129, + "PORT_ERROR_STATUS_DATA_UNIT_SIZE": 257, + "PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR": 513, + "PORT_ERROR_STATUS_CODE_GROUP_ERROR": 1025, + "PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR": 2049, + "PORT_ERROR_STATUS_NO_RX_REACHABILITY": 4097, + } +) + +func (x PortErrorStatus) Enum() *PortErrorStatus { + p := new(PortErrorStatus) + *p = x + return p +} + +func (x PortErrorStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (PortErrorStatus) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[128].Descriptor() +} + +func (PortErrorStatus) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[128] +} + +func (x PortErrorStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use PortErrorStatus.Descriptor instead. +func (PortErrorStatus) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} } type PortFecModeExtended int32 @@ -7628,11 +8561,11 @@ func (x PortFecModeExtended) String() string { } func (PortFecModeExtended) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[114].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[129].Descriptor() } func (PortFecModeExtended) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[114] + return &file_dataplane_proto_sai_common_proto_enumTypes[129] } func (x PortFecModeExtended) Number() protoreflect.EnumNumber { @@ -7641,7 +8574,7 @@ func (x PortFecModeExtended) Number() protoreflect.EnumNumber { // Deprecated: Use PortFecModeExtended.Descriptor instead. func (PortFecModeExtended) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} } type PortFecMode int32 @@ -7680,11 +8613,11 @@ func (x PortFecMode) String() string { } func (PortFecMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[115].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[130].Descriptor() } func (PortFecMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[115] + return &file_dataplane_proto_sai_common_proto_enumTypes[130] } func (x PortFecMode) Number() protoreflect.EnumNumber { @@ -7693,7 +8626,7 @@ func (x PortFecMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortFecMode.Descriptor instead. func (PortFecMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} } type PortFlowControlMode int32 @@ -7735,11 +8668,11 @@ func (x PortFlowControlMode) String() string { } func (PortFlowControlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[116].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[131].Descriptor() } func (PortFlowControlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[116] + return &file_dataplane_proto_sai_common_proto_enumTypes[131] } func (x PortFlowControlMode) Number() protoreflect.EnumNumber { @@ -7748,7 +8681,7 @@ func (x PortFlowControlMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortFlowControlMode.Descriptor instead. func (PortFlowControlMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} } type PortHostTxReadyStatus int32 @@ -7784,11 +8717,11 @@ func (x PortHostTxReadyStatus) String() string { } func (PortHostTxReadyStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[117].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[132].Descriptor() } func (PortHostTxReadyStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[117] + return &file_dataplane_proto_sai_common_proto_enumTypes[132] } func (x PortHostTxReadyStatus) Number() protoreflect.EnumNumber { @@ -7797,7 +8730,7 @@ func (x PortHostTxReadyStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortHostTxReadyStatus.Descriptor instead. func (PortHostTxReadyStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} } type PortInterfaceType int32 @@ -7905,11 +8838,11 @@ func (x PortInterfaceType) String() string { } func (PortInterfaceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[118].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[133].Descriptor() } func (PortInterfaceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[118] + return &file_dataplane_proto_sai_common_proto_enumTypes[133] } func (x PortInterfaceType) Number() protoreflect.EnumNumber { @@ -7918,7 +8851,7 @@ func (x PortInterfaceType) Number() protoreflect.EnumNumber { // Deprecated: Use PortInterfaceType.Descriptor instead. func (PortInterfaceType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} } type PortInternalLoopbackMode int32 @@ -7957,11 +8890,11 @@ func (x PortInternalLoopbackMode) String() string { } func (PortInternalLoopbackMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[119].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[134].Descriptor() } func (PortInternalLoopbackMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[119] + return &file_dataplane_proto_sai_common_proto_enumTypes[134] } func (x PortInternalLoopbackMode) Number() protoreflect.EnumNumber { @@ -7970,7 +8903,7 @@ func (x PortInternalLoopbackMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortInternalLoopbackMode.Descriptor instead. func (PortInternalLoopbackMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} } type PortLinkTrainingFailureStatus int32 @@ -8012,11 +8945,11 @@ func (x PortLinkTrainingFailureStatus) String() string { } func (PortLinkTrainingFailureStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[120].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[135].Descriptor() } func (PortLinkTrainingFailureStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[120] + return &file_dataplane_proto_sai_common_proto_enumTypes[135] } func (x PortLinkTrainingFailureStatus) Number() protoreflect.EnumNumber { @@ -8025,7 +8958,7 @@ func (x PortLinkTrainingFailureStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortLinkTrainingFailureStatus.Descriptor instead. func (PortLinkTrainingFailureStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} } type PortLinkTrainingRxStatus int32 @@ -8061,11 +8994,11 @@ func (x PortLinkTrainingRxStatus) String() string { } func (PortLinkTrainingRxStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[121].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[136].Descriptor() } func (PortLinkTrainingRxStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[121] + return &file_dataplane_proto_sai_common_proto_enumTypes[136] } func (x PortLinkTrainingRxStatus) Number() protoreflect.EnumNumber { @@ -8074,7 +9007,7 @@ func (x PortLinkTrainingRxStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortLinkTrainingRxStatus.Descriptor instead. func (PortLinkTrainingRxStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} } type PortLoopbackMode int32 @@ -8119,11 +9052,11 @@ func (x PortLoopbackMode) String() string { } func (PortLoopbackMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[122].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[137].Descriptor() } func (PortLoopbackMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[122] + return &file_dataplane_proto_sai_common_proto_enumTypes[137] } func (x PortLoopbackMode) Number() protoreflect.EnumNumber { @@ -8132,7 +9065,7 @@ func (x PortLoopbackMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortLoopbackMode.Descriptor instead. func (PortLoopbackMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} } type PortMdixModeConfig int32 @@ -8171,11 +9104,11 @@ func (x PortMdixModeConfig) String() string { } func (PortMdixModeConfig) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[123].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[138].Descriptor() } func (PortMdixModeConfig) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[123] + return &file_dataplane_proto_sai_common_proto_enumTypes[138] } func (x PortMdixModeConfig) Number() protoreflect.EnumNumber { @@ -8184,7 +9117,7 @@ func (x PortMdixModeConfig) Number() protoreflect.EnumNumber { // Deprecated: Use PortMdixModeConfig.Descriptor instead. func (PortMdixModeConfig) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} } type PortMdixModeStatus int32 @@ -8220,11 +9153,11 @@ func (x PortMdixModeStatus) String() string { } func (PortMdixModeStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[124].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[139].Descriptor() } func (PortMdixModeStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[124] + return &file_dataplane_proto_sai_common_proto_enumTypes[139] } func (x PortMdixModeStatus) Number() protoreflect.EnumNumber { @@ -8233,7 +9166,7 @@ func (x PortMdixModeStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortMdixModeStatus.Descriptor instead. func (PortMdixModeStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} } type PortMediaType int32 @@ -8278,11 +9211,11 @@ func (x PortMediaType) String() string { } func (PortMediaType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[125].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[140].Descriptor() } func (PortMediaType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[125] + return &file_dataplane_proto_sai_common_proto_enumTypes[140] } func (x PortMediaType) Number() protoreflect.EnumNumber { @@ -8291,7 +9224,7 @@ func (x PortMediaType) Number() protoreflect.EnumNumber { // Deprecated: Use PortMediaType.Descriptor instead. func (PortMediaType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} } type PortModuleType int32 @@ -8330,11 +9263,11 @@ func (x PortModuleType) String() string { } func (PortModuleType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[126].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[141].Descriptor() } func (PortModuleType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[126] + return &file_dataplane_proto_sai_common_proto_enumTypes[141] } func (x PortModuleType) Number() protoreflect.EnumNumber { @@ -8343,7 +9276,7 @@ func (x PortModuleType) Number() protoreflect.EnumNumber { // Deprecated: Use PortModuleType.Descriptor instead. func (PortModuleType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} } type PortOperStatus int32 @@ -8388,11 +9321,11 @@ func (x PortOperStatus) String() string { } func (PortOperStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[127].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[142].Descriptor() } func (PortOperStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[127] + return &file_dataplane_proto_sai_common_proto_enumTypes[142] } func (x PortOperStatus) Number() protoreflect.EnumNumber { @@ -8401,7 +9334,7 @@ func (x PortOperStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortOperStatus.Descriptor instead. func (PortOperStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} } type PortPathTracingTimestampType int32 @@ -8443,11 +9376,11 @@ func (x PortPathTracingTimestampType) String() string { } func (PortPathTracingTimestampType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[128].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[143].Descriptor() } func (PortPathTracingTimestampType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[128] + return &file_dataplane_proto_sai_common_proto_enumTypes[143] } func (x PortPathTracingTimestampType) Number() protoreflect.EnumNumber { @@ -8456,7 +9389,7 @@ func (x PortPathTracingTimestampType) Number() protoreflect.EnumNumber { // Deprecated: Use PortPathTracingTimestampType.Descriptor instead. func (PortPathTracingTimestampType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} } type PortPoolStat int32 @@ -8552,11 +9485,11 @@ func (x PortPoolStat) String() string { } func (PortPoolStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[129].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[144].Descriptor() } func (PortPoolStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[129] + return &file_dataplane_proto_sai_common_proto_enumTypes[144] } func (x PortPoolStat) Number() protoreflect.EnumNumber { @@ -8565,7 +9498,7 @@ func (x PortPoolStat) Number() protoreflect.EnumNumber { // Deprecated: Use PortPoolStat.Descriptor instead. func (PortPoolStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} } type PortPrbsConfig int32 @@ -8607,11 +9540,11 @@ func (x PortPrbsConfig) String() string { } func (PortPrbsConfig) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[130].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[145].Descriptor() } func (PortPrbsConfig) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[130] + return &file_dataplane_proto_sai_common_proto_enumTypes[145] } func (x PortPrbsConfig) Number() protoreflect.EnumNumber { @@ -8620,7 +9553,7 @@ func (x PortPrbsConfig) Number() protoreflect.EnumNumber { // Deprecated: Use PortPrbsConfig.Descriptor instead. func (PortPrbsConfig) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} } type PortPrbsRxStatus int32 @@ -8662,11 +9595,11 @@ func (x PortPrbsRxStatus) String() string { } func (PortPrbsRxStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[131].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[146].Descriptor() } func (PortPrbsRxStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[131] + return &file_dataplane_proto_sai_common_proto_enumTypes[146] } func (x PortPrbsRxStatus) Number() protoreflect.EnumNumber { @@ -8675,7 +9608,7 @@ func (x PortPrbsRxStatus) Number() protoreflect.EnumNumber { // Deprecated: Use PortPrbsRxStatus.Descriptor instead. func (PortPrbsRxStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{146} } type PortPriorityFlowControlMode int32 @@ -8711,11 +9644,11 @@ func (x PortPriorityFlowControlMode) String() string { } func (PortPriorityFlowControlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[132].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[147].Descriptor() } func (PortPriorityFlowControlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[132] + return &file_dataplane_proto_sai_common_proto_enumTypes[147] } func (x PortPriorityFlowControlMode) Number() protoreflect.EnumNumber { @@ -8724,7 +9657,7 @@ func (x PortPriorityFlowControlMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortPriorityFlowControlMode.Descriptor instead. func (PortPriorityFlowControlMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{147} } type PortPtpMode int32 @@ -8763,11 +9696,11 @@ func (x PortPtpMode) String() string { } func (PortPtpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[133].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[148].Descriptor() } func (PortPtpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[133] + return &file_dataplane_proto_sai_common_proto_enumTypes[148] } func (x PortPtpMode) Number() protoreflect.EnumNumber { @@ -8776,40 +9709,58 @@ func (x PortPtpMode) Number() protoreflect.EnumNumber { // Deprecated: Use PortPtpMode.Descriptor instead. func (PortPtpMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{148} } type PortStatExtensions int32 const ( - PortStatExtensions_PORT_STAT_EXTENSIONS_UNSPECIFIED PortStatExtensions = 0 - PortStatExtensions_PORT_STAT_EXTENSIONS_RANGE_START PortStatExtensions = 12289 - PortStatExtensions_PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES PortStatExtensions = 12289 - PortStatExtensions_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS PortStatExtensions = 12290 - PortStatExtensions_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES PortStatExtensions = 12291 - PortStatExtensions_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS PortStatExtensions = 12292 - PortStatExtensions_PORT_STAT_EXTENSIONS_RANGE_END PortStatExtensions = 12293 + PortStatExtensions_PORT_STAT_EXTENSIONS_UNSPECIFIED PortStatExtensions = 0 + PortStatExtensions_PORT_STAT_EXTENSIONS_RANGE_START PortStatExtensions = 536870913 + PortStatExtensions_PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES PortStatExtensions = 536870913 + PortStatExtensions_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS PortStatExtensions = 536870914 + PortStatExtensions_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES PortStatExtensions = 536870915 + PortStatExtensions_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS PortStatExtensions = 536870916 + PortStatExtensions_PORT_STAT_VIP_MISS_DROP_PACKETS PortStatExtensions = 536870917 + PortStatExtensions_PORT_STAT_ENI_MISS_DROP_PACKETS PortStatExtensions = 536870918 + PortStatExtensions_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES PortStatExtensions = 536870919 + PortStatExtensions_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS PortStatExtensions = 536870920 + PortStatExtensions_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES PortStatExtensions = 536870921 + PortStatExtensions_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS PortStatExtensions = 536870922 + PortStatExtensions_PORT_STAT_EXTENSIONS_RANGE_END PortStatExtensions = 536870923 ) // Enum value maps for PortStatExtensions. var ( PortStatExtensions_name = map[int32]string{ - 0: "PORT_STAT_EXTENSIONS_UNSPECIFIED", - 12289: "PORT_STAT_EXTENSIONS_RANGE_START", - // Duplicate value: 12289: "PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES", - 12290: "PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS", - 12291: "PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES", - 12292: "PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS", - 12293: "PORT_STAT_EXTENSIONS_RANGE_END", + 0: "PORT_STAT_EXTENSIONS_UNSPECIFIED", + 536870913: "PORT_STAT_EXTENSIONS_RANGE_START", + // Duplicate value: 536870913: "PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES", + 536870914: "PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS", + 536870915: "PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES", + 536870916: "PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS", + 536870917: "PORT_STAT_VIP_MISS_DROP_PACKETS", + 536870918: "PORT_STAT_ENI_MISS_DROP_PACKETS", + 536870919: "PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES", + 536870920: "PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS", + 536870921: "PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES", + 536870922: "PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS", + 536870923: "PORT_STAT_EXTENSIONS_RANGE_END", } PortStatExtensions_value = map[string]int32{ - "PORT_STAT_EXTENSIONS_UNSPECIFIED": 0, - "PORT_STAT_EXTENSIONS_RANGE_START": 12289, - "PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES": 12289, - "PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS": 12290, - "PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES": 12291, - "PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS": 12292, - "PORT_STAT_EXTENSIONS_RANGE_END": 12293, + "PORT_STAT_EXTENSIONS_UNSPECIFIED": 0, + "PORT_STAT_EXTENSIONS_RANGE_START": 536870913, + "PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES": 536870913, + "PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS": 536870914, + "PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES": 536870915, + "PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS": 536870916, + "PORT_STAT_VIP_MISS_DROP_PACKETS": 536870917, + "PORT_STAT_ENI_MISS_DROP_PACKETS": 536870918, + "PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES": 536870919, + "PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS": 536870920, + "PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES": 536870921, + "PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS": 536870922, + "PORT_STAT_EXTENSIONS_RANGE_END": 536870923, } ) @@ -8824,11 +9775,11 @@ func (x PortStatExtensions) String() string { } func (PortStatExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[134].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[149].Descriptor() } func (PortStatExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[134] + return &file_dataplane_proto_sai_common_proto_enumTypes[149] } func (x PortStatExtensions) Number() protoreflect.EnumNumber { @@ -8837,7 +9788,7 @@ func (x PortStatExtensions) Number() protoreflect.EnumNumber { // Deprecated: Use PortStatExtensions.Descriptor instead. func (PortStatExtensions) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{149} } type PortStat int32 @@ -9065,8 +10016,11 @@ const ( PortStat_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS PortStat = 8198 PortStat_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS PortStat = 8199 PortStat_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS PortStat = 8200 + PortStat_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS PortStat = 8201 + PortStat_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS PortStat = 8202 PortStat_PORT_STAT_OUT_DROP_REASON_RANGE_END PortStat = 12288 PortStat_PORT_STAT_END PortStat = 12289 + PortStat_PORT_STAT_EXTENSIONS_RANGE_BASE PortStat = 536870913 ) // Enum value maps for PortStat. @@ -9287,15 +10241,18 @@ var ( 8192: "PORT_STAT_IN_DROP_REASON_RANGE_END", 8193: "PORT_STAT_OUT_DROP_REASON_RANGE_BASE", // Duplicate value: 8193: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS", - 8194: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS", - 8195: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS", - 8196: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS", - 8197: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS", - 8198: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS", - 8199: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS", - 8200: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS", - 12288: "PORT_STAT_OUT_DROP_REASON_RANGE_END", - 12289: "PORT_STAT_END", + 8194: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS", + 8195: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS", + 8196: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS", + 8197: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS", + 8198: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS", + 8199: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS", + 8200: "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS", + 8201: "PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS", + 8202: "PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS", + 12288: "PORT_STAT_OUT_DROP_REASON_RANGE_END", + 12289: "PORT_STAT_END", + 536870913: "PORT_STAT_EXTENSIONS_RANGE_BASE", } PortStat_value = map[string]int32{ "PORT_STAT_UNSPECIFIED": 0, @@ -9520,8 +10477,11 @@ var ( "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS": 8198, "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS": 8199, "PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS": 8200, + "PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS": 8201, + "PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS": 8202, "PORT_STAT_OUT_DROP_REASON_RANGE_END": 12288, "PORT_STAT_END": 12289, + "PORT_STAT_EXTENSIONS_RANGE_BASE": 536870913, } ) @@ -9536,11 +10496,11 @@ func (x PortStat) String() string { } func (PortStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[135].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[150].Descriptor() } func (PortStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[135] + return &file_dataplane_proto_sai_common_proto_enumTypes[150] } func (x PortStat) Number() protoreflect.EnumNumber { @@ -9549,7 +10509,7 @@ func (x PortStat) Number() protoreflect.EnumNumber { // Deprecated: Use PortStat.Descriptor instead. func (PortStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{150} } type PortType int32 @@ -9591,11 +10551,11 @@ func (x PortType) String() string { } func (PortType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[136].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[151].Descriptor() } func (PortType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[136] + return &file_dataplane_proto_sai_common_proto_enumTypes[151] } func (x PortType) Number() protoreflect.EnumNumber { @@ -9604,7 +10564,7 @@ func (x PortType) Number() protoreflect.EnumNumber { // Deprecated: Use PortType.Descriptor instead. func (PortType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{151} } type QosMapType int32 @@ -9682,11 +10642,11 @@ func (x QosMapType) String() string { } func (QosMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[137].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[152].Descriptor() } func (QosMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[137] + return &file_dataplane_proto_sai_common_proto_enumTypes[152] } func (x QosMapType) Number() protoreflect.EnumNumber { @@ -9695,7 +10655,7 @@ func (x QosMapType) Number() protoreflect.EnumNumber { // Deprecated: Use QosMapType.Descriptor instead. func (QosMapType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{152} } type QueuePfcContinuousDeadlockState int32 @@ -9734,11 +10694,11 @@ func (x QueuePfcContinuousDeadlockState) String() string { } func (QueuePfcContinuousDeadlockState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[138].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[153].Descriptor() } func (QueuePfcContinuousDeadlockState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[138] + return &file_dataplane_proto_sai_common_proto_enumTypes[153] } func (x QueuePfcContinuousDeadlockState) Number() protoreflect.EnumNumber { @@ -9747,7 +10707,7 @@ func (x QueuePfcContinuousDeadlockState) Number() protoreflect.EnumNumber { // Deprecated: Use QueuePfcContinuousDeadlockState.Descriptor instead. func (QueuePfcContinuousDeadlockState) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{153} } type QueuePfcDeadlockEventType int32 @@ -9783,11 +10743,11 @@ func (x QueuePfcDeadlockEventType) String() string { } func (QueuePfcDeadlockEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[139].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[154].Descriptor() } func (QueuePfcDeadlockEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[139] + return &file_dataplane_proto_sai_common_proto_enumTypes[154] } func (x QueuePfcDeadlockEventType) Number() protoreflect.EnumNumber { @@ -9796,7 +10756,7 @@ func (x QueuePfcDeadlockEventType) Number() protoreflect.EnumNumber { // Deprecated: Use QueuePfcDeadlockEventType.Descriptor instead. func (QueuePfcDeadlockEventType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{154} } type QueueStat int32 @@ -9949,11 +10909,11 @@ func (x QueueStat) String() string { } func (QueueStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[140].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[155].Descriptor() } func (QueueStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[140] + return &file_dataplane_proto_sai_common_proto_enumTypes[155] } func (x QueueStat) Number() protoreflect.EnumNumber { @@ -9962,7 +10922,7 @@ func (x QueueStat) Number() protoreflect.EnumNumber { // Deprecated: Use QueueStat.Descriptor instead. func (QueueStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{155} } type QueueType int32 @@ -10013,11 +10973,11 @@ func (x QueueType) String() string { } func (QueueType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[141].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[156].Descriptor() } func (QueueType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[141] + return &file_dataplane_proto_sai_common_proto_enumTypes[156] } func (x QueueType) Number() protoreflect.EnumNumber { @@ -10026,7 +10986,7 @@ func (x QueueType) Number() protoreflect.EnumNumber { // Deprecated: Use QueueType.Descriptor instead. func (QueueType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{156} } type RouterInterfaceStat int32 @@ -10080,11 +11040,11 @@ func (x RouterInterfaceStat) String() string { } func (RouterInterfaceStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[142].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[157].Descriptor() } func (RouterInterfaceStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[142] + return &file_dataplane_proto_sai_common_proto_enumTypes[157] } func (x RouterInterfaceStat) Number() protoreflect.EnumNumber { @@ -10093,7 +11053,7 @@ func (x RouterInterfaceStat) Number() protoreflect.EnumNumber { // Deprecated: Use RouterInterfaceStat.Descriptor instead. func (RouterInterfaceStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{157} } type RouterInterfaceType int32 @@ -10144,11 +11104,11 @@ func (x RouterInterfaceType) String() string { } func (RouterInterfaceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[143].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[158].Descriptor() } func (RouterInterfaceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[143] + return &file_dataplane_proto_sai_common_proto_enumTypes[158] } func (x RouterInterfaceType) Number() protoreflect.EnumNumber { @@ -10157,7 +11117,7 @@ func (x RouterInterfaceType) Number() protoreflect.EnumNumber { // Deprecated: Use RouterInterfaceType.Descriptor instead. func (RouterInterfaceType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{158} } type SamplepacketMode int32 @@ -10193,11 +11153,11 @@ func (x SamplepacketMode) String() string { } func (SamplepacketMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[144].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[159].Descriptor() } func (SamplepacketMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[144] + return &file_dataplane_proto_sai_common_proto_enumTypes[159] } func (x SamplepacketMode) Number() protoreflect.EnumNumber { @@ -10206,7 +11166,7 @@ func (x SamplepacketMode) Number() protoreflect.EnumNumber { // Deprecated: Use SamplepacketMode.Descriptor instead. func (SamplepacketMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{159} } type SamplepacketType int32 @@ -10242,11 +11202,11 @@ func (x SamplepacketType) String() string { } func (SamplepacketType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[145].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[160].Descriptor() } func (SamplepacketType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[145] + return &file_dataplane_proto_sai_common_proto_enumTypes[160] } func (x SamplepacketType) Number() protoreflect.EnumNumber { @@ -10255,7 +11215,7 @@ func (x SamplepacketType) Number() protoreflect.EnumNumber { // Deprecated: Use SamplepacketType.Descriptor instead. func (SamplepacketType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{160} } type SchedulingType int32 @@ -10294,11 +11254,11 @@ func (x SchedulingType) String() string { } func (SchedulingType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[146].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[161].Descriptor() } func (SchedulingType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[146] + return &file_dataplane_proto_sai_common_proto_enumTypes[161] } func (x SchedulingType) Number() protoreflect.EnumNumber { @@ -10307,7 +11267,184 @@ func (x SchedulingType) Number() protoreflect.EnumNumber { // Deprecated: Use SchedulingType.Descriptor instead. func (SchedulingType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{146} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{161} +} + +type SerCorrectionType int32 + +const ( + SerCorrectionType_SER_CORRECTION_TYPE_UNSPECIFIED SerCorrectionType = 0 + SerCorrectionType_SER_CORRECTION_TYPE_NO_ACTION SerCorrectionType = 1 + SerCorrectionType_SER_CORRECTION_TYPE_FAIL_TO_CORRECT SerCorrectionType = 2 + SerCorrectionType_SER_CORRECTION_TYPE_ENTRY_CLEAR SerCorrectionType = 3 + SerCorrectionType_SER_CORRECTION_TYPE_SW_CACHE_RESTORE SerCorrectionType = 4 + SerCorrectionType_SER_CORRECTION_TYPE_HW_CACHE_RESTORE SerCorrectionType = 5 + SerCorrectionType_SER_CORRECTION_TYPE_SPECIAL SerCorrectionType = 6 +) + +// Enum value maps for SerCorrectionType. +var ( + SerCorrectionType_name = map[int32]string{ + 0: "SER_CORRECTION_TYPE_UNSPECIFIED", + 1: "SER_CORRECTION_TYPE_NO_ACTION", + 2: "SER_CORRECTION_TYPE_FAIL_TO_CORRECT", + 3: "SER_CORRECTION_TYPE_ENTRY_CLEAR", + 4: "SER_CORRECTION_TYPE_SW_CACHE_RESTORE", + 5: "SER_CORRECTION_TYPE_HW_CACHE_RESTORE", + 6: "SER_CORRECTION_TYPE_SPECIAL", + } + SerCorrectionType_value = map[string]int32{ + "SER_CORRECTION_TYPE_UNSPECIFIED": 0, + "SER_CORRECTION_TYPE_NO_ACTION": 1, + "SER_CORRECTION_TYPE_FAIL_TO_CORRECT": 2, + "SER_CORRECTION_TYPE_ENTRY_CLEAR": 3, + "SER_CORRECTION_TYPE_SW_CACHE_RESTORE": 4, + "SER_CORRECTION_TYPE_HW_CACHE_RESTORE": 5, + "SER_CORRECTION_TYPE_SPECIAL": 6, + } +) + +func (x SerCorrectionType) Enum() *SerCorrectionType { + p := new(SerCorrectionType) + *p = x + return p +} + +func (x SerCorrectionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SerCorrectionType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[162].Descriptor() +} + +func (SerCorrectionType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[162] +} + +func (x SerCorrectionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SerCorrectionType.Descriptor instead. +func (SerCorrectionType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{162} +} + +type SerLogType int32 + +const ( + SerLogType_SER_LOG_TYPE_UNSPECIFIED SerLogType = 0 + SerLogType_SER_LOG_TYPE_MEM SerLogType = 2 + SerLogType_SER_LOG_TYPE_REG SerLogType = 3 + SerLogType_SER_LOG_TYPE_MULTI SerLogType = 5 + SerLogType_SER_LOG_TYPE_CORRECTED SerLogType = 9 + SerLogType_SER_LOG_TYPE_ENTRY_INFO SerLogType = 17 + SerLogType_SER_LOG_TYPE_CACHE SerLogType = 33 +) + +// Enum value maps for SerLogType. +var ( + SerLogType_name = map[int32]string{ + 0: "SER_LOG_TYPE_UNSPECIFIED", + 2: "SER_LOG_TYPE_MEM", + 3: "SER_LOG_TYPE_REG", + 5: "SER_LOG_TYPE_MULTI", + 9: "SER_LOG_TYPE_CORRECTED", + 17: "SER_LOG_TYPE_ENTRY_INFO", + 33: "SER_LOG_TYPE_CACHE", + } + SerLogType_value = map[string]int32{ + "SER_LOG_TYPE_UNSPECIFIED": 0, + "SER_LOG_TYPE_MEM": 2, + "SER_LOG_TYPE_REG": 3, + "SER_LOG_TYPE_MULTI": 5, + "SER_LOG_TYPE_CORRECTED": 9, + "SER_LOG_TYPE_ENTRY_INFO": 17, + "SER_LOG_TYPE_CACHE": 33, + } +) + +func (x SerLogType) Enum() *SerLogType { + p := new(SerLogType) + *p = x + return p +} + +func (x SerLogType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SerLogType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[163].Descriptor() +} + +func (SerLogType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[163] +} + +func (x SerLogType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SerLogType.Descriptor instead. +func (SerLogType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{163} +} + +type SerType int32 + +const ( + SerType_SER_TYPE_UNSPECIFIED SerType = 0 + SerType_SER_TYPE_UNKNOWN SerType = 1 + SerType_SER_TYPE_PARITY SerType = 2 + SerType_SER_TYPE_ECC_SINGLE_BIT SerType = 3 + SerType_SER_TYPE_ECC_DOUBLE_BIT SerType = 4 +) + +// Enum value maps for SerType. +var ( + SerType_name = map[int32]string{ + 0: "SER_TYPE_UNSPECIFIED", + 1: "SER_TYPE_UNKNOWN", + 2: "SER_TYPE_PARITY", + 3: "SER_TYPE_ECC_SINGLE_BIT", + 4: "SER_TYPE_ECC_DOUBLE_BIT", + } + SerType_value = map[string]int32{ + "SER_TYPE_UNSPECIFIED": 0, + "SER_TYPE_UNKNOWN": 1, + "SER_TYPE_PARITY": 2, + "SER_TYPE_ECC_SINGLE_BIT": 3, + "SER_TYPE_ECC_DOUBLE_BIT": 4, + } +) + +func (x SerType) Enum() *SerType { + p := new(SerType) + *p = x + return p +} + +func (x SerType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SerType) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[164].Descriptor() +} + +func (SerType) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[164] +} + +func (x SerType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SerType.Descriptor instead. +func (SerType) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{164} } type Srv6SidlistStat int32 @@ -10343,11 +11480,11 @@ func (x Srv6SidlistStat) String() string { } func (Srv6SidlistStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[147].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[165].Descriptor() } func (Srv6SidlistStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[147] + return &file_dataplane_proto_sai_common_proto_enumTypes[165] } func (x Srv6SidlistStat) Number() protoreflect.EnumNumber { @@ -10356,7 +11493,7 @@ func (x Srv6SidlistStat) Number() protoreflect.EnumNumber { // Deprecated: Use Srv6SidlistStat.Descriptor instead. func (Srv6SidlistStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{147} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{165} } type Srv6SidlistType int32 @@ -10401,11 +11538,11 @@ func (x Srv6SidlistType) String() string { } func (Srv6SidlistType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[148].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[166].Descriptor() } func (Srv6SidlistType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[148] + return &file_dataplane_proto_sai_common_proto_enumTypes[166] } func (x Srv6SidlistType) Number() protoreflect.EnumNumber { @@ -10414,7 +11551,62 @@ func (x Srv6SidlistType) Number() protoreflect.EnumNumber { // Deprecated: Use Srv6SidlistType.Descriptor instead. func (Srv6SidlistType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{148} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{166} +} + +type StatsCountMode int32 + +const ( + StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED StatsCountMode = 0 + StatsCountMode_STATS_COUNT_MODE_PACKET_AND_BYTE StatsCountMode = 1 + StatsCountMode_STATS_COUNT_MODE_PACKET StatsCountMode = 2 + StatsCountMode_STATS_COUNT_MODE_BYTE StatsCountMode = 3 + StatsCountMode_STATS_COUNT_MODE_NONE StatsCountMode = 4 +) + +// Enum value maps for StatsCountMode. +var ( + StatsCountMode_name = map[int32]string{ + 0: "STATS_COUNT_MODE_UNSPECIFIED", + 1: "STATS_COUNT_MODE_PACKET_AND_BYTE", + 2: "STATS_COUNT_MODE_PACKET", + 3: "STATS_COUNT_MODE_BYTE", + 4: "STATS_COUNT_MODE_NONE", + } + StatsCountMode_value = map[string]int32{ + "STATS_COUNT_MODE_UNSPECIFIED": 0, + "STATS_COUNT_MODE_PACKET_AND_BYTE": 1, + "STATS_COUNT_MODE_PACKET": 2, + "STATS_COUNT_MODE_BYTE": 3, + "STATS_COUNT_MODE_NONE": 4, + } +) + +func (x StatsCountMode) Enum() *StatsCountMode { + p := new(StatsCountMode) + *p = x + return p +} + +func (x StatsCountMode) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatsCountMode) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_common_proto_enumTypes[167].Descriptor() +} + +func (StatsCountMode) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_common_proto_enumTypes[167] +} + +func (x StatsCountMode) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatsCountMode.Descriptor instead. +func (StatsCountMode) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{167} } type StatsMode int32 @@ -10459,11 +11651,11 @@ func (x StatsMode) String() string { } func (StatsMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[149].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[168].Descriptor() } func (StatsMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[149] + return &file_dataplane_proto_sai_common_proto_enumTypes[168] } func (x StatsMode) Number() protoreflect.EnumNumber { @@ -10472,7 +11664,7 @@ func (x StatsMode) Number() protoreflect.EnumNumber { // Deprecated: Use StatsMode.Descriptor instead. func (StatsMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{149} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{168} } type StpPortState int32 @@ -10511,11 +11703,11 @@ func (x StpPortState) String() string { } func (StpPortState) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[150].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[169].Descriptor() } func (StpPortState) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[150] + return &file_dataplane_proto_sai_common_proto_enumTypes[169] } func (x StpPortState) Number() protoreflect.EnumNumber { @@ -10524,7 +11716,7 @@ func (x StpPortState) Number() protoreflect.EnumNumber { // Deprecated: Use StpPortState.Descriptor instead. func (StpPortState) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{150} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{169} } type SwitchAsicSdkHealthCategory int32 @@ -10566,11 +11758,11 @@ func (x SwitchAsicSdkHealthCategory) String() string { } func (SwitchAsicSdkHealthCategory) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[151].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[170].Descriptor() } func (SwitchAsicSdkHealthCategory) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[151] + return &file_dataplane_proto_sai_common_proto_enumTypes[170] } func (x SwitchAsicSdkHealthCategory) Number() protoreflect.EnumNumber { @@ -10579,7 +11771,7 @@ func (x SwitchAsicSdkHealthCategory) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchAsicSdkHealthCategory.Descriptor instead. func (SwitchAsicSdkHealthCategory) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{151} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{170} } type SwitchAsicSdkHealthSeverity int32 @@ -10618,11 +11810,11 @@ func (x SwitchAsicSdkHealthSeverity) String() string { } func (SwitchAsicSdkHealthSeverity) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[152].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[171].Descriptor() } func (SwitchAsicSdkHealthSeverity) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[152] + return &file_dataplane_proto_sai_common_proto_enumTypes[171] } func (x SwitchAsicSdkHealthSeverity) Number() protoreflect.EnumNumber { @@ -10631,28 +11823,43 @@ func (x SwitchAsicSdkHealthSeverity) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchAsicSdkHealthSeverity.Descriptor instead. func (SwitchAsicSdkHealthSeverity) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{152} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{171} } type SwitchAttrExtensions int32 const ( - SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_UNSPECIFIED SwitchAttrExtensions = 0 - SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_START SwitchAttrExtensions = 233 - SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_END SwitchAttrExtensions = 234 + SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_UNSPECIFIED SwitchAttrExtensions = 0 + SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_START SwitchAttrExtensions = 536870913 + SwitchAttrExtensions_SWITCH_ATTR_DASH_CAPS_MAX_METER_BUCKET_COUNT_PER_ENI SwitchAttrExtensions = 536870913 + SwitchAttrExtensions_SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL SwitchAttrExtensions = 536870914 + SwitchAttrExtensions_SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED SwitchAttrExtensions = 536870915 + SwitchAttrExtensions_SWITCH_ATTR_HA_SET_EVENT_NOTIFY SwitchAttrExtensions = 536870916 + SwitchAttrExtensions_SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY SwitchAttrExtensions = 536870917 + SwitchAttrExtensions_SWITCH_ATTR_EXTENSIONS_RANGE_END SwitchAttrExtensions = 536870918 ) // Enum value maps for SwitchAttrExtensions. var ( SwitchAttrExtensions_name = map[int32]string{ - 0: "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED", - 233: "SWITCH_ATTR_EXTENSIONS_RANGE_START", - 234: "SWITCH_ATTR_EXTENSIONS_RANGE_END", + 0: "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED", + 536870913: "SWITCH_ATTR_EXTENSIONS_RANGE_START", + // Duplicate value: 536870913: "SWITCH_ATTR_DASH_CAPS_MAX_METER_BUCKET_COUNT_PER_ENI", + 536870914: "SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL", + 536870915: "SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED", + 536870916: "SWITCH_ATTR_HA_SET_EVENT_NOTIFY", + 536870917: "SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY", + 536870918: "SWITCH_ATTR_EXTENSIONS_RANGE_END", } SwitchAttrExtensions_value = map[string]int32{ - "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED": 0, - "SWITCH_ATTR_EXTENSIONS_RANGE_START": 233, - "SWITCH_ATTR_EXTENSIONS_RANGE_END": 234, + "SWITCH_ATTR_EXTENSIONS_UNSPECIFIED": 0, + "SWITCH_ATTR_EXTENSIONS_RANGE_START": 536870913, + "SWITCH_ATTR_DASH_CAPS_MAX_METER_BUCKET_COUNT_PER_ENI": 536870913, + "SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL": 536870914, + "SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED": 536870915, + "SWITCH_ATTR_HA_SET_EVENT_NOTIFY": 536870916, + "SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY": 536870917, + "SWITCH_ATTR_EXTENSIONS_RANGE_END": 536870918, } ) @@ -10667,11 +11874,11 @@ func (x SwitchAttrExtensions) String() string { } func (SwitchAttrExtensions) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[153].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[172].Descriptor() } func (SwitchAttrExtensions) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[153] + return &file_dataplane_proto_sai_common_proto_enumTypes[172] } func (x SwitchAttrExtensions) Number() protoreflect.EnumNumber { @@ -10680,7 +11887,7 @@ func (x SwitchAttrExtensions) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchAttrExtensions.Descriptor instead. func (SwitchAttrExtensions) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{153} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{172} } type SwitchFailoverConfigMode int32 @@ -10716,11 +11923,11 @@ func (x SwitchFailoverConfigMode) String() string { } func (SwitchFailoverConfigMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[154].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[173].Descriptor() } func (SwitchFailoverConfigMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[154] + return &file_dataplane_proto_sai_common_proto_enumTypes[173] } func (x SwitchFailoverConfigMode) Number() protoreflect.EnumNumber { @@ -10729,7 +11936,7 @@ func (x SwitchFailoverConfigMode) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchFailoverConfigMode.Descriptor instead. func (SwitchFailoverConfigMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{154} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{173} } type SwitchFirmwareLoadMethod int32 @@ -10768,11 +11975,11 @@ func (x SwitchFirmwareLoadMethod) String() string { } func (SwitchFirmwareLoadMethod) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[155].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[174].Descriptor() } func (SwitchFirmwareLoadMethod) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[155] + return &file_dataplane_proto_sai_common_proto_enumTypes[174] } func (x SwitchFirmwareLoadMethod) Number() protoreflect.EnumNumber { @@ -10781,7 +11988,7 @@ func (x SwitchFirmwareLoadMethod) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchFirmwareLoadMethod.Descriptor instead. func (SwitchFirmwareLoadMethod) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{155} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{174} } type SwitchFirmwareLoadType int32 @@ -10820,11 +12027,11 @@ func (x SwitchFirmwareLoadType) String() string { } func (SwitchFirmwareLoadType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[156].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[175].Descriptor() } func (SwitchFirmwareLoadType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[156] + return &file_dataplane_proto_sai_common_proto_enumTypes[175] } func (x SwitchFirmwareLoadType) Number() protoreflect.EnumNumber { @@ -10833,7 +12040,7 @@ func (x SwitchFirmwareLoadType) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchFirmwareLoadType.Descriptor instead. func (SwitchFirmwareLoadType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{156} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{175} } type SwitchHardwareAccessBus int32 @@ -10872,11 +12079,11 @@ func (x SwitchHardwareAccessBus) String() string { } func (SwitchHardwareAccessBus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[157].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[176].Descriptor() } func (SwitchHardwareAccessBus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[157] + return &file_dataplane_proto_sai_common_proto_enumTypes[176] } func (x SwitchHardwareAccessBus) Number() protoreflect.EnumNumber { @@ -10885,7 +12092,7 @@ func (x SwitchHardwareAccessBus) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchHardwareAccessBus.Descriptor instead. func (SwitchHardwareAccessBus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{157} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{176} } type SwitchHostifOperStatusUpdateMode int32 @@ -10921,11 +12128,11 @@ func (x SwitchHostifOperStatusUpdateMode) String() string { } func (SwitchHostifOperStatusUpdateMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[158].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[177].Descriptor() } func (SwitchHostifOperStatusUpdateMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[158] + return &file_dataplane_proto_sai_common_proto_enumTypes[177] } func (x SwitchHostifOperStatusUpdateMode) Number() protoreflect.EnumNumber { @@ -10934,7 +12141,7 @@ func (x SwitchHostifOperStatusUpdateMode) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchHostifOperStatusUpdateMode.Descriptor instead. func (SwitchHostifOperStatusUpdateMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{158} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{177} } type SwitchMcastSnoopingCapability int32 @@ -10976,11 +12183,11 @@ func (x SwitchMcastSnoopingCapability) String() string { } func (SwitchMcastSnoopingCapability) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[159].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[178].Descriptor() } func (SwitchMcastSnoopingCapability) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[159] + return &file_dataplane_proto_sai_common_proto_enumTypes[178] } func (x SwitchMcastSnoopingCapability) Number() protoreflect.EnumNumber { @@ -10989,7 +12196,7 @@ func (x SwitchMcastSnoopingCapability) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchMcastSnoopingCapability.Descriptor instead. func (SwitchMcastSnoopingCapability) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{159} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{178} } type SwitchOperStatus int32 @@ -11031,11 +12238,11 @@ func (x SwitchOperStatus) String() string { } func (SwitchOperStatus) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[160].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[179].Descriptor() } func (SwitchOperStatus) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[160] + return &file_dataplane_proto_sai_common_proto_enumTypes[179] } func (x SwitchOperStatus) Number() protoreflect.EnumNumber { @@ -11044,7 +12251,7 @@ func (x SwitchOperStatus) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchOperStatus.Descriptor instead. func (SwitchOperStatus) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{160} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{179} } type SwitchRestartType int32 @@ -11083,11 +12290,11 @@ func (x SwitchRestartType) String() string { } func (SwitchRestartType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[161].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[180].Descriptor() } func (SwitchRestartType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[161] + return &file_dataplane_proto_sai_common_proto_enumTypes[180] } func (x SwitchRestartType) Number() protoreflect.EnumNumber { @@ -11096,7 +12303,7 @@ func (x SwitchRestartType) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchRestartType.Descriptor instead. func (SwitchRestartType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{161} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{180} } type SwitchStat int32 @@ -11207,11 +12414,11 @@ func (x SwitchStat) String() string { } func (SwitchStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[162].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[181].Descriptor() } func (SwitchStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[162] + return &file_dataplane_proto_sai_common_proto_enumTypes[181] } func (x SwitchStat) Number() protoreflect.EnumNumber { @@ -11220,7 +12427,7 @@ func (x SwitchStat) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchStat.Descriptor instead. func (SwitchStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{162} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{181} } type SwitchSwitchingMode int32 @@ -11256,11 +12463,11 @@ func (x SwitchSwitchingMode) String() string { } func (SwitchSwitchingMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[163].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[182].Descriptor() } func (SwitchSwitchingMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[163] + return &file_dataplane_proto_sai_common_proto_enumTypes[182] } func (x SwitchSwitchingMode) Number() protoreflect.EnumNumber { @@ -11269,7 +12476,7 @@ func (x SwitchSwitchingMode) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchSwitchingMode.Descriptor instead. func (SwitchSwitchingMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{163} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{182} } type SwitchType int32 @@ -11314,11 +12521,11 @@ func (x SwitchType) String() string { } func (SwitchType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[164].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[183].Descriptor() } func (SwitchType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[164] + return &file_dataplane_proto_sai_common_proto_enumTypes[183] } func (x SwitchType) Number() protoreflect.EnumNumber { @@ -11327,7 +12534,7 @@ func (x SwitchType) Number() protoreflect.EnumNumber { // Deprecated: Use SwitchType.Descriptor instead. func (SwitchType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{164} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{183} } type SystemPortType int32 @@ -11363,11 +12570,11 @@ func (x SystemPortType) String() string { } func (SystemPortType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[165].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[184].Descriptor() } func (SystemPortType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[165] + return &file_dataplane_proto_sai_common_proto_enumTypes[184] } func (x SystemPortType) Number() protoreflect.EnumNumber { @@ -11376,7 +12583,7 @@ func (x SystemPortType) Number() protoreflect.EnumNumber { // Deprecated: Use SystemPortType.Descriptor instead. func (SystemPortType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{165} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{184} } type TableBitmapClassificationEntryAction int32 @@ -11412,11 +12619,11 @@ func (x TableBitmapClassificationEntryAction) String() string { } func (TableBitmapClassificationEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[166].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[185].Descriptor() } func (TableBitmapClassificationEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[166] + return &file_dataplane_proto_sai_common_proto_enumTypes[185] } func (x TableBitmapClassificationEntryAction) Number() protoreflect.EnumNumber { @@ -11425,7 +12632,7 @@ func (x TableBitmapClassificationEntryAction) Number() protoreflect.EnumNumber { // Deprecated: Use TableBitmapClassificationEntryAction.Descriptor instead. func (TableBitmapClassificationEntryAction) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{166} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{185} } type TableBitmapClassificationEntryStat int32 @@ -11461,11 +12668,11 @@ func (x TableBitmapClassificationEntryStat) String() string { } func (TableBitmapClassificationEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[167].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[186].Descriptor() } func (TableBitmapClassificationEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[167] + return &file_dataplane_proto_sai_common_proto_enumTypes[186] } func (x TableBitmapClassificationEntryStat) Number() protoreflect.EnumNumber { @@ -11474,7 +12681,7 @@ func (x TableBitmapClassificationEntryStat) Number() protoreflect.EnumNumber { // Deprecated: Use TableBitmapClassificationEntryStat.Descriptor instead. func (TableBitmapClassificationEntryStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{167} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{186} } type TableBitmapRouterEntryAction int32 @@ -11519,11 +12726,11 @@ func (x TableBitmapRouterEntryAction) String() string { } func (TableBitmapRouterEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[168].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[187].Descriptor() } func (TableBitmapRouterEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[168] + return &file_dataplane_proto_sai_common_proto_enumTypes[187] } func (x TableBitmapRouterEntryAction) Number() protoreflect.EnumNumber { @@ -11532,7 +12739,7 @@ func (x TableBitmapRouterEntryAction) Number() protoreflect.EnumNumber { // Deprecated: Use TableBitmapRouterEntryAction.Descriptor instead. func (TableBitmapRouterEntryAction) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{168} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{187} } type TableBitmapRouterEntryStat int32 @@ -11568,11 +12775,11 @@ func (x TableBitmapRouterEntryStat) String() string { } func (TableBitmapRouterEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[169].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[188].Descriptor() } func (TableBitmapRouterEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[169] + return &file_dataplane_proto_sai_common_proto_enumTypes[188] } func (x TableBitmapRouterEntryStat) Number() protoreflect.EnumNumber { @@ -11581,7 +12788,7 @@ func (x TableBitmapRouterEntryStat) Number() protoreflect.EnumNumber { // Deprecated: Use TableBitmapRouterEntryStat.Descriptor instead. func (TableBitmapRouterEntryStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{169} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{188} } type TableMetaTunnelEntryAction int32 @@ -11617,11 +12824,11 @@ func (x TableMetaTunnelEntryAction) String() string { } func (TableMetaTunnelEntryAction) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[170].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[189].Descriptor() } func (TableMetaTunnelEntryAction) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[170] + return &file_dataplane_proto_sai_common_proto_enumTypes[189] } func (x TableMetaTunnelEntryAction) Number() protoreflect.EnumNumber { @@ -11630,7 +12837,7 @@ func (x TableMetaTunnelEntryAction) Number() protoreflect.EnumNumber { // Deprecated: Use TableMetaTunnelEntryAction.Descriptor instead. func (TableMetaTunnelEntryAction) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{170} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{189} } type TableMetaTunnelEntryStat int32 @@ -11666,11 +12873,11 @@ func (x TableMetaTunnelEntryStat) String() string { } func (TableMetaTunnelEntryStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[171].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[190].Descriptor() } func (TableMetaTunnelEntryStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[171] + return &file_dataplane_proto_sai_common_proto_enumTypes[190] } func (x TableMetaTunnelEntryStat) Number() protoreflect.EnumNumber { @@ -11679,7 +12886,7 @@ func (x TableMetaTunnelEntryStat) Number() protoreflect.EnumNumber { // Deprecated: Use TableMetaTunnelEntryStat.Descriptor instead. func (TableMetaTunnelEntryStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{171} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{190} } type TamBindPointType int32 @@ -11730,11 +12937,11 @@ func (x TamBindPointType) String() string { } func (TamBindPointType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[172].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[191].Descriptor() } func (TamBindPointType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[172] + return &file_dataplane_proto_sai_common_proto_enumTypes[191] } func (x TamBindPointType) Number() protoreflect.EnumNumber { @@ -11743,7 +12950,7 @@ func (x TamBindPointType) Number() protoreflect.EnumNumber { // Deprecated: Use TamBindPointType.Descriptor instead. func (TamBindPointType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{172} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{191} } type TamEventThresholdUnit int32 @@ -11794,11 +13001,11 @@ func (x TamEventThresholdUnit) String() string { } func (TamEventThresholdUnit) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[173].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[192].Descriptor() } func (TamEventThresholdUnit) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[173] + return &file_dataplane_proto_sai_common_proto_enumTypes[192] } func (x TamEventThresholdUnit) Number() protoreflect.EnumNumber { @@ -11807,7 +13014,7 @@ func (x TamEventThresholdUnit) Number() protoreflect.EnumNumber { // Deprecated: Use TamEventThresholdUnit.Descriptor instead. func (TamEventThresholdUnit) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{173} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{192} } type TamEventType int32 @@ -11867,11 +13074,11 @@ func (x TamEventType) String() string { } func (TamEventType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[174].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[193].Descriptor() } func (TamEventType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[174] + return &file_dataplane_proto_sai_common_proto_enumTypes[193] } func (x TamEventType) Number() protoreflect.EnumNumber { @@ -11880,7 +13087,7 @@ func (x TamEventType) Number() protoreflect.EnumNumber { // Deprecated: Use TamEventType.Descriptor instead. func (TamEventType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{174} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{193} } type TamIntPresenceType int32 @@ -11922,11 +13129,11 @@ func (x TamIntPresenceType) String() string { } func (TamIntPresenceType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[175].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[194].Descriptor() } func (TamIntPresenceType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[175] + return &file_dataplane_proto_sai_common_proto_enumTypes[194] } func (x TamIntPresenceType) Number() protoreflect.EnumNumber { @@ -11935,7 +13142,7 @@ func (x TamIntPresenceType) Number() protoreflect.EnumNumber { // Deprecated: Use TamIntPresenceType.Descriptor instead. func (TamIntPresenceType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{175} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{194} } type TamIntType int32 @@ -11989,11 +13196,11 @@ func (x TamIntType) String() string { } func (TamIntType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[176].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[195].Descriptor() } func (TamIntType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[176] + return &file_dataplane_proto_sai_common_proto_enumTypes[195] } func (x TamIntType) Number() protoreflect.EnumNumber { @@ -12002,7 +13209,7 @@ func (x TamIntType) Number() protoreflect.EnumNumber { // Deprecated: Use TamIntType.Descriptor instead. func (TamIntType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{176} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{195} } type TamReportIntervalUnit int32 @@ -12041,11 +13248,11 @@ func (x TamReportIntervalUnit) String() string { } func (TamReportIntervalUnit) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[177].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[196].Descriptor() } func (TamReportIntervalUnit) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[177] + return &file_dataplane_proto_sai_common_proto_enumTypes[196] } func (x TamReportIntervalUnit) Number() protoreflect.EnumNumber { @@ -12054,7 +13261,7 @@ func (x TamReportIntervalUnit) Number() protoreflect.EnumNumber { // Deprecated: Use TamReportIntervalUnit.Descriptor instead. func (TamReportIntervalUnit) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{177} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{196} } type TamReportMode int32 @@ -12090,11 +13297,11 @@ func (x TamReportMode) String() string { } func (TamReportMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[178].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[197].Descriptor() } func (TamReportMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[178] + return &file_dataplane_proto_sai_common_proto_enumTypes[197] } func (x TamReportMode) Number() protoreflect.EnumNumber { @@ -12103,7 +13310,7 @@ func (x TamReportMode) Number() protoreflect.EnumNumber { // Deprecated: Use TamReportMode.Descriptor instead. func (TamReportMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{178} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{197} } type TamReportType int32 @@ -12163,11 +13370,11 @@ func (x TamReportType) String() string { } func (TamReportType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[179].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[198].Descriptor() } func (TamReportType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[179] + return &file_dataplane_proto_sai_common_proto_enumTypes[198] } func (x TamReportType) Number() protoreflect.EnumNumber { @@ -12176,7 +13383,7 @@ func (x TamReportType) Number() protoreflect.EnumNumber { // Deprecated: Use TamReportType.Descriptor instead. func (TamReportType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{179} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{198} } type TamReportingUnit int32 @@ -12218,11 +13425,11 @@ func (x TamReportingUnit) String() string { } func (TamReportingUnit) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[180].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[199].Descriptor() } func (TamReportingUnit) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[180] + return &file_dataplane_proto_sai_common_proto_enumTypes[199] } func (x TamReportingUnit) Number() protoreflect.EnumNumber { @@ -12231,7 +13438,7 @@ func (x TamReportingUnit) Number() protoreflect.EnumNumber { // Deprecated: Use TamReportingUnit.Descriptor instead. func (TamReportingUnit) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{180} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{199} } type TamTelMathFuncType int32 @@ -12279,11 +13486,11 @@ func (x TamTelMathFuncType) String() string { } func (TamTelMathFuncType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[181].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[200].Descriptor() } func (TamTelMathFuncType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[181] + return &file_dataplane_proto_sai_common_proto_enumTypes[200] } func (x TamTelMathFuncType) Number() protoreflect.EnumNumber { @@ -12292,7 +13499,7 @@ func (x TamTelMathFuncType) Number() protoreflect.EnumNumber { // Deprecated: Use TamTelMathFuncType.Descriptor instead. func (TamTelMathFuncType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{181} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{200} } type TamTelemetryType int32 @@ -12340,11 +13547,11 @@ func (x TamTelemetryType) String() string { } func (TamTelemetryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[182].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[201].Descriptor() } func (TamTelemetryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[182] + return &file_dataplane_proto_sai_common_proto_enumTypes[201] } func (x TamTelemetryType) Number() protoreflect.EnumNumber { @@ -12353,7 +13560,7 @@ func (x TamTelemetryType) Number() protoreflect.EnumNumber { // Deprecated: Use TamTelemetryType.Descriptor instead. func (TamTelemetryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{182} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{201} } type TamTransportAuthType int32 @@ -12392,11 +13599,11 @@ func (x TamTransportAuthType) String() string { } func (TamTransportAuthType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[183].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[202].Descriptor() } func (TamTransportAuthType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[183] + return &file_dataplane_proto_sai_common_proto_enumTypes[202] } func (x TamTransportAuthType) Number() protoreflect.EnumNumber { @@ -12405,7 +13612,7 @@ func (x TamTransportAuthType) Number() protoreflect.EnumNumber { // Deprecated: Use TamTransportAuthType.Descriptor instead. func (TamTransportAuthType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{183} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{202} } type TamTransportType int32 @@ -12450,11 +13657,11 @@ func (x TamTransportType) String() string { } func (TamTransportType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[184].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[203].Descriptor() } func (TamTransportType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[184] + return &file_dataplane_proto_sai_common_proto_enumTypes[203] } func (x TamTransportType) Number() protoreflect.EnumNumber { @@ -12463,7 +13670,7 @@ func (x TamTransportType) Number() protoreflect.EnumNumber { // Deprecated: Use TamTransportType.Descriptor instead. func (TamTransportType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{184} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{203} } type TlvType int32 @@ -12505,11 +13712,11 @@ func (x TlvType) String() string { } func (TlvType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[185].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[204].Descriptor() } func (TlvType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[185] + return &file_dataplane_proto_sai_common_proto_enumTypes[204] } func (x TlvType) Number() protoreflect.EnumNumber { @@ -12518,7 +13725,7 @@ func (x TlvType) Number() protoreflect.EnumNumber { // Deprecated: Use TlvType.Descriptor instead. func (TlvType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{185} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{204} } type TunnelDecapEcnMode int32 @@ -12557,11 +13764,11 @@ func (x TunnelDecapEcnMode) String() string { } func (TunnelDecapEcnMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[186].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[205].Descriptor() } func (TunnelDecapEcnMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[186] + return &file_dataplane_proto_sai_common_proto_enumTypes[205] } func (x TunnelDecapEcnMode) Number() protoreflect.EnumNumber { @@ -12570,7 +13777,7 @@ func (x TunnelDecapEcnMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelDecapEcnMode.Descriptor instead. func (TunnelDecapEcnMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{186} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{205} } type TunnelDscpMode int32 @@ -12606,11 +13813,11 @@ func (x TunnelDscpMode) String() string { } func (TunnelDscpMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[187].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[206].Descriptor() } func (TunnelDscpMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[187] + return &file_dataplane_proto_sai_common_proto_enumTypes[206] } func (x TunnelDscpMode) Number() protoreflect.EnumNumber { @@ -12619,7 +13826,7 @@ func (x TunnelDscpMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelDscpMode.Descriptor instead. func (TunnelDscpMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{187} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{206} } type TunnelEncapEcnMode int32 @@ -12655,11 +13862,11 @@ func (x TunnelEncapEcnMode) String() string { } func (TunnelEncapEcnMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[188].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[207].Descriptor() } func (TunnelEncapEcnMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[188] + return &file_dataplane_proto_sai_common_proto_enumTypes[207] } func (x TunnelEncapEcnMode) Number() protoreflect.EnumNumber { @@ -12668,7 +13875,7 @@ func (x TunnelEncapEcnMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelEncapEcnMode.Descriptor instead. func (TunnelEncapEcnMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{188} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{207} } type TunnelMapType int32 @@ -12743,11 +13950,11 @@ func (x TunnelMapType) String() string { } func (TunnelMapType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[189].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[208].Descriptor() } func (TunnelMapType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[189] + return &file_dataplane_proto_sai_common_proto_enumTypes[208] } func (x TunnelMapType) Number() protoreflect.EnumNumber { @@ -12756,7 +13963,7 @@ func (x TunnelMapType) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelMapType.Descriptor instead. func (TunnelMapType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{189} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{208} } type TunnelPeerMode int32 @@ -12792,11 +13999,11 @@ func (x TunnelPeerMode) String() string { } func (TunnelPeerMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[190].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[209].Descriptor() } func (TunnelPeerMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[190] + return &file_dataplane_proto_sai_common_proto_enumTypes[209] } func (x TunnelPeerMode) Number() protoreflect.EnumNumber { @@ -12805,7 +14012,7 @@ func (x TunnelPeerMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelPeerMode.Descriptor instead. func (TunnelPeerMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{190} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{209} } type TunnelStat int32 @@ -12847,11 +14054,11 @@ func (x TunnelStat) String() string { } func (TunnelStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[191].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[210].Descriptor() } func (TunnelStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[191] + return &file_dataplane_proto_sai_common_proto_enumTypes[210] } func (x TunnelStat) Number() protoreflect.EnumNumber { @@ -12860,7 +14067,7 @@ func (x TunnelStat) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelStat.Descriptor instead. func (TunnelStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{191} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{210} } type TunnelTermTableEntryType int32 @@ -12902,11 +14109,11 @@ func (x TunnelTermTableEntryType) String() string { } func (TunnelTermTableEntryType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[192].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[211].Descriptor() } func (TunnelTermTableEntryType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[192] + return &file_dataplane_proto_sai_common_proto_enumTypes[211] } func (x TunnelTermTableEntryType) Number() protoreflect.EnumNumber { @@ -12915,7 +14122,7 @@ func (x TunnelTermTableEntryType) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelTermTableEntryType.Descriptor instead. func (TunnelTermTableEntryType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{192} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{211} } type TunnelTtlMode int32 @@ -12951,11 +14158,11 @@ func (x TunnelTtlMode) String() string { } func (TunnelTtlMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[193].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[212].Descriptor() } func (TunnelTtlMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[193] + return &file_dataplane_proto_sai_common_proto_enumTypes[212] } func (x TunnelTtlMode) Number() protoreflect.EnumNumber { @@ -12964,7 +14171,7 @@ func (x TunnelTtlMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelTtlMode.Descriptor instead. func (TunnelTtlMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{193} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{212} } type TunnelType int32 @@ -13021,11 +14228,11 @@ func (x TunnelType) String() string { } func (TunnelType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[194].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[213].Descriptor() } func (TunnelType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[194] + return &file_dataplane_proto_sai_common_proto_enumTypes[213] } func (x TunnelType) Number() protoreflect.EnumNumber { @@ -13034,7 +14241,7 @@ func (x TunnelType) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelType.Descriptor instead. func (TunnelType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{194} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{213} } type TunnelVxlanUdpSportMode int32 @@ -13070,11 +14277,11 @@ func (x TunnelVxlanUdpSportMode) String() string { } func (TunnelVxlanUdpSportMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[195].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[214].Descriptor() } func (TunnelVxlanUdpSportMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[195] + return &file_dataplane_proto_sai_common_proto_enumTypes[214] } func (x TunnelVxlanUdpSportMode) Number() protoreflect.EnumNumber { @@ -13083,7 +14290,7 @@ func (x TunnelVxlanUdpSportMode) Number() protoreflect.EnumNumber { // Deprecated: Use TunnelVxlanUdpSportMode.Descriptor instead. func (TunnelVxlanUdpSportMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{195} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{214} } type UdfBase int32 @@ -13122,11 +14329,11 @@ func (x UdfBase) String() string { } func (UdfBase) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[196].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[215].Descriptor() } func (UdfBase) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[196] + return &file_dataplane_proto_sai_common_proto_enumTypes[215] } func (x UdfBase) Number() protoreflect.EnumNumber { @@ -13135,7 +14342,7 @@ func (x UdfBase) Number() protoreflect.EnumNumber { // Deprecated: Use UdfBase.Descriptor instead. func (UdfBase) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{196} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{215} } type UdfGroupType int32 @@ -13177,11 +14384,11 @@ func (x UdfGroupType) String() string { } func (UdfGroupType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[197].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[216].Descriptor() } func (UdfGroupType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[197] + return &file_dataplane_proto_sai_common_proto_enumTypes[216] } func (x UdfGroupType) Number() protoreflect.EnumNumber { @@ -13190,7 +14397,7 @@ func (x UdfGroupType) Number() protoreflect.EnumNumber { // Deprecated: Use UdfGroupType.Descriptor instead. func (UdfGroupType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{197} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{216} } type VlanFloodControlType int32 @@ -13232,11 +14439,11 @@ func (x VlanFloodControlType) String() string { } func (VlanFloodControlType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[198].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[217].Descriptor() } func (VlanFloodControlType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[198] + return &file_dataplane_proto_sai_common_proto_enumTypes[217] } func (x VlanFloodControlType) Number() protoreflect.EnumNumber { @@ -13245,7 +14452,7 @@ func (x VlanFloodControlType) Number() protoreflect.EnumNumber { // Deprecated: Use VlanFloodControlType.Descriptor instead. func (VlanFloodControlType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{198} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{217} } type VlanMcastLookupKeyType int32 @@ -13287,11 +14494,11 @@ func (x VlanMcastLookupKeyType) String() string { } func (VlanMcastLookupKeyType) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[199].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[218].Descriptor() } func (VlanMcastLookupKeyType) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[199] + return &file_dataplane_proto_sai_common_proto_enumTypes[218] } func (x VlanMcastLookupKeyType) Number() protoreflect.EnumNumber { @@ -13300,7 +14507,7 @@ func (x VlanMcastLookupKeyType) Number() protoreflect.EnumNumber { // Deprecated: Use VlanMcastLookupKeyType.Descriptor instead. func (VlanMcastLookupKeyType) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{199} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{218} } type VlanStat int32 @@ -13372,11 +14579,11 @@ func (x VlanStat) String() string { } func (VlanStat) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[200].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[219].Descriptor() } func (VlanStat) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[200] + return &file_dataplane_proto_sai_common_proto_enumTypes[219] } func (x VlanStat) Number() protoreflect.EnumNumber { @@ -13385,7 +14592,7 @@ func (x VlanStat) Number() protoreflect.EnumNumber { // Deprecated: Use VlanStat.Descriptor instead. func (VlanStat) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{200} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{219} } type VlanTaggingMode int32 @@ -13424,11 +14631,11 @@ func (x VlanTaggingMode) String() string { } func (VlanTaggingMode) Descriptor() protoreflect.EnumDescriptor { - return file_dataplane_proto_sai_common_proto_enumTypes[201].Descriptor() + return file_dataplane_proto_sai_common_proto_enumTypes[220].Descriptor() } func (VlanTaggingMode) Type() protoreflect.EnumType { - return &file_dataplane_proto_sai_common_proto_enumTypes[201] + return &file_dataplane_proto_sai_common_proto_enumTypes[220] } func (x VlanTaggingMode) Number() protoreflect.EnumNumber { @@ -13437,7 +14644,7 @@ func (x VlanTaggingMode) Number() protoreflect.EnumNumber { // Deprecated: Use VlanTaggingMode.Descriptor instead. func (VlanTaggingMode) EnumDescriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{201} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{220} } type AclActionData struct { @@ -18839,6 +20046,8 @@ type BfdSessionAttribute struct { RemoteDiag *uint32 `protobuf:"varint,39,opt,name=remote_diag,json=remoteDiag,proto3,oneof" json:"remote_diag,omitempty"` RemoteMultiplier *uint32 `protobuf:"varint,40,opt,name=remote_multiplier,json=remoteMultiplier,proto3,oneof" json:"remote_multiplier,omitempty"` Srv6SidlistId *uint64 `protobuf:"varint,41,opt,name=srv6_sidlist_id,json=srv6SidlistId,proto3,oneof" json:"srv6_sidlist_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,42,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,43,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -19160,6 +20369,20 @@ func (x *BfdSessionAttribute) GetSrv6SidlistId() uint64 { return 0 } +func (x *BfdSessionAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *BfdSessionAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type BridgeAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *BridgeType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.BridgeType,oneof" json:"type,omitempty"` @@ -19172,6 +20395,8 @@ type BridgeAttribute struct { UnknownMulticastFloodGroup *uint64 `protobuf:"varint,8,opt,name=unknown_multicast_flood_group,json=unknownMulticastFloodGroup,proto3,oneof" json:"unknown_multicast_flood_group,omitempty"` BroadcastFloodControlType *BridgeFloodControlType `protobuf:"varint,9,opt,name=broadcast_flood_control_type,json=broadcastFloodControlType,proto3,enum=lemming.dataplane.sai.BridgeFloodControlType,oneof" json:"broadcast_flood_control_type,omitempty"` BroadcastFloodGroup *uint64 `protobuf:"varint,10,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,11,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,12,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -19276,6 +20501,20 @@ func (x *BridgeAttribute) GetBroadcastFloodGroup() uint64 { return 0 } +func (x *BridgeAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *BridgeAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type BridgePortAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *BridgePortType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.BridgePortType,oneof" json:"type,omitempty"` @@ -19292,6 +20531,8 @@ type BridgePortAttribute struct { IngressFiltering *bool `protobuf:"varint,12,opt,name=ingress_filtering,json=ingressFiltering,proto3,oneof" json:"ingress_filtering,omitempty"` EgressFiltering *bool `protobuf:"varint,13,opt,name=egress_filtering,json=egressFiltering,proto3,oneof" json:"egress_filtering,omitempty"` IsolationGroup *uint64 `protobuf:"varint,14,opt,name=isolation_group,json=isolationGroup,proto3,oneof" json:"isolation_group,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,15,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,16,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -19424,17 +20665,33 @@ func (x *BridgePortAttribute) GetIsolationGroup() uint64 { return 0 } +func (x *BridgePortAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *BridgePortAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type BufferPoolAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - SharedSize *uint64 `protobuf:"varint,1,opt,name=shared_size,json=sharedSize,proto3,oneof" json:"shared_size,omitempty"` - Type *BufferPoolType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.BufferPoolType,oneof" json:"type,omitempty"` - Size *uint64 `protobuf:"varint,3,opt,name=size,proto3,oneof" json:"size,omitempty"` - ThresholdMode *BufferPoolThresholdMode `protobuf:"varint,4,opt,name=threshold_mode,json=thresholdMode,proto3,enum=lemming.dataplane.sai.BufferPoolThresholdMode,oneof" json:"threshold_mode,omitempty"` - Tam []uint64 `protobuf:"varint,5,rep,packed,name=tam,proto3" json:"tam,omitempty"` - XoffSize *uint64 `protobuf:"varint,6,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` - WredProfileId *uint64 `protobuf:"varint,7,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SharedSize *uint64 `protobuf:"varint,1,opt,name=shared_size,json=sharedSize,proto3,oneof" json:"shared_size,omitempty"` + Type *BufferPoolType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.BufferPoolType,oneof" json:"type,omitempty"` + Size *uint64 `protobuf:"varint,3,opt,name=size,proto3,oneof" json:"size,omitempty"` + ThresholdMode *BufferPoolThresholdMode `protobuf:"varint,4,opt,name=threshold_mode,json=thresholdMode,proto3,enum=lemming.dataplane.sai.BufferPoolThresholdMode,oneof" json:"threshold_mode,omitempty"` + Tam []uint64 `protobuf:"varint,5,rep,packed,name=tam,proto3" json:"tam,omitempty"` + XoffSize *uint64 `protobuf:"varint,6,opt,name=xoff_size,json=xoffSize,proto3,oneof" json:"xoff_size,omitempty"` + WredProfileId *uint64 `protobuf:"varint,7,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,8,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,9,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BufferPoolAttribute) Reset() { @@ -19516,6 +20773,20 @@ func (x *BufferPoolAttribute) GetWredProfileId() uint64 { return 0 } +func (x *BufferPoolAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *BufferPoolAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type BufferProfileAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` PoolId *uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3,oneof" json:"pool_id,omitempty"` @@ -19617,11 +20888,15 @@ func (x *BufferProfileAttribute) GetXonOffsetTh() uint64 { } type CounterAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - Type *CounterType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.CounterType,oneof" json:"type,omitempty"` - Label []byte `protobuf:"bytes,2,opt,name=label,proto3,oneof" json:"label,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type *CounterType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.CounterType,oneof" json:"type,omitempty"` + Label []byte `protobuf:"bytes,2,opt,name=label,proto3,oneof" json:"label,omitempty"` + EnablePacketCount *bool `protobuf:"varint,3,opt,name=enable_packet_count,json=enablePacketCount,proto3,oneof" json:"enable_packet_count,omitempty"` + EnableByteCount *bool `protobuf:"varint,4,opt,name=enable_byte_count,json=enableByteCount,proto3,oneof" json:"enable_byte_count,omitempty"` + ObjectType *ObjectType `protobuf:"varint,5,opt,name=object_type,json=objectType,proto3,enum=lemming.dataplane.sai.ObjectType,oneof" json:"object_type,omitempty"` + StatIdList []int32 `protobuf:"varint,6,rep,packed,name=stat_id_list,json=statIdList,proto3" json:"stat_id_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CounterAttribute) Reset() { @@ -19668,6 +20943,34 @@ func (x *CounterAttribute) GetLabel() []byte { return nil } +func (x *CounterAttribute) GetEnablePacketCount() bool { + if x != nil && x.EnablePacketCount != nil { + return *x.EnablePacketCount + } + return false +} + +func (x *CounterAttribute) GetEnableByteCount() bool { + if x != nil && x.EnableByteCount != nil { + return *x.EnableByteCount + } + return false +} + +func (x *CounterAttribute) GetObjectType() ObjectType { + if x != nil && x.ObjectType != nil { + return *x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNSPECIFIED +} + +func (x *CounterAttribute) GetStatIdList() []int32 { + if x != nil { + return x.StatIdList + } + return nil +} + type DebugCounterAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Index *uint32 `protobuf:"varint,1,opt,name=index,proto3,oneof" json:"index,omitempty"` @@ -21000,19 +22303,209 @@ func (x *HostifUserDefinedTrapAttribute) GetTrapGroup() uint64 { return 0 } +type IcmpEchoSessionAttribute struct { + state protoimpl.MessageState `protogen:"open.v1"` + HwLookupValid *bool `protobuf:"varint,1,opt,name=hw_lookup_valid,json=hwLookupValid,proto3,oneof" json:"hw_lookup_valid,omitempty"` + VirtualRouter *uint64 `protobuf:"varint,2,opt,name=virtual_router,json=virtualRouter,proto3,oneof" json:"virtual_router,omitempty"` + Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` + RxPort *uint64 `protobuf:"varint,4,opt,name=rx_port,json=rxPort,proto3,oneof" json:"rx_port,omitempty"` + Guid *uint64 `protobuf:"varint,5,opt,name=guid,proto3,oneof" json:"guid,omitempty"` + Cookie *uint32 `protobuf:"varint,6,opt,name=cookie,proto3,oneof" json:"cookie,omitempty"` + IphdrVersion *uint32 `protobuf:"varint,7,opt,name=iphdr_version,json=iphdrVersion,proto3,oneof" json:"iphdr_version,omitempty"` + Tos *uint32 `protobuf:"varint,8,opt,name=tos,proto3,oneof" json:"tos,omitempty"` + Ttl *uint32 `protobuf:"varint,9,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + SrcIpAddress []byte `protobuf:"bytes,10,opt,name=src_ip_address,json=srcIpAddress,proto3,oneof" json:"src_ip_address,omitempty"` + DstIpAddress []byte `protobuf:"bytes,11,opt,name=dst_ip_address,json=dstIpAddress,proto3,oneof" json:"dst_ip_address,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,12,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + DstMacAddress []byte `protobuf:"bytes,13,opt,name=dst_mac_address,json=dstMacAddress,proto3,oneof" json:"dst_mac_address,omitempty"` + TxInterval *uint32 `protobuf:"varint,14,opt,name=tx_interval,json=txInterval,proto3,oneof" json:"tx_interval,omitempty"` + RxInterval *uint32 `protobuf:"varint,15,opt,name=rx_interval,json=rxInterval,proto3,oneof" json:"rx_interval,omitempty"` + SetNextHopGroupSwitchover *bool `protobuf:"varint,16,opt,name=set_next_hop_group_switchover,json=setNextHopGroupSwitchover,proto3,oneof" json:"set_next_hop_group_switchover,omitempty"` + State *IcmpEchoSessionState `protobuf:"varint,17,opt,name=state,proto3,enum=lemming.dataplane.sai.IcmpEchoSessionState,oneof" json:"state,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,18,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,19,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *IcmpEchoSessionAttribute) Reset() { + *x = IcmpEchoSessionAttribute{} + mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *IcmpEchoSessionAttribute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IcmpEchoSessionAttribute) ProtoMessage() {} + +func (x *IcmpEchoSessionAttribute) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use IcmpEchoSessionAttribute.ProtoReflect.Descriptor instead. +func (*IcmpEchoSessionAttribute) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} +} + +func (x *IcmpEchoSessionAttribute) GetHwLookupValid() bool { + if x != nil && x.HwLookupValid != nil { + return *x.HwLookupValid + } + return false +} + +func (x *IcmpEchoSessionAttribute) GetVirtualRouter() uint64 { + if x != nil && x.VirtualRouter != nil { + return *x.VirtualRouter + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetPort() uint64 { + if x != nil && x.Port != nil { + return *x.Port + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetRxPort() uint64 { + if x != nil && x.RxPort != nil { + return *x.RxPort + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetGuid() uint64 { + if x != nil && x.Guid != nil { + return *x.Guid + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetCookie() uint32 { + if x != nil && x.Cookie != nil { + return *x.Cookie + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetIphdrVersion() uint32 { + if x != nil && x.IphdrVersion != nil { + return *x.IphdrVersion + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetTos() uint32 { + if x != nil && x.Tos != nil { + return *x.Tos + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetSrcIpAddress() []byte { + if x != nil { + return x.SrcIpAddress + } + return nil +} + +func (x *IcmpEchoSessionAttribute) GetDstIpAddress() []byte { + if x != nil { + return x.DstIpAddress + } + return nil +} + +func (x *IcmpEchoSessionAttribute) GetSrcMacAddress() []byte { + if x != nil { + return x.SrcMacAddress + } + return nil +} + +func (x *IcmpEchoSessionAttribute) GetDstMacAddress() []byte { + if x != nil { + return x.DstMacAddress + } + return nil +} + +func (x *IcmpEchoSessionAttribute) GetTxInterval() uint32 { + if x != nil && x.TxInterval != nil { + return *x.TxInterval + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetRxInterval() uint32 { + if x != nil && x.RxInterval != nil { + return *x.RxInterval + } + return 0 +} + +func (x *IcmpEchoSessionAttribute) GetSetNextHopGroupSwitchover() bool { + if x != nil && x.SetNextHopGroupSwitchover != nil { + return *x.SetNextHopGroupSwitchover + } + return false +} + +func (x *IcmpEchoSessionAttribute) GetState() IcmpEchoSessionState { + if x != nil && x.State != nil { + return *x.State + } + return IcmpEchoSessionState_ICMP_ECHO_SESSION_STATE_UNSPECIFIED +} + +func (x *IcmpEchoSessionAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *IcmpEchoSessionAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type IngressPriorityGroupAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - BufferProfile *uint64 `protobuf:"varint,1,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` - Port *uint64 `protobuf:"varint,2,opt,name=port,proto3,oneof" json:"port,omitempty"` - Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` - Index *uint32 `protobuf:"varint,4,opt,name=index,proto3,oneof" json:"index,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BufferProfile *uint64 `protobuf:"varint,1,opt,name=buffer_profile,json=bufferProfile,proto3,oneof" json:"buffer_profile,omitempty"` + Port *uint64 `protobuf:"varint,2,opt,name=port,proto3,oneof" json:"port,omitempty"` + Tam []uint64 `protobuf:"varint,3,rep,packed,name=tam,proto3" json:"tam,omitempty"` + Index *uint32 `protobuf:"varint,4,opt,name=index,proto3,oneof" json:"index,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,5,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,6,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *IngressPriorityGroupAttribute) Reset() { *x = IngressPriorityGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21024,7 +22517,7 @@ func (x *IngressPriorityGroupAttribute) String() string { func (*IngressPriorityGroupAttribute) ProtoMessage() {} func (x *IngressPriorityGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[69] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[70] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21037,7 +22530,7 @@ func (x *IngressPriorityGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IngressPriorityGroupAttribute.ProtoReflect.Descriptor instead. func (*IngressPriorityGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{69} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} } func (x *IngressPriorityGroupAttribute) GetBufferProfile() uint64 { @@ -21068,6 +22561,20 @@ func (x *IngressPriorityGroupAttribute) GetIndex() uint32 { return 0 } +func (x *IngressPriorityGroupAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *IngressPriorityGroupAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type InsegEntryAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` NumOfPop *uint32 `protobuf:"varint,1,opt,name=num_of_pop,json=numOfPop,proto3,oneof" json:"num_of_pop,omitempty"` @@ -21087,7 +22594,7 @@ type InsegEntryAttribute struct { func (x *InsegEntryAttribute) Reset() { *x = InsegEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[70] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21099,7 +22606,7 @@ func (x *InsegEntryAttribute) String() string { func (*InsegEntryAttribute) ProtoMessage() {} func (x *InsegEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[70] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[71] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21112,7 +22619,7 @@ func (x *InsegEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use InsegEntryAttribute.ProtoReflect.Descriptor instead. func (*InsegEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{70} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} } func (x *InsegEntryAttribute) GetNumOfPop() uint32 { @@ -21204,7 +22711,7 @@ type IpmcEntryAttribute struct { func (x *IpmcEntryAttribute) Reset() { *x = IpmcEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[71] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21216,7 +22723,7 @@ func (x *IpmcEntryAttribute) String() string { func (*IpmcEntryAttribute) ProtoMessage() {} func (x *IpmcEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[71] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[72] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21229,7 +22736,7 @@ func (x *IpmcEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpmcEntryAttribute.ProtoReflect.Descriptor instead. func (*IpmcEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{71} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} } func (x *IpmcEntryAttribute) GetPacketAction() PacketAction { @@ -21270,7 +22777,7 @@ type IpmcGroupAttribute struct { func (x *IpmcGroupAttribute) Reset() { *x = IpmcGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[72] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21282,7 +22789,7 @@ func (x *IpmcGroupAttribute) String() string { func (*IpmcGroupAttribute) ProtoMessage() {} func (x *IpmcGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[72] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[73] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21295,7 +22802,7 @@ func (x *IpmcGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpmcGroupAttribute.ProtoReflect.Descriptor instead. func (*IpmcGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{72} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} } func (x *IpmcGroupAttribute) GetIpmcOutputCount() uint32 { @@ -21322,7 +22829,7 @@ type IpmcGroupMemberAttribute struct { func (x *IpmcGroupMemberAttribute) Reset() { *x = IpmcGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[73] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21334,7 +22841,7 @@ func (x *IpmcGroupMemberAttribute) String() string { func (*IpmcGroupMemberAttribute) ProtoMessage() {} func (x *IpmcGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[73] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[74] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21347,7 +22854,7 @@ func (x *IpmcGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpmcGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*IpmcGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{73} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} } func (x *IpmcGroupMemberAttribute) GetIpmcGroupId() uint64 { @@ -21392,7 +22899,7 @@ type IpsecAttribute struct { func (x *IpsecAttribute) Reset() { *x = IpsecAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[74] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21404,7 +22911,7 @@ func (x *IpsecAttribute) String() string { func (*IpsecAttribute) ProtoMessage() {} func (x *IpsecAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[74] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[75] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21417,7 +22924,7 @@ func (x *IpsecAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpsecAttribute.ProtoReflect.Descriptor instead. func (*IpsecAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{74} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} } func (x *IpsecAttribute) GetTermRemoteIpMatchSupported() bool { @@ -21568,13 +23075,15 @@ type IpsecPortAttribute struct { NativeVlanId *uint32 `protobuf:"varint,4,opt,name=native_vlan_id,json=nativeVlanId,proto3,oneof" json:"native_vlan_id,omitempty"` VrfFromPacketVlanEnable *bool `protobuf:"varint,5,opt,name=vrf_from_packet_vlan_enable,json=vrfFromPacketVlanEnable,proto3,oneof" json:"vrf_from_packet_vlan_enable,omitempty"` SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,6,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,7,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,8,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *IpsecPortAttribute) Reset() { *x = IpsecPortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[75] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21586,7 +23095,7 @@ func (x *IpsecPortAttribute) String() string { func (*IpsecPortAttribute) ProtoMessage() {} func (x *IpsecPortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[75] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[76] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21599,7 +23108,7 @@ func (x *IpsecPortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpsecPortAttribute.ProtoReflect.Descriptor instead. func (*IpsecPortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{75} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} } func (x *IpsecPortAttribute) GetPortId() uint64 { @@ -21644,6 +23153,20 @@ func (x *IpsecPortAttribute) GetSwitchSwitchingMode() SwitchSwitchingMode { return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *IpsecPortAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *IpsecPortAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type IpsecSaAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` IpsecDirection *IpsecDirection `protobuf:"varint,1,opt,name=ipsec_direction,json=ipsecDirection,proto3,enum=lemming.dataplane.sai.IpsecDirection,oneof" json:"ipsec_direction,omitempty"` @@ -21667,13 +23190,15 @@ type IpsecSaAttribute struct { TermSrcIp []byte `protobuf:"bytes,19,opt,name=term_src_ip,json=termSrcIp,proto3,oneof" json:"term_src_ip,omitempty"` EgressEsn *uint64 `protobuf:"varint,20,opt,name=egress_esn,json=egressEsn,proto3,oneof" json:"egress_esn,omitempty"` MinimumIngressEsn *uint64 `protobuf:"varint,21,opt,name=minimum_ingress_esn,json=minimumIngressEsn,proto3,oneof" json:"minimum_ingress_esn,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,22,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,23,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *IpsecSaAttribute) Reset() { *x = IpsecSaAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[76] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21685,7 +23210,7 @@ func (x *IpsecSaAttribute) String() string { func (*IpsecSaAttribute) ProtoMessage() {} func (x *IpsecSaAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[76] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[77] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21698,7 +23223,7 @@ func (x *IpsecSaAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IpsecSaAttribute.ProtoReflect.Descriptor instead. func (*IpsecSaAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{76} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} } func (x *IpsecSaAttribute) GetIpsecDirection() IpsecDirection { @@ -21848,6 +23373,20 @@ func (x *IpsecSaAttribute) GetMinimumIngressEsn() uint64 { return 0 } +func (x *IpsecSaAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *IpsecSaAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type IsolationGroupAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *IsolationGroupType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.IsolationGroupType,oneof" json:"type,omitempty"` @@ -21858,7 +23397,7 @@ type IsolationGroupAttribute struct { func (x *IsolationGroupAttribute) Reset() { *x = IsolationGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[77] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21870,7 +23409,7 @@ func (x *IsolationGroupAttribute) String() string { func (*IsolationGroupAttribute) ProtoMessage() {} func (x *IsolationGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[77] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[78] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21883,7 +23422,7 @@ func (x *IsolationGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IsolationGroupAttribute.ProtoReflect.Descriptor instead. func (*IsolationGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{77} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} } func (x *IsolationGroupAttribute) GetType() IsolationGroupType { @@ -21910,7 +23449,7 @@ type IsolationGroupMemberAttribute struct { func (x *IsolationGroupMemberAttribute) Reset() { *x = IsolationGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[78] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21922,7 +23461,7 @@ func (x *IsolationGroupMemberAttribute) String() string { func (*IsolationGroupMemberAttribute) ProtoMessage() {} func (x *IsolationGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[78] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[79] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21935,7 +23474,7 @@ func (x *IsolationGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use IsolationGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*IsolationGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{78} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} } func (x *IsolationGroupMemberAttribute) GetIsolationGroupId() uint64 { @@ -21962,7 +23501,7 @@ type L2McEntryAttribute struct { func (x *L2McEntryAttribute) Reset() { *x = L2McEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[79] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -21974,7 +23513,7 @@ func (x *L2McEntryAttribute) String() string { func (*L2McEntryAttribute) ProtoMessage() {} func (x *L2McEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[79] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[80] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -21987,7 +23526,7 @@ func (x *L2McEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use L2McEntryAttribute.ProtoReflect.Descriptor instead. func (*L2McEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{79} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} } func (x *L2McEntryAttribute) GetPacketAction() PacketAction { @@ -22014,7 +23553,7 @@ type L2McGroupAttribute struct { func (x *L2McGroupAttribute) Reset() { *x = L2McGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[80] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22026,7 +23565,7 @@ func (x *L2McGroupAttribute) String() string { func (*L2McGroupAttribute) ProtoMessage() {} func (x *L2McGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[80] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[81] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22039,7 +23578,7 @@ func (x *L2McGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use L2McGroupAttribute.ProtoReflect.Descriptor instead. func (*L2McGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{80} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} } func (x *L2McGroupAttribute) GetL2McOutputCount() uint32 { @@ -22067,7 +23606,7 @@ type L2McGroupMemberAttribute struct { func (x *L2McGroupMemberAttribute) Reset() { *x = L2McGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[81] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22079,7 +23618,7 @@ func (x *L2McGroupMemberAttribute) String() string { func (*L2McGroupMemberAttribute) ProtoMessage() {} func (x *L2McGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[81] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[82] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22092,7 +23631,7 @@ func (x *L2McGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use L2McGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*L2McGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{81} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} } func (x *L2McGroupMemberAttribute) GetL2McGroupId() uint64 { @@ -22137,7 +23676,7 @@ type LagAttribute struct { func (x *LagAttribute) Reset() { *x = LagAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[82] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22149,7 +23688,7 @@ func (x *LagAttribute) String() string { func (*LagAttribute) ProtoMessage() {} func (x *LagAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[82] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[83] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22162,7 +23701,7 @@ func (x *LagAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use LagAttribute.ProtoReflect.Descriptor instead. func (*LagAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{82} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} } func (x *LagAttribute) GetPortList() []uint64 { @@ -22268,7 +23807,7 @@ type LagMemberAttribute struct { func (x *LagMemberAttribute) Reset() { *x = LagMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[83] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22280,7 +23819,7 @@ func (x *LagMemberAttribute) String() string { func (*LagMemberAttribute) ProtoMessage() {} func (x *LagMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[83] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[84] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22293,7 +23832,7 @@ func (x *LagMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use LagMemberAttribute.ProtoReflect.Descriptor instead. func (*LagMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{83} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} } func (x *LagMemberAttribute) GetLagId() uint64 { @@ -22358,7 +23897,7 @@ type MacsecAttribute struct { func (x *MacsecAttribute) Reset() { *x = MacsecAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[84] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22370,7 +23909,7 @@ func (x *MacsecAttribute) String() string { func (*MacsecAttribute) ProtoMessage() {} func (x *MacsecAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[84] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[85] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22383,7 +23922,7 @@ func (x *MacsecAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MacsecAttribute.ProtoReflect.Descriptor instead. func (*MacsecAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{84} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} } func (x *MacsecAttribute) GetDirection() MacsecDirection { @@ -22569,17 +24108,19 @@ func (x *MacsecAttribute) GetMaxSecureAssociationsPerSc() MacsecMaxSecureAssocia } type MacsecFlowAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - MacsecDirection *MacsecDirection `protobuf:"varint,1,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` - AclEntryList []uint64 `protobuf:"varint,2,rep,packed,name=acl_entry_list,json=aclEntryList,proto3" json:"acl_entry_list,omitempty"` - ScList []uint64 `protobuf:"varint,3,rep,packed,name=sc_list,json=scList,proto3" json:"sc_list,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MacsecDirection *MacsecDirection `protobuf:"varint,1,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` + AclEntryList []uint64 `protobuf:"varint,2,rep,packed,name=acl_entry_list,json=aclEntryList,proto3" json:"acl_entry_list,omitempty"` + ScList []uint64 `protobuf:"varint,3,rep,packed,name=sc_list,json=scList,proto3" json:"sc_list,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,4,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,5,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacsecFlowAttribute) Reset() { *x = MacsecFlowAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[85] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22591,7 +24132,7 @@ func (x *MacsecFlowAttribute) String() string { func (*MacsecFlowAttribute) ProtoMessage() {} func (x *MacsecFlowAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[85] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[86] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22604,7 +24145,7 @@ func (x *MacsecFlowAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MacsecFlowAttribute.ProtoReflect.Descriptor instead. func (*MacsecFlowAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{85} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} } func (x *MacsecFlowAttribute) GetMacsecDirection() MacsecDirection { @@ -22628,20 +24169,36 @@ func (x *MacsecFlowAttribute) GetScList() []uint64 { return nil } +func (x *MacsecFlowAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *MacsecFlowAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type MacsecPortAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - MacsecDirection *MacsecDirection `protobuf:"varint,1,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` - PortId *uint64 `protobuf:"varint,2,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` - CtagEnable *bool `protobuf:"varint,3,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` - StagEnable *bool `protobuf:"varint,4,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` - SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,5,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MacsecDirection *MacsecDirection `protobuf:"varint,1,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` + PortId *uint64 `protobuf:"varint,2,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` + CtagEnable *bool `protobuf:"varint,3,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` + StagEnable *bool `protobuf:"varint,4,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` + SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,5,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,6,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,7,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MacsecPortAttribute) Reset() { *x = MacsecPortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[86] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22653,7 +24210,7 @@ func (x *MacsecPortAttribute) String() string { func (*MacsecPortAttribute) ProtoMessage() {} func (x *MacsecPortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[86] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[87] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22666,7 +24223,7 @@ func (x *MacsecPortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MacsecPortAttribute.ProtoReflect.Descriptor instead. func (*MacsecPortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{86} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} } func (x *MacsecPortAttribute) GetMacsecDirection() MacsecDirection { @@ -22704,6 +24261,20 @@ func (x *MacsecPortAttribute) GetSwitchSwitchingMode() SwitchSwitchingMode { return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *MacsecPortAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *MacsecPortAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type MacsecSaAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` MacsecDirection *MacsecDirection `protobuf:"varint,1,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` @@ -22722,7 +24293,7 @@ type MacsecSaAttribute struct { func (x *MacsecSaAttribute) Reset() { *x = MacsecSaAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[87] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22734,7 +24305,7 @@ func (x *MacsecSaAttribute) String() string { func (*MacsecSaAttribute) ProtoMessage() {} func (x *MacsecSaAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[87] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[88] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22747,7 +24318,7 @@ func (x *MacsecSaAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MacsecSaAttribute.ProtoReflect.Descriptor instead. func (*MacsecSaAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{87} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} } func (x *MacsecSaAttribute) GetMacsecDirection() MacsecDirection { @@ -22839,7 +24410,7 @@ type MacsecScAttribute struct { func (x *MacsecScAttribute) Reset() { *x = MacsecScAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[88] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22851,7 +24422,7 @@ func (x *MacsecScAttribute) String() string { func (*MacsecScAttribute) ProtoMessage() {} func (x *MacsecScAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[88] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[89] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22864,7 +24435,7 @@ func (x *MacsecScAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MacsecScAttribute.ProtoReflect.Descriptor instead. func (*MacsecScAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{88} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} } func (x *MacsecScAttribute) GetMacsecDirection() MacsecDirection { @@ -22955,7 +24526,7 @@ type McastFdbEntryAttribute struct { func (x *McastFdbEntryAttribute) Reset() { *x = McastFdbEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[89] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -22967,7 +24538,7 @@ func (x *McastFdbEntryAttribute) String() string { func (*McastFdbEntryAttribute) ProtoMessage() {} func (x *McastFdbEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[89] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[90] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -22980,7 +24551,7 @@ func (x *McastFdbEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use McastFdbEntryAttribute.ProtoReflect.Descriptor instead. func (*McastFdbEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{89} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} } func (x *McastFdbEntryAttribute) GetGroupId() uint64 { @@ -23038,7 +24609,7 @@ type MirrorSessionAttribute struct { func (x *MirrorSessionAttribute) Reset() { *x = MirrorSessionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[90] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23050,7 +24621,7 @@ func (x *MirrorSessionAttribute) String() string { func (*MirrorSessionAttribute) ProtoMessage() {} func (x *MirrorSessionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[90] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[91] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23063,7 +24634,7 @@ func (x *MirrorSessionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MirrorSessionAttribute.ProtoReflect.Descriptor instead. func (*MirrorSessionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{90} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} } func (x *MirrorSessionAttribute) GetType() MirrorSessionType { @@ -23261,7 +24832,7 @@ type MyMacAttribute struct { func (x *MyMacAttribute) Reset() { *x = MyMacAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[91] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23273,7 +24844,7 @@ func (x *MyMacAttribute) String() string { func (*MyMacAttribute) ProtoMessage() {} func (x *MyMacAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[91] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[92] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23286,7 +24857,7 @@ func (x *MyMacAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MyMacAttribute.ProtoReflect.Descriptor instead. func (*MyMacAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{91} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} } func (x *MyMacAttribute) GetPriority() uint32 { @@ -23340,7 +24911,7 @@ type MySidEntryAttribute struct { func (x *MySidEntryAttribute) Reset() { *x = MySidEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[92] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23352,7 +24923,7 @@ func (x *MySidEntryAttribute) String() string { func (*MySidEntryAttribute) ProtoMessage() {} func (x *MySidEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[92] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[93] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23365,7 +24936,7 @@ func (x *MySidEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use MySidEntryAttribute.ProtoReflect.Descriptor instead. func (*MySidEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{92} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} } func (x *MySidEntryAttribute) GetEndpointBehavior() MySidEntryEndpointBehavior { @@ -23447,7 +25018,7 @@ type NatEntryAttribute struct { func (x *NatEntryAttribute) Reset() { *x = NatEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[93] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23459,7 +25030,7 @@ func (x *NatEntryAttribute) String() string { func (*NatEntryAttribute) ProtoMessage() {} func (x *NatEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[93] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[94] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23472,7 +25043,7 @@ func (x *NatEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NatEntryAttribute.ProtoReflect.Descriptor instead. func (*NatEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{93} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} } func (x *NatEntryAttribute) GetNatType() NatType { @@ -23596,7 +25167,7 @@ type NatZoneCounterAttribute struct { func (x *NatZoneCounterAttribute) Reset() { *x = NatZoneCounterAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[94] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23608,7 +25179,7 @@ func (x *NatZoneCounterAttribute) String() string { func (*NatZoneCounterAttribute) ProtoMessage() {} func (x *NatZoneCounterAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[94] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[95] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23621,7 +25192,7 @@ func (x *NatZoneCounterAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NatZoneCounterAttribute.ProtoReflect.Descriptor instead. func (*NatZoneCounterAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{94} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} } func (x *NatZoneCounterAttribute) GetNatType() NatType { @@ -23698,7 +25269,7 @@ type NeighborEntryAttribute struct { func (x *NeighborEntryAttribute) Reset() { *x = NeighborEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[95] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23710,7 +25281,7 @@ func (x *NeighborEntryAttribute) String() string { func (*NeighborEntryAttribute) ProtoMessage() {} func (x *NeighborEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[95] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[96] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23723,7 +25294,7 @@ func (x *NeighborEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NeighborEntryAttribute.ProtoReflect.Descriptor instead. func (*NeighborEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{95} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} } func (x *NeighborEntryAttribute) GetDstMacAddress() []byte { @@ -23823,7 +25394,7 @@ type NextHopAttribute struct { func (x *NextHopAttribute) Reset() { *x = NextHopAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[96] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -23835,7 +25406,7 @@ func (x *NextHopAttribute) String() string { func (*NextHopAttribute) ProtoMessage() {} func (x *NextHopAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[96] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[97] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -23848,7 +25419,7 @@ func (x *NextHopAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NextHopAttribute.ProtoReflect.Descriptor instead. func (*NextHopAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{96} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} } func (x *NextHopAttribute) GetType() NextHopType { @@ -24008,7 +25579,7 @@ type NextHopGroupAttribute struct { func (x *NextHopGroupAttribute) Reset() { *x = NextHopGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[97] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24020,7 +25591,7 @@ func (x *NextHopGroupAttribute) String() string { func (*NextHopGroupAttribute) ProtoMessage() {} func (x *NextHopGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[97] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[98] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24033,7 +25604,7 @@ func (x *NextHopGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NextHopGroupAttribute.ProtoReflect.Descriptor instead. func (*NextHopGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{97} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} } func (x *NextHopGroupAttribute) GetNextHopCount() uint32 { @@ -24158,7 +25729,7 @@ type NextHopGroupMapAttribute struct { func (x *NextHopGroupMapAttribute) Reset() { *x = NextHopGroupMapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[98] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24170,7 +25741,7 @@ func (x *NextHopGroupMapAttribute) String() string { func (*NextHopGroupMapAttribute) ProtoMessage() {} func (x *NextHopGroupMapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[98] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[99] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24183,7 +25754,7 @@ func (x *NextHopGroupMapAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NextHopGroupMapAttribute.ProtoReflect.Descriptor instead. func (*NextHopGroupMapAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{98} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} } func (x *NextHopGroupMapAttribute) GetType() NextHopGroupMapType { @@ -24218,7 +25789,7 @@ type NextHopGroupMemberAttribute struct { func (x *NextHopGroupMemberAttribute) Reset() { *x = NextHopGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[99] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24230,7 +25801,7 @@ func (x *NextHopGroupMemberAttribute) String() string { func (*NextHopGroupMemberAttribute) ProtoMessage() {} func (x *NextHopGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[99] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[100] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24243,7 +25814,7 @@ func (x *NextHopGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use NextHopGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*NextHopGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{99} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} } func (x *NextHopGroupMemberAttribute) GetNextHopGroupId() uint64 { @@ -24330,13 +25901,15 @@ type PolicerAttribute struct { RedPacketAction *PacketAction `protobuf:"varint,10,opt,name=red_packet_action,json=redPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"red_packet_action,omitempty"` EnableCounterPacketActionList []PacketAction `protobuf:"varint,11,rep,packed,name=enable_counter_packet_action_list,json=enableCounterPacketActionList,proto3,enum=lemming.dataplane.sai.PacketAction" json:"enable_counter_packet_action_list,omitempty"` ObjectStage *ObjectStage `protobuf:"varint,12,opt,name=object_stage,json=objectStage,proto3,enum=lemming.dataplane.sai.ObjectStage,oneof" json:"object_stage,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,13,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,14,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PolicerAttribute) Reset() { *x = PolicerAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[100] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24348,7 +25921,7 @@ func (x *PolicerAttribute) String() string { func (*PolicerAttribute) ProtoMessage() {} func (x *PolicerAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[100] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[101] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24361,7 +25934,7 @@ func (x *PolicerAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use PolicerAttribute.ProtoReflect.Descriptor instead. func (*PolicerAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{100} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} } func (x *PolicerAttribute) GetMeterType() MeterType { @@ -24448,6 +26021,20 @@ func (x *PolicerAttribute) GetObjectStage() ObjectStage { return ObjectStage_OBJECT_STAGE_UNSPECIFIED } +func (x *PolicerAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *PolicerAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type PortAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *PortType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.PortType,oneof" json:"type,omitempty"` @@ -24628,13 +26215,18 @@ type PortAttribute struct { ArsPortLoadPastWeight *uint32 `protobuf:"varint,176,opt,name=ars_port_load_past_weight,json=arsPortLoadPastWeight,proto3,oneof" json:"ars_port_load_past_weight,omitempty"` ArsPortLoadFutureWeight *uint32 `protobuf:"varint,177,opt,name=ars_port_load_future_weight,json=arsPortLoadFutureWeight,proto3,oneof" json:"ars_port_load_future_weight,omitempty"` PoePortId *uint64 `protobuf:"varint,178,opt,name=poe_port_id,json=poePortId,proto3,oneof" json:"poe_port_id,omitempty"` + JsonFormattedDebugDataSz *uint32 `protobuf:"varint,179,opt,name=json_formatted_debug_data_sz,json=jsonFormattedDebugDataSz,proto3,oneof" json:"json_formatted_debug_data_sz,omitempty"` + UnreliableLos *bool `protobuf:"varint,180,opt,name=unreliable_los,json=unreliableLos,proto3,oneof" json:"unreliable_los,omitempty"` + ErrorStatus *PortErrorStatus `protobuf:"varint,181,opt,name=error_status,json=errorStatus,proto3,enum=lemming.dataplane.sai.PortErrorStatus,oneof" json:"error_status,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,182,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,183,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *PortAttribute) Reset() { *x = PortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[101] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -24646,7 +26238,7 @@ func (x *PortAttribute) String() string { func (*PortAttribute) ProtoMessage() {} func (x *PortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[101] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[102] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -24659,7 +26251,7 @@ func (x *PortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use PortAttribute.ProtoReflect.Descriptor instead. func (*PortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{101} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} } func (x *PortAttribute) GetType() PortType { @@ -25908,6 +27500,41 @@ func (x *PortAttribute) GetPoePortId() uint64 { return 0 } +func (x *PortAttribute) GetJsonFormattedDebugDataSz() uint32 { + if x != nil && x.JsonFormattedDebugDataSz != nil { + return *x.JsonFormattedDebugDataSz + } + return 0 +} + +func (x *PortAttribute) GetUnreliableLos() bool { + if x != nil && x.UnreliableLos != nil { + return *x.UnreliableLos + } + return false +} + +func (x *PortAttribute) GetErrorStatus() PortErrorStatus { + if x != nil && x.ErrorStatus != nil { + return *x.ErrorStatus + } + return PortErrorStatus_PORT_ERROR_STATUS_UNSPECIFIED +} + +func (x *PortAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *PortAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type PortConnectorAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` SystemSidePortId *uint64 `protobuf:"varint,1,opt,name=system_side_port_id,json=systemSidePortId,proto3,oneof" json:"system_side_port_id,omitempty"` @@ -25921,7 +27548,7 @@ type PortConnectorAttribute struct { func (x *PortConnectorAttribute) Reset() { *x = PortConnectorAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[102] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -25933,7 +27560,7 @@ func (x *PortConnectorAttribute) String() string { func (*PortConnectorAttribute) ProtoMessage() {} func (x *PortConnectorAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[102] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[103] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -25946,7 +27573,7 @@ func (x *PortConnectorAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use PortConnectorAttribute.ProtoReflect.Descriptor instead. func (*PortConnectorAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{102} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} } func (x *PortConnectorAttribute) GetSystemSidePortId() uint64 { @@ -25995,7 +27622,7 @@ type PortPoolAttribute struct { func (x *PortPoolAttribute) Reset() { *x = PortPoolAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[103] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26007,7 +27634,7 @@ func (x *PortPoolAttribute) String() string { func (*PortPoolAttribute) ProtoMessage() {} func (x *PortPoolAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[103] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[104] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26020,7 +27647,7 @@ func (x *PortPoolAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use PortPoolAttribute.ProtoReflect.Descriptor instead. func (*PortPoolAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{103} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} } func (x *PortPoolAttribute) GetPortId() uint64 { @@ -26072,7 +27699,7 @@ type PortSerdesAttribute struct { func (x *PortSerdesAttribute) Reset() { *x = PortSerdesAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[104] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26084,7 +27711,7 @@ func (x *PortSerdesAttribute) String() string { func (*PortSerdesAttribute) ProtoMessage() {} func (x *PortSerdesAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[104] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[105] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26097,7 +27724,7 @@ func (x *PortSerdesAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use PortSerdesAttribute.ProtoReflect.Descriptor instead. func (*PortSerdesAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{104} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} } func (x *PortSerdesAttribute) GetPortId() uint64 { @@ -26250,7 +27877,7 @@ type QosMapAttribute struct { func (x *QosMapAttribute) Reset() { *x = QosMapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[105] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26262,7 +27889,7 @@ func (x *QosMapAttribute) String() string { func (*QosMapAttribute) ProtoMessage() {} func (x *QosMapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[105] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[106] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26275,7 +27902,7 @@ func (x *QosMapAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use QosMapAttribute.ProtoReflect.Descriptor instead. func (*QosMapAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{105} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} } func (x *QosMapAttribute) GetType() QosMapType { @@ -26307,13 +27934,15 @@ type QueueAttribute struct { TamObject []uint64 `protobuf:"varint,11,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` PfcDlrPacketAction *PacketAction `protobuf:"varint,12,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` PfcContinuousDeadlockState *QueuePfcContinuousDeadlockState `protobuf:"varint,13,opt,name=pfc_continuous_deadlock_state,json=pfcContinuousDeadlockState,proto3,enum=lemming.dataplane.sai.QueuePfcContinuousDeadlockState,oneof" json:"pfc_continuous_deadlock_state,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,14,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,15,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *QueueAttribute) Reset() { *x = QueueAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[106] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26325,7 +27954,7 @@ func (x *QueueAttribute) String() string { func (*QueueAttribute) ProtoMessage() {} func (x *QueueAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[106] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[107] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26338,7 +27967,7 @@ func (x *QueueAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use QueueAttribute.ProtoReflect.Descriptor instead. func (*QueueAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{106} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} } func (x *QueueAttribute) GetType() QueueType { @@ -26432,6 +28061,20 @@ func (x *QueueAttribute) GetPfcContinuousDeadlockState() QueuePfcContinuousDeadl return QueuePfcContinuousDeadlockState_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_UNSPECIFIED } +func (x *QueueAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *QueueAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type RouterInterfaceAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` VirtualRouterId *uint64 `protobuf:"varint,1,opt,name=virtual_router_id,json=virtualRouterId,proto3,oneof" json:"virtual_router_id,omitempty"` @@ -26455,14 +28098,16 @@ type RouterInterfaceAttribute struct { NatZoneId *uint32 `protobuf:"varint,19,opt,name=nat_zone_id,json=natZoneId,proto3,oneof" json:"nat_zone_id,omitempty"` DisableDecrementTtl *bool `protobuf:"varint,20,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` AdminMplsState *bool `protobuf:"varint,21,opt,name=admin_mpls_state,json=adminMplsState,proto3,oneof" json:"admin_mpls_state,omitempty"` - Label []byte `protobuf:"bytes,22,opt,name=label,proto3,oneof" json:"label,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,22,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,23,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + Label []byte `protobuf:"bytes,24,opt,name=label,proto3,oneof" json:"label,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *RouterInterfaceAttribute) Reset() { *x = RouterInterfaceAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[107] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26474,7 +28119,7 @@ func (x *RouterInterfaceAttribute) String() string { func (*RouterInterfaceAttribute) ProtoMessage() {} func (x *RouterInterfaceAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[107] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[108] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26487,7 +28132,7 @@ func (x *RouterInterfaceAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use RouterInterfaceAttribute.ProtoReflect.Descriptor instead. func (*RouterInterfaceAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{107} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} } func (x *RouterInterfaceAttribute) GetVirtualRouterId() uint64 { @@ -26637,6 +28282,20 @@ func (x *RouterInterfaceAttribute) GetAdminMplsState() bool { return false } +func (x *RouterInterfaceAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *RouterInterfaceAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + func (x *RouterInterfaceAttribute) GetLabel() []byte { if x != nil { return x.Label @@ -26659,7 +28318,7 @@ type RouteEntryAttribute struct { func (x *RouteEntryAttribute) Reset() { *x = RouteEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[108] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26671,7 +28330,7 @@ func (x *RouteEntryAttribute) String() string { func (*RouteEntryAttribute) ProtoMessage() {} func (x *RouteEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[108] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[109] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26684,7 +28343,7 @@ func (x *RouteEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use RouteEntryAttribute.ProtoReflect.Descriptor instead. func (*RouteEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{108} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} } func (x *RouteEntryAttribute) GetPacketAction() PacketAction { @@ -26746,7 +28405,7 @@ type RpfGroupAttribute struct { func (x *RpfGroupAttribute) Reset() { *x = RpfGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[109] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26758,7 +28417,7 @@ func (x *RpfGroupAttribute) String() string { func (*RpfGroupAttribute) ProtoMessage() {} func (x *RpfGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[109] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[110] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26771,7 +28430,7 @@ func (x *RpfGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use RpfGroupAttribute.ProtoReflect.Descriptor instead. func (*RpfGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{109} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} } func (x *RpfGroupAttribute) GetRpfInterfaceCount() uint32 { @@ -26798,7 +28457,7 @@ type RpfGroupMemberAttribute struct { func (x *RpfGroupMemberAttribute) Reset() { *x = RpfGroupMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[110] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26810,7 +28469,7 @@ func (x *RpfGroupMemberAttribute) String() string { func (*RpfGroupMemberAttribute) ProtoMessage() {} func (x *RpfGroupMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[110] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[111] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26823,7 +28482,7 @@ func (x *RpfGroupMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use RpfGroupMemberAttribute.ProtoReflect.Descriptor instead. func (*RpfGroupMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{110} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} } func (x *RpfGroupMemberAttribute) GetRpfGroupId() uint64 { @@ -26841,17 +28500,19 @@ func (x *RpfGroupMemberAttribute) GetRpfInterfaceId() uint64 { } type SamplepacketAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - SampleRate *uint32 `protobuf:"varint,1,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` - Type *SamplepacketType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.SamplepacketType,oneof" json:"type,omitempty"` - Mode *SamplepacketMode `protobuf:"varint,3,opt,name=mode,proto3,enum=lemming.dataplane.sai.SamplepacketMode,oneof" json:"mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SampleRate *uint32 `protobuf:"varint,1,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` + Type *SamplepacketType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.SamplepacketType,oneof" json:"type,omitempty"` + Mode *SamplepacketMode `protobuf:"varint,3,opt,name=mode,proto3,enum=lemming.dataplane.sai.SamplepacketMode,oneof" json:"mode,omitempty"` + TruncateEnable *bool `protobuf:"varint,4,opt,name=truncate_enable,json=truncateEnable,proto3,oneof" json:"truncate_enable,omitempty"` + TruncateSize *uint32 `protobuf:"varint,5,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SamplepacketAttribute) Reset() { *x = SamplepacketAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[111] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26863,7 +28524,7 @@ func (x *SamplepacketAttribute) String() string { func (*SamplepacketAttribute) ProtoMessage() {} func (x *SamplepacketAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[111] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[112] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26876,7 +28537,7 @@ func (x *SamplepacketAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SamplepacketAttribute.ProtoReflect.Descriptor instead. func (*SamplepacketAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{111} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} } func (x *SamplepacketAttribute) GetSampleRate() uint32 { @@ -26900,6 +28561,20 @@ func (x *SamplepacketAttribute) GetMode() SamplepacketMode { return SamplepacketMode_SAMPLEPACKET_MODE_UNSPECIFIED } +func (x *SamplepacketAttribute) GetTruncateEnable() bool { + if x != nil && x.TruncateEnable != nil { + return *x.TruncateEnable + } + return false +} + +func (x *SamplepacketAttribute) GetTruncateSize() uint32 { + if x != nil && x.TruncateSize != nil { + return *x.TruncateSize + } + return 0 +} + type SchedulerAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` SchedulingType *SchedulingType `protobuf:"varint,1,opt,name=scheduling_type,json=schedulingType,proto3,enum=lemming.dataplane.sai.SchedulingType,oneof" json:"scheduling_type,omitempty"` @@ -26915,7 +28590,7 @@ type SchedulerAttribute struct { func (x *SchedulerAttribute) Reset() { *x = SchedulerAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[112] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -26927,7 +28602,7 @@ func (x *SchedulerAttribute) String() string { func (*SchedulerAttribute) ProtoMessage() {} func (x *SchedulerAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[112] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[113] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -26940,7 +28615,7 @@ func (x *SchedulerAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SchedulerAttribute.ProtoReflect.Descriptor instead. func (*SchedulerAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{112} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} } func (x *SchedulerAttribute) GetSchedulingType() SchedulingType { @@ -27007,7 +28682,7 @@ type SchedulerGroupAttribute struct { func (x *SchedulerGroupAttribute) Reset() { *x = SchedulerGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[113] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27019,7 +28694,7 @@ func (x *SchedulerGroupAttribute) String() string { func (*SchedulerGroupAttribute) ProtoMessage() {} func (x *SchedulerGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[113] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[114] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27032,7 +28707,7 @@ func (x *SchedulerGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SchedulerGroupAttribute.ProtoReflect.Descriptor instead. func (*SchedulerGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{113} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} } func (x *SchedulerGroupAttribute) GetChildCount() uint32 { @@ -27085,18 +28760,20 @@ func (x *SchedulerGroupAttribute) GetParentNode() uint64 { } type Srv6SidlistAttribute struct { - state protoimpl.MessageState `protogen:"open.v1"` - Type *Srv6SidlistType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.Srv6SidlistType,oneof" json:"type,omitempty"` - TlvList []*TLVEntry `protobuf:"bytes,2,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` - SegmentList [][]byte `protobuf:"bytes,3,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` - NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type *Srv6SidlistType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.Srv6SidlistType,oneof" json:"type,omitempty"` + TlvList []*TLVEntry `protobuf:"bytes,2,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` + SegmentList [][]byte `protobuf:"bytes,3,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` + NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,5,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,6,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Srv6SidlistAttribute) Reset() { *x = Srv6SidlistAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[114] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27108,7 +28785,7 @@ func (x *Srv6SidlistAttribute) String() string { func (*Srv6SidlistAttribute) ProtoMessage() {} func (x *Srv6SidlistAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[114] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[115] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27121,7 +28798,7 @@ func (x *Srv6SidlistAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use Srv6SidlistAttribute.ProtoReflect.Descriptor instead. func (*Srv6SidlistAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{114} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} } func (x *Srv6SidlistAttribute) GetType() Srv6SidlistType { @@ -27152,6 +28829,20 @@ func (x *Srv6SidlistAttribute) GetNextHopId() uint64 { return 0 } +func (x *Srv6SidlistAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *Srv6SidlistAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type StpAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` VlanList []uint32 `protobuf:"varint,1,rep,packed,name=vlan_list,json=vlanList,proto3" json:"vlan_list,omitempty"` @@ -27163,7 +28854,7 @@ type StpAttribute struct { func (x *StpAttribute) Reset() { *x = StpAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[115] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27175,7 +28866,7 @@ func (x *StpAttribute) String() string { func (*StpAttribute) ProtoMessage() {} func (x *StpAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[115] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[116] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27188,7 +28879,7 @@ func (x *StpAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use StpAttribute.ProtoReflect.Descriptor instead. func (*StpAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{115} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} } func (x *StpAttribute) GetVlanList() []uint32 { @@ -27223,7 +28914,7 @@ type StpPortAttribute struct { func (x *StpPortAttribute) Reset() { *x = StpPortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[116] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27235,7 +28926,7 @@ func (x *StpPortAttribute) String() string { func (*StpPortAttribute) ProtoMessage() {} func (x *StpPortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[116] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[117] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27248,7 +28939,7 @@ func (x *StpPortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use StpPortAttribute.ProtoReflect.Descriptor instead. func (*StpPortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{116} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} } func (x *StpPortAttribute) GetStp() uint64 { @@ -27491,13 +29182,17 @@ type SwitchAttribute struct { AvailableSystemVoqs *uint32 `protobuf:"varint,215,opt,name=available_system_voqs,json=availableSystemVoqs,proto3,oneof" json:"available_system_voqs,omitempty"` AclStagePreIngress *ACLCapability `protobuf:"bytes,216,opt,name=acl_stage_pre_ingress,json=aclStagePreIngress,proto3,oneof" json:"acl_stage_pre_ingress,omitempty"` PoeDeviceList []uint64 `protobuf:"varint,217,rep,packed,name=poe_device_list,json=poeDeviceList,proto3" json:"poe_device_list,omitempty"` + AvailableIcmpEchoSession *uint32 `protobuf:"varint,218,opt,name=available_icmp_echo_session,json=availableIcmpEchoSession,proto3,oneof" json:"available_icmp_echo_session,omitempty"` + MaxIcmpEchoSession *uint32 `protobuf:"varint,219,opt,name=max_icmp_echo_session,json=maxIcmpEchoSession,proto3,oneof" json:"max_icmp_echo_session,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,220,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,221,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *SwitchAttribute) Reset() { *x = SwitchAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[117] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -27509,7 +29204,7 @@ func (x *SwitchAttribute) String() string { func (*SwitchAttribute) ProtoMessage() {} func (x *SwitchAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[117] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[118] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -27522,7 +29217,7 @@ func (x *SwitchAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SwitchAttribute.ProtoReflect.Descriptor instead. func (*SwitchAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{117} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} } func (x *SwitchAttribute) GetNumberOfActivePorts() uint32 { @@ -29044,6 +30739,34 @@ func (x *SwitchAttribute) GetPoeDeviceList() []uint64 { return nil } +func (x *SwitchAttribute) GetAvailableIcmpEchoSession() uint32 { + if x != nil && x.AvailableIcmpEchoSession != nil { + return *x.AvailableIcmpEchoSession + } + return 0 +} + +func (x *SwitchAttribute) GetMaxIcmpEchoSession() uint32 { + if x != nil && x.MaxIcmpEchoSession != nil { + return *x.MaxIcmpEchoSession + } + return 0 +} + +func (x *SwitchAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SwitchAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SwitchTunnelAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` TunnelType *TunnelType `protobuf:"varint,1,opt,name=tunnel_type,json=tunnelType,proto3,enum=lemming.dataplane.sai.TunnelType,oneof" json:"tunnel_type,omitempty"` @@ -29065,7 +30788,7 @@ type SwitchTunnelAttribute struct { func (x *SwitchTunnelAttribute) Reset() { *x = SwitchTunnelAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[118] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29077,7 +30800,7 @@ func (x *SwitchTunnelAttribute) String() string { func (*SwitchTunnelAttribute) ProtoMessage() {} func (x *SwitchTunnelAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[118] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[119] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29090,7 +30813,7 @@ func (x *SwitchTunnelAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SwitchTunnelAttribute.ProtoReflect.Descriptor instead. func (*SwitchTunnelAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{118} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} } func (x *SwitchTunnelAttribute) GetTunnelType() TunnelType { @@ -29199,7 +30922,7 @@ type SystemPortAttribute struct { func (x *SystemPortAttribute) Reset() { *x = SystemPortAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[119] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29211,7 +30934,7 @@ func (x *SystemPortAttribute) String() string { func (*SystemPortAttribute) ProtoMessage() {} func (x *SystemPortAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[119] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[120] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29224,7 +30947,7 @@ func (x *SystemPortAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemPortAttribute.ProtoReflect.Descriptor instead. func (*SystemPortAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{119} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} } func (x *SystemPortAttribute) GetType() SystemPortType { @@ -29288,7 +31011,7 @@ type TableBitmapClassificationEntryAttribute struct { func (x *TableBitmapClassificationEntryAttribute) Reset() { *x = TableBitmapClassificationEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[120] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29300,7 +31023,7 @@ func (x *TableBitmapClassificationEntryAttribute) String() string { func (*TableBitmapClassificationEntryAttribute) ProtoMessage() {} func (x *TableBitmapClassificationEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[120] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[121] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29313,7 +31036,7 @@ func (x *TableBitmapClassificationEntryAttribute) ProtoReflect() protoreflect.Me // Deprecated: Use TableBitmapClassificationEntryAttribute.ProtoReflect.Descriptor instead. func (*TableBitmapClassificationEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{120} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} } func (x *TableBitmapClassificationEntryAttribute) GetAction() TableBitmapClassificationEntryAction { @@ -29361,7 +31084,7 @@ type TableBitmapRouterEntryAttribute struct { func (x *TableBitmapRouterEntryAttribute) Reset() { *x = TableBitmapRouterEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[121] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29373,7 +31096,7 @@ func (x *TableBitmapRouterEntryAttribute) String() string { func (*TableBitmapRouterEntryAttribute) ProtoMessage() {} func (x *TableBitmapRouterEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[121] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[122] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29386,7 +31109,7 @@ func (x *TableBitmapRouterEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TableBitmapRouterEntryAttribute.ProtoReflect.Descriptor instead. func (*TableBitmapRouterEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{121} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} } func (x *TableBitmapRouterEntryAttribute) GetAction() TableBitmapRouterEntryAction { @@ -29465,7 +31188,7 @@ type TableMetaTunnelEntryAttribute struct { func (x *TableMetaTunnelEntryAttribute) Reset() { *x = TableMetaTunnelEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[122] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29477,7 +31200,7 @@ func (x *TableMetaTunnelEntryAttribute) String() string { func (*TableMetaTunnelEntryAttribute) ProtoMessage() {} func (x *TableMetaTunnelEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[122] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[123] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29490,7 +31213,7 @@ func (x *TableMetaTunnelEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TableMetaTunnelEntryAttribute.ProtoReflect.Descriptor instead. func (*TableMetaTunnelEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{122} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} } func (x *TableMetaTunnelEntryAttribute) GetAction() TableMetaTunnelEntryAction { @@ -29540,7 +31263,7 @@ type TamAttribute struct { func (x *TamAttribute) Reset() { *x = TamAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[123] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29552,7 +31275,7 @@ func (x *TamAttribute) String() string { func (*TamAttribute) ProtoMessage() {} func (x *TamAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[123] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29565,7 +31288,7 @@ func (x *TamAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamAttribute.ProtoReflect.Descriptor instead. func (*TamAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{123} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} } func (x *TamAttribute) GetTelemetryObjectsList() []uint64 { @@ -29612,7 +31335,7 @@ type TamCollectorAttribute struct { func (x *TamCollectorAttribute) Reset() { *x = TamCollectorAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29624,7 +31347,7 @@ func (x *TamCollectorAttribute) String() string { func (*TamCollectorAttribute) ProtoMessage() {} func (x *TamCollectorAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[124] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29637,7 +31360,7 @@ func (x *TamCollectorAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamCollectorAttribute.ProtoReflect.Descriptor instead. func (*TamCollectorAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{124} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} } func (x *TamCollectorAttribute) GetSrcIp() []byte { @@ -29708,7 +31431,7 @@ type TamCounterSubscriptionAttribute struct { func (x *TamCounterSubscriptionAttribute) Reset() { *x = TamCounterSubscriptionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29720,7 +31443,7 @@ func (x *TamCounterSubscriptionAttribute) String() string { func (*TamCounterSubscriptionAttribute) ProtoMessage() {} func (x *TamCounterSubscriptionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[125] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29733,7 +31456,7 @@ func (x *TamCounterSubscriptionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamCounterSubscriptionAttribute.ProtoReflect.Descriptor instead. func (*TamCounterSubscriptionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{125} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} } func (x *TamCounterSubscriptionAttribute) GetTelType() uint64 { @@ -29777,7 +31500,7 @@ type TamEventAttribute struct { func (x *TamEventAttribute) Reset() { *x = TamEventAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29789,7 +31512,7 @@ func (x *TamEventAttribute) String() string { func (*TamEventAttribute) ProtoMessage() {} func (x *TamEventAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[126] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29802,7 +31525,7 @@ func (x *TamEventAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamEventAttribute.ProtoReflect.Descriptor instead. func (*TamEventAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{126} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} } func (x *TamEventAttribute) GetType() TamEventType { @@ -29850,7 +31573,7 @@ type TamEventActionAttribute struct { func (x *TamEventActionAttribute) Reset() { *x = TamEventActionAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29862,7 +31585,7 @@ func (x *TamEventActionAttribute) String() string { func (*TamEventActionAttribute) ProtoMessage() {} func (x *TamEventActionAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[127] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29875,7 +31598,7 @@ func (x *TamEventActionAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamEventActionAttribute.ProtoReflect.Descriptor instead. func (*TamEventActionAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{127} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} } func (x *TamEventActionAttribute) GetReportType() uint64 { @@ -29906,7 +31629,7 @@ type TamEventThresholdAttribute struct { func (x *TamEventThresholdAttribute) Reset() { *x = TamEventThresholdAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -29918,7 +31641,7 @@ func (x *TamEventThresholdAttribute) String() string { func (*TamEventThresholdAttribute) ProtoMessage() {} func (x *TamEventThresholdAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[128] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -29931,7 +31654,7 @@ func (x *TamEventThresholdAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamEventThresholdAttribute.ProtoReflect.Descriptor instead. func (*TamEventThresholdAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{128} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} } func (x *TamEventThresholdAttribute) GetHighWatermark() uint32 { @@ -30010,7 +31733,7 @@ type TamIntAttribute struct { func (x *TamIntAttribute) Reset() { *x = TamIntAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30022,7 +31745,7 @@ func (x *TamIntAttribute) String() string { func (*TamIntAttribute) ProtoMessage() {} func (x *TamIntAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[129] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30035,7 +31758,7 @@ func (x *TamIntAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamIntAttribute.ProtoReflect.Descriptor instead. func (*TamIntAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{129} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} } func (x *TamIntAttribute) GetType() TamIntType { @@ -30229,7 +31952,7 @@ type TamMathFuncAttribute struct { func (x *TamMathFuncAttribute) Reset() { *x = TamMathFuncAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30241,7 +31964,7 @@ func (x *TamMathFuncAttribute) String() string { func (*TamMathFuncAttribute) ProtoMessage() {} func (x *TamMathFuncAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[130] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30254,7 +31977,7 @@ func (x *TamMathFuncAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamMathFuncAttribute.ProtoReflect.Descriptor instead. func (*TamMathFuncAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{130} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} } func (x *TamMathFuncAttribute) GetTamTelMathFuncType() TamTelMathFuncType { @@ -30281,7 +32004,7 @@ type TamReportAttribute struct { func (x *TamReportAttribute) Reset() { *x = TamReportAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30293,7 +32016,7 @@ func (x *TamReportAttribute) String() string { func (*TamReportAttribute) ProtoMessage() {} func (x *TamReportAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[131] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30306,7 +32029,7 @@ func (x *TamReportAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamReportAttribute.ProtoReflect.Descriptor instead. func (*TamReportAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{131} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} } func (x *TamReportAttribute) GetType() TamReportType { @@ -30384,7 +32107,7 @@ type TamTelemetryAttribute struct { func (x *TamTelemetryAttribute) Reset() { *x = TamTelemetryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30396,7 +32119,7 @@ func (x *TamTelemetryAttribute) String() string { func (*TamTelemetryAttribute) ProtoMessage() {} func (x *TamTelemetryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[132] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30409,7 +32132,7 @@ func (x *TamTelemetryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamTelemetryAttribute.ProtoReflect.Descriptor instead. func (*TamTelemetryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{132} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} } func (x *TamTelemetryAttribute) GetTamTypeList() []uint64 { @@ -30465,7 +32188,7 @@ type TamTelTypeAttribute struct { func (x *TamTelTypeAttribute) Reset() { *x = TamTelTypeAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30477,7 +32200,7 @@ func (x *TamTelTypeAttribute) String() string { func (*TamTelTypeAttribute) ProtoMessage() {} func (x *TamTelTypeAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[133] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30490,7 +32213,7 @@ func (x *TamTelTypeAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamTelTypeAttribute.ProtoReflect.Descriptor instead. func (*TamTelTypeAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{133} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} } func (x *TamTelTypeAttribute) GetTamTelemetryType() TamTelemetryType { @@ -30625,7 +32348,7 @@ type TamTransportAttribute struct { func (x *TamTransportAttribute) Reset() { *x = TamTransportAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30637,7 +32360,7 @@ func (x *TamTransportAttribute) String() string { func (*TamTransportAttribute) ProtoMessage() {} func (x *TamTransportAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[134] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30650,7 +32373,7 @@ func (x *TamTransportAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TamTransportAttribute.ProtoReflect.Descriptor instead. func (*TamTransportAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{134} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} } func (x *TamTransportAttribute) GetTransportType() TamTransportType { @@ -30720,13 +32443,15 @@ type TunnelAttribute struct { DecapQosDscpToTcMap *uint64 `protobuf:"varint,28,opt,name=decap_qos_dscp_to_tc_map,json=decapQosDscpToTcMap,proto3,oneof" json:"decap_qos_dscp_to_tc_map,omitempty"` DecapQosTcToPriorityGroupMap *uint64 `protobuf:"varint,29,opt,name=decap_qos_tc_to_priority_group_map,json=decapQosTcToPriorityGroupMap,proto3,oneof" json:"decap_qos_tc_to_priority_group_map,omitempty"` VxlanUdpSportSecurity *bool `protobuf:"varint,30,opt,name=vxlan_udp_sport_security,json=vxlanUdpSportSecurity,proto3,oneof" json:"vxlan_udp_sport_security,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,31,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,32,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *TunnelAttribute) Reset() { *x = TunnelAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30738,7 +32463,7 @@ func (x *TunnelAttribute) String() string { func (*TunnelAttribute) ProtoMessage() {} func (x *TunnelAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[135] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30751,7 +32476,7 @@ func (x *TunnelAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TunnelAttribute.ProtoReflect.Descriptor instead. func (*TunnelAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{135} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} } func (x *TunnelAttribute) GetType() TunnelType { @@ -30964,6 +32689,20 @@ func (x *TunnelAttribute) GetVxlanUdpSportSecurity() bool { return false } +func (x *TunnelAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *TunnelAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type TunnelMapAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` Type *TunnelMapType `protobuf:"varint,1,opt,name=type,proto3,enum=lemming.dataplane.sai.TunnelMapType,oneof" json:"type,omitempty"` @@ -30974,7 +32713,7 @@ type TunnelMapAttribute struct { func (x *TunnelMapAttribute) Reset() { *x = TunnelMapAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -30986,7 +32725,7 @@ func (x *TunnelMapAttribute) String() string { func (*TunnelMapAttribute) ProtoMessage() {} func (x *TunnelMapAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[136] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -30999,7 +32738,7 @@ func (x *TunnelMapAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TunnelMapAttribute.ProtoReflect.Descriptor instead. func (*TunnelMapAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{136} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} } func (x *TunnelMapAttribute) GetType() TunnelMapType { @@ -31042,7 +32781,7 @@ type TunnelMapEntryAttribute struct { func (x *TunnelMapEntryAttribute) Reset() { *x = TunnelMapEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31054,7 +32793,7 @@ func (x *TunnelMapEntryAttribute) String() string { func (*TunnelMapEntryAttribute) ProtoMessage() {} func (x *TunnelMapEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[137] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31067,7 +32806,7 @@ func (x *TunnelMapEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TunnelMapEntryAttribute.ProtoReflect.Descriptor instead. func (*TunnelMapEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{137} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} } func (x *TunnelMapEntryAttribute) GetTunnelMapType() TunnelMapType { @@ -31215,7 +32954,7 @@ type TunnelTermTableEntryAttribute struct { func (x *TunnelTermTableEntryAttribute) Reset() { *x = TunnelTermTableEntryAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31227,7 +32966,7 @@ func (x *TunnelTermTableEntryAttribute) String() string { func (*TunnelTermTableEntryAttribute) ProtoMessage() {} func (x *TunnelTermTableEntryAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[138] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31240,7 +32979,7 @@ func (x *TunnelTermTableEntryAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use TunnelTermTableEntryAttribute.ProtoReflect.Descriptor instead. func (*TunnelTermTableEntryAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{138} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} } func (x *TunnelTermTableEntryAttribute) GetVrId() uint64 { @@ -31333,7 +33072,7 @@ type UdfAttribute struct { func (x *UdfAttribute) Reset() { *x = UdfAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31345,7 +33084,7 @@ func (x *UdfAttribute) String() string { func (*UdfAttribute) ProtoMessage() {} func (x *UdfAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[139] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31358,7 +33097,7 @@ func (x *UdfAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use UdfAttribute.ProtoReflect.Descriptor instead. func (*UdfAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{139} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} } func (x *UdfAttribute) GetMatchId() uint64 { @@ -31407,7 +33146,7 @@ type UdfGroupAttribute struct { func (x *UdfGroupAttribute) Reset() { *x = UdfGroupAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31419,7 +33158,7 @@ func (x *UdfGroupAttribute) String() string { func (*UdfGroupAttribute) ProtoMessage() {} func (x *UdfGroupAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[140] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31432,7 +33171,7 @@ func (x *UdfGroupAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use UdfGroupAttribute.ProtoReflect.Descriptor instead. func (*UdfGroupAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{140} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} } func (x *UdfGroupAttribute) GetUdfList() []uint64 { @@ -31469,7 +33208,7 @@ type UdfMatchAttribute struct { func (x *UdfMatchAttribute) Reset() { *x = UdfMatchAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31481,7 +33220,7 @@ func (x *UdfMatchAttribute) String() string { func (*UdfMatchAttribute) ProtoMessage() {} func (x *UdfMatchAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[141] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31494,7 +33233,7 @@ func (x *UdfMatchAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use UdfMatchAttribute.ProtoReflect.Descriptor instead. func (*UdfMatchAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{141} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} } func (x *UdfMatchAttribute) GetL2Type() *AclFieldData { @@ -31547,7 +33286,7 @@ type VirtualRouterAttribute struct { func (x *VirtualRouterAttribute) Reset() { *x = VirtualRouterAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31559,7 +33298,7 @@ func (x *VirtualRouterAttribute) String() string { func (*VirtualRouterAttribute) ProtoMessage() {} func (x *VirtualRouterAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[142] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31572,7 +33311,7 @@ func (x *VirtualRouterAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use VirtualRouterAttribute.ProtoReflect.Descriptor instead. func (*VirtualRouterAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{142} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} } func (x *VirtualRouterAttribute) GetAdminV4State() bool { @@ -31648,13 +33387,15 @@ type VlanAttribute struct { BroadcastFloodGroup *uint64 `protobuf:"varint,20,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` CustomIgmpSnoopingEnable *bool `protobuf:"varint,21,opt,name=custom_igmp_snooping_enable,json=customIgmpSnoopingEnable,proto3,oneof" json:"custom_igmp_snooping_enable,omitempty"` TamObject []uint64 `protobuf:"varint,22,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,23,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,24,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *VlanAttribute) Reset() { *x = VlanAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31666,7 +33407,7 @@ func (x *VlanAttribute) String() string { func (*VlanAttribute) ProtoMessage() {} func (x *VlanAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[143] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31679,7 +33420,7 @@ func (x *VlanAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use VlanAttribute.ProtoReflect.Descriptor instead. func (*VlanAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{143} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} } func (x *VlanAttribute) GetVlanId() uint32 { @@ -31836,6 +33577,20 @@ func (x *VlanAttribute) GetTamObject() []uint64 { return nil } +func (x *VlanAttribute) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *VlanAttribute) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type VlanMemberAttribute struct { state protoimpl.MessageState `protogen:"open.v1"` VlanId *uint64 `protobuf:"varint,1,opt,name=vlan_id,json=vlanId,proto3,oneof" json:"vlan_id,omitempty"` @@ -31847,7 +33602,7 @@ type VlanMemberAttribute struct { func (x *VlanMemberAttribute) Reset() { *x = VlanMemberAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31859,7 +33614,7 @@ func (x *VlanMemberAttribute) String() string { func (*VlanMemberAttribute) ProtoMessage() {} func (x *VlanMemberAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[144] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31872,7 +33627,7 @@ func (x *VlanMemberAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use VlanMemberAttribute.ProtoReflect.Descriptor instead. func (*VlanMemberAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{144} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} } func (x *VlanMemberAttribute) GetVlanId() uint64 { @@ -31944,7 +33699,7 @@ type WredAttribute struct { func (x *WredAttribute) Reset() { *x = WredAttribute{} - mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -31956,7 +33711,7 @@ func (x *WredAttribute) String() string { func (*WredAttribute) ProtoMessage() {} func (x *WredAttribute) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_common_proto_msgTypes[145] + mi := &file_dataplane_proto_sai_common_proto_msgTypes[146] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -31969,7 +33724,7 @@ func (x *WredAttribute) ProtoReflect() protoreflect.Message { // Deprecated: Use WredAttribute.ProtoReflect.Descriptor instead. func (*WredAttribute) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{145} + return file_dataplane_proto_sai_common_proto_rawDescGZIP(), []int{146} } func (x *WredAttribute) GetGreenEnable() bool { @@ -34540,7 +36295,7 @@ var file_dataplane_proto_sai_common_proto_rawDesc = string([]byte{ 0x0d, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x22, 0xd7, 0x15, 0x0a, 0x13, 0x42, 0x66, 0x64, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x88, 0x17, 0x0a, 0x13, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, @@ -34672,958 +36427,1124 @@ var file_dataplane_proto_sai_common_proto_rawDesc = string([]byte{ 0x0f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x28, 0x52, 0x0d, 0x73, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x68, 0x77, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x6f, 0x72, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, - 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, - 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x19, - 0x0a, 0x17, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, - 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x74, 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x68, 0x6f, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x62, 0x69, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, - 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, - 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x61, 0x67, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, - 0x69, 0x64, 0x22, 0xdf, 0x08, 0x0a, 0x0f, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, - 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x02, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, - 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, - 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, - 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, - 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, - 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, 0x29, 0x52, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x68, 0x77, 0x5f, 0x6c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x72, + 0x69, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, + 0x66, 0x64, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, + 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x63, 0x68, 0x6f, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x68, 0x6f, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x63, 0x62, 0x69, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x69, 0x6e, + 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, + 0x65, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x78, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x78, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x65, 0x67, 0x6f, 0x74, 0x69, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, + 0x64, 0x69, 0x61, 0x67, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x64, 0x69, 0x61, 0x67, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x69, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, + 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0x90, 0x0a, 0x0a, 0x0f, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, + 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x02, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, + 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x18, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x8a, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, + 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, + 0x52, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x7b, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x07, 0x52, 0x19, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, + 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x13, 0x62, 0x72, 0x6f, + 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x09, 0x48, 0x07, 0x52, 0x19, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, - 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, - 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, - 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, - 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, - 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x22, 0x96, 0x09, 0x0a, 0x13, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, - 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0c, 0x74, 0x61, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, - 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, - 0x0a, 0x06, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x72, 0x69, 0x66, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, - 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x11, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0f, 0x66, - 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, - 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x2a, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x25, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, - 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, - 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, - 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0c, 0x48, 0x0b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0f, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, - 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0e, 0x48, 0x0d, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x69, 0x66, - 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, - 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, - 0x2d, 0x0a, 0x2b, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x69, 0x6e, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xe0, 0x03, - 0x0a, 0x13, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0e, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xc7, 0x0a, 0x0a, 0x13, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0c, + 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x74, 0x61, 0x67, 0x67, + 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x22, 0x0a, 0x06, 0x72, 0x69, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x72, 0x69, 0x66, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, + 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x11, 0x66, 0x64, 0x62, 0x5f, + 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, + 0x0f, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, + 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x13, 0x6d, 0x61, + 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x8b, 0x01, 0x0a, 0x2a, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x25, 0x66, 0x64, 0x62, 0x4c, 0x65, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x56, 0x69, 0x6f, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, + 0x0a, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x38, 0x0a, 0x11, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, + 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0f, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x88, + 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0f, 0x48, 0x0e, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x10, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, 0x14, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x61, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x69, + 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x2d, 0x0a, + 0x2b, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x69, + 0x6e, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x91, 0x05, 0x0a, 0x13, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x72, + 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, + 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0d, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x28, 0x0a, 0x09, 0x78, 0x6f, - 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x08, 0x78, 0x6f, 0x66, 0x66, 0x53, 0x69, 0x7a, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x22, 0xdb, 0x04, 0x0a, 0x16, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x70, - 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x12, 0x72, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x65, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, - 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x73, 0x68, - 0x61, 0x72, 0x65, 0x64, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x5f, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x78, 0x6f, 0x66, 0x66, 0x5f, - 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x06, 0x78, 0x6f, 0x66, 0x66, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, - 0x06, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x05, 0x78, 0x6f, 0x6e, 0x54, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, - 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, - 0x48, 0x07, 0x52, 0x0b, 0x78, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x54, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, + 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x62, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x03, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x28, 0x0a, + 0x09, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x08, 0x78, 0x6f, 0x66, 0x66, + 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xdb, 0x04, 0x0a, 0x16, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x6f, 0x6c, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x12, 0x72, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x0e, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x74, 0x68, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, 0x66, 0x66, 0x5f, 0x74, - 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x22, 0x8d, - 0x01, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, - 0x01, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xbf, - 0x03, 0x0a, 0x15, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x0b, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, + 0x52, 0x0f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x44, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x54, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x78, + 0x6f, 0x66, 0x66, 0x5f, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x06, 0x78, 0x6f, 0x66, 0x66, 0x54, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x22, 0x0a, 0x06, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x05, 0x78, 0x6f, 0x6e, + 0x54, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x5f, 0x74, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x78, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x54, 0x68, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, + 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, + 0x63, 0x5f, 0x74, 0x68, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x68, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x78, 0x6f, + 0x66, 0x66, 0x5f, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x74, 0x68, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x78, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, + 0x74, 0x68, 0x22, 0xbc, 0x03, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x3b, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x03, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, - 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x13, 0x69, 0x6e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x10, 0x69, 0x6e, - 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5d, - 0x0a, 0x14, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, + 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xbf, 0x03, 0x0a, 0x15, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x48, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x11, 0x6f, 0x75, 0x74, 0x44, - 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x22, 0xa2, 0x06, 0x0a, 0x0d, 0x44, 0x74, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x45, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x39, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x69, - 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x6f, - 0x73, 0x74, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0e, 0x70, - 0x6f, 0x73, 0x74, 0x63, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x39, 0x0a, 0x12, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x10, 0x64, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x04, 0x52, 0x11, 0x71, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x13, 0x66, 0x6c, - 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, 0x79, 0x63, 0x6c, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, - 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x12, 0x6c, 0x61, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x50, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, - 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x4c, 0x34, 0x44, 0x73, 0x63, 0x70, 0x88, - 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, - 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, - 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x34, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x22, 0xe6, 0x01, 0x0a, 0x12, 0x44, 0x74, 0x65, 0x6c, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x44, 0x74, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa0, - 0x04, 0x0a, 0x17, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x0d, 0x6d, 0x61, - 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6d, 0x61, 0x78, - 0x48, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, - 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x12, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x6f, 0x72, 0x74, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, - 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x16, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x10, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, - 0x1c, 0x0a, 0x1a, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x1b, 0x0a, - 0x19, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x22, 0xe2, 0x02, 0x0a, 0x18, 0x44, 0x74, 0x65, 0x6c, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, - 0x0a, 0x08, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x64, 0x65, 0x70, 0x74, 0x68, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, - 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x62, 0x72, 0x65, 0x61, 0x63, 0x68, - 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x62, 0x72, 0x65, 0x61, 0x63, 0x68, 0x51, 0x75, - 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, - 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x05, 0x48, 0x04, 0x52, 0x08, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, 0x88, 0x01, 0x01, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x72, 0x65, 0x61, - 0x63, 0x68, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x61, 0x69, - 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x22, 0xc6, 0x02, 0x0a, 0x1a, 0x44, 0x74, 0x65, 0x6c, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0b, 0x64, 0x73, 0x74, - 0x5f, 0x69, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x37, 0x0a, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, - 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x75, - 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, - 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0a, 0x75, 0x64, - 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x22, - 0xc8, 0x04, 0x0a, 0x11, 0x46, 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, 0x64, 0x62, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, - 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x48, 0x03, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0a, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0c, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x4d, 0x61, 0x63, 0x4d, 0x6f, 0x76, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0xea, 0x01, 0x0a, 0x11, 0x46, - 0x64, 0x62, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x05, 0x62, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x62, 0x76, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x46, 0x64, 0x62, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x62, 0x76, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc4, 0x02, 0x0a, 0x1d, 0x46, 0x69, 0x6e, 0x65, - 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x11, 0x6e, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, - 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x70, - 0x76, 0x34, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, 0x4d, 0x61, 0x73, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x08, 0x69, 0x70, 0x76, 0x36, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x73, - 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x61, 0x73, 0x6b, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xaf, - 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x27, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x0a, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, - 0x00, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x22, 0xea, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x73, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x63, 0x0a, 0x16, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x52, 0x13, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x75, 0x64, 0x66, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0c, 0x75, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x1c, 0x66, 0x69, 0x6e, 0x65, 0x5f, 0x67, 0x72, - 0x61, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x52, 0x18, 0x66, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, - 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xd5, 0x03, - 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, - 0x05, 0x6f, 0x62, 0x6a, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6f, 0x70, - 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x08, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x0b, 0x62, 0x69, 0x6e, 0x64, + 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x56, 0x6c, 0x61, 0x6e, - 0x54, 0x61, 0x67, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x07, 0x76, - 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x67, 0x65, 0x6e, - 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x63, 0x67, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, - 0x06, 0x52, 0x12, 0x67, 0x65, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x63, 0x67, 0x72, - 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x63, 0x67, 0x72, 0x70, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb7, 0x05, 0x0a, 0x15, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x31, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x61, - 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x61, 0x67, 0x88, 0x01, 0x01, - 0x12, 0x56, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x78, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x62, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x13, 0x69, 0x6e, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x44, 0x72, 0x6f, + 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, + 0x10, 0x69, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x5d, 0x0a, 0x14, 0x6f, 0x75, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x11, 0x6f, + 0x75, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x6d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x22, 0xa2, 0x06, 0x0a, 0x0d, 0x44, 0x74, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x13, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x11, 0x69, 0x6e, + 0x74, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x69, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, + 0x0f, 0x70, 0x6f, 0x73, 0x74, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, + 0x52, 0x0e, 0x70, 0x6f, 0x73, 0x74, 0x63, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x10, 0x64, 0x72, 0x6f, 0x70, 0x52, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, + 0x0a, 0x13, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x11, 0x71, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, + 0x13, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x43, + 0x79, 0x63, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x12, + 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, - 0x78, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x67, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0f, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x4c, 0x61, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, - 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x10, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2d, - 0x0a, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x74, 0x78, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0a, - 0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x78, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x61, - 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x78, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x74, 0x78, 0x22, - 0xfa, 0x02, 0x0a, 0x19, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4c, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6f, - 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6f, 0x62, 0x6a, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x24, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x74, 0x72, 0x61, 0x70, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x69, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x04, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x66, 0x88, 0x01, 0x01, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x62, 0x6a, - 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x66, 0x22, 0xfa, 0x03, 0x0a, - 0x13, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x4c, 0x34, 0x44, 0x73, + 0x63, 0x70, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x69, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x63, 0x61, 0x72, + 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x63, 0x79, 0x63, 0x6c, 0x65, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, + 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x22, 0xe6, 0x01, 0x0a, 0x12, 0x44, 0x74, 0x65, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x44, 0x74, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, + 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0xa0, 0x04, 0x0a, 0x17, 0x44, 0x74, 0x65, 0x6c, 0x49, 0x6e, 0x74, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x0a, + 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0b, + 0x6d, 0x61, 0x78, 0x48, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, + 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x63, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x50, 0x6f, + 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x04, 0x48, 0x03, 0x52, 0x17, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x45, 0x0a, 0x18, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x16, 0x63, 0x6f, 0x6c, + 0x6c, 0x65, 0x63, 0x74, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x10, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, + 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x63, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, + 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xe2, 0x02, 0x0a, 0x18, 0x44, 0x74, 0x65, 0x6c, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x26, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x64, 0x65, 0x70, + 0x74, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x38, 0x0a, 0x11, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x54, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x62, 0x72, 0x65, + 0x61, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x62, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x61, 0x69, + 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x74, 0x61, 0x69, 0x6c, 0x44, 0x72, 0x6f, 0x70, + 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x64, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, + 0x72, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x22, 0xc6, 0x02, 0x0a, 0x1a, 0x44, 0x74, + 0x65, 0x6c, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0b, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0c, + 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2d, 0x0a, 0x0c, 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, + 0x0a, 0x75, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x09, + 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x22, 0xc8, 0x04, 0x0a, 0x11, 0x46, 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, + 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, + 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, + 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0c, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x63, 0x4d, 0x6f, 0x76, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0xea, 0x01, + 0x0a, 0x11, 0x46, 0x64, 0x62, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x05, 0x62, 0x76, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, + 0x04, 0x62, 0x76, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, - 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x74, - 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, - 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, - 0x52, 0x09, 0x74, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2d, - 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0d, - 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x9d, 0x02, 0x0a, 0x18, 0x48, 0x6f, - 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x52, - 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x03, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x1e, 0x48, 0x6f, - 0x73, 0x74, 0x69, 0x66, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, - 0x72, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, - 0x69, 0x6e, 0x65, 0x64, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, - 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, - 0x09, 0x74, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x72, 0x61, - 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0xd7, 0x01, 0x0a, 0x1d, 0x49, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0e, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, - 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, - 0x0a, 0x03, 0x74, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x02, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x22, 0x85, 0x07, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, - 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x50, 0x6f, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, 0x64, 0x62, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, + 0x52, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x62, 0x76, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc4, 0x02, 0x0a, 0x1d, 0x46, + 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5f, 0x0a, 0x11, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x61, 0x74, 0x69, 0x76, + 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x09, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x69, 0x70, 0x76, 0x34, + 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x70, 0x76, 0x36, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x08, 0x69, 0x70, 0x76, 0x36, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, + 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, + 0x52, 0x0a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x22, 0xaf, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, + 0x0a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x05, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x09, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x22, 0xea, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x73, 0x68, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x16, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x61, + 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x13, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, + 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x75, 0x64, + 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0c, 0x75, 0x64, 0x66, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x1c, 0x66, 0x69, 0x6e, 0x65, + 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x18, 0x66, 0x69, 0x6e, 0x65, 0x47, 0x72, 0x61, 0x69, + 0x6e, 0x65, 0x64, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x22, 0xd5, 0x03, 0x0a, 0x0f, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, + 0x66, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, + 0x48, 0x01, 0x52, 0x05, 0x6f, 0x62, 0x6a, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x56, + 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, + 0x52, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, + 0x67, 0x65, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x63, 0x67, 0x72, 0x70, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x67, 0x65, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, + 0x63, 0x67, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, + 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x74, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x63, + 0x67, 0x72, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xb7, 0x05, 0x0a, 0x15, 0x48, 0x6f, 0x73, + 0x74, 0x69, 0x66, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x61, 0x67, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x78, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, - 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, - 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, - 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x6e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x73, - 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, - 0x73, 0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, - 0x52, 0x07, 0x70, 0x73, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, - 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x05, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x88, 0x01, 0x01, - 0x12, 0x37, 0x0a, 0x12, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, - 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0e, 0x6d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, - 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, - 0x48, 0x07, 0x52, 0x11, 0x6d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, - 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0c, 0x70, 0x6f, 0x70, 0x5f, - 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x68, 0x6f, 0x73, 0x74, + 0x69, 0x66, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x61, + 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, + 0x04, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x4c, + 0x61, 0x67, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, + 0x48, 0x05, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x45, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x10, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, + 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, 0x74, + 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, + 0x08, 0x52, 0x0a, 0x7a, 0x65, 0x72, 0x6f, 0x43, 0x6f, 0x70, 0x79, 0x54, 0x78, 0x88, 0x01, 0x01, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x70, + 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x61, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, + 0x74, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x72, 0x5f, 0x6c, 0x61, 0x67, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x5f, + 0x74, 0x78, 0x22, 0xfa, 0x02, 0x0a, 0x19, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x4c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, + 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6f, 0x62, 0x6a, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x74, + 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x50, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0c, 0x70, 0x6f, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x06, 0x68, 0x6f, 0x73, 0x74, 0x49, 0x66, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x62, 0x6a, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, + 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x66, 0x22, + 0xfa, 0x03, 0x0a, 0x13, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x70, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, - 0x51, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, - 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x51, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x09, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x73, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x70, - 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, - 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xc1, 0x02, 0x0a, 0x12, 0x49, 0x70, - 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, + 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x32, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x05, 0x48, 0x03, 0x52, 0x09, 0x74, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x2d, 0x0a, 0x0e, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x52, 0x0d, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x09, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x9d, 0x02, 0x0a, + 0x18, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, + 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, - 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x70, - 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x95, 0x01, - 0x0a, 0x12, 0x49, 0x70, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x11, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x70, 0x6d, 0x63, 0x4f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, - 0x10, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, - 0x0e, 0x69, 0x70, 0x6d, 0x63, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x18, 0x49, 0x70, 0x6d, 0x63, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x0d, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x01, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x69, 0x70, 0x6d, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x6d, - 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xb8, 0x0e, 0x0a, 0x0e, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4f, - 0x0a, 0x1e, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, - 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x1a, 0x74, 0x65, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x5b, 0x0a, 0x24, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x75, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x2a, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x25, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x6e, - 0x64, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, - 0x1b, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6c, - 0x65, 0x61, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x39, 0x0a, 0x12, 0x73, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x10, 0x73, 0x6e, 0x33, 0x32, 0x62, 0x69, 0x74, 0x53, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x65, 0x73, - 0x6e, 0x5f, 0x36, 0x34, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, - 0x06, 0x52, 0x11, 0x65, 0x73, 0x6e, 0x36, 0x34, 0x62, 0x69, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x08, 0x52, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x74, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x4d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, - 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0a, 0x48, 0x08, 0x52, 0x11, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x53, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x77, 0x61, 0x72, - 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, 0x77, - 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x44, 0x0a, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x15, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, - 0x70, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0d, 0x48, 0x0b, 0x52, 0x08, 0x63, 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x28, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x08, 0x73, - 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6d, 0x61, - 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, - 0x65, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, - 0x48, 0x0d, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x50, - 0x61, 0x72, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x6f, 0x63, 0x74, 0x65, - 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, - 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, 0x17, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x48, 0x69, 0x67, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, - 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, - 0x16, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x77, 0x57, 0x61, - 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x74, - 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x18, 0x13, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, 0x10, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, - 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x61, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x14, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, 0x06, 0x73, 0x61, - 0x4c, 0x69, 0x73, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, - 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x42, 0x2d, 0x0a, 0x2b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, - 0x1c, 0x0a, 0x1a, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, - 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x22, 0x0a, - 0x20, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x73, 0x6e, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0xfb, 0x01, 0x0a, + 0x1e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x51, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x55, 0x73, 0x65, 0x72, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, + 0x48, 0x02, 0x52, 0x09, 0x74, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x88, 0x0a, 0x0a, 0x18, 0x49, + 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x68, 0x77, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x77, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x24, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x72, 0x78, + 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, + 0x04, 0x67, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, + 0x69, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, + 0x48, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0c, + 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x03, 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, + 0x0c, 0x73, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, + 0x48, 0x0a, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0d, 0x64, 0x73, 0x74, + 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0a, 0x74, 0x78, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x72, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x0a, 0x72, 0x78, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1d, 0x73, 0x65, 0x74, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x19, 0x73, 0x65, 0x74, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x12, 0x48, 0x11, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x14, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x68, 0x77, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, 0x78, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x67, 0x75, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, + 0x6f, 0x6b, 0x69, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x88, 0x03, 0x0a, 0x1d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x62, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x18, 0x0a, 0x03, + 0x74, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x52, 0x03, 0x74, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, + 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x85, 0x07, 0x0a, 0x13, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, + 0x6f, 0x66, 0x5f, 0x70, 0x6f, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x4f, 0x66, 0x50, 0x6f, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x6e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x08, 0x70, 0x73, 0x63, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x73, + 0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, + 0x07, 0x70, 0x73, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x71, + 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x05, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x37, 0x0a, 0x12, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, + 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0e, 0x6d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, + 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x07, 0x52, 0x11, 0x6d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0c, 0x70, 0x6f, 0x70, 0x5f, 0x74, + 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0c, 0x70, 0x6f, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, 0x51, + 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, + 0x52, 0x0a, 0x70, 0x6f, 0x70, 0x51, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x09, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x6e, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x70, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x70, 0x73, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x70, 0x5f, + 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x70, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xc1, 0x02, 0x0a, 0x12, 0x49, 0x70, 0x6d, + 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x72, + 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x70, 0x66, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, + 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x95, 0x01, 0x0a, + 0x12, 0x49, 0x70, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x11, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x70, 0x6d, 0x63, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x10, + 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0e, + 0x69, 0x70, 0x6d, 0x63, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x18, 0x49, 0x70, 0x6d, 0x63, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x2f, 0x0a, 0x0d, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x0b, 0x69, 0x70, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x69, 0x70, 0x6d, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x6d, 0x63, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xb8, 0x0e, 0x0a, 0x0e, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4f, 0x0a, + 0x1e, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x1a, 0x74, 0x65, 0x72, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x49, 0x70, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5b, + 0x0a, 0x24, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x75, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x2a, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x25, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, + 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, + 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1b, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x65, + 0x61, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, + 0x0a, 0x12, 0x73, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x06, 0x48, 0x05, 0x52, 0x10, 0x73, 0x6e, 0x33, 0x32, 0x62, 0x69, 0x74, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x65, 0x73, 0x6e, 0x5f, 0x36, 0x34, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, - 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, - 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, - 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, - 0x72, 0x6b, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, - 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x22, 0xfa, 0x03, 0x0a, 0x12, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, - 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x0e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x0c, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1b, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x17, 0x76, 0x72, 0x66, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x56, 0x6c, 0x61, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, - 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x76, 0x72, - 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0xcd, 0x0c, 0x0a, 0x10, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, + 0x52, 0x11, 0x65, 0x73, 0x6e, 0x36, 0x34, 0x62, 0x69, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x08, 0x52, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x69, 0x70, 0x68, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x74, 0x75, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x53, 0x69, 0x64, 0x65, 0x4d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x77, + 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, + 0x48, 0x08, 0x52, 0x11, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x77, 0x61, 0x72, 0x6d, + 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, 0x77, 0x61, + 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x44, 0x0a, 0x18, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x15, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, + 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, + 0x48, 0x0b, 0x52, 0x08, 0x63, 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x28, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x08, 0x73, 0x74, + 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6d, 0x61, 0x78, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, + 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, + 0x0d, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x50, 0x61, + 0x72, 0x73, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x6f, 0x63, 0x74, 0x65, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, + 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, 0x17, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x48, 0x69, 0x67, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, + 0x01, 0x12, 0x46, 0x0a, 0x19, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x11, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x16, + 0x6f, 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x6f, 0x77, 0x57, 0x61, 0x74, + 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, 0x10, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x88, + 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x61, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x14, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, 0x06, 0x73, 0x61, 0x4c, + 0x69, 0x73, 0x74, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, + 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, + 0x2d, 0x0a, 0x2b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x1c, + 0x0a, 0x1a, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, + 0x61, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x22, 0x0a, 0x20, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x73, 0x6e, 0x5f, + 0x36, 0x34, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, + 0x6d, 0x74, 0x75, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, + 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, + 0x65, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, + 0x6b, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x73, 0x61, 0x22, 0xab, 0x05, 0x0a, 0x12, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x0e, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, + 0x52, 0x0c, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x49, 0x0a, 0x1b, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, + 0x52, 0x17, 0x76, 0x72, 0x66, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, + 0x6c, 0x61, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x15, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x05, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, + 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0xfe, 0x0d, 0x0a, 0x10, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, @@ -35700,4727 +37621,4877 @@ var file_dataplane_proto_sai_common_proto_rawDesc = string([]byte{ 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x13, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, - 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x70, 0x69, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x73, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, - 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, - 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, - 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x65, 0x73, 0x6e, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x15, 0x69, - 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x52, 0x13, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xbe, 0x01, 0x0a, 0x1d, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x39, 0x0a, 0x12, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, - 0x10, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, - 0x01, 0x52, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x12, 0x4c, 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x12, 0x4c, - 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x37, 0x0a, 0x11, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x32, 0x6d, 0x63, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x10, 0x6c, 0x32, - 0x6d, 0x63, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0e, 0x6c, 0x32, - 0x6d, 0x63, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xef, 0x01, 0x0a, 0x18, 0x4c, 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x14, 0x52, 0x0e, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x73, 0x70, 0x69, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, + 0x5f, 0x65, 0x73, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, + 0x65, 0x79, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, + 0x6d, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x65, 0x72, + 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, + 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x4a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x15, + 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x52, 0x13, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1d, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x39, 0x0a, 0x12, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x69, 0x73, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, + 0x0a, 0x10, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, + 0x48, 0x01, 0x52, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0xc6, 0x01, 0x0a, 0x12, 0x4c, 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x33, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x95, 0x01, 0x0a, 0x12, + 0x4c, 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x37, 0x0a, 0x11, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6c, 0x32, 0x6d, 0x63, 0x4f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x10, 0x6c, + 0x32, 0x6d, 0x63, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0e, 0x6c, + 0x32, 0x6d, 0x63, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0xef, 0x01, 0x0a, 0x18, 0x4c, 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x0b, 0x6c, 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x32, 0x6d, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0e, 0x6c, 0x32, 0x6d, 0x63, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, + 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x22, 0xf0, 0x06, 0x0a, 0x0c, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, + 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, + 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x55, 0x6e, 0x74, 0x61, + 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x04, 0x74, + 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x07, 0x52, 0x15, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x2f, 0x0a, 0x0d, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, + 0x52, 0x0b, 0x61, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x35, 0x0a, 0x10, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, + 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0e, 0x61, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, + 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x16, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0b, 0x52, 0x14, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, + 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x72, 0x73, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x4c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x2f, 0x0a, 0x0d, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x0b, 0x6c, 0x32, 0x6d, 0x63, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x31, 0x0a, 0x0e, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x0c, 0x6c, 0x32, 0x6d, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0e, 0x6c, 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, - 0x32, 0x6d, 0x63, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x69, 0x70, 0x22, 0xf0, 0x06, 0x0a, 0x0c, 0x4c, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x13, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x55, 0x6e, 0x74, 0x61, 0x67, - 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x67, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x04, 0x74, 0x70, - 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, - 0x07, 0x52, 0x15, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x0d, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, - 0x0b, 0x61, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x35, 0x0a, 0x10, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x72, - 0x6f, 0x70, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0c, 0x48, 0x0a, 0x52, 0x0e, 0x61, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, 0x72, - 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x16, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, - 0x52, 0x14, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x72, 0x73, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x86, 0x02, 0x0a, 0x12, 0x4c, 0x61, 0x67, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, - 0x0a, 0x06, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x67, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x70, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, - 0x0e, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x22, 0xd7, 0x12, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x22, 0x0a, 0x06, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x67, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, + 0x0f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, + 0x52, 0x0e, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x69, 0x64, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0xd7, 0x12, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x24, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, + 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x43, + 0x75, 0x74, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x2a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x02, 0x52, 0x25, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, + 0x19, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1b, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x19, 0x73, 0x63, 0x69, 0x5f, + 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x15, 0x73, 0x63, 0x69, 0x49, 0x6e, 0x49, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x6f, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x12, 0x70, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6e, 0x33, 0x32, 0x62, 0x69, 0x74, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x78, + 0x70, 0x6e, 0x5f, 0x36, 0x34, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x07, 0x52, 0x11, 0x78, 0x70, 0x6e, 0x36, 0x34, 0x62, 0x69, 0x74, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x67, 0x63, 0x6d, 0x5f, + 0x61, 0x65, 0x73, 0x31, 0x32, 0x38, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, + 0x52, 0x12, 0x67, 0x63, 0x6d, 0x41, 0x65, 0x73, 0x31, 0x32, 0x38, 0x53, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x67, 0x63, 0x6d, 0x5f, 0x61, + 0x65, 0x73, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, + 0x12, 0x67, 0x63, 0x6d, 0x41, 0x65, 0x73, 0x32, 0x35, 0x36, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, + 0x52, 0x16, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x53, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x0d, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x4d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x13, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0e, 0x48, 0x0b, 0x52, 0x11, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x53, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x77, 0x61, + 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0c, 0x52, 0x0e, + 0x77, 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x28, 0x0a, 0x09, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, 0x08, + 0x63, 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x73, + 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x54, 0x70, + 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x11, 0x6d, + 0x61, 0x78, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x24, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, - 0x72, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, - 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x75, - 0x74, 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x2a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x25, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x13, 0x48, 0x10, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x41, 0x0a, 0x16, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x79, + 0x70, 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x11, 0x52, 0x14, 0x70, 0x68, 0x79, + 0x73, 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x15, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x16, 0x48, 0x12, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, + 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x08, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x13, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x19, 0x48, 0x14, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, + 0x1e, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x6f, + 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x18, + 0x1a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x73, 0x73, + 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x53, 0x63, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x15, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x63, + 0x75, 0x72, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, + 0x65, 0x72, 0x53, 0x63, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, 0x72, + 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x2d, + 0x0a, 0x2b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x1c, 0x0a, + 0x1a, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, + 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x16, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1b, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6c, 0x65, 0x61, 0x72, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x19, 0x73, 0x63, 0x69, 0x5f, 0x69, - 0x6e, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x06, 0x48, 0x05, 0x52, 0x15, 0x73, 0x63, 0x69, 0x49, 0x6e, 0x49, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6f, - 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x39, 0x0a, 0x12, 0x70, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x10, 0x70, 0x6e, 0x33, 0x32, 0x62, 0x69, 0x74, 0x53, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x78, 0x70, - 0x6e, 0x5f, 0x36, 0x34, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, - 0x07, 0x52, 0x11, 0x78, 0x70, 0x6e, 0x36, 0x34, 0x62, 0x69, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x67, 0x63, 0x6d, 0x5f, 0x61, - 0x65, 0x73, 0x31, 0x32, 0x38, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, - 0x12, 0x67, 0x63, 0x6d, 0x41, 0x65, 0x73, 0x31, 0x32, 0x38, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x67, 0x63, 0x6d, 0x5f, 0x61, 0x65, - 0x73, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x0b, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x12, - 0x67, 0x63, 0x6d, 0x41, 0x65, 0x73, 0x32, 0x35, 0x36, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x18, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, - 0x16, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x53, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x74, 0x75, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x0d, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x4d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, - 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0e, 0x48, 0x0b, 0x52, 0x11, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x53, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x77, 0x61, 0x72, - 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0c, 0x52, 0x0e, 0x77, - 0x61, 0x72, 0x6d, 0x42, 0x6f, 0x6f, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x28, 0x0a, 0x09, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, 0x08, 0x63, - 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x73, 0x74, - 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x08, 0x73, 0x74, 0x61, 0x67, 0x54, 0x70, 0x69, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x11, 0x6d, 0x61, - 0x78, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x73, 0x50, 0x61, 0x72, 0x73, 0x65, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, - 0x48, 0x10, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x41, 0x0a, 0x16, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x70, - 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x11, 0x52, 0x14, 0x70, 0x68, 0x79, 0x73, - 0x69, 0x63, 0x61, 0x6c, 0x42, 0x79, 0x70, 0x61, 0x73, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x15, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x16, 0x48, 0x12, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x08, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x13, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x5f, 0x73, 0x61, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x19, 0x48, 0x14, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x1e, - 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, - 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x18, 0x1a, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x73, 0x73, 0x6f, - 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x53, 0x63, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x15, 0x52, 0x1a, 0x6d, 0x61, 0x78, 0x53, 0x65, 0x63, 0x75, - 0x72, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, - 0x72, 0x53, 0x63, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x75, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x6f, - 0x75, 0x67, 0x68, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x2d, 0x0a, - 0x2b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x1c, 0x0a, 0x1a, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, - 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x63, - 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x1c, - 0x0a, 0x1a, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, - 0x5f, 0x70, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x78, 0x70, 0x6e, 0x5f, 0x36, 0x34, 0x62, 0x69, - 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x67, 0x63, 0x6d, 0x5f, 0x61, 0x65, 0x73, 0x31, 0x32, 0x38, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x67, 0x63, 0x6d, 0x5f, 0x61, 0x65, 0x73, - 0x32, 0x35, 0x36, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, 0x74, - 0x75, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x77, 0x61, - 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, - 0x0a, 0x0a, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x22, 0xd9, 0x01, 0x0a, 0x13, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, + 0x63, 0x6c, 0x65, 0x61, 0x72, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, + 0x1c, 0x0a, 0x1a, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, + 0x13, 0x5f, 0x70, 0x6e, 0x5f, 0x33, 0x32, 0x62, 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x78, 0x70, 0x6e, 0x5f, 0x36, 0x34, 0x62, + 0x69, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x67, 0x63, 0x6d, 0x5f, 0x61, 0x65, 0x73, 0x31, 0x32, 0x38, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x67, 0x63, 0x6d, 0x5f, 0x61, 0x65, + 0x73, 0x32, 0x35, 0x36, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x6d, + 0x74, 0x75, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x77, + 0x61, 0x72, 0x6d, 0x5f, 0x62, 0x6f, 0x6f, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x5f, 0x70, 0x61, + 0x72, 0x73, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x70, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, + 0x5f, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x5f, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x22, 0x8a, 0x03, 0x0a, 0x13, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x52, 0x0c, 0x61, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x06, 0x73, 0x63, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x52, 0x0c, 0x61, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x06, 0x73, 0x63, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x03, 0x0a, 0x13, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5e, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xf0, 0x04, 0x0a, 0x13, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x04, 0x48, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, + 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x8a, 0x05, 0x0a, 0x11, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x20, 0x0a, 0x05, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x73, 0x63, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x02, 0x61, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x61, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x73, 0x61, 0x6b, 0x88, 0x01, 0x01, 0x12, + 0x1f, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x26, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x07, 0x61, 0x75, + 0x74, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, + 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x11, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, + 0x73, 0x63, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x73, 0x63, 0x69, 0x88, + 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x5f, 0x69, + 0x64, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x61, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x61, 0x6b, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, + 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x78, 0x70, 0x6e, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x73, 0x73, 0x63, 0x69, 0x22, 0xea, 0x07, 0x0a, 0x11, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, + 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x66, 0x6c, 0x6f, 0x77, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, + 0x63, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, + 0x48, 0x02, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, + 0x12, 0x48, 0x0a, 0x1a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, + 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x17, + 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, + 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, + 0x48, 0x04, 0x52, 0x12, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x65, 0x63, 0x74, 0x61, 0x67, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, + 0x52, 0x10, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x1c, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, + 0x07, 0x73, 0x61, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x06, 0x73, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x65, + 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, + 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, + 0x53, 0x75, 0x69, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, + 0x11, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, + 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, + 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, + 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x64, 0x42, + 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, + 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x16, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x46, + 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x26, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x22, 0x89, 0x0e, 0x0a, 0x16, 0x4d, 0x69, 0x72, 0x72, 0x6f, + 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, + 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, + 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x0f, + 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x69, + 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x67, 0x65, + 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x05, 0x48, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x02, 0x74, 0x63, + 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, + 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, + 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, + 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, + 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x77, 0x0a, 0x19, + 0x65, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x45, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x45, 0x6e, + 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x17, 0x65, 0x72, 0x73, 0x70, 0x61, + 0x6e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0c, 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x03, + 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x03, 0x74, + 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x73, 0x74, 0x5f, + 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x49, + 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, + 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x12, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x0d, + 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x13, 0x48, 0x12, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x67, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x0f, 0x67, 0x72, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, + 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x6c, 0x69, + 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, + 0x72, 0x50, 0x6f, 0x72, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x16, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x15, 0x52, + 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, + 0x64, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x16, 0x52, 0x0a, 0x75, 0x64, 0x70, + 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x64, + 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x17, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x44, + 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x18, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, + 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x70, 0x72, 0x69, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x72, 0x73, 0x70, 0x61, + 0x6e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, + 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x22, 0xb4, 0x02, 0x0a, 0x0e, 0x4d, 0x79, 0x4d, 0x61, 0x63, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x6b, 0x0a, 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x8a, 0x05, 0x0a, 0x11, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5e, - 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, - 0x0a, 0x05, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x73, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x02, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x02, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, - 0x03, 0x73, 0x61, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x73, 0x61, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, - 0x73, 0x61, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x04, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, - 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, - 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x13, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x58, 0x70, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x11, 0x6d, 0x69, 0x6e, - 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x73, 0x63, 0x69, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, - 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x73, 0x63, 0x69, 0x88, 0x01, 0x01, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x42, 0x05, - 0x0a, 0x03, 0x5f, 0x61, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x61, 0x6b, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, - 0x6b, 0x65, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x73, 0x73, 0x63, 0x69, 0x22, 0xea, 0x07, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5e, 0x0a, 0x10, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, - 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, - 0x09, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, - 0x1a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, - 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x17, 0x6d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x69, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x6d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, - 0x12, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x10, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, - 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x07, 0x73, 0x61, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x09, 0x52, 0x06, 0x73, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x13, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, - 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x11, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1d, 0x0a, 0x1b, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, - 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x64, 0x42, 0x22, 0x0a, 0x20, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, - 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x16, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x46, 0x64, 0x62, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, - 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, + 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x6d, 0x61, + 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xb9, 0x05, 0x0a, 0x13, 0x4d, 0x79, + 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x6b, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, + 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, - 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x89, 0x0e, 0x0a, 0x16, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x49, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x7e, + 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x55, + 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x76, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, + 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0xb0, 0x07, 0x0a, 0x11, 0x4e, 0x61, 0x74, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x6e, + 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x73, + 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x69, + 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, 0x73, + 0x6b, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x04, 0x76, + 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, + 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, + 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, + 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x6c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x08, 0x48, 0x07, 0x52, 0x09, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, + 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0b, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, + 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0b, 0x48, 0x0a, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x63, + 0x6f, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, + 0x48, 0x0c, 0x52, 0x09, 0x68, 0x69, 0x74, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x24, 0x0a, 0x07, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x06, 0x68, 0x69, 0x74, + 0x42, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x09, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, + 0x72, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x72, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x67, + 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xdb, 0x05, 0x0a, 0x17, 0x4e, 0x61, 0x74, + 0x5a, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x6e, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, + 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x07, 0x6e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, + 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, + 0x63, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x63, + 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x12, + 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, + 0x48, 0x04, 0x52, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x52, + 0x0a, 0x1f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, + 0x65, 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x05, 0x52, 0x1c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, + 0x65, 0x64, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x47, 0x0a, 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x17, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, + 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, + 0x73, 0x63, 0x61, 0x72, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, + 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x1c, + 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x22, 0x0a, 0x20, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, + 0x64, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf0, 0x05, 0x0a, 0x16, 0x4e, 0x65, 0x69, 0x67, 0x68, + 0x62, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, + 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x75, + 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, + 0x6e, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x6e, + 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, + 0x48, 0x06, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, + 0x01, 0x12, 0x39, 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x73, + 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x49, 0x6d, + 0x70, 0x6f, 0x73, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, + 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x61, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, + 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x6f, 0x6e, 0x69, 0x74, - 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, - 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, - 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, - 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x74, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x02, 0x74, 0x63, 0x88, 0x01, 0x01, - 0x12, 0x28, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x76, - 0x6c, 0x61, 0x6e, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x07, 0x76, 0x6c, - 0x61, 0x6e, 0x50, 0x72, 0x69, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x63, 0x66, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x66, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x37, 0x0a, 0x11, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x77, 0x0a, 0x19, 0x65, 0x72, 0x73, - 0x70, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, + 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0c, 0x69, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, + 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6d, 0x70, + 0x6f, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x73, + 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0xf4, 0x0b, 0x0a, 0x10, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x43, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x45, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x45, 0x6e, 0x63, 0x61, 0x70, - 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x17, 0x65, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x45, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0d, 0x48, 0x0c, 0x52, 0x0c, 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x03, 0x74, 0x6f, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0c, 0x73, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x49, 0x70, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, - 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x0d, 0x73, 0x72, 0x63, - 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, - 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x12, - 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x67, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x0f, 0x67, 0x72, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x16, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, - 0x72, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, - 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, - 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x6c, 0x69, 0x73, - 0x74, 0x12, 0x25, 0x0a, 0x07, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x15, 0x52, 0x07, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x64, 0x70, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x16, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x53, 0x72, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x64, 0x70, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x17, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x44, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1a, 0x48, 0x18, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x74, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, - 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x66, 0x69, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x5f, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x74, 0x74, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, - 0xb4, 0x02, 0x0a, 0x0e, 0x4d, 0x79, 0x4d, 0x61, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x08, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x76, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x22, 0xb9, 0x05, 0x0a, 0x13, 0x4d, 0x79, 0x53, 0x69, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x6b, - 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, - 0x69, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x18, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, - 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, - 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, - 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, - 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x48, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x05, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x76, - 0x72, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x06, 0x52, 0x03, 0x76, 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, - 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, - 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, - 0x76, 0x72, 0x66, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x22, 0xb0, 0x07, 0x0a, 0x11, 0x4e, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x08, 0x6e, 0x61, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x4e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x6e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, - 0x01, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x64, - 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x69, - 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4d, 0x61, 0x73, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x07, 0x48, 0x06, 0x52, 0x09, 0x6c, 0x34, 0x53, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, - 0x52, 0x09, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, - 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, - 0x48, 0x0b, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x2b, 0x0a, 0x0b, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x72, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, - 0x09, 0x68, 0x69, 0x74, 0x42, 0x69, 0x74, 0x43, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x07, 0x68, 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x06, 0x68, 0x69, 0x74, 0x42, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, - 0x0e, 0x52, 0x09, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x63, 0x5f, - 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, - 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6c, 0x34, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, - 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x5f, 0x63, 0x6f, 0x72, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x68, - 0x69, 0x74, 0x5f, 0x62, 0x69, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xdb, 0x05, 0x0a, 0x17, 0x4e, 0x61, 0x74, 0x5a, 0x6f, 0x6e, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x46, 0x0a, 0x08, 0x6e, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x61, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x6e, - 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x7a, 0x6f, 0x6e, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x7a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x32, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x12, 0x64, 0x69, 0x73, - 0x63, 0x61, 0x72, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, - 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, - 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x1c, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x65, 0x64, 0x65, - 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x3c, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x17, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, - 0x72, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x22, 0xf0, 0x05, 0x0a, 0x16, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, - 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, - 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x6f, 0x5f, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0b, 0x6e, 0x6f, 0x48, 0x6f, - 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, - 0x0a, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x39, - 0x0a, 0x12, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x65, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x08, 0x48, 0x07, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x49, 0x6d, 0x70, 0x6f, 0x73, - 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x69, 0x73, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x07, 0x69, 0x73, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, - 0x69, 0x6c, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0c, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, - 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, - 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x6f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x65, - 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x73, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, - 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x22, 0xf4, 0x0b, 0x0a, 0x10, 0x4e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1b, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x02, 0x69, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, - 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x03, 0x48, 0x02, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, - 0x6e, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x04, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, - 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, - 0x0d, 0x73, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x26, 0x0a, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, 0x0a, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x13, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x73, 0x65, - 0x67, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, - 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, - 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x74, 0x74, 0x6c, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x6f, 0x75, 0x74, - 0x73, 0x65, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x73, 0x65, - 0x67, 0x45, 0x78, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, - 0x48, 0x0c, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x65, - 0x78, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, - 0x45, 0x78, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x20, 0x71, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x02, 0x69, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x3b, 0x0a, 0x13, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x11, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x6e, 0x69, + 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, + 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x05, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, + 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, + 0x48, 0x06, 0x52, 0x0d, 0x73, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, + 0x52, 0x0a, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x0a, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, + 0x08, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, + 0x73, 0x65, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, + 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, 0x6f, 0x75, + 0x74, 0x73, 0x65, 0x67, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, 0x74, 0x73, + 0x65, 0x67, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0c, 0x48, 0x0a, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, 0x6c, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, + 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x73, 0x65, + 0x67, 0x54, 0x74, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0f, + 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x75, + 0x74, 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x0d, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x73, 0x65, + 0x67, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x0e, 0x6f, 0x75, 0x74, + 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, + 0x48, 0x0e, 0x52, 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x42, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x14, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, + 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x52, 0x65, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, + 0x52, 0x12, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, + 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x73, 0x72, 0x76, 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, + 0x73, 0x65, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, + 0x73, 0x65, 0x67, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x65, 0x78, 0x70, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, + 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, - 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, - 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, - 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, - 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x53, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x42, 0x0a, 0x17, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x73, 0x74, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x14, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x52, 0x65, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, 0x12, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x05, 0x0a, - 0x03, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x6e, 0x69, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x76, - 0x36, 0x5f, 0x73, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, - 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x75, - 0x74, 0x73, 0x65, 0x67, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x5f, 0x65, 0x78, - 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1a, 0x0a, 0x18, - 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, - 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x9a, 0x09, - 0x0a, 0x15, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x14, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x52, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, - 0x0e, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, - 0x0d, 0x73, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, - 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, - 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, - 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, - 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, - 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x0c, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x3e, 0x0a, 0x14, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x5f, - 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x13, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x2f, 0x0a, 0x0d, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, - 0x52, 0x0b, 0x61, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x10, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, - 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, 0x61, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x44, - 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x72, 0x73, 0x5f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x17, 0x61, 0x72, 0x73, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x41, 0x0a, 0x16, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, - 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x14, 0x61, 0x72, 0x73, - 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0e, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x44, 0x0a, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x0f, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x17, 0x6e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x1c, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, - 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x10, 0x52, 0x18, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, - 0x65, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, - 0x6c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x72, - 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, - 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, - 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x61, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc3, 0x01, 0x0a, 0x18, 0x4e, - 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x54, 0x6f, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x9b, 0x06, 0x0a, 0x1b, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x36, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, - 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x0f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, + 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x22, 0x9a, 0x09, 0x0a, 0x15, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x6e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, + 0x14, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x02, 0x52, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x02, 0x52, 0x0d, 0x73, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, + 0x72, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, + 0x48, 0x03, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x34, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x48, 0x04, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x53, + 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x07, 0x48, 0x05, 0x52, 0x08, 0x72, 0x65, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x30, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x06, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x14, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, + 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x13, 0x68, 0x69, 0x65, 0x72, + 0x61, 0x72, 0x63, 0x68, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x08, 0x52, 0x0b, 0x61, 0x72, 0x73, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0e, 0x61, 0x72, 0x73, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x72, + 0x73, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x17, 0x61, 0x72, 0x73, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x16, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x14, + 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x1b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, + 0x52, 0x17, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x1c, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, 0x18, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x72, + 0x6f, 0x70, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x72, 0x65, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xc3, 0x01, + 0x0a, 0x18, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, + 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4b, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x74, + 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, + 0x61, 0x70, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x54, + 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x9b, 0x06, 0x0a, 0x1b, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x11, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, + 0x48, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, + 0x0f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x0d, + 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, 0x78, 0x74, - 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x0d, 0x6f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x0c, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, - 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x07, 0x48, 0x06, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0a, 0x73, 0x65, - 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x61, 0x72, 0x73, 0x5f, 0x61, - 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x10, 0x61, - 0x72, 0x73, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, - 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, - 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x72, 0x73, 0x5f, - 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x22, 0x8c, - 0x08, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x4d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x01, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x43, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x63, 0x62, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x63, 0x62, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x1d, 0x0a, 0x03, 0x63, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x63, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, - 0x1d, 0x0a, 0x03, 0x70, 0x62, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x03, 0x70, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, - 0x0a, 0x03, 0x70, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x70, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, - 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x62, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x6f, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, + 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, + 0x0a, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x09, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x61, 0x72, + 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, + 0x52, 0x10, 0x61, 0x72, 0x73, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, + 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, + 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, + 0x72, 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x22, 0xbd, 0x09, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x62, 0x0a, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x61, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x63, 0x62, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x63, 0x62, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x63, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x63, 0x69, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x70, 0x62, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x03, 0x70, 0x62, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x70, 0x69, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x70, 0x69, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x60, 0x0a, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x12, 0x79, 0x65, - 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0f, 0x72, - 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x75, 0x0a, 0x21, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, - 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0b, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x63, 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x70, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, 0xae, 0x83, - 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, - 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x03, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x72, 0x65, - 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x75, 0x0a, - 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, - 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x11, 0x67, 0x72, + 0x65, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x62, 0x0a, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, + 0x12, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, + 0x52, 0x0f, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x21, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x1d, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x52, 0x0a, 0x0c, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, + 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, + 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x63, 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, + 0x5f, 0x70, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x8b, 0x87, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x6f, 0x70, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1c, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x17, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x11, 0x71, 0x6f, - 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x06, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x4f, 0x0a, 0x1e, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, - 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x04, 0x52, 0x1a, 0x71, 0x6f, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x3f, 0x0a, 0x18, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, - 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, 0x15, 0x71, 0x6f, 0x73, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x46, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, - 0x16, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x72, - 0x6f, 0x6f, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x52, 0x0e, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x12, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0b, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, - 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x71, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x18, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, - 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, - 0x42, 0x0a, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, - 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x06, 0x52, 0x14, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x07, 0x52, 0x18, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x08, 0x52, 0x1c, - 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x63, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x09, 0x52, 0x12, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, - 0x12, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x52, 0x15, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x53, - 0x70, 0x65, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x13, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x80, 0x01, - 0x0a, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x75, 0x0a, 0x1a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x65, + 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x17, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x71, 0x6f, 0x73, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, + 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x1e, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x1a, 0x71, 0x6f, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x4f, 0x66, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x18, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, + 0x15, 0x71, 0x6f, 0x73, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x09, 0x48, 0x05, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x48, + 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x65, + 0x64, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x52, + 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, + 0x58, 0x0a, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, - 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, - 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x12, 0x54, 0x0a, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, - 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, - 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x51, 0x0a, 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, - 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x0a, 0x52, 0x1b, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, - 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x85, 0x01, 0x0a, 0x23, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x0b, 0x52, 0x1f, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, - 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x61, 0x0a, 0x27, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x0c, 0x52, 0x23, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x73, - 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x1c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x0d, 0x52, 0x19, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, - 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x0e, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4f, 0x75, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x55, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x0f, 0x52, 0x1d, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, - 0x66, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x1b, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x4b, 0x0a, 0x0a, 0x65, 0x79, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x1d, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x45, 0x79, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1d, 0x52, 0x09, 0x65, 0x79, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2a, 0x0a, - 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x1e, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x10, 0x52, 0x09, 0x6f, 0x70, 0x65, - 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0c, 0x68, 0x77, 0x5f, - 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x52, 0x0a, 0x68, 0x77, 0x4c, 0x61, 0x6e, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x20, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x11, 0x52, 0x05, 0x73, 0x70, - 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, - 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x12, 0x52, 0x0e, 0x66, 0x75, 0x6c, 0x6c, - 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, - 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x22, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x13, 0x52, 0x0b, - 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x23, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, 0x48, 0x14, 0x52, 0x0a, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0a, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x15, - 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, - 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, - 0x65, 0x64, 0x18, 0x25, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, - 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x53, 0x70, 0x65, 0x65, - 0x64, 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x71, 0x0a, 0x1b, 0x73, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x52, 0x11, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x73, 0x0a, - 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x27, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x12, 0x47, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, - 0x65, 0x64, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, - 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x48, 0x61, 0x6c, 0x66, - 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x44, 0x0a, 0x18, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, - 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x16, 0x52, 0x15, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x78, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, 0x17, 0x52, 0x19, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x20, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x2b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x18, 0x52, - 0x1d, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x73, 0x79, 0x6d, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, - 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x19, - 0x52, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, - 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x1a, 0x52, - 0x11, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4f, 0x75, 0x69, 0x43, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x2e, 0x48, 0x1b, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x2f, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x48, 0x1c, 0x52, 0x13, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, - 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x30, 0x48, 0x1d, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x55, 0x6e, 0x74, 0x61, - 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x5f, - 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x31, 0x48, 0x1e, 0x52, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x67, - 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x32, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x32, 0x48, 0x1f, - 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x75, 0x73, 0x65, - 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x18, 0x33, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, 0x20, 0x52, 0x0e, 0x75, - 0x73, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x46, 0x65, 0x63, 0x88, 0x01, 0x01, - 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x34, 0x20, 0x01, + 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0c, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x45, 0x0a, 0x1b, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, + 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x0d, 0x20, 0x03, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, + 0x65, 0x65, 0x64, 0x12, 0x42, 0x0a, 0x17, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x06, 0x52, 0x14, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, + 0x48, 0x07, 0x52, 0x18, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x52, 0x0a, 0x1f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, + 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, + 0x48, 0x08, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x79, + 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, + 0x09, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, + 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x73, 0x70, + 0x65, 0x65, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x12, 0x52, 0x15, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x67, 0x0a, 0x1a, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, + 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x80, 0x01, 0x0a, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x14, 0x52, 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x12, 0x54, 0x0a, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, + 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, + 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x15, 0x20, 0x03, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x48, 0x61, 0x6c, 0x66, 0x44, + 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x51, 0x0a, 0x1f, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x0a, 0x52, 0x1b, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, + 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x85, 0x01, + 0x0a, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, + 0x0b, 0x52, 0x1f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x27, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x0c, + 0x52, 0x23, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x1c, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, + 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x0d, 0x52, 0x19, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, + 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x0e, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4f, 0x75, 0x69, 0x43, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x21, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x0f, 0x52, 0x1d, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x4f, 0x66, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, + 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1c, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x52, 0x18, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0a, 0x65, 0x79, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x79, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x52, 0x09, 0x65, 0x79, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x10, 0x52, + 0x09, 0x6f, 0x70, 0x65, 0x72, 0x53, 0x70, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x0c, 0x68, 0x77, 0x5f, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1f, 0x20, + 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x52, 0x0a, 0x68, 0x77, 0x4c, + 0x61, 0x6e, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, + 0x18, 0x20, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x11, + 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x66, 0x75, + 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x21, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x12, 0x52, 0x0e, + 0x66, 0x75, 0x6c, 0x6c, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, + 0x48, 0x13, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, 0x48, + 0x14, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x50, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x24, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x24, 0x48, 0x15, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x25, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x25, 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, - 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x34, 0x48, 0x21, - 0x52, 0x07, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x11, + 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x52, 0x11, + 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x73, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x64, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x35, 0x48, 0x22, 0x52, 0x0f, 0x66, - 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, 0x48, 0x23, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x37, 0x48, 0x24, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x4f, - 0x0a, 0x1e, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x18, 0x38, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, 0x25, - 0x52, 0x1a, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x57, 0x0a, 0x22, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x39, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x39, 0x48, 0x26, 0x52, 0x1e, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x3a, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x27, 0x52, 0x1e, - 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x70, 0x0a, 0x18, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x3b, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x28, 0x52, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, - 0x63, 0x6c, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3c, - 0x48, 0x29, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, - 0x3d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x2a, 0x52, - 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, - 0x12, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x61, 0x63, 0x6c, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x3e, 0x48, 0x2b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x3f, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x2c, 0x52, 0x0f, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x30, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x40, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x40, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x41, 0x20, - 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x52, 0x14, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x3a, 0x0a, 0x15, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x69, 0x72, 0x72, - 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x42, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, - 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, 0x2d, 0x52, 0x19, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1a, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x44, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x2e, 0x52, 0x18, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1d, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x45, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x45, 0x52, 0x1a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x47, 0x0a, 0x1c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x46, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, 0x52, 0x19, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, - 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x47, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x2f, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x30, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, - 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x49, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x31, 0x52, - 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4a, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x32, 0x52, 0x12, 0x71, - 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x33, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, - 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, - 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x34, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, - 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, - 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, - 0x6d, 0x61, 0x70, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x4d, 0x48, 0x35, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, - 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x36, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, - 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, - 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x4f, 0x48, 0x37, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x4a, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x50, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x38, 0x52, - 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x26, 0x71, - 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x51, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x51, 0x48, 0x39, 0x52, 0x20, 0x71, 0x6f, 0x73, 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1d, 0x71, 0x6f, - 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, - 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x52, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x3a, 0x52, 0x18, 0x71, 0x6f, 0x73, - 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x71, 0x6f, 0x73, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x53, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x53, 0x48, 0x3b, 0x52, 0x15, 0x71, 0x6f, 0x73, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4c, - 0x0a, 0x1f, 0x71, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x54, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x52, - 0x1b, 0x71, 0x6f, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x1e, - 0x71, 0x6f, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x55, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x52, 0x1a, 0x71, 0x6f, - 0x73, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x3c, 0x52, 0x17, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, - 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, - 0x57, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x3d, 0x52, - 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x72, 0x78, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x58, 0x48, 0x3e, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, - 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, - 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x3f, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x78, - 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x40, - 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, - 0x16, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x0d, 0x68, 0x77, - 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x5c, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x41, 0x52, 0x0b, 0x68, 0x77, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, - 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x48, 0x42, 0x52, 0x09, 0x65, 0x65, 0x65, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x65, 0x65, 0x5f, 0x69, - 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x43, 0x52, 0x0b, 0x65, 0x65, 0x65, 0x49, 0x64, 0x6c, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x65, 0x65, 0x5f, - 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x44, 0x52, 0x0b, 0x65, 0x65, 0x65, 0x57, 0x61, - 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0e, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x60, 0x20, 0x03, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x50, - 0x6f, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x61, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x45, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, - 0x0d, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x62, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x46, 0x52, 0x0b, - 0x70, 0x6b, 0x74, 0x54, 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, - 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x63, 0x20, 0x03, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, - 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x52, 0x11, 0x73, 0x65, 0x72, 0x64, 0x65, - 0x73, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x12, 0x2d, 0x0a, 0x0e, - 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x65, - 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x52, 0x0d, 0x73, 0x65, - 0x72, 0x64, 0x65, 0x73, 0x49, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x11, 0x73, - 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x18, 0x66, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x52, 0x10, - 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x12, 0x3d, 0x0a, 0x14, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x67, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x47, 0x52, 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x4a, 0x0a, 0x08, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x74, - 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x48, 0x52, - 0x07, 0x70, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x69, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x49, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x19, 0x61, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x6a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x52, 0x17, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x4a, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, - 0x72, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, - 0x0f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, - 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x4b, - 0x52, 0x0e, 0x70, 0x72, 0x62, 0x73, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x64, - 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x6d, 0x48, 0x4c, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, - 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x4d, 0x52, 0x19, 0x6c, - 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x75, - 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x73, 0x0a, 0x17, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x78, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x4e, 0x52, 0x14, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, - 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x70, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x70, 0x48, 0x4f, 0x52, 0x0a, 0x70, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x71, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x50, 0x52, 0x0e, 0x70, 0x72, 0x62, 0x73, 0x4c, - 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, - 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x72, 0x48, 0x51, 0x52, 0x12, 0x70, 0x72, 0x62, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x4c, - 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0e, - 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x73, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x52, 0x19, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, + 0x69, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, + 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x28, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, + 0x44, 0x0a, 0x18, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, + 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x16, 0x52, 0x15, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, + 0x17, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x6c, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x54, 0x0a, 0x20, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, + 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x2b, 0x48, 0x18, 0x52, 0x1d, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, + 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x2c, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x50, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x73, 0x48, 0x52, 0x52, 0x0c, 0x70, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x70, 0x72, 0x62, 0x73, - 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, 0x48, 0x53, 0x52, 0x0b, - 0x70, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, - 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x75, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, - 0x54, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, - 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x76, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, 0x55, 0x52, 0x13, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x77, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x77, 0x48, 0x56, 0x52, 0x11, - 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x78, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, 0x48, - 0x57, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x20, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, - 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x79, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x58, 0x52, 0x19, - 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x4d, - 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, - 0x74, 0x70, 0x69, 0x64, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x7a, 0x48, 0x59, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, - 0x0f, 0x65, 0x72, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x7b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x2c, 0x48, 0x19, 0x52, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, + 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, + 0x6f, 0x64, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x2d, 0x48, 0x1a, 0x52, 0x11, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4f, + 0x75, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x1b, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x56, + 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x48, + 0x1c, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x30, 0x48, 0x1d, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, + 0x55, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x64, + 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x31, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x31, 0x48, 0x1e, 0x52, 0x0a, 0x64, 0x72, 0x6f, 0x70, + 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x16, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, + 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x32, 0x48, 0x1f, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, + 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, + 0x10, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, + 0x63, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, + 0x20, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x46, 0x65, + 0x63, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x34, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x7b, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x5a, 0x52, 0x0e, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x41, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x1b, 0x66, 0x61, 0x62, - 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x5b, 0x52, 0x18, 0x66, 0x61, 0x62, - 0x72, 0x69, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x66, 0x61, 0x62, 0x72, - 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x7e, 0x48, 0x5c, 0x52, 0x16, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x41, 0x74, 0x74, - 0x61, 0x63, 0x68, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x48, 0x0a, 0x1a, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x7f, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x5d, 0x52, 0x17, - 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x50, 0x6f, - 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, 0x13, 0x66, 0x61, - 0x62, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x34, 0x48, 0x21, 0x52, 0x07, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x63, 0x0a, 0x11, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x35, 0x48, + 0x22, 0x52, 0x0f, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, + 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x36, 0x48, 0x23, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x73, 0x63, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, 0x48, 0x24, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, + 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x1e, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, + 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x38, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x38, 0x48, 0x25, 0x52, 0x1a, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x39, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, 0x26, 0x52, 0x1e, 0x62, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, + 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, + 0x48, 0x27, 0x52, 0x1e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x18, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x28, 0x52, 0x15, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x3c, 0x48, 0x29, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, + 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x61, 0x63, 0x6c, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x3d, 0x48, 0x2a, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, + 0x01, 0x12, 0x39, 0x0a, 0x12, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, 0x2b, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, + 0x6c, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, + 0x2c, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, + 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x40, 0x20, 0x03, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x52, 0x0e, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x41, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x52, + 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x15, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x42, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x13, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x4b, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x43, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, 0x2d, + 0x52, 0x19, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, + 0x0a, 0x1a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x44, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x2e, 0x52, 0x18, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1d, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x45, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x52, 0x1a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x1c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x46, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x46, 0x52, 0x19, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, + 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x47, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x2f, 0x52, 0x09, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x71, 0x6f, 0x73, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x48, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x30, 0x52, 0x0c, 0x71, 0x6f, 0x73, + 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, + 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x49, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x49, 0x48, 0x31, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x54, + 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x64, + 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, + 0x32, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4b, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x33, 0x52, 0x0e, + 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x34, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x44, + 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x35, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1d, 0x71, + 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4e, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x36, 0x52, 0x17, 0x71, 0x6f, + 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x6f, 0x74, + 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4f, 0x48, 0x37, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, + 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x50, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x50, 0x48, 0x38, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x5d, 0x0a, 0x26, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x51, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x39, 0x52, 0x20, 0x71, 0x6f, 0x73, 0x50, 0x66, + 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x52, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x3a, 0x52, + 0x18, 0x71, 0x6f, 0x73, 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, + 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, + 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x53, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x3b, 0x52, 0x15, 0x71, 0x6f, 0x73, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1f, 0x71, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x54, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x54, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x4a, 0x0a, 0x1e, 0x71, 0x6f, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, + 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x55, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, + 0x52, 0x1a, 0x71, 0x6f, 0x73, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, 0x1a, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x3c, 0x52, 0x17, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x57, 0x48, 0x3d, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x3e, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x78, 0x88, 0x01, + 0x01, 0x12, 0x44, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x18, 0x59, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x3f, 0x52, 0x15, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x5a, 0x48, 0x40, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, + 0x01, 0x12, 0x3b, 0x0a, 0x16, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x5b, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, + 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x5c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x41, 0x52, + 0x0b, 0x68, 0x77, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0a, 0x65, 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x5d, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x48, 0x42, 0x52, 0x09, 0x65, + 0x65, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, + 0x65, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5e, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x43, 0x52, 0x0b, 0x65, 0x65, + 0x65, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, + 0x65, 0x65, 0x65, 0x5f, 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x5f, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x44, 0x52, 0x0b, 0x65, + 0x65, 0x65, 0x57, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x60, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x52, 0x0c, 0x70, + 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x69, + 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x61, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x45, 0x52, 0x0e, + 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, + 0x48, 0x46, 0x52, 0x0b, 0x70, 0x6b, 0x74, 0x54, 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x63, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x52, 0x09, + 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x12, 0x73, 0x65, 0x72, + 0x64, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, + 0x64, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x52, 0x11, 0x73, + 0x65, 0x72, 0x64, 0x65, 0x73, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, + 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x18, 0x65, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, + 0x52, 0x0d, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, + 0x33, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x18, 0x66, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x66, 0x52, 0x10, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x70, 0x72, 0x65, 0x64, 0x72, + 0x69, 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x14, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x67, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x47, 0x52, 0x12, 0x6c, 0x69, + 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x68, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x68, 0x48, 0x48, 0x52, 0x07, 0x70, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x49, 0x52, 0x0d, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, + 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x6a, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x6a, 0x52, 0x17, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x6b, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x4a, 0x52, 0x0e, + 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6c, 0x6f, 0x63, 0x6b, 0x88, 0x01, + 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, + 0x6d, 0x69, 0x61, 0x6c, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x6c, 0x48, 0x4b, 0x52, 0x0e, 0x70, 0x72, 0x62, 0x73, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, + 0x6d, 0x69, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x4c, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x53, + 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x1c, 0x6c, + 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x6e, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, + 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, + 0x4d, 0x52, 0x19, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x73, 0x0a, 0x17, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, + 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x4e, 0x52, 0x14, 0x6c, 0x69, 0x6e, + 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x4f, 0x52, 0x0a, 0x70, 0x72, 0x62, 0x73, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x70, 0x72, 0x62, + 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x71, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x50, 0x52, 0x0e, 0x70, + 0x72, 0x62, 0x73, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x3e, 0x0a, 0x15, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x6f, + 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x72, 0x48, 0x51, 0x52, 0x12, 0x70, 0x72, 0x62, 0x73, 0x4c, + 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x5a, 0x0a, 0x0e, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x73, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x61, 0x63, 0x68, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, - 0x48, 0x5e, 0x52, 0x12, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0b, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x5f, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1a, 0x61, 0x75, 0x74, - 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, 0x48, 0x60, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x4e, - 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x61, - 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x62, 0x0a, 0x10, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x73, 0x48, 0x52, 0x52, 0x0c, 0x70, 0x72, 0x62, + 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0d, + 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x74, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x52, 0x42, 0x53, + 0x5f, 0x52, 0x58, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, + 0x48, 0x53, 0x52, 0x0b, 0x70, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x75, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x75, 0x48, 0x54, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, + 0x18, 0x76, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, 0x55, + 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x77, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x77, + 0x48, 0x56, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, + 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x78, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x78, 0x48, 0x57, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, + 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x79, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, + 0x48, 0x58, 0x52, 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, + 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x59, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x54, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x7b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x66, 0x61, 0x62, 0x72, 0x69, + 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x5a, 0x52, 0x0e, 0x66, 0x61, 0x62, 0x72, + 0x69, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x6d, 0x0a, + 0x1b, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, + 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x7d, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x5b, 0x52, + 0x18, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, 0x48, 0x5c, 0x52, 0x16, 0x66, 0x61, 0x62, 0x72, 0x69, + 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, + 0x48, 0x5d, 0x52, 0x17, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x6d, + 0x0a, 0x13, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, - 0x48, 0x62, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x10, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x80, 0x01, 0x48, 0x5e, 0x52, 0x12, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x52, 0x65, + 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, + 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x81, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x5f, 0x52, 0x0a, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, + 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, 0x48, 0x60, 0x52, 0x16, 0x61, + 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, + 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x6f, + 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x83, 0x01, 0x48, 0x61, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x10, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, - 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x85, 0x01, 0x48, 0x63, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x14, 0x61, 0x75, 0x74, - 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, - 0x64, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x1d, 0x5f, 0x31, 0x30, 0x30, 0x30, - 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, - 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x65, 0x52, 0x19, 0x31, 0x30, 0x30, 0x30, - 0x78, 0x53, 0x67, 0x6d, 0x69, 0x69, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x64, - 0x65, 0x74, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x48, 0x66, - 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x52, 0x0a, 0x0a, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x89, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x84, 0x01, 0x48, 0x62, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x10, 0x6d, 0x64, 0x69, + 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x85, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x44, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x89, 0x01, 0x48, 0x67, 0x52, 0x09, 0x64, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, - 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, - 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, 0x01, 0x48, 0x68, 0x52, - 0x16, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, - 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x03, 0x69, 0x70, - 0x67, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, - 0x01, 0x48, 0x69, 0x52, 0x03, 0x69, 0x70, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1b, 0x67, - 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x6a, 0x52, 0x18, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, - 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1d, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x6b, 0x52, 0x1a, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x20, 0x71, - 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x8e, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, - 0x6c, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x5b, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, - 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x8f, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x6d, 0x52, 0x1e, 0x71, 0x6f, 0x73, - 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0a, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x90, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x48, 0x6e, 0x52, 0x09, - 0x69, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x19, - 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x48, 0x6f, 0x52, - 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x66, 0x63, - 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x92, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, - 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x6b, 0x0a, 0x19, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, - 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, - 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x93, 0x01, 0x48, 0x70, 0x52, 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x57, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x94, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4e, 0x0a, 0x1c, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x71, 0x52, 0x19, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x10, 0x72, 0x78, 0x5f, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x96, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x4c, 0x61, 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x52, 0x0e, 0x72, 0x78, 0x53, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x0e, 0x72, 0x78, 0x5f, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x97, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, - 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x52, 0x0c, 0x72, 0x78, 0x4c, 0x6f, 0x63, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x12, 0x70, 0x63, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x98, 0x01, 0x48, 0x72, - 0x52, 0x0f, 0x70, 0x63, 0x73, 0x52, 0x78, 0x4c, 0x69, 0x6e, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x66, 0x65, 0x63, 0x5f, 0x61, 0x6c, 0x69, 0x67, - 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x99, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, - 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x99, 0x01, 0x52, 0x10, 0x66, 0x65, 0x63, 0x41, 0x6c, 0x69, 0x67, 0x6e, - 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x34, 0x0a, 0x0e, 0x66, 0x61, 0x62, 0x72, - 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x73, 0x52, 0x0d, 0x66, 0x61, - 0x62, 0x72, 0x69, 0x63, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, - 0x0a, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x9b, 0x01, 0x48, 0x74, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x63, 0x53, 0x79, 0x6d, 0x62, - 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0a, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x9c, 0x01, 0x48, 0x75, 0x52, 0x09, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1c, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x9d, 0x01, 0x48, 0x76, 0x52, 0x18, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, - 0x61, 0x64, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x9e, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, - 0x77, 0x52, 0x15, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, - 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1b, 0x61, - 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, - 0x75, 0x72, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x78, 0x52, 0x17, 0x61, 0x72, - 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x12, 0x61, 0x72, 0x73, 0x5f, - 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0xa0, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x79, - 0x52, 0x10, 0x61, 0x72, 0x73, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x61, - 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x19, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x64, 0x61, - 0x74, 0x61, 0x18, 0xa1, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xa1, 0x01, 0x52, 0x16, 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, - 0x64, 0x44, 0x65, 0x62, 0x75, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x13, 0x65, 0x63, - 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, - 0x6d, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, 0x63, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, + 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, + 0x14, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x86, 0x01, 0x48, 0x64, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x1d, 0x5f, + 0x31, 0x30, 0x30, 0x30, 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, 0x5f, 0x73, 0x6c, 0x61, 0x76, + 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x87, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x65, 0x52, 0x19, + 0x31, 0x30, 0x30, 0x30, 0x78, 0x53, 0x67, 0x6d, 0x69, 0x69, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x41, + 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0b, + 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x88, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, + 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x88, 0x01, 0x48, 0x66, 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0a, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, + 0x61, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x7a, 0x52, 0x11, 0x65, 0x63, 0x6d, 0x70, 0x48, - 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, - 0x64, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa3, - 0x01, 0x48, 0x7b, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x10, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa4, 0x01, 0x48, 0x7c, 0x52, 0x0e, 0x65, 0x63, 0x6d, 0x70, - 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, - 0x12, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, + 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x67, 0x52, 0x09, 0x64, 0x75, 0x61, 0x6c, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x88, 0x01, 0x01, 0x12, 0x75, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, + 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, + 0x01, 0x48, 0x68, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, + 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, + 0x0a, 0x03, 0x69, 0x70, 0x67, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x69, 0x52, 0x03, 0x69, 0x70, 0x67, 0x88, 0x01, 0x01, 0x12, + 0x4c, 0x0a, 0x1b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x8c, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x6a, + 0x52, 0x18, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, + 0x1d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x8d, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x6b, + 0x52, 0x1a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x54, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x8e, 0x01, 0x48, 0x6c, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, + 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x8f, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x6d, 0x52, + 0x1e, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0a, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, + 0x48, 0x6e, 0x52, 0x09, 0x69, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x6b, 0x0a, 0x19, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x91, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, + 0x01, 0x48, 0x6f, 0x52, 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, + 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x92, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x92, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x6b, 0x0a, 0x19, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, + 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa5, 0x01, 0x48, 0x7d, 0x52, 0x0f, 0x6f, 0x70, 0x65, 0x72, 0x50, - 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, - 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x7e, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x78, - 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x6c, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, + 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x70, 0x52, 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, + 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, + 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x94, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, + 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, + 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x4e, 0x0a, 0x1c, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x95, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x71, 0x52, 0x19, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x10, + 0x72, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, + 0x18, 0x96, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x52, 0x0e, 0x72, 0x78, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x12, 0x5a, 0x0a, 0x0e, + 0x72, 0x78, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x97, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x4c, 0x61, 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x52, 0x0c, 0x72, 0x78, 0x4c, 0x6f, + 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x5e, 0x0a, 0x12, 0x70, 0x63, 0x73, 0x5f, + 0x72, 0x78, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x98, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4c, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x98, 0x01, 0x48, 0x72, 0x52, 0x0f, 0x70, 0x63, 0x73, 0x52, 0x78, 0x4c, 0x69, 0x6e, 0x6b, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x12, 0x66, 0x65, 0x63, 0x5f, + 0x61, 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x99, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x4c, 0x61, 0x6e, 0x65, 0x4c, 0x61, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x99, 0x01, 0x52, 0x10, 0x66, 0x65, 0x63, 0x41, + 0x6c, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x63, 0x6b, 0x12, 0x34, 0x0a, 0x0e, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x9a, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x73, + 0x52, 0x0d, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x55, 0x0a, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x73, 0x79, + 0x6d, 0x62, 0x6f, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, 0x48, 0x74, 0x52, 0x1c, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x63, + 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x44, 0x65, 0x74, 0x65, + 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0a, 0x61, 0x72, 0x73, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9c, 0x01, 0x48, 0x75, 0x52, 0x09, 0x61, 0x72, 0x73, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1c, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, + 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x48, 0x76, 0x52, 0x18, 0x61, 0x72, 0x73, 0x50, 0x6f, + 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, + 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x9e, 0x01, 0x48, 0x77, 0x52, 0x15, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, + 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x4b, 0x0a, 0x1b, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x9f, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x78, + 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, + 0x75, 0x72, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x12, + 0x61, 0x72, 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xa0, 0x01, 0x48, 0x79, 0x52, 0x10, 0x61, 0x72, 0x73, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x19, 0x6a, 0x73, 0x6f, + 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x62, 0x75, + 0x67, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0xa1, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xa1, 0x01, 0x52, 0x16, 0x6a, 0x73, 0x6f, 0x6e, 0x46, 0x6f, 0x72, 0x6d, + 0x61, 0x74, 0x74, 0x65, 0x64, 0x44, 0x65, 0x62, 0x75, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x63, + 0x0a, 0x13, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x7a, 0x52, 0x11, 0x65, + 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xa3, 0x01, 0x48, 0x7b, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, + 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x10, 0x65, 0x63, 0x6d, 0x70, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0xa4, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa4, 0x01, 0x48, 0x7c, 0x52, 0x0e, + 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x5e, 0x0a, 0x12, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, + 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x54, - 0x78, 0x52, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xa7, 0x01, 0x48, 0x7f, 0x52, 0x11, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, - 0x11, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, - 0x74, 0x66, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xa8, 0x01, 0x48, 0x80, 0x01, 0x52, 0x0f, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, - 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x66, 0x88, 0x01, 0x01, 0x12, 0x82, 0x01, 0x0a, 0x1b, 0x70, 0x61, - 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x74, - 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x81, - 0x01, 0x52, 0x18, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, - 0x0a, 0x17, 0x72, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x70, 0x6d, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x82, 0x01, 0x52, 0x14, 0x72, 0x78, - 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x50, - 0x70, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x78, 0x5f, 0x73, 0x6e, 0x72, 0x18, - 0xab, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xab, 0x01, 0x48, - 0x83, 0x01, 0x52, 0x05, 0x72, 0x78, 0x53, 0x6e, 0x72, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0f, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0xac, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x84, 0x01, 0x52, 0x0e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x5d, 0x0a, 0x10, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0xad, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xad, 0x01, 0x52, - 0x0e, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x34, 0x0a, 0x11, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x5f, 0x6c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x18, 0xae, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xae, 0x01, 0x52, 0x0f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x4c, - 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x53, 0x0a, 0x0a, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0xaf, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa5, 0x01, 0x48, 0x7d, 0x52, 0x0f, 0x6f, + 0x70, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x40, 0x0a, 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x7e, 0x52, 0x12, 0x68, 0x6f, + 0x73, 0x74, 0x54, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x14, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x72, + 0x65, 0x61, 0x64, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xa7, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x48, + 0x6f, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa7, 0x01, 0x48, 0x7f, 0x52, 0x11, 0x68, 0x6f, 0x73, + 0x74, 0x54, 0x78, 0x52, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x3a, 0x0a, 0x11, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xa8, 0x01, 0x48, 0x80, 0x01, 0x52, 0x0f, 0x70, 0x61, 0x74, 0x68, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x66, 0x88, 0x01, 0x01, 0x12, 0x82, 0x01, + 0x0a, 0x1b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xa9, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xa9, 0x01, 0x48, 0x81, 0x01, 0x52, 0x18, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, + 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x45, 0x0a, 0x17, 0x72, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, + 0x63, 0x79, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x70, 0x6d, 0x18, 0xaa, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x82, 0x01, + 0x52, 0x14, 0x72, 0x78, 0x46, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x4f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x50, 0x70, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x78, 0x5f, + 0x73, 0x6e, 0x72, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xab, 0x01, 0x48, 0x83, 0x01, 0x52, 0x05, 0x72, 0x78, 0x53, 0x6e, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x62, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaf, 0x01, 0x48, 0x85, 0x01, 0x52, 0x09, 0x63, 0x61, - 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x19, 0x61, 0x72, - 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, - 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, 0x48, 0x86, 0x01, 0x52, 0x15, 0x61, 0x72, 0x73, 0x50, - 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1b, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0xb1, 0x01, 0x48, 0x87, 0x01, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, - 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0b, 0x70, 0x6f, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb2, - 0x01, 0x48, 0x88, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x71, - 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x73, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, + 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x84, + 0x01, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, + 0x69, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0xad, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xad, 0x01, 0x52, 0x0e, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x34, 0x0a, 0x11, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x69, + 0x72, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0xae, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xae, 0x01, 0x52, 0x0f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x61, 0x69, 0x72, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x53, 0x0a, 0x0a, 0x63, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0xaf, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaf, 0x01, 0x48, 0x85, 0x01, + 0x52, 0x09, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, + 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0xb0, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, 0x48, 0x86, 0x01, 0x52, 0x15, + 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1b, 0x61, 0x72, 0x73, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb1, 0x01, 0x48, 0x87, 0x01, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, + 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x57, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0b, 0x70, 0x6f, 0x65, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xb2, 0x01, 0x48, 0x88, 0x01, 0x52, 0x09, 0x70, 0x6f, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1c, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x73, 0x7a, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xb3, 0x01, 0x48, 0x89, 0x01, 0x52, 0x18, 0x6a, 0x73, 0x6f, 0x6e, 0x46, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x44, 0x65, 0x62, 0x75, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x53, 0x7a, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x73, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x8a, 0x01, 0x52, 0x0d, 0x75, 0x6e, 0x72, + 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, + 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xb5, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xb5, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xb6, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xb6, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0xb7, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xb7, 0x01, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, + 0x72, 0x65, 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x42, 0x1c, 0x0a, + 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x68, 0x65, + 0x61, 0x64, 0x72, 0x6f, 0x6f, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, + 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x42, 0x2a, 0x0a, 0x28, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, + 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, 0x0a, 0x1d, + 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, 0x0a, + 0x1b, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x24, 0x0a, 0x22, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x65, + 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, + 0x0a, 0x1d, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x22, 0x0a, - 0x20, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x26, 0x0a, 0x24, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x2a, 0x0a, 0x28, 0x5f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, - 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, - 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, - 0x70, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x75, - 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, - 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, - 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, - 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, - 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, 0x73, 0x65, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, - 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, - 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x62, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, + 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x66, 0x65, 0x63, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x21, + 0x0a, 0x1f, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, - 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, - 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, - 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, - 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, - 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, - 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, + 0x63, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, + 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, + 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, + 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6b, 0x74, 0x5f, 0x74, - 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x69, 0x6e, - 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, - 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, - 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x66, - 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, - 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, - 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, - 0x62, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x6f, 0x73, - 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x62, - 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, - 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, - 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, - 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, - 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, - 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, - 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, - 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x72, - 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, - 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, - 0x20, 0x0a, 0x1e, 0x58, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, - 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, - 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, - 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x69, 0x70, 0x67, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x27, - 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x74, - 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, - 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, 0x63, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x6c, - 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, - 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x23, 0x0a, - 0x21, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, - 0x6f, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x63, 0x6d, 0x70, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, - 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6f, 0x70, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x72, 0x78, 0x5f, 0x66, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, - 0x70, 0x70, 0x6d, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x6e, 0x72, 0x42, 0x12, - 0x0a, 0x10, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, - 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, - 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x6f, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, - 0x86, 0x04, 0x0a, 0x16, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x13, 0x73, 0x79, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, + 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, + 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, + 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x74, 0x70, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, + 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, + 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x6c, + 0x6f, 0x63, 0x6b, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, + 0x67, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, + 0x74, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, + 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, + 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, + 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, + 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x42, 0x1e, 0x0a, + 0x1c, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, + 0x1a, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, + 0x64, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x66, + 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, + 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x64, 0x69, + 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x58, 0x5f, 0x31, 0x30, 0x30, 0x30, + 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, + 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x75, 0x61, + 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x6f, + 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x69, 0x70, 0x67, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x20, + 0x0a, 0x1e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1c, 0x0a, + 0x1a, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, + 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, + 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x70, + 0x63, 0x73, 0x5f, 0x72, 0x78, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, + 0x6c, 0x61, 0x74, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x63, + 0x5f, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x5f, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, 0x72, + 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x72, 0x73, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, + 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, + 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x72, 0x73, 0x5f, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, 0x63, + 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x66, 0x65, 0x63, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, + 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x72, 0x65, 0x61, 0x64, + 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x61, 0x74, + 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x72, 0x78, 0x5f, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x79, 0x5f, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x5f, 0x70, 0x70, 0x6d, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x72, + 0x78, 0x5f, 0x73, 0x6e, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, + 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x6f, 0x65, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x7a, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x75, 0x6e, 0x72, 0x65, + 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x86, 0x04, 0x0a, 0x16, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x13, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x65, 0x5f, + 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x69, + 0x6e, 0x65, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x4b, 0x0a, 0x1c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, + 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x16, 0x6c, 0x69, 0x6e, 0x65, + 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x69, 0x6e, - 0x65, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x1c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x18, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x6c, - 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x16, 0x6c, 0x69, 0x6e, 0x65, 0x53, - 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x69, 0x6e, 0x65, - 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x11, 0x50, 0x6f, 0x72, - 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, - 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, - 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, - 0x6f, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x77, - 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, - 0x71, 0x6f, 0x73, 0x57, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x88, 0x07, 0x0a, 0x13, 0x50, - 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, - 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, - 0x69, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x07, 0x69, 0x64, 0x72, - 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x52, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0b, - 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, - 0x50, 0x72, 0x65, 0x31, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, - 0x72, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x06, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x32, 0x12, 0x26, 0x0a, 0x0b, - 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, - 0x50, 0x72, 0x65, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x08, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0c, - 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x31, 0x18, 0x09, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, - 0x72, 0x50, 0x6f, 0x73, 0x74, 0x31, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, - 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0a, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x32, - 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x33, - 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x0a, - 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, - 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x41, 0x74, - 0x74, 0x6e, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x6d, 0x34, 0x5f, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0d, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x61, 0x6d, 0x34, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x33, - 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0e, 0x52, 0x0f, 0x74, 0x78, 0x4f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x10, 0x74, 0x78, 0x50, 0x6d, 0x6f, 0x73, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, 0x78, - 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, - 0x10, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, 0x76, 0x6c, 0x74, - 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x11, 0x52, 0x0d, 0x74, 0x78, 0x50, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, 0x67, 0x52, - 0x65, 0x67, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x76, 0x6c, - 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x12, 0x52, 0x0d, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, 0x67, - 0x52, 0x65, 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x13, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, - 0x0a, 0x0c, 0x72, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x14, - 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, 0x0b, 0x72, 0x78, - 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x0f, 0x51, 0x6f, 0x73, 0x4d, 0x61, 0x70, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x51, 0x6f, 0x73, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, - 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x69, 0x6e, + 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x11, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, + 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, + 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x10, 0x71, 0x6f, 0x73, 0x57, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x88, 0x07, 0x0a, 0x13, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, + 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x70, 0x72, 0x65, + 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, + 0x73, 0x69, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x07, 0x69, 0x64, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x04, 0x52, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, + 0x72, 0x50, 0x72, 0x65, 0x31, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, + 0x70, 0x72, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x06, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x32, 0x12, 0x26, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, + 0x72, 0x50, 0x72, 0x65, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, + 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x08, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x28, 0x0a, + 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x31, 0x18, 0x09, 0x20, + 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x46, + 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x31, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, + 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x32, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, + 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, + 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, + 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, + 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x6e, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x41, + 0x74, 0x74, 0x6e, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x6d, 0x34, 0x5f, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0d, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x61, 0x6d, 0x34, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, + 0x33, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0e, 0x52, 0x0f, 0x74, 0x78, 0x4f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, + 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x10, 0x74, 0x78, 0x50, 0x6d, 0x6f, + 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, + 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, + 0x52, 0x10, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, 0x76, 0x6c, + 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x11, 0x52, 0x0d, 0x74, 0x78, 0x50, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, 0x67, + 0x52, 0x65, 0x67, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x76, + 0x6c, 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x52, 0x0d, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, + 0x67, 0x52, 0x65, 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x13, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, + 0x29, 0x0a, 0x0c, 0x72, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, + 0x14, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, 0x0b, 0x72, + 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, 0xb0, 0x01, 0x0a, 0x0f, 0x51, 0x6f, 0x73, 0x4d, 0x61, + 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x51, 0x4f, 0x53, 0x4d, 0x61, 0x70, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, - 0x0e, 0x6d, 0x61, 0x70, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x99, 0x08, 0x0a, 0x0e, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x2e, 0x51, 0x6f, 0x73, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, - 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x13, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x62, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0f, 0x62, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2e, 0x0a, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, - 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, - 0x12, 0x33, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, - 0x6c, 0x64, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x09, 0x48, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x66, 0x63, 0x44, 0x6c, - 0x64, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, - 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x69, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, - 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x63, 0x0a, 0x15, 0x70, - 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x69, 0x2e, 0x51, 0x4f, 0x53, 0x4d, 0x61, 0x70, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, + 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xca, 0x09, 0x0a, 0x0e, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x21, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x13, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0f, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x07, 0x52, 0x0b, 0x70, 0x61, 0x75, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, + 0x64, 0x6c, 0x64, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x66, 0x63, 0x44, + 0x6c, 0x64, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, + 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, + 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0b, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x63, 0x0a, 0x15, + 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, + 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x86, 0x01, 0x0a, 0x1d, 0x70, 0x66, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, + 0x75, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x1a, 0x70, 0x66, 0x63, + 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, + 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, + 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, + 0x64, 0x6c, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, + 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, + 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x20, 0x0a, 0x1e, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, + 0x75, 0x73, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xf9, 0x0d, 0x0a, 0x18, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x37, 0x0a, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, + 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, + 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, + 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x56, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, + 0x6d, 0x74, 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0b, 0x48, 0x0a, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, + 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1b, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, + 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, - 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x86, 0x01, 0x0a, 0x1d, 0x70, 0x66, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x1a, 0x70, 0x66, 0x63, 0x43, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, - 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, - 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, - 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, - 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x69, - 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x22, 0xc8, 0x0c, 0x0a, 0x18, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x37, 0x0a, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, - 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x06, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, - 0x48, 0x07, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x34, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x56, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, - 0x75, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, - 0x0a, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1b, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x18, 0x6e, 0x65, 0x69, 0x67, 0x68, + 0x62, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x0d, 0x76, 0x34, 0x4d, 0x63, 0x61, + 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, + 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0d, + 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, + 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x76, + 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x09, 0x69, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x13, 0x48, 0x12, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, + 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x70, 0x6c, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x16, 0x48, 0x15, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, + 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x16, 0x52, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, + 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, + 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, + 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x6d, 0x74, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, + 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x18, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x0d, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x36, 0x5f, - 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0d, 0x76, 0x36, - 0x4d, 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, - 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x14, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x76, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x12, 0x48, 0x11, 0x52, 0x09, 0x69, 0x73, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, - 0x12, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x10, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x15, 0x48, 0x14, 0x52, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x70, 0x6c, 0x73, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, - 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, - 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x36, 0x5f, - 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, - 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, - 0x9c, 0x04, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2d, - 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, - 0x75, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, - 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x6e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, - 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, - 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x69, 0x70, 0x41, - 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x41, 0x67, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, - 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x22, 0x98, - 0x01, 0x0a, 0x11, 0x52, 0x70, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x13, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x11, 0x72, 0x70, 0x66, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x70, 0x66, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x52, 0x0d, 0x72, 0x70, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa5, 0x01, 0x0a, 0x17, 0x52, 0x70, - 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x70, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x70, 0x66, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, - 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x22, 0xfb, 0x01, 0x0a, 0x15, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, - 0x9c, 0x05, 0x0a, 0x12, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, - 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, - 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, - 0x0a, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x6d, - 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x52, - 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, - 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x04, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x42, 0x75, 0x72, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, - 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, - 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x62, - 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x07, 0x48, 0x06, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x42, 0x75, 0x72, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, - 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, - 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x1b, 0x0a, - 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, - 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, 0xae, - 0x03, 0x0a, 0x17, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x6c, 0x64, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x12, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, - 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x22, - 0x94, 0x02, 0x0a, 0x14, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x42, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x4c, 0x56, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x07, 0x74, 0x6c, - 0x76, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x36, 0x5f, 0x6d, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, + 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x76, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, + 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x22, 0x9c, 0x04, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, - 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x70, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x08, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x10, 0x53, 0x74, - 0x70, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1d, - 0x0a, 0x03, 0x73, 0x74, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x05, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, + 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, + 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, + 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x70, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0b, 0x70, 0x72, + 0x65, 0x66, 0x69, 0x78, 0x41, 0x67, 0x67, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, + 0x64, 0x22, 0x98, 0x01, 0x0a, 0x11, 0x52, 0x70, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x13, 0x72, 0x70, 0x66, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x11, + 0x72, 0x70, 0x66, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0f, 0x72, 0x70, 0x66, 0x5f, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0d, 0x72, 0x70, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xa5, 0x01, 0x0a, + 0x17, 0x52, 0x70, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x0c, 0x72, 0x70, 0x66, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x70, 0x66, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x72, 0x70, 0x66, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x72, 0x70, 0x66, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x70, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x22, 0x89, 0x03, 0x0a, 0x15, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, + 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x74, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xda, 0xa5, 0x01, 0x0a, 0x0f, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x16, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1d, - 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x19, 0x6d, - 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x74, 0x75, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, - 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x78, 0x4d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x07, 0x63, 0x70, 0x75, - 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x11, - 0x6d, 0x61, 0x78, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x64, 0x62, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0c, 0x66, 0x64, 0x62, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6c, 0x33, 0x5f, 0x6e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, - 0x06, 0x52, 0x13, 0x6c, 0x33, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x6c, 0x33, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, - 0x52, 0x10, 0x6c, 0x33, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, - 0x5f, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x4c, - 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0b, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x6f, 0x66, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, - 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x45, 0x63, 0x6d, 0x70, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x6f, 0x66, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, - 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, - 0x48, 0x0c, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x55, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x17, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x4f, 0x66, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x4f, 0x66, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, - 0x14, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x43, - 0x70, 0x75, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x6f, - 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x14, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x55, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x13, + 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x6e, - 0x73, 0x6f, 0x72, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x14, 0x48, 0x12, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, - 0x66, 0x54, 0x65, 0x6d, 0x70, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x23, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x08, 0x74, 0x65, 0x6d, 0x70, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x6d, 0x70, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x13, - 0x52, 0x07, 0x6d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, - 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x18, 0x17, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x14, 0x52, 0x0b, 0x61, 0x76, - 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, - 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x15, 0x52, 0x17, 0x61, 0x63, 0x6c, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x19, 0x48, 0x16, 0x52, 0x17, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x04, 0x48, 0x03, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, + 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0x9c, 0x05, 0x0a, 0x12, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x0f, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, + 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x10, 0x73, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x0a, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, + 0x6d, 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, + 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x03, 0x52, 0x10, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6d, 0x69, 0x6e, 0x5f, 0x62, + 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x05, 0x48, 0x04, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x42, 0x75, 0x72, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x48, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, + 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x06, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x42, 0x75, 0x72, 0x73, 0x74, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, + 0x67, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x72, 0x61, + 0x74, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x5f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x22, + 0xae, 0x03, 0x0a, 0x17, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x63, + 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x09, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x06, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x78, + 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x43, 0x68, 0x69, 0x6c, + 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x12, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x07, 0x48, 0x05, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x08, + 0x0a, 0x06, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x22, 0xc5, 0x03, 0x0a, 0x14, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x42, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x4c, 0x56, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x07, 0x74, + 0x6c, 0x76, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, + 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, + 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x70, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x09, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, + 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x08, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x10, + 0x53, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x74, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x03, 0x73, 0x74, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x2c, 0x0a, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0a, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x74, 0x70, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0xdc, 0xa8, 0x01, 0x0a, 0x0f, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x40, 0x0a, 0x16, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x4d, + 0x0a, 0x1d, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, + 0x19, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, + 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, + 0x74, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x02, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x78, 0x4d, 0x74, 0x75, 0x88, 0x01, + 0x01, 0x12, 0x26, 0x0a, 0x08, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x07, 0x63, + 0x70, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x61, 0x78, + 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, + 0x52, 0x11, 0x6d, 0x61, 0x78, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x64, 0x62, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0c, 0x66, 0x64, 0x62, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6c, 0x33, 0x5f, + 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x08, 0x48, 0x06, 0x52, 0x13, 0x6c, 0x33, 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x6c, + 0x33, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x07, 0x52, 0x10, 0x6c, 0x33, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6c, 0x61, 0x67, 0x5f, 0x6d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x6c, 0x61, 0x67, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x6f, 0x66, 0x5f, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x4c, 0x61, 0x67, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x65, 0x63, 0x6d, 0x70, + 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0b, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0b, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x45, 0x63, 0x6d, 0x70, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, + 0x65, 0x75, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x55, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, + 0x0a, 0x1a, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x17, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, 0x0e, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x70, 0x75, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x43, 0x70, 0x75, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x14, 0x6f, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x55, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, + 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 0x52, 0x16, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x4f, 0x66, 0x54, 0x65, 0x6d, 0x70, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x23, 0x0a, 0x09, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x15, + 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x52, 0x08, 0x74, 0x65, + 0x6d, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, + 0x48, 0x13, 0x52, 0x07, 0x6d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2e, + 0x0a, 0x0c, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x18, 0x17, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x14, 0x52, 0x0b, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x54, 0x65, 0x6d, 0x70, 0x88, 0x01, 0x01, 0x12, 0x48, + 0x0a, 0x1a, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x15, 0x52, 0x17, 0x61, 0x63, + 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x63, 0x6c, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x19, 0x48, 0x16, 0x52, 0x17, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x17, + 0x52, 0x17, 0x61, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, + 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x18, 0x52, 0x17, 0x61, 0x63, 0x6c, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x19, 0x52, 0x1c, 0x61, 0x63, 0x6c, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x61, + 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, + 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1a, 0x52, + 0x1c, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1a, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x17, 0x52, 0x17, - 0x61, 0x63, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x63, - 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x18, 0x52, 0x17, 0x61, 0x63, 0x6c, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x19, 0x52, 0x1c, 0x61, 0x63, 0x6c, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x61, 0x63, 0x6c, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x78, - 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1d, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1a, 0x52, 0x1c, 0x61, - 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x78, 0x69, - 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x6e, - 0x0a, 0x1c, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x1e, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, - 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, - 0x48, 0x1b, 0x52, 0x17, 0x66, 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, - 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x72, - 0x0a, 0x1e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x12, 0x6e, 0x0a, 0x1c, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, - 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1f, 0x48, 0x1c, 0x52, 0x19, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x78, 0x0a, 0x21, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1d, 0x52, 0x1c, 0x6e, 0x65, 0x69, - 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, - 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x19, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x1e, 0x48, 0x1b, 0x52, 0x17, 0x66, 0x64, 0x62, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x72, 0x0a, 0x1e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1c, 0x52, 0x19, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x44, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x21, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x1e, 0x52, 0x15, 0x70, - 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x19, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x1f, 0x52, 0x15, 0x76, 0x6c, 0x61, 0x6e, 0x55, 0x73, - 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x23, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, - 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, - 0x48, 0x20, 0x52, 0x14, 0x61, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x16, 0x61, - 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x21, 0x52, 0x12, 0x61, 0x63, 0x6c, 0x55, 0x73, - 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x25, 0x48, 0x22, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x26, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x23, 0x52, 0x10, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x27, 0x48, 0x24, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x70, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x28, 0x48, 0x25, 0x52, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x57, 0x0a, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x29, 0x48, 0x26, 0x52, 0x1e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x4f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x71, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, - 0x27, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x31, 0x71, 0x42, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x28, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, - 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x61, 0x63, 0x6c, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x2c, 0x48, 0x29, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, - 0x01, 0x12, 0x54, 0x0a, 0x21, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x2a, 0x52, 0x1c, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x32, 0x71, 0x6f, 0x73, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x69, 0x65, - 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, 0x2e, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x2b, 0x52, 0x2b, 0x71, - 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x69, 0x65, 0x72, 0x61, - 0x72, 0x63, 0x68, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, - 0x36, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, - 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x52, 0x2e, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x50, 0x65, 0x72, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x68, 0x0a, 0x2c, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x30, 0x48, 0x2c, 0x52, 0x25, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x4f, 0x66, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x50, 0x65, 0x72, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x31, 0x48, 0x2d, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x75, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x32, 0x48, 0x2e, 0x52, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x33, 0x48, 0x2f, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x48, - 0x0a, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x34, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x34, 0x48, 0x30, 0x52, 0x17, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x34, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x35, 0x48, 0x31, 0x52, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x49, 0x70, 0x76, 0x36, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, - 0x48, 0x32, 0x52, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, - 0x34, 0x4e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x4c, 0x0a, 0x1c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, 0x48, 0x33, - 0x52, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x36, 0x4e, - 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, - 0x0a, 0x1d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x38, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, 0x34, 0x52, - 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x34, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4e, - 0x0a, 0x1d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x39, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, 0x35, 0x52, - 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x36, 0x4e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4f, - 0x0a, 0x1e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x36, - 0x52, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x5c, 0x0a, 0x25, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x37, 0x52, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, - 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x3c, 0x48, 0x38, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x46, - 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, - 0x48, 0x39, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x32, 0x6d, - 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, - 0x3a, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x6d, 0x63, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x3b, - 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, - 0x40, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x48, 0x3c, 0x52, - 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6e, 0x61, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x41, 0x48, 0x3d, 0x52, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1d, 0x52, 0x1c, 0x6e, + 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x44, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, + 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, + 0x0a, 0x19, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x21, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x1e, 0x52, + 0x15, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x19, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x1f, 0x52, 0x15, 0x76, 0x6c, 0x61, 0x6e, + 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x18, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, + 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x23, 0x48, 0x20, 0x52, 0x14, 0x61, 0x63, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x74, + 0x61, 0x44, 0x61, 0x74, 0x61, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, + 0x16, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, + 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x65, 0x0a, 0x19, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x21, 0x52, 0x12, 0x61, 0x63, 0x6c, + 0x55, 0x73, 0x65, 0x72, 0x54, 0x72, 0x61, 0x70, 0x49, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x25, 0x48, 0x22, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, + 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x26, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x23, 0x52, 0x10, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x48, 0x24, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x74, 0x70, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x25, 0x52, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x76, + 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x29, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x26, 0x52, 0x1e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x71, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x2a, 0x48, 0x27, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x31, 0x71, 0x42, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x28, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x2c, 0x48, 0x29, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x21, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x2a, 0x52, 0x1c, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, + 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x32, 0x71, 0x6f, 0x73, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, + 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x18, + 0x2e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x2b, 0x52, + 0x2b, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x69, 0x65, + 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x76, 0x0a, 0x36, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, + 0x63, 0x68, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x52, 0x2e, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x50, 0x65, 0x72, 0x48, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, + 0x68, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x68, 0x0a, 0x2c, 0x71, 0x6f, 0x73, 0x5f, 0x6d, + 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x68, 0x69, + 0x6c, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x30, 0x48, 0x2c, 0x52, 0x25, 0x71, 0x6f, 0x73, 0x4d, 0x61, 0x78, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x43, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x50, 0x65, 0x72, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x37, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x31, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x31, 0x48, 0x2d, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, + 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x32, 0x48, 0x2e, 0x52, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x40, + 0x0a, 0x16, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, + 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, 0x2f, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x4e, 0x75, 0x6d, 0x88, 0x01, 0x01, + 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x34, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x34, 0x48, 0x30, 0x52, 0x17, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x34, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x35, 0x48, 0x31, 0x52, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x36, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x36, 0x48, 0x32, 0x52, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x70, 0x76, 0x34, 0x4e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, + 0x48, 0x33, 0x52, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, + 0x36, 0x4e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x4e, 0x0a, 0x1d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, + 0x34, 0x52, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x34, + 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x4e, 0x0a, 0x1d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, + 0x35, 0x52, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x76, 0x36, + 0x4e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x4f, 0x0a, 0x1e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, + 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, + 0x48, 0x36, 0x52, 0x1a, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x5c, 0x0a, 0x25, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, + 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x37, 0x52, 0x20, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x3b, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x64, 0x62, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x3c, 0x48, 0x38, 0x52, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x46, 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x3d, 0x48, 0x39, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, + 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x3e, 0x48, 0x3a, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, + 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, + 0x48, 0x3b, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6e, 0x61, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x18, 0x40, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x40, 0x48, + 0x3c, 0x52, 0x12, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6e, 0x61, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x74, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x41, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x41, 0x48, 0x3d, 0x52, 0x17, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x52, 0x16, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x40, 0x0a, 0x16, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x6d, 0x79, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x44, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x3e, 0x52, 0x13, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x45, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x48, 0x3f, 0x52, 0x10, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x54, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x28, 0x0a, 0x09, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x46, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, 0x48, 0x40, 0x52, 0x08, 0x65, - 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6c, 0x61, - 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x47, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x47, 0x48, 0x41, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, - 0x72, 0x6d, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, - 0x48, 0x42, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x57, 0x61, 0x72, 0x6d, 0x88, - 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x18, 0x49, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x49, - 0x48, 0x43, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, - 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x44, 0x52, 0x0b, 0x72, 0x65, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, - 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x4b, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x45, 0x52, 0x19, 0x6d, 0x69, - 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x6e, 0x76, - 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x4c, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x46, 0x52, 0x0d, 0x6e, - 0x76, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x3c, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x47, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x41, 0x63, 0x6c, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, - 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x4e, 0x48, 0x48, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, 0x63, 0x6c, - 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x4f, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, - 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4f, 0x48, - 0x49, 0x52, 0x0d, 0x61, 0x63, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x7d, 0x0a, 0x19, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6e, 0x6f, - 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x18, 0x50, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, - 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x50, 0x48, 0x4a, 0x52, 0x17, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x53, 0x6e, 0x6f, - 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, + 0x72, 0x63, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x11, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x65, + 0x0a, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x63, 0x6c, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x43, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x52, 0x16, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x40, 0x0a, 0x16, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, + 0x44, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x3e, 0x52, + 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x45, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x48, 0x3f, 0x52, 0x10, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x72, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x46, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, 0x48, 0x40, 0x52, + 0x08, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, + 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x47, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x41, 0x52, 0x07, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, + 0x68, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x77, 0x61, 0x72, 0x6d, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x48, 0x48, 0x42, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x57, 0x61, 0x72, + 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x49, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x49, 0x48, 0x43, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x4b, - 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, - 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x52, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x4c, 0x52, 0x13, 0x62, 0x63, - 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, - 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x53, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x4d, 0x52, 0x13, - 0x6d, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, - 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x48, 0x4e, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, - 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, - 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x55, 0x48, 0x4f, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, - 0x66, 0x64, 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x56, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x50, 0x52, 0x0c, - 0x66, 0x64, 0x62, 0x41, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x74, 0x0a, 0x1e, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, - 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x57, 0x48, 0x51, 0x52, 0x1a, 0x66, 0x64, 0x62, 0x55, 0x6e, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, - 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x52, 0x52, 0x1c, - 0x66, 0x64, 0x62, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x44, 0x52, 0x0b, + 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x1c, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x4b, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x45, 0x52, 0x19, + 0x6d, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, + 0x6e, 0x76, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x4c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x46, 0x52, + 0x0d, 0x6e, 0x76, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x47, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x41, 0x63, + 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x3a, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x48, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x41, 0x63, 0x6c, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0e, 0x61, + 0x63, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x4f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, + 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x4f, 0x48, 0x49, 0x52, 0x0d, 0x61, 0x63, 0x6c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x7d, 0x0a, 0x19, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x53, 0x6e, 0x6f, 0x6f, + 0x70, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x4a, 0x52, 0x17, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x53, + 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, + 0x79, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, + 0x48, 0x4b, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x52, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x4c, 0x52, 0x13, + 0x62, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x53, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x4d, + 0x52, 0x13, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x48, 0x4e, 0x52, 0x0d, 0x73, 0x72, 0x63, + 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, + 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x55, 0x48, 0x4f, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, + 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x0e, 0x66, 0x64, 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x56, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x50, + 0x52, 0x0c, 0x66, 0x64, 0x62, 0x41, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x74, 0x0a, 0x1e, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6f, 0x6e, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x53, 0x52, 0x1c, 0x66, 0x64, 0x62, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1b, 0x65, 0x63, 0x6d, - 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x54, 0x52, 0x18, - 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x41, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x65, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x51, 0x52, 0x1a, 0x66, 0x64, 0x62, 0x55, 0x6e, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x58, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x52, + 0x52, 0x1c, 0x66, 0x64, 0x62, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, + 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x53, 0x52, 0x1c, 0x66, 0x64, 0x62, 0x4d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1b, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x5b, 0x48, 0x55, 0x52, 0x13, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, - 0x18, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x56, 0x52, 0x15, 0x65, 0x63, 0x6d, 0x70, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, - 0x48, 0x57, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, - 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, - 0x34, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, - 0x58, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x88, - 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x5f, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x59, 0x52, 0x12, 0x65, 0x63, - 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x49, 0x70, 0x76, 0x34, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x60, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x60, 0x48, 0x5a, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, - 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x1a, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x5b, 0x52, 0x17, 0x6c, 0x61, 0x67, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, - 0x62, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x5c, 0x52, - 0x12, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, - 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, - 0x5d, 0x52, 0x14, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, - 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x6c, 0x61, - 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x5e, 0x52, 0x17, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x61, 0x73, - 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x65, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x65, 0x48, 0x5f, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, - 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x66, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x48, 0x60, 0x52, 0x11, - 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x49, 0x70, 0x76, - 0x34, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x67, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x67, 0x48, 0x61, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, - 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, - 0x62, 0x52, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, - 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x69, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x63, 0x52, 0x0c, - 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, - 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, - 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x64, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, - 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x6b, 0x48, 0x65, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, - 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, - 0x66, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6d, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x67, 0x52, 0x11, 0x71, - 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x68, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, - 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x6f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, 0x69, 0x52, - 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, - 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, - 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, - 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x70, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x6a, 0x52, 0x16, 0x71, 0x6f, 0x73, - 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, - 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x71, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x6b, 0x52, 0x11, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x72, 0x48, 0x6c, 0x52, 0x0f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x14, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x73, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x73, 0x52, 0x12, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, - 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x74, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, 0x52, 0x10, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x0b, - 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x75, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, 0x6d, 0x52, 0x0a, 0x69, 0x6e, 0x69, - 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x61, - 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x6e, 0x52, 0x0d, 0x66, - 0x61, 0x73, 0x74, 0x41, 0x70, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x28, 0x0a, 0x09, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x18, 0x77, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x6f, 0x52, 0x08, 0x6d, 0x69, - 0x72, 0x72, 0x6f, 0x72, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x11, 0x61, 0x63, 0x6c, - 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x78, + 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x54, + 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, + 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, + 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x48, 0x55, 0x52, 0x13, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x5c, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x56, 0x52, 0x15, 0x65, 0x63, 0x6d, + 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x5d, 0x48, 0x57, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, + 0x70, 0x76, 0x34, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x5e, 0x48, 0x58, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, + 0x34, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x5f, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x59, 0x52, 0x12, + 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x49, 0x70, + 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x60, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x5a, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, + 0x68, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x1a, 0x6c, 0x61, 0x67, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, + 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x5b, 0x52, 0x17, 0x6c, 0x61, + 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, + 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, + 0x64, 0x18, 0x62, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, + 0x5c, 0x52, 0x12, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, + 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x6c, 0x61, 0x67, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x63, 0x48, 0x5d, 0x52, 0x14, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, + 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x5e, 0x52, 0x17, 0x6c, 0x61, 0x67, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, + 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x65, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, 0x5f, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, + 0x18, 0x66, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x48, 0x60, + 0x52, 0x11, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x49, + 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x67, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x61, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, + 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x68, 0x48, 0x62, 0x52, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, + 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, + 0x18, 0x69, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x63, + 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, + 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, + 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x64, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, + 0x31, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, + 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x65, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, + 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, + 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x6c, 0x48, 0x66, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, + 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x6d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x67, 0x52, + 0x11, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, + 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x6e, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x68, 0x52, 0x0f, 0x71, 0x6f, + 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x4b, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, 0x48, + 0x69, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x54, 0x6f, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, + 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x70, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x6a, 0x52, 0x16, 0x71, + 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, + 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x71, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x6b, 0x52, + 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x72, 0x48, 0x6c, 0x52, 0x0f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, + 0x0a, 0x14, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x73, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x73, 0x52, 0x12, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x61, 0x72, 0x64, + 0x77, 0x61, 0x72, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x74, + 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x74, 0x52, 0x10, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, + 0x0a, 0x0b, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x75, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x75, 0x48, 0x6d, 0x52, 0x0a, 0x69, + 0x6e, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, + 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x76, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x6e, 0x52, + 0x0d, 0x66, 0x61, 0x73, 0x74, 0x41, 0x70, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x18, 0x77, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x6f, 0x52, 0x08, + 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x11, 0x61, + 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x78, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, + 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x7d, 0x48, 0x70, 0x52, 0x0f, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x10, 0x61, 0x63, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x7d, 0x48, 0x70, 0x52, 0x0f, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x49, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5b, 0x0a, 0x10, 0x61, 0x63, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x79, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, - 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7e, - 0x48, 0x71, 0x52, 0x0e, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x45, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x7a, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x72, 0x52, 0x0f, 0x73, 0x72, 0x76, - 0x36, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x64, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x4b, 0x0a, 0x0d, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x74, 0x6c, 0x76, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x7b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, - 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, 0x01, 0x52, - 0x0b, 0x73, 0x72, 0x76, 0x36, 0x54, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x17, - 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x6c, 0x65, 0x73, 0x73, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x73, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4e, 0x75, 0x6d, - 0x4c, 0x6f, 0x73, 0x73, 0x6c, 0x65, 0x73, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x64, 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x74, - 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x70, 0x66, 0x63, 0x5f, 0x74, - 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, 0x75, 0x52, 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, - 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, - 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x7f, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, - 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x6b, 0x0a, 0x19, 0x70, - 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x76, 0x52, 0x15, - 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, - 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, - 0x81, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, - 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x52, - 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x72, 0x0a, 0x1f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x82, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x77, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, - 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0f, - 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, - 0x84, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, 0x01, 0x48, - 0x78, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x10, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x79, 0x52, 0x0e, 0x63, 0x72, 0x63, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x18, - 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x7a, 0x52, 0x16, 0x63, 0x72, 0x63, 0x52, - 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6f, 0x66, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x87, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x7b, - 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x62, - 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x7c, 0x52, 0x0d, 0x6d, 0x61, - 0x78, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x8b, + 0x0f, 0x7e, 0x48, 0x71, 0x52, 0x0e, 0x61, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x45, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, 0x72, 0x76, 0x36, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x7a, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7f, 0x48, 0x72, 0x52, 0x0f, 0x73, + 0x72, 0x76, 0x36, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x64, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x12, 0x4b, 0x0a, 0x0d, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x74, 0x6c, 0x76, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x7b, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x54, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x80, + 0x01, 0x52, 0x0b, 0x73, 0x72, 0x76, 0x36, 0x54, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, + 0x0a, 0x17, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x6c, 0x65, + 0x73, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x81, 0x01, 0x48, 0x73, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4e, + 0x75, 0x6d, 0x4c, 0x6f, 0x73, 0x73, 0x6c, 0x65, 0x73, 0x73, 0x51, 0x75, 0x65, 0x75, 0x65, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x7d, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, + 0x48, 0x74, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6a, 0x0a, 0x19, 0x70, 0x66, 0x63, + 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x84, 0x01, 0x48, 0x75, 0x52, 0x15, 0x70, 0x66, 0x63, + 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, + 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x7f, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, + 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, + 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x6b, 0x0a, + 0x19, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x76, + 0x52, 0x15, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x13, 0x70, 0x66, + 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x81, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, + 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x12, 0x72, 0x0a, 0x1f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x82, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x52, 0x1c, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x77, 0x52, 0x0d, 0x74, 0x70, + 0x69, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, + 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8a, + 0x01, 0x48, 0x78, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x56, 0x6c, + 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x10, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x79, 0x52, 0x0e, 0x63, 0x72, 0x63, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, + 0x0a, 0x18, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x7a, 0x52, 0x16, 0x63, 0x72, + 0x63, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, + 0x48, 0x7b, 0x52, 0x12, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x42, 0x66, 0x64, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0f, 0x6d, 0x61, 0x78, + 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x88, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x7c, 0x52, 0x0d, + 0x6d, 0x61, 0x78, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x8b, 0x01, 0x0a, 0x27, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, + 0x70, 0x76, 0x34, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x6f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x89, 0x01, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x52, 0x22, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x27, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x76, - 0x34, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, - 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x89, 0x01, 0x20, 0x03, 0x28, + 0x36, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, + 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x8a, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x90, 0x01, 0x52, 0x22, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x64, 0x49, 0x70, 0x76, 0x34, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x8b, 0x01, 0x0a, - 0x27, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x66, 0x66, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x8a, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x52, 0x22, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x49, 0x70, 0x76, 0x36, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4f, - 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x0a, 0x6d, 0x69, - 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x72, 0x78, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x48, 0x7d, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x42, - 0x66, 0x64, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, 0x5f, 0x62, - 0x66, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x7e, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x42, 0x66, 0x64, 0x54, - 0x78, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, - 0x48, 0x7f, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x18, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x80, 0x01, 0x52, 0x15, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4d, - 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x8f, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x81, 0x01, 0x52, 0x10, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x72, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, - 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x48, 0x82, 0x01, 0x52, 0x10, 0x6d, 0x61, - 0x78, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x4b, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, - 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x91, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x98, 0x01, 0x48, - 0x83, 0x01, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x4d, 0x69, - 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6d, - 0x0a, 0x1d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x92, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x91, 0x01, 0x52, 0x22, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x49, 0x70, 0x76, 0x36, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2b, 0x0a, 0x0a, + 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x72, 0x78, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x48, 0x7d, 0x52, 0x08, 0x6d, 0x69, + 0x6e, 0x42, 0x66, 0x64, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6d, 0x69, 0x6e, + 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x74, 0x78, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x93, 0x01, 0x48, 0x7e, 0x52, 0x08, 0x6d, 0x69, 0x6e, 0x42, 0x66, + 0x64, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x94, 0x01, 0x48, 0x7f, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x74, 0x54, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x47, + 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x80, 0x01, 0x52, 0x15, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x8f, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x81, 0x01, + 0x52, 0x10, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x97, 0x01, 0x48, 0x82, 0x01, 0x52, 0x10, + 0x6d, 0x61, 0x78, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1a, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x98, + 0x01, 0x48, 0x83, 0x01, 0x52, 0x17, 0x6d, 0x61, 0x78, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, + 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x6d, 0x0a, 0x1d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x92, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x99, 0x01, 0x52, 0x1a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x4e, 0x0a, 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x18, + 0x93, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, + 0x84, 0x01, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, + 0x61, 0x6e, 0x65, 0x4f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x2c, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x94, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, + 0x52, 0x0b, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x68, 0x0a, + 0x1a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x95, 0x01, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x52, 0x17, + 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x73, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x85, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x53, + 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1a, 0x6e, 0x61, + 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x86, 0x01, 0x52, 0x16, 0x6e, 0x61, 0x74, + 0x5a, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x87, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x13, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, 0x18, 0x99, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x42, 0x75, 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa1, 0x01, 0x48, 0x88, 0x01, 0x52, + 0x11, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, + 0x75, 0x73, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x89, 0x01, 0x52, 0x0f, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x4e, 0x0a, 0x1b, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x18, + 0x9b, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa5, 0x01, 0x48, + 0x8a, 0x01, 0x52, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, + 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x71, 0x0a, 0x14, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x12, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, + 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa7, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x10, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x4a, 0x0a, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, + 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x9e, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa8, 0x01, 0x48, 0x8d, 0x01, + 0x52, 0x17, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, + 0x61, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, + 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x8e, 0x01, 0x52, 0x15, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x1f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, + 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x1b, 0x66, 0x69, 0x72, 0x6d, + 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x6e, 0x64, 0x49, 0x6e, 0x69, + 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x0f, 0x66, 0x69, + 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xa1, 0x01, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xab, 0x01, 0x48, 0x90, 0x01, + 0x52, 0x0e, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x16, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, + 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xa2, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x91, 0x01, + 0x52, 0x14, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x16, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xad, 0x01, 0x48, 0x92, 0x01, 0x52, 0x14, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x4d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x38, 0x0a, 0x13, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xa4, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xae, 0x01, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, 0x35, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xaf, 0x01, 0x48, 0x93, 0x01, 0x52, 0x2d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x67, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, + 0x65, 0x54, 0x6f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0xa6, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x99, - 0x01, 0x52, 0x1a, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e, 0x0a, - 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x93, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x84, 0x01, - 0x52, 0x18, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, 0x61, 0x6e, - 0x65, 0x4f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x94, - 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, 0x52, 0x0b, - 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x68, 0x0a, 0x1a, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x95, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x52, 0x17, 0x73, 0x75, - 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, - 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x85, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x53, 0x68, 0x75, - 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1a, 0x6e, 0x61, 0x74, 0x5f, - 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x86, 0x01, 0x52, 0x16, 0x6e, 0x61, 0x74, 0x5a, 0x6f, - 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xa0, 0x01, 0x48, 0x87, 0x01, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x13, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x75, - 0x73, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa1, 0x01, 0x48, 0x88, 0x01, 0x52, 0x11, 0x68, - 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x75, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x10, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x89, 0x01, 0x52, 0x0f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x72, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4e, - 0x0a, 0x1b, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x18, 0x9b, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa5, 0x01, 0x48, 0x8a, 0x01, - 0x52, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x71, - 0x0a, 0x14, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, - 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x9c, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x8b, 0x01, 0x52, 0x12, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x6b, 0x0a, 0x12, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, - 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xa7, 0x01, 0x48, 0x8c, 0x01, 0x52, 0x10, 0x66, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, - 0x0a, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x18, 0x9e, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa8, 0x01, 0x48, 0x8d, 0x01, 0x52, 0x17, - 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, 0x66, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x8e, 0x01, 0x52, 0x15, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x54, 0x0a, 0x1f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x8f, 0x01, 0x52, 0x1b, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x6e, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x0f, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0xa1, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xab, 0x01, 0x48, 0x90, 0x01, 0x52, 0x0e, - 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x44, 0x0a, 0x16, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, - 0x6a, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xa2, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x91, 0x01, 0x52, 0x14, - 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x6a, 0x6f, 0x72, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x16, 0x66, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xad, - 0x01, 0x48, 0x92, 0x01, 0x52, 0x14, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x69, - 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, - 0x13, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0xa4, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xae, 0x01, 0x52, 0x11, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, 0x35, 0x70, 0x72, 0x6f, 0x70, 0x6f, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaf, 0x01, - 0x48, 0x93, 0x01, 0x52, 0x2d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x4c, 0x69, 0x6e, 0x65, 0x54, - 0x6f, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0xa6, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, - 0x48, 0x94, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x12, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0xa7, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xb1, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xa8, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb2, 0x01, 0x48, 0x95, - 0x01, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x54, - 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xb3, 0x01, 0x48, 0x96, 0x01, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, - 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x53, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x97, 0x01, 0x52, 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, - 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, - 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, - 0x69, 0x64, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xb5, 0x01, 0x48, 0x98, 0x01, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x38, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xb6, 0x01, 0x48, 0x99, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x17, - 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xad, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb7, 0x01, - 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, - 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x18, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb8, 0x01, - 0x48, 0x9a, 0x01, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x10, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0xaf, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb9, 0x01, 0x52, - 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x43, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x61, 0x62, - 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xba, 0x01, 0x48, 0x9b, 0x01, 0x52, 0x13, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xb1, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbb, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x1b, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, - 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbc, 0x01, 0x48, 0x9c, 0x01, 0x52, 0x17, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x44, 0x6d, 0x61, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, - 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x14, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xb3, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbd, 0x01, 0x48, - 0x9d, 0x01, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, 0x73, 0x75, 0x70, - 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xbe, 0x01, 0x48, 0x9e, 0x01, 0x52, 0x15, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, - 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x38, 0x0a, 0x13, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xb5, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbf, 0x01, 0x52, 0x11, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5f, 0x0a, 0x25, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xc0, 0x01, 0x48, 0x9f, 0x01, 0x52, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6d, 0x61, 0x4d, 0x65, 0x6d, 0x6f, 0x72, - 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0f, - 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, - 0xb7, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc1, 0x01, 0x48, - 0xa0, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xb8, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc2, 0x01, 0x48, 0xa1, 0x01, - 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6e, 0x61, 0x70, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc3, - 0x01, 0x48, 0xa2, 0x01, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, - 0x6e, 0x61, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1b, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xba, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc4, 0x01, 0x48, 0xa3, 0x01, 0x52, 0x18, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4e, - 0x61, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x14, 0x73, - 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x6d, 0x64, 0x69, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0xbb, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0xc5, 0x01, 0x52, 0x11, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x4d, 0x64, 0x69, 0x6f, 0x41, 0x64, - 0x64, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x1d, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc6, 0x01, 0x48, 0xa4, 0x01, 0x52, 0x19, 0x6d, 0x79, 0x4d, 0x61, - 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1d, 0x6d, 0x79, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xbd, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc7, 0x01, 0x48, 0xa5, 0x01, 0x52, 0x19, 0x6d, 0x79, - 0x4d, 0x61, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x6d, 0x79, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xbe, 0x01, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc8, 0x01, 0x52, 0x09, 0x6d, 0x79, 0x4d, 0x61, 0x63, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x18, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, - 0x64, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x18, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc9, 0x01, - 0x48, 0xa6, 0x01, 0x52, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x4d, 0x79, - 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, - 0x18, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, - 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0xc0, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xca, 0x01, 0x48, 0xa7, 0x01, 0x52, 0x15, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x79, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x20, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0xc1, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcb, 0x01, 0x48, 0xa8, 0x01, 0x52, 0x1c, 0x6d, - 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x55, - 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0xc2, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xcc, 0x01, 0x48, 0xa9, 0x01, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, - 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xc3, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcd, 0x01, 0x48, 0xaa, 0x01, - 0x52, 0x1e, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, - 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0xc4, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xce, 0x01, 0x48, 0xab, 0x01, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x11, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, - 0x18, 0xc5, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcf, 0x01, - 0x48, 0xac, 0x01, 0x52, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x54, 0x61, 0x67, 0x54, - 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x63, - 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0xc6, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd2, 0x01, 0x48, - 0xad, 0x01, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x11, 0x65, 0x63, 0x6d, - 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xc7, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd3, 0x01, 0x48, 0xae, - 0x01, 0x52, 0x0f, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0b, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xd4, 0x01, 0x48, 0xaf, 0x01, 0x52, 0x0a, 0x61, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, - 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xd5, 0x01, 0x48, 0xb0, 0x01, 0x52, 0x13, 0x61, 0x63, 0x6c, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x18, 0xca, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd6, 0x01, 0x48, 0xb1, - 0x01, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, - 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd7, - 0x01, 0x48, 0xb2, 0x01, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd8, 0x01, 0x48, 0xb3, 0x01, 0x52, 0x0d, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x8b, 0x01, - 0x0a, 0x1e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xb0, 0x01, 0x48, 0x94, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, + 0x0a, 0x12, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0xa7, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xb1, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb2, 0x01, + 0x48, 0x95, 0x01, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, + 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x19, 0x71, 0x6f, 0x73, + 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xa9, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xb3, 0x01, 0x48, 0x96, 0x01, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, + 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, + 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xaa, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x97, 0x01, 0x52, 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, + 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, + 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x5f, 0x69, 0x64, 0x18, 0xab, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xb5, 0x01, 0x48, 0x98, 0x01, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0xac, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb6, 0x01, 0x48, 0x99, 0x01, 0x52, 0x0e, 0x6d, 0x61, 0x78, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x68, + 0x0a, 0x17, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xad, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, + 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xb7, 0x01, 0x52, 0x14, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x18, 0xae, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xb8, 0x01, 0x48, 0x9a, 0x01, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, + 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0xaf, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb9, + 0x01, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x43, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, + 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0xb0, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xba, 0x01, 0x48, 0x9b, 0x01, 0x52, 0x13, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x10, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xb1, 0x01, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbb, 0x01, 0x52, 0x0e, 0x66, 0x61, 0x62, 0x72, + 0x69, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x1b, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, + 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xb2, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbc, 0x01, 0x48, 0x9c, 0x01, 0x52, 0x17, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x44, 0x6d, 0x61, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x6f, + 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x14, 0x66, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd9, 0x01, 0x48, 0xb4, 0x01, 0x52, 0x1a, 0x68, 0x6f, - 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x94, 0x01, 0x0a, 0x29, - 0x72, 0x65, 0x67, 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0xce, 0x01, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, - 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdb, 0x01, 0x52, 0x23, 0x72, - 0x65, 0x67, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, - 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x12, 0x98, 0x01, 0x0a, 0x2b, 0x72, 0x65, 0x67, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, - 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, - 0x72, 0x79, 0x18, 0xcf, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbd, + 0x01, 0x48, 0x9d, 0x01, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, 0x73, + 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xbe, 0x01, 0x48, 0x9e, 0x01, 0x52, 0x15, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x65, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x13, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xb5, 0x01, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbf, 0x01, 0x52, 0x11, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5f, 0x0a, + 0x25, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, + 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xc0, 0x01, 0x48, 0x9f, 0x01, 0x52, 0x20, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6d, 0x61, 0x4d, 0x65, 0x6d, + 0x6f, 0x72, 0x79, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, + 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, + 0x6c, 0x18, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc1, + 0x01, 0x48, 0xa0, 0x01, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, + 0xb8, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc2, 0x01, 0x48, + 0xa1, 0x01, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x6e, 0x61, + 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x18, 0xb9, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xc3, 0x01, 0x48, 0xa2, 0x01, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x44, 0x6e, 0x61, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x4d, + 0x0a, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xba, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc4, 0x01, 0x48, 0xa3, 0x01, + 0x52, 0x18, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x6f, 0x75, 0x62, 0x6c, + 0x65, 0x4e, 0x61, 0x70, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x14, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x6d, 0x64, 0x69, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xbb, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xc5, 0x01, 0x52, 0x11, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x4d, 0x64, 0x69, 0x6f, + 0x41, 0x64, 0x64, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x1d, 0x6d, 0x79, 0x5f, 0x6d, + 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xbc, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc6, 0x01, 0x48, 0xa4, 0x01, 0x52, 0x19, 0x6d, 0x79, + 0x4d, 0x61, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1d, 0x6d, 0x79, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, + 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xbd, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc7, 0x01, 0x48, 0xa5, 0x01, 0x52, 0x19, + 0x6d, 0x79, 0x4d, 0x61, 0x63, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, + 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xbe, 0x01, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc8, 0x01, 0x52, 0x09, 0x6d, 0x79, 0x4d, + 0x61, 0x63, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x18, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, + 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xc9, 0x01, 0x48, 0xa6, 0x01, 0x52, 0x15, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, + 0x4d, 0x79, 0x4d, 0x61, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x47, 0x0a, 0x18, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0xc0, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xca, 0x01, 0x48, 0xa7, 0x01, 0x52, 0x15, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x79, 0x4d, 0x61, 0x63, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x20, 0x6d, 0x61, 0x78, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0xc1, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcb, 0x01, 0x48, 0xa8, 0x01, 0x52, + 0x1c, 0x6d, 0x61, 0x78, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x46, 0x6f, 0x72, 0x77, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x55, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, + 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0xc2, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xcc, 0x01, 0x48, 0xa9, 0x01, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, + 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, + 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0xc3, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcd, 0x01, 0x48, + 0xaa, 0x01, 0x52, 0x1e, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, + 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0xc4, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xce, 0x01, 0x48, 0xab, 0x01, 0x52, 0x0d, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, + 0x11, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, + 0x69, 0x64, 0x18, 0xc5, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xcf, 0x01, 0x48, 0xac, 0x01, 0x52, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x54, 0x61, + 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, + 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0xc6, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd2, + 0x01, 0x48, 0xad, 0x01, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x45, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x11, 0x65, + 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0xc7, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd3, 0x01, + 0x48, 0xae, 0x01, 0x52, 0x0f, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0b, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0xc8, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xd4, 0x01, 0x48, 0xaf, 0x01, 0x52, 0x0a, 0x61, 0x72, 0x73, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x16, 0x61, 0x63, 0x6c, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xdc, 0x01, 0x52, 0x25, 0x72, 0x65, 0x67, 0x57, 0x61, 0x72, 0x6e, 0x69, - 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x96, 0x01, - 0x0a, 0x2a, 0x72, 0x65, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0xd0, 0x01, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdd, 0x01, - 0x52, 0x24, 0x72, 0x65, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd5, 0x01, 0x48, 0xb0, 0x01, 0x52, 0x13, 0x61, 0x63, 0x6c, + 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x73, 0x74, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, + 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd6, 0x01, + 0x48, 0xb1, 0x01, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x36, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x72, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xd7, 0x01, 0x48, 0xb2, 0x01, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd8, 0x01, 0x48, 0xb3, 0x01, 0x52, 0x0d, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x8b, 0x01, 0x0a, 0x1e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd9, 0x01, 0x48, 0xb4, 0x01, 0x52, 0x1a, + 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x94, 0x01, + 0x0a, 0x29, 0x72, 0x65, 0x67, 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0xce, 0x01, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, - 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x0e, 0x61, 0x63, 0x6c, 0x5f, 0x63, 0x68, - 0x61, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xd1, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xde, 0x01, 0x48, 0xb5, 0x01, 0x52, 0x0c, 0x61, 0x63, 0x6c, - 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x28, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe0, 0x01, 0x48, 0xb6, 0x01, 0x52, 0x23, 0x74, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x28, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, - 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, - 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, - 0xd3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe1, 0x01, 0x48, - 0xb7, 0x01, 0x52, 0x23, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xe3, 0x01, 0x48, 0xb8, 0x01, 0x52, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x54, 0x77, 0x61, 0x6d, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe4, 0x01, 0x48, 0xb9, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x54, - 0x77, 0x61, 0x6d, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x64, - 0x0a, 0x28, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x6e, - 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xd6, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe5, 0x01, 0x48, 0xba, 0x01, 0x52, 0x22, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, - 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x18, 0xd7, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe6, 0x01, 0x48, 0xbb, 0x01, - 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x56, 0x6f, 0x71, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, 0x6c, 0x5f, - 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x18, 0xd8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe7, 0x01, 0x48, 0xbc, 0x01, 0x52, 0x12, 0x61, 0x63, 0x6c, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0xd9, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xe8, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, - 0x69, 0x73, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, - 0x66, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x20, - 0x0a, 0x1e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, - 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x74, - 0x75, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x33, - 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x69, 0x7a, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x33, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6c, 0x61, 0x67, 0x73, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x65, - 0x63, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6e, - 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, - 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, - 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6f, 0x66, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, - 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1d, 0x0a, 0x1b, - 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, - 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, - 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, - 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x23, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdb, 0x01, 0x52, + 0x23, 0x72, 0x65, 0x67, 0x46, 0x61, 0x74, 0x61, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, + 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x12, 0x98, 0x01, 0x0a, 0x2b, 0x72, 0x65, 0x67, 0x5f, 0x77, 0x61, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, + 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, + 0x67, 0x6f, 0x72, 0x79, 0x18, 0xcf, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, + 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdc, 0x01, 0x52, 0x25, 0x72, 0x65, 0x67, 0x57, 0x61, 0x72, + 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, + 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, + 0x96, 0x01, 0x0a, 0x2a, 0x72, 0x65, 0x67, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0xd0, + 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, + 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xdd, 0x01, 0x52, 0x24, 0x72, 0x65, 0x67, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x34, 0x0a, 0x0e, 0x61, 0x63, 0x6c, 0x5f, + 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xd1, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xde, 0x01, 0x48, 0xb5, 0x01, 0x52, 0x0c, 0x61, + 0x63, 0x6c, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x65, + 0x0a, 0x28, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, + 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe0, 0x01, 0x48, 0xb6, 0x01, 0x52, 0x23, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x28, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe1, + 0x01, 0x48, 0xb7, 0x01, 0x52, 0x23, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4d, 0x61, 0x78, 0x69, 0x6d, 0x75, + 0x6d, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x17, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe3, 0x01, 0x48, 0xb8, 0x01, 0x52, 0x15, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x77, 0x61, 0x6d, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x77, 0x61, 0x6d, + 0x70, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe4, 0x01, 0x48, 0xb9, 0x01, 0x52, 0x0f, 0x6d, 0x61, + 0x78, 0x54, 0x77, 0x61, 0x6d, 0x70, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x64, 0x0a, 0x28, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0xd6, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe5, 0x01, 0x48, 0xba, 0x01, 0x52, + 0x22, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x70, 0x4e, 0x65, 0x78, 0x74, + 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x15, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x18, + 0xd7, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe6, 0x01, 0x48, + 0xbb, 0x01, 0x52, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x56, 0x6f, 0x71, 0x73, 0x88, 0x01, 0x01, 0x12, 0x67, 0x0a, 0x15, 0x61, 0x63, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x18, 0xd8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x41, 0x43, 0x4c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe7, 0x01, 0x48, 0xbc, 0x01, 0x52, 0x12, 0x61, 0x63, + 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x50, 0x72, 0x65, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0f, 0x70, 0x6f, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0xd9, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xe8, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x1b, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xda, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xea, 0x01, 0x48, 0xbd, 0x01, 0x52, 0x18, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x69, 0x63, 0x6d, 0x70, + 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xdb, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xeb, 0x01, 0x48, 0xbe, 0x01, + 0x52, 0x12, 0x6d, 0x61, 0x78, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0xdc, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xec, 0x01, 0x48, 0xbf, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0xdd, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xed, 0x01, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, + 0x61, 0x78, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x66, 0x64, 0x62, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x6c, 0x33, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x33, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, + 0x6c, 0x61, 0x67, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x5f, 0x6f, 0x66, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x75, 0x6e, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, + 0x70, 0x75, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x6e, + 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x6e, + 0x73, 0x6f, 0x72, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x6d, + 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x65, + 0x6d, 0x70, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, + 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, + 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x64, - 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x6e, 0x65, 0x69, 0x67, - 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, - 0x1a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x71, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, - 0x24, 0x0a, 0x22, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x42, 0x35, 0x0a, 0x33, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x68, 0x69, 0x65, 0x72, - 0x61, 0x72, 0x63, 0x68, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x42, 0x2f, 0x0a, 0x2d, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, - 0x6f, 0x66, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x14, 0x0a, - 0x12, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x75, 0x70, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x66, 0x64, 0x62, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x24, 0x0a, 0x22, + 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, + 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, + 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, + 0x61, 0x63, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, + 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x5f, + 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x31, 0x71, 0x5f, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x66, 0x66, + 0x69, 0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x42, 0x35, 0x0a, 0x33, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x68, 0x69, 0x65, 0x72, 0x61, 0x72, 0x63, 0x68, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x42, 0x2f, 0x0a, 0x2d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x73, 0x5f, 0x70, + 0x65, 0x72, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x75, 0x66, + 0x66, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x6e, 0x75, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, - 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x78, 0x74, - 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x76, - 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x78, - 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0x0a, 0x1e, - 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, - 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x21, - 0x0a, 0x1f, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, 0x78, - 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x65, 0x6e, + 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1d, + 0x0a, 0x1b, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1f, 0x0a, + 0x1d, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, 0x34, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1f, + 0x0a, 0x1d, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, + 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, + 0x64, 0x62, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x69, 0x70, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6c, 0x32, 0x6d, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x6d, 0x63, 0x5f, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, - 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x74, - 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x65, 0x63, 0x6d, - 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x77, 0x61, 0x72, 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x70, - 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6e, 0x76, 0x5f, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, - 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, - 0x1c, 0x0a, 0x1a, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, - 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, - 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x61, 0x67, 0x69, - 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, 0x64, 0x62, 0x5f, - 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, - 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, + 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1d, 0x0a, 0x1b, + 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, + 0x65, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x19, 0x0a, 0x17, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x73, 0x69, 0x64, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x61, + 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, + 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, + 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x6e, 0x76, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, + 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, + 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, + 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, + 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, - 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1e, 0x0a, 0x1c, - 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, - 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, - 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, - 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, + 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, + 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, + 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, + 0x73, 0x65, 0x65, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, - 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, - 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, - 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, - 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, - 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, - 0x67, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x72, - 0x76, 0x36, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x73, - 0x73, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x73, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x74, - 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, - 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, - 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, - 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, - 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x62, - 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, - 0x69, 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x72, 0x78, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, - 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x74, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, - 0x5f, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, - 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, - 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, - 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, - 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x1e, 0x0a, 0x1c, - 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, - 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, - 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, - 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, - 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x19, - 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x6a, 0x6f, - 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x38, 0x0a, 0x36, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x67, 0x61, - 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x72, - 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, - 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, - 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, - 0x66, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, - 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, - 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x73, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x61, 0x70, 0x74, 0x5f, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x70, 0x74, 0x5f, - 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, - 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, - 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x65, - 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, - 0x69, 0x65, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6e, 0x75, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x27, 0x0a, - 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, - 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, - 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, - 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x42, 0x11, 0x0a, - 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, - 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x63, 0x68, 0x61, 0x69, - 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, - 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, - 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, - 0x77, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x70, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x63, - 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x22, 0xda, 0x0a, 0x0a, 0x15, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x4f, 0x0a, - 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, - 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x14, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, - 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x69, - 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, - 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, - 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x03, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, - 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x64, 0x65, 0x63, - 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x4d, - 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, - 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x17, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x08, 0x48, 0x05, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x11, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, - 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, - 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, - 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, - 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x13, 0x64, 0x65, - 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, - 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, + 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, + 0x69, 0x70, 0x76, 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, + 0x6d, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, + 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, + 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, + 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, + 0x5f, 0x74, 0x63, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x63, + 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x69, 0x64, 0x5f, + 0x64, 0x65, 0x70, 0x74, 0x68, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, + 0x6d, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x73, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, + 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x66, + 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, + 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, + 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, + 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x72, 0x78, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x62, 0x66, 0x64, 0x5f, 0x74, 0x78, 0x42, 0x1b, 0x0a, + 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, + 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, + 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x66, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, + 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x22, 0x0a, 0x20, 0x5f, + 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x6f, + 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x38, 0x0a, 0x36, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x74, 0x6f, 0x5f, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, + 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x64, + 0x6d, 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, + 0x69, 0x7a, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1a, 0x0a, 0x18, + 0x5f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x28, 0x0a, 0x26, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6d, + 0x61, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, + 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x6d, + 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x20, 0x0a, 0x1e, + 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, + 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x6d, 0x79, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x79, 0x5f, 0x6d, 0x61, 0x63, + 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x42, 0x23, 0x0a, + 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, + 0x61, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, + 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x63, + 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, + 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, + 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, + 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, + 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x63, 0x6c, + 0x5f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x2b, 0x0a, 0x29, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x77, 0x61, 0x6d, 0x70, 0x5f, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x61, 0x76, 0x61, 0x69, + 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x70, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, + 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x65, 0x63, 0x68, 0x6f, + 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xda, 0x0a, 0x0a, 0x15, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x12, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, + 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, + 0x0d, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0c, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, + 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x17, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, + 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, + 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x06, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, + 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, - 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, - 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, - 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, - 0x22, 0x83, 0x04, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x38, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, - 0x66, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4f, 0x66, 0x56, 0x6f, 0x71, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0c, 0x71, 0x6f, - 0x73, 0x5f, 0x76, 0x6f, 0x71, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0a, 0x71, 0x6f, 0x73, 0x56, 0x6f, 0x71, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x04, 0x70, 0x6f, - 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x0a, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, - 0x05, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, - 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, - 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x22, 0xf2, 0x02, 0x0a, 0x27, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x60, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x12, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4b, 0x65, 0x79, + 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x1b, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, + 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, + 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, + 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x63, + 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, + 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, + 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, + 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x1c, + 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, + 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, + 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, + 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, + 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, + 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x6d, 0x61, 0x70, 0x22, 0x83, 0x04, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, + 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x56, 0x6f, 0x71, 0x73, 0x88, 0x01, 0x01, 0x12, 0x28, + 0x0a, 0x0c, 0x71, 0x6f, 0x73, 0x5f, 0x76, 0x6f, 0x71, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0a, 0x71, 0x6f, + 0x73, 0x56, 0x6f, 0x71, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, + 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01, 0x12, 0x39, + 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x76, 0x6f, 0x71, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, + 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x22, 0xf2, 0x02, 0x0a, 0x27, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x60, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, + 0x52, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0d, 0x69, 0x6e, 0x52, 0x69, 0x66, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, + 0xb7, 0x05, 0x0a, 0x1f, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x58, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, + 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, + 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x69, + 0x6e, 0x52, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x11, 0x69, 0x6e, 0x52, 0x69, + 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, + 0x12, 0x4a, 0x0a, 0x0a, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x50, + 0x72, 0x65, 0x66, 0x69, 0x78, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, + 0x08, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0b, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, + 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x06, 0x74, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, + 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, + 0x65, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x22, 0xf7, 0x02, 0x0a, 0x1d, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, - 0x33, 0x0a, 0x0f, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x03, 0x52, 0x0d, 0x69, 0x6e, 0x52, 0x69, 0x66, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x5f, 0x72, - 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb7, 0x05, 0x0a, 0x1f, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x58, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, - 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x69, 0x6e, 0x52, 0x69, 0x66, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3c, - 0x0a, 0x14, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x11, 0x69, 0x6e, 0x52, 0x69, 0x66, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x0a, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x50, 0x72, 0x65, 0x66, 0x69, - 0x78, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x64, 0x73, 0x74, - 0x49, 0x70, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x74, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x68, 0x6f, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x07, 0x48, 0x06, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x36, 0x0a, 0x10, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x09, 0x48, 0x08, 0x52, 0x06, 0x74, 0x72, 0x61, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x69, - 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x5f, 0x72, 0x69, 0x66, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6e, 0x65, 0x78, 0x74, - 0x5f, 0x68, 0x6f, 0x70, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x69, 0x64, 0x22, 0xf7, 0x02, 0x0a, 0x1d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, - 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x2e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, - 0x0b, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x69, - 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, - 0x79, 0x5f, 0x64, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x44, - 0x69, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6b, 0x65, - 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x70, 0x22, - 0x9d, 0x02, 0x0a, 0x0c, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x3c, 0x0a, 0x16, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x14, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x74, 0x72, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, - 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, + 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x6e, 0x64, + 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x64, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x64, 0x65, 0x72, + 0x6c, 0x61, 0x79, 0x44, 0x69, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, + 0x64, 0x69, 0x70, 0x22, 0x9d, 0x02, 0x0a, 0x0c, 0x54, 0x61, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x16, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, + 0x79, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x14, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x34, 0x0a, 0x12, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x18, 0x74, 0x61, + 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x14, 0x74, + 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x22, 0xf3, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, + 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, + 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, + 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, + 0x48, 0x02, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x37, 0x0a, 0x11, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, + 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, + 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x07, 0x52, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x68, 0x6f, 0x73, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, + 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6f, + 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x22, 0xed, 0x01, 0x0a, 0x1f, 0x54, 0x61, + 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, + 0x08, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, 0x6c, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, + 0x48, 0x01, 0x52, 0x08, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x65, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x61, + 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x67, 0x0a, 0x18, 0x74, 0x61, 0x6d, 0x5f, 0x62, 0x69, - 0x6e, 0x64, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x54, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x14, 0x74, 0x61, 0x6d, 0x42, 0x69, - 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, - 0xf3, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, - 0x5f, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x01, 0x48, 0x00, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, - 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x29, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, - 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, - 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0b, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0a, 0x68, - 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, - 0x69, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, - 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, - 0x5f, 0x74, 0x72, 0x61, 0x70, 0x22, 0xed, 0x01, 0x0a, 0x1f, 0x54, 0x61, 0x6d, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x08, 0x74, 0x65, 0x6c, + 0x0f, 0x02, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, + 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0d, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, + 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x54, + 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x74, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x73, - 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0xae, 0x02, 0x0a, 0x11, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, - 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x27, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0a, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0e, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x09, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x02, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x54, 0x61, 0x6d, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x33, 0x0a, 0x0f, 0x71, 0x6f, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x02, 0x48, 0x01, 0x52, 0x0d, 0x71, 0x6f, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x94, 0x03, 0x0a, 0x1a, 0x54, 0x61, - 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0e, 0x68, 0x69, 0x67, 0x68, - 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x69, 0x67, 0x68, - 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, - 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x6c, - 0x6f, 0x77, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x25, - 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, - 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x04, 0x72, - 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x61, 0x62, 0x73, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x05, 0x48, 0x04, 0x52, 0x08, 0x61, 0x62, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x4d, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, + 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x71, 0x6f, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, 0x71, 0x6f, 0x73, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x94, 0x03, + 0x0a, 0x1a, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x0e, + 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, + 0x68, 0x69, 0x67, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, + 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x0c, 0x6c, 0x6f, 0x77, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, + 0x01, 0x01, 0x12, 0x25, 0x0a, 0x07, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x6c, + 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x72, 0x61, 0x74, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x03, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x61, 0x62, + 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x08, 0x61, 0x62, 0x73, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x55, 0x6e, 0x69, 0x74, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, + 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, + 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6c, 0x61, 0x74, + 0x65, 0x6e, 0x63, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x61, 0x62, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x75, 0x6e, 0x69, 0x74, 0x22, 0xf3, 0x0f, 0x0a, 0x0f, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x69, 0x6f, 0x61, 0x6d, 0x54, + 0x72, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x11, 0x69, + 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x74, + 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x35, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, + 0x70, 0x62, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x05, 0x48, 0x04, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, + 0x50, 0x62, 0x31, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x62, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x50, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x62, 0x32, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x63, 0x65, 0x44, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x23, 0x0a, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x06, 0x69, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x33, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x08, 0x52, 0x15, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x4c, + 0x33, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, + 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0b, 0x74, 0x72, + 0x61, 0x63, 0x65, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0c, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x46, + 0x0a, 0x19, 0x70, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x16, 0x70, 0x34, 0x49, + 0x6e, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x74, + 0x6d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, + 0x48, 0x0c, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x61, 0x67, + 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, + 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, + 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x3d, 0x0a, 0x14, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, + 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x12, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x76, + 0x65, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x13, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, + 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x65, + 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x61, 0x63, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, + 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x12, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x48, 0x6f, 0x70, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x15, 0x48, 0x14, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x16, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x11, 0x6e, 0x61, + 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, + 0x16, 0x52, 0x19, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2d, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x18, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x52, + 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, + 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x17, 0x52, 0x08, 0x6d, 0x61, 0x74, + 0x68, 0x46, 0x75, 0x6e, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x1a, 0x48, 0x18, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6f, + 0x61, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, + 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x62, 0x31, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x74, + 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x62, 0x32, 0x42, 0x1a, 0x0a, + 0x18, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, + 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, + 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x33, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x5f, + 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x74, 0x6d, + 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x76, + 0x65, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, + 0x67, 0x74, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, + 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x42, 0x0c, 0x0a, 0x0a, + 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x14, 0x54, + 0x61, 0x6d, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x6a, 0x0a, 0x16, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x5f, 0x6d, + 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, + 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x12, 0x74, 0x61, 0x6d, 0x54, 0x65, 0x6c, + 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x68, + 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x06, 0x0a, 0x12, 0x54, + 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x68, 0x69, 0x73, 0x74, + 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, + 0x62, 0x69, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x01, 0x52, 0x15, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x4e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x42, 0x69, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x16, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x5f, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x14, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x42, 0x69, 0x6e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x05, + 0x71, 0x75, 0x6f, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, + 0x52, 0x0a, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x74, + 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x10, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, + 0x16, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x72, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x6e, + 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, + 0x52, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x55, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x6e, + 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x0a, + 0x06, 0x5f, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x22, 0xc0, 0x02, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x54, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, + 0x52, 0x0b, 0x74, 0x61, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, + 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0d, 0x63, + 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x12, + 0x74, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x6e, + 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, + 0x74, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x10, 0x74, 0x61, 0x6d, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x3a, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, + 0x6e, 0x69, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, + 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xd6, 0x0c, 0x0a, 0x13, 0x54, + 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x62, 0x0a, 0x12, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, - 0x72, 0x6b, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, - 0x6d, 0x61, 0x72, 0x6b, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, - 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x62, - 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x75, 0x6e, 0x69, 0x74, - 0x22, 0xf3, 0x0f, 0x0a, 0x0f, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, + 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x10, 0x74, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, + 0x13, 0x69, 0x6e, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x02, 0x52, 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, + 0x20, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x03, 0x52, 0x1c, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x21, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x71, + 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x1d, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, + 0x52, 0x1c, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6d, 0x6d, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x14, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6d, 0x75, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x09, 0x48, 0x08, 0x52, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x46, 0x61, 0x62, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x48, 0x0a, 0x1a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x17, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x28, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x24, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, + 0x0a, 0x08, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x07, 0x66, 0x61, 0x62, 0x72, + 0x69, 0x63, 0x51, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0d, 0x48, 0x0c, 0x52, 0x08, 0x6e, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x2a, 0x0a, 0x0a, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x09, + 0x64, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, + 0x75, 0x6e, 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x10, 0x48, 0x0f, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x42, 0x0a, 0x19, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x11, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x52, 0x17, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x24, 0x0a, 0x22, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x6d, 0x75, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x42, 0x2b, 0x0a, 0x29, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x74, 0x69, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, + 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x74, 0x68, + 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x69, 0x64, 0x22, 0x9a, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, + 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x72, + 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, + 0x64, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x13, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x11, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x6d, 0x74, 0x75, + 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, + 0x22, 0x97, 0x16, 0x0a, 0x0f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x49, 0x6e, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x08, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x64, 0x88, - 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x69, 0x6f, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x5f, 0x70, - 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x49, 0x6e, - 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, - 0x65, 0x6e, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x69, - 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x62, 0x31, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, - 0x0e, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x50, 0x62, 0x31, 0x88, - 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x63, 0x65, 0x5f, 0x70, 0x62, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, - 0x6e, 0x63, 0x65, 0x50, 0x62, 0x32, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x69, 0x6e, 0x74, - 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x07, 0x48, 0x06, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, - 0x65, 0x44, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, - 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x06, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, - 0x63, 0x65, 0x5f, 0x6c, 0x33, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x15, - 0x69, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x33, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x63, - 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x65, 0x56, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x70, 0x34, - 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x16, 0x70, 0x34, 0x49, 0x6e, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, - 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0d, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x16, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x46, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x39, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, - 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x10, 0x48, 0x0f, 0x52, 0x12, 0x66, 0x6c, 0x6f, 0x77, 0x4c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, - 0x73, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x13, 0x6c, 0x61, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, - 0x10, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x65, 0x6e, 0x73, 0x69, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x61, 0x63, 0x6c, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x08, 0x61, 0x63, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x13, 0x48, 0x12, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x48, 0x6f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, - 0x13, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, - 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, - 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x14, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x11, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x70, - 0x61, 0x63, 0x65, 0x49, 0x64, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, - 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x16, 0x52, 0x19, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0e, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x18, 0x20, - 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x52, 0x0d, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x61, - 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x17, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, - 0x63, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, - 0x18, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6f, 0x61, 0x6d, 0x5f, 0x74, - 0x72, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, - 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, - 0x5f, 0x70, 0x62, 0x31, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, - 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x70, 0x62, 0x32, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x69, 0x6e, - 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, - 0x65, 0x5f, 0x6c, 0x33, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x70, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x61, 0x67, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, - 0x6d, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x6c, 0x69, 0x76, 0x65, 0x6e, 0x65, 0x73, - 0x73, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6c, 0x61, 0x74, - 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, - 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x61, 0x63, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, - 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x9d, 0x01, 0x0a, 0x14, 0x54, 0x61, 0x6d, 0x4d, 0x61, - 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x6a, 0x0a, 0x16, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, - 0x66, 0x75, 0x6e, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x4d, 0x61, - 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x12, 0x74, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x68, - 0x46, 0x75, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, - 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x06, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x52, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x45, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, 0x75, 0x6e, 0x64, 0x65, + 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x11, + 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x6c, + 0x61, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4f, + 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x50, 0x65, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x03, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2d, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, + 0x0a, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2d, + 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0a, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, + 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, + 0x6c, 0x56, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, + 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, + 0x08, 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, + 0x56, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x10, 0x65, + 0x6e, 0x63, 0x61, 0x70, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0c, 0x48, 0x0b, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x69, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, - 0x52, 0x15, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x4e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x4f, 0x66, 0x42, 0x69, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x5f, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x03, 0x52, 0x14, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, - 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, - 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x02, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0b, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, - 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x34, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, - 0x45, 0x0a, 0x18, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x16, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x6e, - 0x69, 0x74, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x12, 0x72, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x6f, 0x66, 0x5f, 0x62, 0x69, 0x6e, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, - 0x6f, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x74, 0x65, - 0x72, 0x70, 0x72, 0x69, 0x73, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x42, 0x1b, 0x0a, - 0x19, 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x75, - 0x6e, 0x69, 0x74, 0x22, 0xc0, 0x02, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, - 0x65, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2a, 0x0a, - 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x0b, 0x74, 0x61, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0e, 0x63, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x62, 0x0a, 0x12, 0x74, 0x61, 0x6d, 0x5f, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, - 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x10, 0x74, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, - 0x72, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, - 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x01, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x6d, - 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x42, - 0x15, 0x0a, 0x13, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xd6, 0x0c, 0x0a, 0x13, 0x54, 0x61, 0x6d, 0x54, 0x65, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x62, - 0x0a, 0x12, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x74, - 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x13, 0x69, 0x6e, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, - 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x1c, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x51, - 0x0a, 0x1f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x1b, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x55, 0x0a, 0x21, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x1d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x1c, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, - 0x6d, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x14, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x6d, 0x75, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, - 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x61, 0x62, - 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x28, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, - 0x0a, 0x52, 0x24, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x66, 0x61, - 0x62, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x07, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x51, 0x88, - 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6e, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, - 0x08, 0x6e, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, - 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x09, 0x64, 0x73, 0x63, 0x70, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x61, 0x74, 0x68, - 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x08, 0x6d, 0x61, 0x74, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x88, - 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, - 0x08, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x19, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x11, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x52, 0x17, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x61, 0x6d, 0x5f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, - 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x69, 0x6e, 0x74, 0x5f, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x23, - 0x0a, 0x21, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x23, 0x0a, - 0x21, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x6d, 0x75, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x1d, - 0x0a, 0x1b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x2b, 0x0a, 0x29, - 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x74, 0x69, 0x6c, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x61, - 0x62, 0x72, 0x69, 0x63, 0x5f, 0x71, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6e, 0x65, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x61, 0x74, 0x68, 0x5f, 0x66, 0x75, 0x6e, - 0x63, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, - 0x9a, 0x03, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x0e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x07, 0x73, 0x72, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, - 0x0a, 0x08, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x64, 0x73, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x68, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x16, 0x0a, 0x14, - 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x22, 0xe6, 0x14, 0x0a, - 0x0f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x11, 0x75, 0x6e, 0x64, 0x65, - 0x72, 0x6c, 0x61, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x38, 0x0a, 0x11, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x09, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, 0x65, 0x72, - 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, - 0x70, 0x65, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0a, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x61, - 0x70, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, + 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, + 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, + 0x72, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, + 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x5c, + 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, + 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, 0x0c, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, - 0x06, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, - 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x08, 0x48, 0x07, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x56, 0x61, 0x6c, - 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, - 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0d, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, - 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, - 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x56, 0x61, 0x6c, 0x88, - 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x61, 0x70, - 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, - 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x47, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x5c, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, - 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0c, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, - 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x0e, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x0c, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a, 0x0e, 0x64, 0x65, - 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, - 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x4d, 0x61, - 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x57, 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x74, - 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x0c, 0x64, - 0x65, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, - 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x61, 0x70, 0x44, - 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x15, 0x74, 0x65, - 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x13, 0x52, 0x12, 0x74, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x14, 0x48, 0x10, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, - 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, + 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, + 0x0e, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, - 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x15, 0x48, 0x11, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, - 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, - 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x16, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x12, 0x52, 0x0d, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x13, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, - 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x26, - 0x0a, 0x08, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x14, 0x52, 0x07, 0x73, 0x61, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x12, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, - 0x73, 0x61, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x19, 0x20, 0x03, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x52, 0x0f, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x54, 0x0a, 0x22, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, - 0x15, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, - 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1b, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x16, 0x52, 0x14, - 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, - 0x6d, 0x61, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x1c, 0x48, 0x17, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, - 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, - 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, - 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, - 0x18, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1e, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x19, 0x52, 0x15, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, 0x52, 0x0d, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x39, + 0x0a, 0x15, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x12, 0x74, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, + 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x10, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, + 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x6c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, + 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x11, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, + 0x48, 0x12, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, + 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x17, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x13, 0x52, 0x11, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x88, + 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x18, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x14, 0x52, 0x07, + 0x73, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x12, 0x69, 0x70, + 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x19, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x52, 0x0f, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x1a, 0x48, 0x15, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, + 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, + 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, + 0x48, 0x16, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, + 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, + 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x17, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, + 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x1d, 0x48, 0x18, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, + 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, + 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, + 0x48, 0x19, 0x52, 0x15, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1a, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x20, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0c, @@ -40456,4902 +42527,5333 @@ var file_dataplane_proto_sai_common_proto_rawDesc = string([]byte{ 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, 0x8b, 0x01, 0x0a, 0x12, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x6c, 0x69, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, - 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x82, 0x0a, 0x0a, 0x17, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x59, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x07, 0x6f, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, - 0x0a, 0x0a, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x6f, 0x65, - 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x75, 0x65, - 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x75, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, - 0x52, 0x09, 0x75, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, - 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, 0x76, - 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x76, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x0a, - 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x08, 0x76, 0x6e, 0x69, 0x49, - 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x76, 0x6e, 0x69, 0x5f, 0x69, - 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x76, 0x6e, 0x69, 0x49, 0x64, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, - 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0d, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, - 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, - 0x09, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, - 0x0d, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x0b, - 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x36, - 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x11, 0x48, 0x10, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x67, 0x67, 0x49, 0x64, - 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x76, - 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x12, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x0f, 0x73, 0x72, - 0x76, 0x36, 0x56, 0x70, 0x6e, 0x53, 0x69, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x73, - 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x73, - 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, - 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x73, - 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x06, 0x0a, 0x1d, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x72, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, - 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x64, 0x73, 0x74, 0x49, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x03, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, - 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, - 0x48, 0x05, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, - 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x06, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x0e, 0x69, 0x70, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, - 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, - 0x0c, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x32, 0x0a, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, - 0x48, 0x09, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, - 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, - 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x97, - 0x02, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x26, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x07, 0x6d, 0x61, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x02, 0x48, 0x01, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x3f, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x12, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x45, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x02, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x82, 0x0a, 0x0a, 0x17, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x59, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, + 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x64, 0x66, 0x42, 0x61, 0x73, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x62, 0x61, 0x73, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x52, 0x08, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, - 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x11, 0x55, 0x64, 0x66, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x21, - 0x0a, 0x08, 0x75, 0x64, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x07, 0x75, 0x64, 0x66, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, - 0x01, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x22, 0xc1, 0x03, 0x0a, 0x11, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x6c, 0x32, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x2a, 0x0a, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6f, + 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x6f, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x03, 0x52, 0x09, 0x6f, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x26, 0x0a, 0x08, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x75, 0x65, 0x63, + 0x6e, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x75, 0x65, 0x63, 0x6e, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x75, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, + 0x48, 0x06, 0x52, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x0d, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, + 0x07, 0x52, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x29, 0x0a, 0x0a, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, + 0x08, 0x76, 0x6e, 0x69, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, + 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x76, 0x6e, + 0x69, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0b, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, + 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x76, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x09, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x10, 0x48, 0x0f, 0x52, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, + 0x67, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, + 0x41, 0x67, 0x67, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, + 0x72, 0x76, 0x36, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, + 0x11, 0x52, 0x0f, 0x73, 0x72, 0x76, 0x36, 0x56, 0x70, 0x6e, 0x53, 0x69, 0x64, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x65, 0x63, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, + 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, + 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, + 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x76, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, + 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, + 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x93, 0x06, + 0x0a, 0x1d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x50, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, + 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x64, + 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4d, 0x61, 0x73, + 0x6b, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, + 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, + 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, + 0x0e, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, + 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x08, 0x52, 0x0c, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, + 0x6c, 0x79, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x5f, 0x66, 0x61, 0x6d, + 0x69, 0x6c, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x22, 0x97, 0x02, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x07, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x64, 0x66, 0x42, 0x61, + 0x73, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x62, 0x61, + 0x73, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x09, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x08, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x61, 0x73, 0x6b, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x62, 0x61, + 0x73, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0xb5, 0x01, + 0x0a, 0x11, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x08, 0x75, 0x64, 0x66, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x52, 0x07, 0x75, + 0x64, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x64, 0x66, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, + 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x88, 0x01, + 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6c, + 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xc1, 0x03, 0x0a, 0x11, 0x55, 0x64, 0x66, 0x4d, 0x61, 0x74, + 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x07, 0x6c, + 0x32, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, + 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x32, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x07, 0x6c, 0x33, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x6c, 0x32, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x49, 0x0a, 0x07, 0x6c, 0x33, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, - 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, - 0x01, 0x52, 0x06, 0x6c, 0x33, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x08, - 0x67, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x6c, 0x33, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x4b, 0x0a, 0x08, 0x67, 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, + 0x48, 0x02, 0x52, 0x07, 0x67, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, + 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x6c, 0x34, 0x5f, 0x64, 0x73, + 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x44, 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, + 0x52, 0x0d, 0x6c, 0x34, 0x44, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6c, 0x32, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x6c, 0x33, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, + 0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x05, 0x0a, 0x16, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x34, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x56, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x73, + 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x71, 0x0a, 0x1c, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, + 0x31, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x04, 0x48, 0x03, 0x52, 0x19, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, + 0x74, 0x6c, 0x31, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, + 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x22, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, - 0x61, 0x74, 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x67, - 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, - 0x01, 0x01, 0x12, 0x59, 0x0a, 0x10, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6c, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1e, 0x76, + 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x7c, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x33, 0x5f, 0x6d, + 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x41, 0x63, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x61, 0x74, - 0x61, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0d, 0x6c, 0x34, 0x44, - 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x6c, 0x32, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x6c, 0x33, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, - 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x34, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x05, 0x0a, 0x16, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x36, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, - 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x1c, 0x76, 0x69, - 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x31, 0x5f, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, - 0x19, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x74, 0x6c, 0x31, 0x50, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, - 0x22, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6f, 0x70, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x1e, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x4c, 0x33, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x21, + 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, + 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, + 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, + 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x31, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x25, 0x0a, 0x23, + 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x1e, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x70, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x7c, 0x0a, 0x22, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x33, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4c, - 0x33, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x06, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x76, 0x69, 0x6f, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x31, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x76, 0x69, 0x6f, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x25, - 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x33, 0x5f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, - 0x83, 0x12, 0x0a, 0x0d, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x76, 0x6c, - 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, - 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, - 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x02, 0x52, 0x0b, 0x73, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x03, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, - 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x04, - 0x52, 0x16, 0x69, 0x70, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, - 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x16, 0x69, 0x70, 0x76, 0x36, 0x4d, 0x63, - 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, - 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x1e, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x4e, 0x6f, 0x6e, 0x49, 0x70, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, - 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x09, 0x48, 0x07, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, - 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x1d, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, - 0x0a, 0x27, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, - 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x63, 0x61, 0x73, 0x74, - 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, - 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, - 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, - 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0b, 0x52, 0x09, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, - 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x84, 0x01, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, - 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, + 0x69, 0x6f, 0x6e, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x6c, 0x33, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x22, 0xb4, 0x13, 0x0a, 0x0d, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0b, + 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0a, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x13, + 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0b, 0x73, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, + 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x34, + 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x48, 0x04, 0x52, 0x16, 0x69, 0x70, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, + 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x16, 0x69, + 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, + 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, + 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4e, 0x6f, 0x6e, 0x49, 0x70, 0x4d, 0x63, + 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, + 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, + 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, + 0x08, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x4d, 0x63, + 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x27, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, + 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x22, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, + 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, + 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0b, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0c, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x84, 0x01, 0x0a, 0x22, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0f, 0x52, 0x20, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0d, 0x52, 0x1e, 0x75, + 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, + 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x4a, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0e, 0x52, + 0x18, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, + 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, + 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, + 0x48, 0x0f, 0x52, 0x20, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x10, 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x79, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x13, 0x48, 0x11, 0x52, 0x19, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, - 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x12, 0x48, 0x10, 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x79, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, - 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x11, 0x52, - 0x19, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, - 0x15, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4a, - 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, - 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x13, 0x52, 0x18, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x67, 0x6d, 0x70, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, - 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, - 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, - 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x70, 0x5f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, - 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, - 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, - 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, - 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, - 0x2a, 0x0a, 0x28, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, - 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, - 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x1e, 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, - 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x12, 0x52, 0x13, 0x62, 0x72, 0x6f, + 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, + 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, + 0x48, 0x13, 0x52, 0x18, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x67, 0x6d, 0x70, 0x53, 0x6e, + 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x16, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, + 0x14, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x18, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x52, 0x14, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x70, + 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, + 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, + 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, + 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, + 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, + 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, + 0x42, 0x2a, 0x0a, 0x28, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, + 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, + 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, + 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x84, 0x02, 0x0a, 0x13, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, - 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x11, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, - 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, - 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xe5, 0x1d, 0x0a, - 0x0d, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, - 0x0a, 0x0c, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0b, - 0x67, 0x72, 0x65, 0x65, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, - 0x0a, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x67, - 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x16, 0x67, 0x72, 0x65, 0x65, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x84, 0x02, 0x0a, 0x13, + 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, + 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x11, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x54, + 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x22, 0xe5, 0x1d, 0x0a, 0x0d, 0x57, 0x72, 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x0c, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x11, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, + 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x41, + 0x0a, 0x16, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, + 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x14, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x44, + 0x72, 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, + 0x48, 0x04, 0x52, 0x0c, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x12, 0x79, 0x65, 0x6c, + 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x79, 0x65, 0x6c, 0x6c, + 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x43, 0x0a, 0x17, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x15, 0x79, 0x65, + 0x6c, 0x6c, 0x6f, 0x77, 0x44, 0x72, 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x08, 0x52, 0x09, 0x72, 0x65, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x72, + 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, + 0x52, 0x0f, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x72, 0x6f, 0x70, + 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x12, 0x72, 0x65, + 0x64, 0x44, 0x72, 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x06, 0x77, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x63, 0x6e, 0x5f, + 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x45, 0x63, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0b, 0x65, + 0x63, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, + 0x17, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, + 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x42, 0x0a, 0x17, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, + 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x14, 0x65, 0x63, + 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x11, 0x48, 0x10, 0x52, 0x17, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x72, + 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x15, 0x65, 0x63, 0x6e, + 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, + 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, + 0x12, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, + 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, + 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x13, 0x52, 0x18, 0x65, 0x63, 0x6e, 0x59, + 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x65, 0x63, 0x6e, 0x5f, 0x72, + 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, + 0x52, 0x12, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x65, 0x63, 0x6e, 0x5f, 0x72, + 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, + 0x52, 0x12, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x72, + 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x17, 0x48, 0x16, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x50, + 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, + 0x1f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, + 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x17, + 0x52, 0x1b, 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, + 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x51, 0x0a, 0x1f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, + 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x19, 0x48, 0x18, 0x52, 0x1b, 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, + 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, + 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, + 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x19, 0x52, 0x1e, 0x65, 0x63, 0x6e, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x50, 0x72, + 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, + 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x1a, 0x52, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x40, + 0x0a, 0x16, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x1b, 0x52, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, + 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, + 0x12, 0x42, 0x0a, 0x17, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1d, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x1c, 0x52, 0x14, 0x79, 0x65, 0x6c, + 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, + 0x34, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, + 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x1d, 0x52, + 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, + 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1e, + 0x52, 0x11, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x20, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1f, 0x52, 0x11, + 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, + 0x34, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, + 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x36, 0x34, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, + 0x48, 0x20, 0x52, 0x16, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, + 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x21, 0x52, 0x16, 0x65, 0x63, 0x6e, + 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1b, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, + 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, + 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x23, 0x48, 0x22, 0x52, 0x17, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, + 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, + 0x01, 0x12, 0x49, 0x0a, 0x1b, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, + 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x23, + 0x52, 0x17, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x18, + 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, 0x48, 0x24, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, + 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, + 0x01, 0x12, 0x43, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x26, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x25, 0x52, 0x14, 0x65, + 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x48, 0x26, 0x52, 0x1d, 0x65, 0x63, + 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x69, 0x6e, + 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x56, + 0x0a, 0x22, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x5f, 0x36, 0x34, 0x18, 0x28, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x28, 0x48, 0x27, 0x52, 0x1d, 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, + 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, + 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, + 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x03, 0x52, 0x14, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x50, 0x72, 0x6f, - 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x79, - 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x79, 0x65, - 0x6c, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, - 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x12, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, + 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, + 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, + 0x15, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, + 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, + 0x1a, 0x0a, 0x18, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, + 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, + 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, + 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, + 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x07, 0x48, 0x06, 0x52, 0x12, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x17, 0x79, - 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x15, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x44, 0x72, - 0x6f, 0x70, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x09, - 0x72, 0x65, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, - 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, - 0x09, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x4d, - 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, - 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x12, 0x72, 0x65, 0x64, 0x44, 0x72, 0x6f, 0x70, 0x50, - 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, - 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, - 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0d, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x45, 0x63, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0b, 0x65, 0x63, 0x6e, 0x4d, 0x61, 0x72, 0x6b, - 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x65, 0x63, 0x6e, 0x5f, 0x67, - 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, - 0x48, 0x0e, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x65, - 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, - 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x48, 0x0a, 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x17, 0x65, - 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, - 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, - 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x12, 0x52, 0x15, 0x65, 0x63, 0x6e, - 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, + 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x14, 0x48, 0x13, 0x52, 0x18, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, - 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, - 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x12, 0x65, 0x63, 0x6e, 0x52, - 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x12, 0x65, 0x63, 0x6e, 0x52, - 0x65, 0x64, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, - 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x16, 0x52, 0x15, 0x65, - 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x65, 0x63, 0x6e, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x17, 0x52, 0x1b, 0x65, 0x63, 0x6e, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x1f, 0x65, 0x63, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, + 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, + 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, + 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, - 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x19, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, 0x48, 0x18, 0x52, 0x1b, 0x65, - 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, - 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, - 0x22, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x1a, 0x48, 0x19, 0x52, 0x1e, 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, - 0x77, 0x61, 0x72, 0x65, 0x4d, 0x61, 0x72, 0x6b, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, - 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, - 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1b, 0x48, 0x1a, - 0x52, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x67, 0x72, 0x65, 0x65, + 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x25, 0x0a, + 0x23, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, + 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, + 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, + 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x36, 0x34, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, + 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, + 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x5f, 0x36, 0x34, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, - 0x36, 0x34, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, - 0x48, 0x1b, 0x52, 0x13, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x79, 0x65, - 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x1d, 0x48, 0x1c, 0x52, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x42, - 0x0a, 0x17, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x1d, 0x52, 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, - 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, - 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1e, 0x52, 0x11, 0x72, 0x65, 0x64, 0x4d, - 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, - 0x12, 0x3c, 0x0a, 0x14, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x1f, 0x52, 0x11, 0x72, 0x65, 0x64, 0x4d, 0x61, 0x78, - 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x47, - 0x0a, 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x21, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x21, 0x48, 0x20, 0x52, 0x16, 0x65, 0x63, - 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x65, 0x63, 0x6e, 0x5f, 0x67, - 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x22, 0x48, 0x21, 0x52, 0x16, 0x65, 0x63, 0x6e, 0x47, 0x72, 0x65, 0x65, 0x6e, 0x4d, - 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, - 0x12, 0x49, 0x0a, 0x1b, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, - 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, - 0x23, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, 0x48, 0x22, 0x52, - 0x17, 0x65, 0x63, 0x6e, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1b, 0x65, - 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x23, 0x52, 0x17, 0x65, 0x63, 0x6e, 0x59, - 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x4d, 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, - 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, - 0x36, 0x34, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, - 0x48, 0x24, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a, 0x18, 0x65, - 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x26, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x48, 0x25, 0x52, 0x14, 0x65, 0x63, 0x6e, 0x52, 0x65, 0x64, 0x4d, - 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, - 0x12, 0x56, 0x0a, 0x22, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, - 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x27, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x27, 0x48, 0x26, 0x52, 0x1d, 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, 0x69, 0x6e, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x65, 0x63, 0x6e, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x18, 0x28, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x48, 0x27, 0x52, 0x1d, - 0x65, 0x63, 0x6e, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x55, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x4d, - 0x61, 0x78, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, - 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, - 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x64, 0x72, 0x6f, 0x70, - 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x64, 0x5f, - 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, - 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, - 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x65, 0x63, - 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, - 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, - 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, - 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x65, 0x63, 0x6e, - 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, - 0x61, 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, - 0x22, 0x0a, 0x20, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, - 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x36, 0x34, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x36, 0x34, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, + 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x36, 0x34, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, + 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x25, 0x0a, 0x23, + 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, + 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x5f, 0x36, 0x34, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x63, 0x6e, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, - 0x72, 0x6b, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x19, - 0x0a, 0x17, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x67, 0x72, - 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, - 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, - 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1d, - 0x0a, 0x1b, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1e, 0x0a, 0x1c, - 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1e, 0x0a, 0x1c, - 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x61, 0x78, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1b, 0x0a, 0x19, - 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, - 0x6e, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x69, 0x6e, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x75, 0x6e, 0x61, 0x77, - 0x61, 0x72, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x5f, 0x36, 0x34, 0x2a, 0xda, 0x10, 0x0a, 0x0d, 0x41, 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, - 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, - 0x43, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, - 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, + 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x36, 0x34, 0x2a, 0xda, 0x10, 0x0a, 0x0d, 0x41, + 0x63, 0x6c, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x45, 0x52, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x07, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x41, - 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, + 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x41, + 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x0a, 0x12, - 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x10, 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x41, - 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, - 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0d, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, + 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, + 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x05, 0x12, 0x1b, 0x0a, + 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, + 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x07, 0x12, 0x21, + 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, + 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, + 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x54, 0x4c, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x43, 0x10, + 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, + 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0d, 0x12, 0x26, + 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x50, 0x52, 0x49, 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0f, 0x12, 0x26, 0x0a, + 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x50, 0x52, 0x49, 0x10, 0x10, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x33, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x34, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x0e, - 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x0f, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x10, 0x10, 0x12, - 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x33, - 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, - 0x10, 0x34, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, - 0x43, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, - 0x41, 0x43, 0x10, 0x12, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, - 0x49, 0x50, 0x10, 0x13, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, - 0x49, 0x50, 0x10, 0x14, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, - 0x49, 0x50, 0x56, 0x36, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x44, 0x53, 0x43, 0x50, 0x10, 0x17, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, - 0x4e, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, - 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x19, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x1a, 0x12, 0x2f, 0x0a, - 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x1b, 0x12, 0x2e, - 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x1c, 0x12, 0x25, - 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x10, 0x1d, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x1e, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x1f, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, - 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x10, 0x20, 0x12, 0x24, 0x0a, + 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, + 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x12, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, + 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x13, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, + 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x14, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, + 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, + 0x54, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, + 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x16, 0x12, 0x1c, + 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x17, 0x12, 0x1b, 0x0a, 0x17, + 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, 0x4e, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, + 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x19, 0x12, 0x23, + 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x1a, 0x12, 0x2f, 0x0a, 0x2b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, + 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x1b, 0x12, 0x2e, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, + 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x4c, 0x5f, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x1d, 0x12, 0x2a, 0x0a, 0x26, 0x41, + 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1e, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x1f, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, - 0x50, 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x5f, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x22, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x44, 0x4f, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x52, + 0x4e, 0x10, 0x20, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, + 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, - 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x4e, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x23, 0x12, 0x30, 0x0a, 0x2c, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x54, - 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x24, 0x12, 0x2c, 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, - 0x43, 0x45, 0x4e, 0x54, 0x10, 0x25, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x53, 0x10, 0x26, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x27, 0x12, - 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x28, 0x12, - 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x29, 0x12, - 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x10, 0x2a, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, 0x2b, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, + 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x22, 0x12, + 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x23, 0x12, 0x30, 0x0a, 0x2c, + 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x24, 0x12, 0x2c, + 0x0a, 0x28, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x41, 0x4d, 0x50, + 0x4c, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x25, 0x12, 0x2b, 0x0a, 0x27, + 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x26, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, + 0x4e, 0x41, 0x54, 0x10, 0x27, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x49, 0x4e, 0x53, + 0x45, 0x52, 0x54, 0x10, 0x28, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, + 0x45, 0x54, 0x45, 0x10, 0x29, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x2a, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, - 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x53, 0x10, 0x2c, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, - 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x2d, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, + 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, 0x2b, + 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, + 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x53, 0x10, 0x2c, 0x12, 0x22, 0x0a, 0x1e, 0x41, + 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, + 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x2d, 0x12, + 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x2e, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x2f, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, - 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x10, 0x2e, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x10, 0x2f, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x30, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, - 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x31, 0x12, 0x1b, - 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x52, 0x46, 0x10, 0x32, 0x12, 0x28, 0x0a, 0x24, 0x41, + 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x30, 0x12, 0x24, + 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, + 0x49, 0x44, 0x10, 0x31, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x56, 0x52, 0x46, 0x10, + 0x32, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x35, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x45, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, - 0x41, 0x53, 0x53, 0x10, 0x35, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, - 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x36, 0x12, 0x22, 0x0a, - 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, - 0x37, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x52, 0x53, - 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x38, 0x12, 0x22, 0x0a, - 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, - 0x39, 0x2a, 0x83, 0x02, 0x0a, 0x10, 0x41, 0x63, 0x6c, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, - 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, - 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, - 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, - 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, + 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4d, 0x4f, 0x4e, 0x49, 0x54, 0x4f, 0x52, 0x49, 0x4e, + 0x47, 0x10, 0x36, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x37, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x38, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x44, + 0x49, 0x52, 0x45, 0x43, 0x54, 0x10, 0x39, 0x2a, 0x83, 0x02, 0x0a, 0x10, 0x41, 0x63, 0x6c, 0x42, + 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, + 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, + 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, + 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, + 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, + 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, + 0x43, 0x45, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x04, 0x12, 0x23, - 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x46, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, - 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x10, 0x05, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x9f, 0x01, 0x0a, 0x0d, 0x41, 0x63, 0x6c, 0x44, - 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, - 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, + 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x46, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, + 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x9f, 0x01, + 0x0a, 0x0d, 0x41, 0x63, 0x6c, 0x44, 0x74, 0x65, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x4f, 0x70, 0x12, + 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, + 0x5f, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x4e, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, - 0x4e, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, - 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, - 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, - 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x50, - 0x4f, 0x53, 0x54, 0x43, 0x41, 0x52, 0x44, 0x10, 0x04, 0x2a, 0xa9, 0x01, 0x0a, 0x09, 0x41, 0x63, - 0x6c, 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x49, - 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, - 0x52, 0x41, 0x47, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, + 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, + 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x10, 0x03, + 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x4f, 0x50, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x43, 0x41, 0x52, 0x44, 0x10, 0x04, 0x2a, + 0xa9, 0x01, 0x0a, 0x09, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x46, 0x72, 0x61, 0x67, 0x12, 0x1b, 0x0a, + 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x43, + 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, + 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x4e, + 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, - 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, - 0x41, 0x47, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x4f, 0x52, 0x5f, 0x48, - 0x45, 0x41, 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, - 0x46, 0x52, 0x41, 0x47, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41, - 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x48, - 0x45, 0x41, 0x44, 0x10, 0x05, 0x2a, 0x9c, 0x02, 0x0a, 0x09, 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x43, 0x4c, - 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x10, - 0x03, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x49, 0x50, 0x56, 0x34, 0x41, 0x4e, 0x59, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, - 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, - 0x56, 0x34, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x41, 0x4e, 0x59, 0x10, 0x06, 0x12, 0x18, 0x0a, - 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, - 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x43, 0x4c, 0x5f, 0x49, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, - 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x09, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, - 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, 0x50, - 0x4c, 0x59, 0x10, 0x0a, 0x2a, 0xda, 0x01, 0x0a, 0x0c, 0x41, 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x41, + 0x47, 0x5f, 0x4f, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x41, + 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, + 0x04, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x46, 0x52, 0x41, 0x47, + 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x10, 0x05, 0x2a, 0x9c, 0x02, 0x0a, 0x09, + 0x41, 0x63, 0x6c, 0x49, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, + 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x41, + 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, + 0x16, 0x0a, 0x12, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, + 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, 0x4c, 0x5f, 0x49, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x41, 0x4e, 0x59, 0x10, 0x04, + 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x43, + 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x41, 0x4e, + 0x59, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x07, 0x12, 0x13, 0x0a, + 0x0f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, + 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x09, 0x12, + 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, + 0x52, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x59, 0x10, 0x0a, 0x2a, 0xda, 0x01, 0x0a, 0x0c, 0x41, + 0x63, 0x6c, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x41, + 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x34, - 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, - 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x03, - 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x04, 0x12, - 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, - 0x05, 0x2a, 0xc4, 0x01, 0x0a, 0x08, 0x41, 0x63, 0x6c, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, - 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x43, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, - 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, - 0x04, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, - 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, - 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x06, 0x2a, 0xd2, 0x01, 0x0a, 0x17, 0x41, 0x63, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x74, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, - 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, - 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, - 0x5f, 0x30, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, - 0x41, 0x47, 0x45, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x01, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, + 0x4c, 0x41, 0x4e, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, + 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4c, + 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0x05, 0x2a, 0xc4, 0x01, 0x0a, 0x08, 0x41, 0x63, 0x6c, 0x53, + 0x74, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x47, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, + 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x43, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x06, 0x2a, 0xd2, + 0x01, 0x0a, 0x17, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x32, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, + 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x30, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x31, 0x10, 0x02, 0x12, 0x21, 0x0a, + 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x32, 0x10, 0x03, + 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, + 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x33, 0x10, 0x04, 0x2a, 0x98, 0x01, 0x0a, 0x16, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, + 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, + 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x33, 0x10, 0x04, 0x2a, 0x98, 0x01, - 0x0a, 0x16, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, + 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, + 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x81, + 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, - 0x27, 0x0a, 0x23, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, - 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, - 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x81, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x6c, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, - 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x51, - 0x55, 0x45, 0x4e, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x7b, 0x0a, 0x11, - 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, + 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x41, 0x4c, 0x4c, 0x45, 0x4c, + 0x10, 0x02, 0x2a, 0x7b, 0x0a, 0x11, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x2a, 0xa2, 0x01, 0x0a, 0x1a, 0x41, 0x63, - 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, - 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x52, 0x59, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x43, - 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x2a, 0xf5, - 0x02, 0x0a, 0x0d, 0x41, 0x70, 0x69, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x35, - 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x4d, 0x54, 0x4f, 0x52, 0x10, 0x35, 0x12, - 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x43, 0x4c, 0x10, - 0x36, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x10, 0x37, - 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, - 0x10, 0x38, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x49, - 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x39, - 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x54, - 0x45, 0x52, 0x10, 0x3a, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, - 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x43, 0x41, 0x5f, 0x54, 0x4f, 0x5f, - 0x50, 0x41, 0x10, 0x3b, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, - 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, - 0x47, 0x10, 0x3c, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, - 0x56, 0x4e, 0x45, 0x54, 0x10, 0x3d, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, - 0x53, 0x48, 0x5f, 0x50, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x3e, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x56, - 0x49, 0x50, 0x10, 0x3f, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, 0x54, 0x45, - 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, - 0x10, 0x40, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xdd, 0x07, 0x0a, 0x03, 0x41, 0x70, 0x69, 0x12, 0x13, - 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, - 0x41, 0x50, 0x49, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, - 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, - 0x49, 0x5f, 0x46, 0x44, 0x42, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x5f, 0x56, 0x49, 0x52, - 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0d, 0x0a, - 0x09, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, - 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x08, 0x12, 0x16, - 0x0a, 0x12, 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0a, - 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, - 0x10, 0x0b, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, - 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x10, 0x0d, 0x12, - 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x0e, 0x12, - 0x14, 0x0a, 0x10, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x10, 0x0f, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x54, 0x50, - 0x10, 0x10, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x11, 0x12, - 0x0f, 0x0a, 0x0b, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x12, - 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x10, 0x13, 0x12, 0x0f, - 0x0a, 0x0b, 0x41, 0x50, 0x49, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x14, 0x12, - 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x15, 0x12, 0x11, - 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, - 0x16, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, - 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x17, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, - 0x49, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x10, 0x18, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, - 0x49, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, - 0x55, 0x44, 0x46, 0x10, 0x1a, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x10, 0x1b, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x32, 0x4d, - 0x43, 0x10, 0x1c, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x10, - 0x1d, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x50, 0x46, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x32, 0x4d, 0x43, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, - 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x20, 0x12, 0x11, 0x0a, 0x0d, - 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x10, 0x21, 0x12, - 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x22, 0x12, - 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, - 0x41, 0x50, 0x49, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x10, 0x24, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, - 0x49, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x10, 0x25, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, - 0x44, 0x54, 0x45, 0x4c, 0x10, 0x26, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x46, - 0x44, 0x10, 0x27, 0x12, 0x17, 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x28, 0x12, 0x0b, 0x0a, 0x07, - 0x41, 0x50, 0x49, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x50, 0x49, - 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x2a, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x50, - 0x49, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, - 0x2b, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, - 0x2c, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x10, 0x2d, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x59, - 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x2e, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x10, 0x2f, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x4e, - 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x4d, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x30, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x52, 0x53, 0x10, 0x31, - 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x46, - 0x49, 0x4c, 0x45, 0x10, 0x32, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x54, 0x57, 0x41, - 0x4d, 0x50, 0x10, 0x33, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4f, 0x45, 0x10, - 0x34, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x35, 0x12, 0x1b, - 0x0a, 0x16, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, 0x02, 0x12, 0x19, 0x0a, 0x14, 0x41, - 0x50, 0x49, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x45, 0x4e, 0x44, 0x10, 0x82, 0x02, 0x2a, 0xcf, 0x01, 0x0a, 0x14, 0x42, 0x66, 0x64, 0x45, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x45, - 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, - 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x33, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, - 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x45, - 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x10, 0x04, 0x2a, 0xb0, 0x01, 0x0a, 0x15, 0x42, 0x66, 0x64, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, - 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, - 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, - 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, - 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, - 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x55, 0x53, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x03, 0x2a, 0x98, 0x01, 0x0a, 0x0e, - 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, - 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x53, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, - 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x2a, 0xa8, 0x01, 0x0a, 0x0f, 0x42, 0x66, 0x64, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, - 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, - 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, - 0x1a, 0x0a, 0x16, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x42, - 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x46, 0x44, 0x5f, 0x53, - 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x50, 0x10, - 0x04, 0x2a, 0xc2, 0x01, 0x0a, 0x0e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4d, 0x41, 0x4e, - 0x44, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, - 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, - 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, - 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, - 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x53, - 0x53, 0x49, 0x56, 0x45, 0x10, 0x04, 0x2a, 0xe2, 0x01, 0x0a, 0x16, 0x42, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, - 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, - 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, + 0x1c, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, + 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x54, + 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x2a, + 0xa2, 0x01, 0x0a, 0x1a, 0x41, 0x63, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, + 0x0a, 0x2a, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, + 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, + 0x0a, 0x26, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, + 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, + 0x44, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x41, + 0x43, 0x54, 0x10, 0x02, 0x2a, 0x8a, 0x04, 0x0a, 0x0d, 0x41, 0x70, 0x69, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x12, 0x11, 0x0a, 0x09, 0x41, 0x50, + 0x49, 0x5f, 0x42, 0x4d, 0x54, 0x4f, 0x52, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x12, 0x14, 0x0a, + 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x82, 0x80, + 0x80, 0x80, 0x02, 0x12, 0x21, 0x0a, 0x19, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, + 0x10, 0x83, 0x80, 0x80, 0x80, 0x02, 0x12, 0x14, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x10, 0x84, 0x80, 0x80, 0x80, 0x02, 0x12, 0x20, 0x0a, 0x18, + 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, + 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x85, 0x80, 0x80, 0x80, 0x02, 0x12, 0x16, + 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, + 0x10, 0x86, 0x80, 0x80, 0x80, 0x02, 0x12, 0x22, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x43, 0x41, 0x5f, 0x54, + 0x4f, 0x5f, 0x50, 0x41, 0x10, 0x87, 0x80, 0x80, 0x80, 0x02, 0x12, 0x21, 0x0a, 0x19, 0x41, 0x50, + 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x88, 0x80, 0x80, 0x80, 0x02, 0x12, 0x15, 0x0a, + 0x0d, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x56, 0x4e, 0x45, 0x54, 0x10, 0x89, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x1e, 0x0a, 0x16, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x50, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x8a, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x14, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x56, 0x49, 0x50, 0x10, 0x8b, 0x80, 0x80, 0x80, 0x02, 0x12, 0x13, 0x0a, 0x0b, 0x41, 0x50, + 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x10, 0x8c, 0x80, 0x80, 0x80, 0x02, 0x12, + 0x17, 0x0a, 0x0f, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x10, 0x8d, 0x80, 0x80, 0x80, 0x02, 0x12, 0x15, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x5f, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x8e, 0x80, 0x80, 0x80, 0x02, 0x12, + 0x1a, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x50, 0x50, 0x4c, + 0x49, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x8f, 0x80, 0x80, 0x80, 0x02, 0x12, 0x20, 0x0a, 0x18, 0x41, + 0x50, 0x49, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x90, 0x80, 0x80, 0x80, 0x02, 0x1a, 0x02, 0x10, + 0x01, 0x2a, 0xdb, 0x07, 0x0a, 0x03, 0x41, 0x70, 0x69, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x50, 0x49, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, + 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x46, 0x44, 0x42, + 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x05, + 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x07, 0x12, 0x10, 0x0a, 0x0c, 0x41, 0x50, 0x49, 0x5f, 0x4e, + 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x49, + 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, + 0x09, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x41, + 0x50, 0x49, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x10, 0x0b, 0x12, 0x0b, 0x0a, + 0x07, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, + 0x49, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, + 0x49, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x50, + 0x49, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x0f, + 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x54, 0x50, 0x10, 0x10, 0x12, 0x0b, 0x0a, + 0x07, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x50, + 0x49, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x12, 0x12, 0x0c, 0x0a, 0x08, 0x41, + 0x50, 0x49, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x10, 0x13, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x50, 0x49, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x14, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, + 0x49, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x15, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x50, 0x49, + 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x16, 0x12, 0x17, 0x0a, 0x13, + 0x41, 0x50, 0x49, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x10, 0x17, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x46, + 0x46, 0x45, 0x52, 0x10, 0x18, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x48, 0x41, 0x53, + 0x48, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x55, 0x44, 0x46, 0x10, 0x1a, + 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x1b, + 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x10, 0x1c, 0x12, 0x0c, + 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x10, 0x1d, 0x12, 0x11, 0x0a, 0x0d, + 0x41, 0x50, 0x49, 0x5f, 0x52, 0x50, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x1e, 0x12, + 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x20, 0x12, 0x11, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x5f, 0x4d, + 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x10, 0x21, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, + 0x49, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x22, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, + 0x49, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x53, + 0x52, 0x56, 0x36, 0x10, 0x24, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x10, 0x25, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x10, + 0x26, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x46, 0x44, 0x10, 0x27, 0x12, 0x17, + 0x0a, 0x13, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x28, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x4e, + 0x41, 0x54, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x10, 0x2a, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x50, 0x49, 0x5f, 0x44, 0x45, 0x42, + 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x2b, 0x12, 0x0e, 0x0a, 0x0a, + 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, 0x2c, 0x12, 0x13, 0x0a, 0x0f, + 0x41, 0x50, 0x49, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, + 0x2d, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x10, + 0x2e, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x10, 0x2f, + 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, + 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x4d, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x30, 0x12, 0x0b, + 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x41, 0x52, 0x53, 0x10, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x41, + 0x50, 0x49, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x32, + 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x50, 0x49, 0x5f, 0x54, 0x57, 0x41, 0x4d, 0x50, 0x10, 0x33, 0x12, + 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x50, 0x4f, 0x45, 0x10, 0x34, 0x12, 0x11, 0x0a, 0x0d, + 0x41, 0x50, 0x49, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x10, 0x35, 0x12, + 0x0b, 0x0a, 0x07, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x36, 0x12, 0x21, 0x0a, 0x19, + 0x41, 0x50, 0x49, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x2a, + 0xcf, 0x01, 0x0a, 0x14, 0x42, 0x66, 0x64, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x46, 0x44, 0x5f, + 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, + 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, + 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4c, 0x33, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x02, 0x12, + 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x03, + 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x10, + 0x04, 0x2a, 0xb0, 0x01, 0x0a, 0x15, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x4f, 0x66, 0x66, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x42, + 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, + 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x42, + 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, + 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x53, 0x54, 0x45, 0x4e, 0x41, 0x4e, + 0x43, 0x45, 0x10, 0x03, 0x2a, 0x98, 0x01, 0x0a, 0x0e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x46, 0x44, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, + 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, + 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, + 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, + 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x2a, + 0xa8, 0x01, 0x0a, 0x0f, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x4f, + 0x57, 0x4e, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x03, + 0x12, 0x18, 0x0a, 0x14, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x50, 0x10, 0x04, 0x2a, 0xc2, 0x01, 0x0a, 0x0e, 0x42, + 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, + 0x1c, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x22, 0x0a, 0x1e, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, + 0x45, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4d, 0x41, 0x4e, 0x44, 0x5f, 0x50, + 0x41, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x42, 0x46, 0x44, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x59, + 0x4e, 0x43, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x42, + 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x41, 0x53, 0x59, 0x4e, 0x43, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x49, 0x56, 0x45, 0x10, 0x04, 0x2a, + 0xe2, 0x01, 0x0a, 0x16, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x52, + 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, + 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, - 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xce, 0x02, 0x0a, 0x19, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x52, 0x49, + 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x22, + 0x0a, 0x1e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, + 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, + 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, + 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, + 0x45, 0x44, 0x10, 0x04, 0x2a, 0xce, 0x02, 0x0a, 0x19, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x46, 0x64, 0x62, 0x4c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, - 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, - 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, - 0x12, 0x29, 0x0a, 0x25, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x42, - 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, - 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x48, 0x57, 0x10, - 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x48, 0x57, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x52, + 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, + 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, + 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x4c, 0x4f, 0x47, 0x10, + 0x05, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x10, 0x04, 0x12, 0x29, 0x0a, - 0x25, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, - 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, - 0x50, 0x55, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4c, 0x45, 0x41, 0x52, - 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4e, 0x4f, - 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x2a, 0xb6, 0x01, 0x0a, - 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, - 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, - 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0x8d, 0x01, 0x0a, 0x15, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x28, 0x0a, 0x24, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, - 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, + 0x44, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x2a, 0xb6, 0x01, 0x0a, 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, + 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x42, 0x52, + 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, + 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0x8d, + 0x01, 0x0a, 0x15, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x61, 0x67, + 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x52, 0x49, 0x44, + 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x01, - 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x47, - 0x47, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xc9, 0x01, 0x0a, 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, - 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x51, 0x5f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, - 0x05, 0x2a, 0x99, 0x01, 0x0a, 0x0a, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, - 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, - 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x53, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, - 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0x51, 0x0a, - 0x0a, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, - 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x51, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, - 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x44, 0x10, 0x02, - 0x2a, 0xb6, 0x08, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, - 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, - 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, - 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, - 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, - 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x2f, 0x0a, 0x2b, - 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x12, 0x2d, 0x0a, - 0x29, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x30, 0x0a, 0x2c, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xc9, + 0x01, 0x0a, 0x0e, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1d, + 0x0a, 0x19, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x1e, 0x0a, + 0x1a, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x31, 0x51, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1e, 0x0a, + 0x1a, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x31, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x1b, 0x0a, + 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x05, 0x2a, 0x99, 0x01, 0x0a, 0x0a, 0x42, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, + 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, + 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1a, 0x0a, + 0x16, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, + 0x44, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0x51, 0x0a, 0x0a, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x31, 0x51, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x44, 0x10, 0x02, 0x2a, 0xb6, 0x08, 0x0a, 0x0e, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x2e, - 0x0a, 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x2d, - 0x0a, 0x29, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, 0x2b, 0x0a, - 0x27, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x09, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, - 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, - 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0b, 0x12, 0x32, - 0x0a, 0x2e, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, + 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, + 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x46, + 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, + 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, + 0x24, 0x0a, 0x20, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x2f, 0x0a, 0x2b, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, + 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, + 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, + 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, + 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, + 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, 0x2b, 0x0a, 0x27, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x09, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, + 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x27, + 0x0a, 0x23, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0b, 0x12, 0x32, 0x0a, 0x2e, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, + 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, + 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0d, 0x12, 0x33, 0x0a, + 0x2f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, - 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, - 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, - 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x0d, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, + 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x30, 0x0a, 0x2c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, + 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, + 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x10, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0e, 0x12, 0x31, 0x0a, 0x2d, 0x42, 0x55, 0x46, - 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, - 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x30, 0x0a, 0x2c, - 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x10, 0x12, 0x2e, - 0x0a, 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, - 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x11, 0x12, 0x2c, - 0x0a, 0x28, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, - 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, - 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x13, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x55, 0x46, 0x46, - 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, - 0x46, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, - 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x14, 0x12, 0x2e, 0x0a, - 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x57, 0x41, 0x54, 0x45, - 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x15, 0x12, 0x2a, 0x0a, - 0x22, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, - 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x94, 0x01, 0x0a, 0x17, 0x42, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, - 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x11, 0x12, 0x2c, 0x0a, 0x28, 0x42, 0x55, 0x46, 0x46, 0x45, + 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, + 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, + 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, + 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, + 0x13, 0x12, 0x33, 0x0a, 0x2f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, + 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x14, 0x12, 0x2e, 0x0a, 0x2a, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, + 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x15, 0x12, 0x2a, 0x0a, 0x22, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, + 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, + 0x80, 0x01, 0x2a, 0x94, 0x01, 0x0a, 0x17, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, + 0x6c, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2a, + 0x0a, 0x26, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x48, + 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x42, 0x55, + 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, + 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, + 0x01, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x42, 0x55, 0x46, 0x46, - 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, - 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x02, - 0x2a, 0x88, 0x01, 0x0a, 0x0e, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, - 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, - 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, - 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x2a, 0xa0, 0x01, 0x0a, 0x1a, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, - 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x48, 0x52, - 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x46, - 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, - 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, - 0x43, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x88, 0x01, 0x0a, 0x0e, 0x42, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, + 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, + 0x0a, 0x18, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, + 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x55, 0x46, + 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, + 0x54, 0x48, 0x10, 0x03, 0x2a, 0xa0, 0x01, 0x0a, 0x1a, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x80, - 0x01, 0x0a, 0x0f, 0x42, 0x75, 0x6c, 0x6b, 0x4f, 0x70, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x4f, - 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, - 0x50, 0x5f, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, - 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x02, 0x2a, 0xfb, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x69, 0x12, - 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, - 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, - 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x12, 0x0a, - 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x10, - 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, - 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x05, 0x12, 0x1a, 0x0a, - 0x16, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x4c, 0x4b, - 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, - 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x53, 0x45, 0x54, - 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, - 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x43, - 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x09, 0x2a, - 0x85, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x12, - 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, + 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x54, + 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x59, + 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x80, 0x01, 0x0a, 0x0f, 0x42, 0x75, 0x6c, 0x6b, + 0x4f, 0x70, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x42, + 0x55, 0x4c, 0x4b, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x24, 0x0a, 0x20, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x5f, 0x4f, 0x4e, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x4f, 0x50, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, + 0x52, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x2a, 0xfb, 0x01, 0x0a, 0x09, 0x43, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x41, 0x70, 0x69, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, + 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x43, + 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, + 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x47, 0x45, 0x54, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, + 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, + 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, + 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, + 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x07, 0x12, 0x17, 0x0a, 0x13, 0x43, + 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, + 0x45, 0x54, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x41, + 0x50, 0x49, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x09, 0x2a, 0x85, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, + 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x1e, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, + 0x2a, 0x61, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, - 0x14, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, - 0x26, 0x0a, 0x1e, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, - 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x45, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, - 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x2a, 0x84, - 0x01, 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, - 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, - 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x53, - 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x42, 0x4f, - 0x55, 0x4e, 0x44, 0x10, 0x03, 0x2a, 0x93, 0x01, 0x0a, 0x11, 0x44, 0x61, 0x73, 0x68, 0x45, 0x6e, - 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x44, - 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1e, 0x0a, 0x1a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x1c, 0x0a, - 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x56, 0x47, 0x52, 0x45, 0x10, 0x03, 0x2a, 0x8b, 0x01, 0x0a, 0x12, - 0x44, 0x61, 0x73, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x41, 0x53, - 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x4c, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, - 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x6c, 0x0a, 0x16, 0x44, 0x65, 0x62, - 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x69, 0x6e, 0x64, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, + 0x14, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, + 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, + 0x45, 0x10, 0x02, 0x2a, 0x85, 0x01, 0x0a, 0x14, 0x44, 0x61, 0x73, 0x68, 0x43, 0x61, 0x70, 0x73, + 0x48, 0x61, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x24, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, + 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x43, + 0x41, 0x50, 0x53, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x56, + 0x45, 0x4c, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x53, + 0x48, 0x5f, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x49, 0x10, 0x02, 0x2a, 0x84, 0x01, 0x0a, 0x0d, + 0x44, 0x61, 0x73, 0x68, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, + 0x1a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, + 0x16, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x53, + 0x48, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x42, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x44, + 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, + 0x10, 0x03, 0x2a, 0x93, 0x01, 0x0a, 0x11, 0x44, 0x61, 0x73, 0x68, 0x45, 0x6e, 0x63, 0x61, 0x70, + 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4e, 0x56, 0x47, 0x52, 0x45, 0x10, 0x03, 0x2a, 0xb9, 0x01, 0x0a, 0x16, 0x44, 0x61, 0x73, + 0x68, 0x45, 0x6e, 0x69, 0x4d, 0x61, 0x63, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x5f, + 0x4d, 0x41, 0x43, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x23, 0x0a, 0x1f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x4d, 0x41, 0x43, 0x5f, + 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, + 0x4e, 0x45, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, + 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x4f, 0x56, 0x45, + 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, + 0x41, 0x43, 0x10, 0x03, 0x2a, 0x4d, 0x0a, 0x0e, 0x44, 0x61, 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, + 0x45, 0x10, 0x01, 0x2a, 0xad, 0x02, 0x0a, 0x12, 0x44, 0x61, 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, + 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x4d, + 0x41, 0x43, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, 0x4e, + 0x49, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x50, 0x52, 0x4f, + 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x53, 0x48, 0x5f, + 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, + 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x09, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x41, 0x53, + 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, + 0x45, 0x59, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x11, 0x12, 0x22, 0x0a, 0x1e, 0x44, + 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, + 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x21, 0x12, + 0x22, 0x0a, 0x1e, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x41, 0x2a, 0x83, 0x05, 0x0a, 0x24, 0x44, 0x61, 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x75, 0x6c, 0x6b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x37, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x37, 0x0a, 0x33, 0x44, 0x41, 0x53, + 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, + 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, + 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x49, 0x4c, 0x44, + 0x10, 0x01, 0x12, 0x3d, 0x0a, 0x39, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, + 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, + 0x02, 0x12, 0x38, 0x0a, 0x34, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, + 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x10, 0x03, 0x12, 0x3b, 0x0a, 0x37, 0x44, + 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, + 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x04, 0x12, 0x3b, 0x0a, 0x37, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, + 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x5f, 0x41, + 0x44, 0x44, 0x52, 0x10, 0x05, 0x12, 0x3b, 0x0a, 0x37, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, + 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, + 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, + 0x10, 0x06, 0x12, 0x3b, 0x0a, 0x37, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, + 0x59, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4c, 0x34, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x07, 0x12, + 0x3b, 0x0a, 0x37, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x44, + 0x53, 0x54, 0x5f, 0x4c, 0x34, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x08, 0x12, 0x3b, 0x0a, 0x37, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x4b, 0x45, 0x59, 0x5f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x09, 0x2a, 0xd7, 0x03, 0x0a, 0x1f, 0x44, 0x61, + 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x75, 0x6c, 0x6b, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, + 0x31, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x58, 0x0a, 0x54, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, + 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x50, 0x43, 0x10, 0x01, 0x12, 0x5a, + 0x0a, 0x56, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, + 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x56, 0x45, 0x4e, 0x44, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x59, 0x0a, 0x55, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, + 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x6c, 0x0a, 0x68, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, + 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, + 0x41, 0x49, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x57, + 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x10, 0x04, 0x2a, 0xfc, 0x03, 0x0a, 0x20, 0x44, 0x61, 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x75, 0x6c, 0x6b, 0x47, 0x65, 0x74, 0x53, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x33, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, + 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, + 0x4b, 0x45, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x3d, 0x0a, 0x39, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, + 0x12, 0x3e, 0x0a, 0x3a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x49, 0x4c, 0x54, + 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x10, 0x02, + 0x12, 0x42, 0x0a, 0x3e, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x46, 0x49, 0x4c, 0x54, + 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, + 0x41, 0x4e, 0x10, 0x03, 0x12, 0x4e, 0x0a, 0x4a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, + 0x54, 0x4f, 0x10, 0x04, 0x12, 0x3f, 0x0a, 0x3b, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, + 0x48, 0x41, 0x4e, 0x10, 0x05, 0x12, 0x4b, 0x0a, 0x47, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, + 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x5f, 0x4b, 0x45, 0x59, + 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x50, 0x5f, 0x4c, 0x45, 0x53, 0x53, 0x5f, + 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x4f, 0x52, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x5f, 0x54, 0x4f, + 0x10, 0x06, 0x2a, 0xb7, 0x01, 0x0a, 0x0a, 0x44, 0x61, 0x73, 0x68, 0x48, 0x61, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x52, 0x4f, 0x4c, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x44, 0x45, 0x41, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, + 0x41, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, + 0x18, 0x0a, 0x14, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x4e, 0x44, 0x42, 0x59, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x53, + 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, + 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, + 0x41, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, + 0x5f, 0x54, 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x05, 0x2a, 0xfc, 0x03, 0x0a, + 0x0b, 0x44, 0x61, 0x73, 0x68, 0x48, 0x61, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, + 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x41, + 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4e, 0x47, 0x10, + 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x28, + 0x0a, 0x24, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, + 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x42, + 0x59, 0x10, 0x05, 0x12, 0x2f, 0x0a, 0x2b, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, + 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, + 0x07, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, + 0x42, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, + 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x09, 0x12, 0x18, 0x0a, + 0x14, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x53, 0x48, 0x5f, + 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x42, 0x59, + 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x49, 0x4e, 0x47, 0x10, 0x0c, + 0x12, 0x29, 0x0a, 0x25, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x4f, 0x5f, 0x53, + 0x54, 0x41, 0x4e, 0x44, 0x41, 0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x0d, 0x2a, 0xe2, 0x01, 0x0a, 0x12, + 0x44, 0x61, 0x73, 0x68, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, + 0x4e, 0x47, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x10, 0x02, 0x12, + 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x03, 0x12, 0x1e, 0x0a, + 0x1a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4e, 0x41, 0x54, 0x34, 0x36, 0x10, 0x05, 0x12, 0x1e, 0x0a, + 0x1a, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4e, 0x41, 0x54, 0x36, 0x34, 0x10, 0x09, 0x12, 0x21, 0x0a, + 0x1d, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x11, + 0x2a, 0x8b, 0x01, 0x0a, 0x12, 0x44, 0x61, 0x73, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, + 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x41, 0x53, 0x48, 0x5f, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, + 0x0a, 0x24, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, + 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x53, 0x48, + 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x6c, + 0x0a, 0x16, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x42, 0x69, + 0x6e, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x45, 0x42, 0x55, + 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x4d, + 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, - 0x0a, 0x23, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, - 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x2a, 0xf0, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x62, 0x75, - 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, - 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, - 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x01, 0x12, 0x2c, 0x0a, - 0x28, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x2d, 0x0a, 0x29, 0x44, - 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x44, 0x45, - 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x04, 0x2a, 0xb8, 0x02, 0x0a, 0x0d, 0x44, - 0x74, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, - 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, - 0x1a, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x2b, 0x0a, - 0x27, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x4c, 0x4c, - 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x54, - 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x54, 0x43, 0x50, 0x46, 0x4c, 0x41, 0x47, 0x10, 0x03, 0x12, 0x31, 0x0a, 0x2d, - 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x48, 0x52, - 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x43, 0x48, 0x10, 0x04, 0x12, - 0x2a, 0x0a, 0x26, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x44, - 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, - 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4d, 0x41, 0x58, 0x10, 0x07, 0x2a, 0x80, 0x02, 0x0a, 0x0b, 0x45, 0x63, 0x6e, 0x4d, 0x61, 0x72, - 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, - 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, - 0x45, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x12, - 0x15, 0x0a, 0x11, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x59, 0x45, - 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x52, 0x45, - 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x44, 0x10, - 0x07, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x08, 0x2a, 0x78, 0x0a, 0x17, 0x45, 0x72, 0x73, 0x70, - 0x61, 0x6e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x45, 0x52, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x45, 0x4e, - 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x32, - 0x0a, 0x2e, 0x45, 0x52, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, - 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x10, 0x01, 0x2a, 0x65, 0x0a, 0x0c, 0x46, 0x64, 0x62, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x4d, 0x41, 0x54, 0x49, 0x43, 0x10, 0x01, 0x2a, 0xf0, 0x01, 0x0a, + 0x10, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, + 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x02, + 0x12, 0x2d, 0x0a, 0x29, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x4e, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, + 0x2e, 0x0a, 0x2a, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x10, 0x04, 0x2a, + 0xb8, 0x02, 0x0a, 0x0d, 0x44, 0x74, 0x65, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x01, 0x12, 0x19, - 0x0a, 0x15, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x7b, 0x0a, 0x08, 0x46, 0x64, 0x62, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x45, - 0x41, 0x52, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x44, 0x42, 0x5f, 0x45, - 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x46, - 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x12, - 0x15, 0x0a, 0x11, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x4c, 0x55, - 0x53, 0x48, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x9a, 0x01, 0x0a, 0x11, 0x46, 0x64, 0x62, 0x46, 0x6c, - 0x75, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, - 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, - 0x49, 0x43, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, - 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, - 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, - 0x4c, 0x10, 0x03, 0x2a, 0xee, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, - 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, - 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, - 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x10, 0x01, 0x12, 0x16, 0x0a, - 0x12, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, - 0x58, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, - 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x03, - 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, - 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x33, 0x32, 0x4c, 0x4f, 0x10, 0x04, 0x12, 0x1b, 0x0a, - 0x17, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, - 0x43, 0x52, 0x43, 0x5f, 0x33, 0x32, 0x48, 0x49, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x41, - 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, - 0x5f, 0x43, 0x43, 0x49, 0x54, 0x54, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x41, 0x53, 0x48, - 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x58, - 0x4f, 0x52, 0x10, 0x07, 0x2a, 0x50, 0x0a, 0x0e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x44, 0x61, - 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x45, 0x41, 0x4c, - 0x54, 0x48, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, - 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x2a, 0xef, 0x02, 0x0a, 0x1b, 0x48, 0x6f, 0x73, 0x74, 0x69, - 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x6e, - 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x42, 0x10, 0x01, 0x12, - 0x26, 0x0a, 0x22, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x46, 0x44, 0x10, 0x02, 0x12, 0x38, 0x0a, 0x34, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x44, 0x45, - 0x56, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x03, 0x12, 0x37, 0x0a, 0x33, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x44, 0x45, 0x56, 0x5f, 0x4c, 0x4f, 0x47, 0x49, - 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, - 0x54, 0x44, 0x45, 0x56, 0x5f, 0x4c, 0x33, 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, + 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, + 0x20, 0x0a, 0x1c, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x54, 0x43, 0x50, 0x46, 0x4c, 0x41, 0x47, 0x10, + 0x03, 0x12, 0x31, 0x0a, 0x2d, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x42, 0x52, 0x45, 0x41, + 0x43, 0x48, 0x10, 0x04, 0x12, 0x2a, 0x0a, 0x26, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, + 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, + 0x06, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x07, 0x2a, 0x80, 0x02, 0x0a, 0x0b, 0x45, + 0x63, 0x6e, 0x4d, 0x61, 0x72, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x45, 0x43, + 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x43, 0x4e, + 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x45, 0x43, + 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, + 0x4f, 0x57, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x45, + 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x45, + 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x45, 0x43, 0x4e, 0x5f, + 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, + 0x5f, 0x52, 0x45, 0x44, 0x10, 0x07, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, + 0x52, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x08, 0x2a, 0x78, 0x0a, + 0x17, 0x45, 0x72, 0x73, 0x70, 0x61, 0x6e, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x73, 0x75, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x45, 0x52, 0x53, 0x50, + 0x41, 0x4e, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x32, 0x0a, 0x2e, 0x45, 0x52, 0x53, 0x50, 0x41, 0x4e, 0x5f, 0x45, 0x4e, + 0x43, 0x41, 0x50, 0x53, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x01, 0x2a, 0x65, 0x0a, 0x0c, 0x46, 0x64, 0x62, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x46, 0x44, 0x42, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x44, 0x42, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, + 0x43, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x7b, + 0x0a, 0x08, 0x46, 0x64, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x46, 0x44, + 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, + 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x47, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x56, 0x45, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x9a, 0x01, 0x0a, 0x11, + 0x46, 0x64, 0x62, 0x46, 0x6c, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x24, 0x0a, 0x20, 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x46, 0x44, 0x42, 0x5f, 0x46, + 0x4c, 0x55, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x44, 0x42, + 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x46, 0x44, + 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x03, 0x2a, 0xa3, 0x01, 0x0a, 0x0c, 0x48, 0x61, 0x53, + 0x63, 0x6f, 0x70, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x41, 0x5f, + 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x41, 0x5f, + 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x48, + 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x43, 0x49, 0x4c, 0x45, 0x5f, 0x4e, 0x45, 0x45, + 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, + 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x50, 0x4c, 0x49, 0x54, 0x5f, 0x42, 0x52, + 0x41, 0x49, 0x4e, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x6c, + 0x0a, 0x0a, 0x48, 0x61, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x18, + 0x48, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x41, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x50, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x55, 0x50, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x41, + 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x50, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x2a, 0xee, 0x01, 0x0a, + 0x0d, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x12, 0x1e, + 0x0a, 0x1a, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, + 0x5f, 0x43, 0x52, 0x43, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, + 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, + 0x5f, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x41, 0x53, + 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, + 0x33, 0x32, 0x4c, 0x4f, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, + 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x33, 0x32, 0x48, + 0x49, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, + 0x52, 0x49, 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x43, 0x43, 0x49, 0x54, 0x54, 0x10, + 0x06, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, + 0x54, 0x48, 0x4d, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x07, 0x2a, 0x6a, 0x0a, + 0x0e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x20, 0x0a, 0x1c, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x01, 0x12, + 0x18, 0x0a, 0x14, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x10, 0x02, 0x2a, 0xef, 0x02, 0x0a, 0x1b, 0x48, 0x6f, + 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, - 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x06, 0x2a, 0xef, 0x01, 0x0a, 0x14, 0x48, 0x6f, 0x73, - 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x4f, + 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x48, 0x4f, + 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x42, + 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x10, 0x02, 0x12, 0x38, 0x0a, 0x34, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, + 0x54, 0x44, 0x45, 0x56, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x10, 0x03, 0x12, 0x37, 0x0a, 0x33, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x44, 0x45, 0x56, 0x5f, 0x4c, + 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x04, 0x12, 0x2d, 0x0a, + 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4e, 0x45, 0x54, 0x44, 0x45, 0x56, 0x5f, 0x4c, 0x33, 0x10, 0x05, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x02, 0x12, 0x20, 0x0a, - 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x03, 0x12, - 0x23, 0x0a, 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x49, 0x44, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x59, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x47, 0x45, 0x4e, 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x06, 0x2a, 0xef, 0x01, 0x0a, 0x14, + 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x57, 0x49, 0x4c, 0x44, 0x43, 0x41, 0x52, 0x44, 0x10, 0x05, 0x2a, 0x92, 0x14, 0x0a, 0x0e, 0x48, - 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1a, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x54, 0x50, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x43, 0x50, 0x10, 0x02, - 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, - 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4c, 0x4c, 0x44, 0x50, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x56, 0x52, 0x53, - 0x54, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, - 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x07, 0x12, - 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x31, - 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, - 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x32, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, - 0x54, 0x10, 0x09, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x56, 0x33, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0a, 0x12, 0x21, 0x0a, - 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x0b, - 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x4c, 0x44, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x44, 0x50, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x54, 0x50, 0x10, 0x0e, 0x12, - 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x50, 0x10, 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, - 0x47, 0x50, 0x10, 0x10, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x54, 0x50, 0x10, 0x11, 0x12, 0x21, - 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, - 0x12, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x5f, 0x4c, 0x32, 0x10, 0x13, 0x12, - 0x1e, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x56, 0x36, 0x5f, 0x4c, 0x32, 0x10, 0x14, 0x12, - 0x2e, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, - 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x20, 0x12, - 0x21, 0x0a, 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, - 0x81, 0x40, 0x12, 0x22, 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, - 0x4e, 0x53, 0x45, 0x10, 0x82, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x10, - 0x83, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x10, 0x84, 0x40, 0x12, 0x19, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, + 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, + 0x1f, 0x0a, 0x1b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x02, + 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, + 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, + 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x57, 0x49, 0x4c, 0x44, 0x43, 0x41, 0x52, 0x44, 0x10, 0x05, 0x2a, 0xb7, 0x14, + 0x0a, 0x0e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x49, 0x4d, 0x10, 0x85, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x52, - 0x52, 0x50, 0x10, 0x86, 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x56, 0x36, - 0x10, 0x87, 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x56, 0x36, 0x10, 0x88, - 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x52, 0x52, 0x50, 0x56, 0x36, 0x10, 0x89, 0x40, 0x12, - 0x2d, 0x0a, 0x28, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, - 0x52, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x10, 0x8a, 0x40, 0x12, 0x24, - 0x0a, 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, 0x31, 0x5f, 0x56, - 0x32, 0x10, 0x8b, 0x40, 0x12, 0x28, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x4c, - 0x44, 0x5f, 0x56, 0x31, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x8c, 0x40, 0x12, 0x26, - 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, 0x31, 0x5f, 0x44, - 0x4f, 0x4e, 0x45, 0x10, 0x8d, 0x40, 0x12, 0x23, 0x0a, 0x1e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, - 0x32, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x8e, 0x40, 0x12, 0x2a, 0x0a, 0x25, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x43, 0x41, 0x53, 0x54, 0x10, 0x8f, 0x40, 0x12, 0x1f, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x54, - 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x90, 0x40, 0x12, 0x1f, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, - 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4e, 0x41, - 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x91, 0x40, 0x12, 0x21, 0x0a, 0x1c, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, - 0x54, 0x5f, 0x48, 0x41, 0x49, 0x52, 0x50, 0x49, 0x4e, 0x10, 0x92, 0x40, 0x12, 0x30, 0x0a, 0x2b, + 0x50, 0x45, 0x5f, 0x53, 0x54, 0x50, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x43, + 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x41, 0x50, 0x4f, 0x4c, 0x10, 0x03, 0x12, + 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4c, 0x44, 0x50, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x48, 0x4f, + 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, + 0x56, 0x52, 0x53, 0x54, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x53, - 0x4f, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x93, 0x40, 0x12, 0x31, - 0x0a, 0x2c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, - 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x94, - 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x49, 0x53, 0x10, 0x95, 0x40, 0x12, 0x2e, 0x0a, - 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, - 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x60, 0x12, 0x1c, 0x0a, - 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x50, 0x32, 0x4d, 0x45, 0x10, 0x81, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x53, 0x48, 0x10, 0x82, 0x80, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4e, 0x4d, 0x50, - 0x10, 0x83, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x47, 0x50, 0x10, 0x84, 0x80, 0x01, - 0x12, 0x1c, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x47, 0x50, 0x56, 0x36, 0x10, 0x85, 0x80, 0x01, 0x12, 0x1a, - 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x10, 0x86, 0x80, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, - 0x46, 0x44, 0x56, 0x36, 0x10, 0x87, 0x80, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, - 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, - 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x10, 0x88, 0x80, 0x01, 0x12, 0x22, 0x0a, 0x1c, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, - 0x46, 0x44, 0x56, 0x36, 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x10, 0x89, 0x80, 0x01, 0x12, 0x1a, + 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, + 0x10, 0x07, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x56, 0x31, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x32, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x10, 0x09, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x33, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0a, + 0x12, 0x21, 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x4c, 0x44, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4c, 0x44, 0x50, 0x10, 0x8a, 0x80, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, - 0x4e, 0x4d, 0x49, 0x10, 0x8b, 0x80, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x34, 0x52, 0x54, - 0x10, 0x8c, 0x80, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x54, 0x50, 0x43, 0x4c, 0x49, 0x45, - 0x4e, 0x54, 0x10, 0x8d, 0x80, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x54, 0x50, 0x53, 0x45, - 0x52, 0x56, 0x45, 0x52, 0x10, 0x8e, 0x80, 0x01, 0x12, 0x21, 0x0a, 0x1b, 0x48, 0x4f, 0x53, 0x54, - 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x54, 0x54, - 0x50, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x8f, 0x80, 0x01, 0x12, 0x21, 0x0a, 0x1b, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x48, 0x54, 0x54, 0x50, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x90, 0x80, 0x01, 0x12, 0x31, - 0x0a, 0x2b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x49, 0x50, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0xa0, - 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x33, 0x5f, 0x4d, 0x54, 0x55, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x10, 0x81, 0xc0, 0x01, 0x12, 0x20, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x10, 0x82, 0xc0, 0x01, 0x12, 0x26, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, - 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x43, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x83, 0xc0, 0x01, - 0x12, 0x35, 0x0a, 0x2f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x49, - 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, - 0x46, 0x45, 0x52, 0x10, 0x81, 0xe0, 0x01, 0x12, 0x2c, 0x0a, 0x26, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, - 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x57, 0x52, 0x45, - 0x44, 0x10, 0x82, 0xe0, 0x01, 0x12, 0x2e, 0x0a, 0x28, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, - 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, - 0x52, 0x10, 0x83, 0xe0, 0x01, 0x12, 0x25, 0x0a, 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x54, - 0x54, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x81, 0x80, 0x02, 0x12, 0x2e, 0x0a, 0x28, + 0x50, 0x45, 0x5f, 0x43, 0x44, 0x50, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x54, 0x50, + 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x50, 0x10, 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, - 0x52, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x82, 0x80, 0x02, 0x12, 0x2d, 0x0a, 0x27, + 0x5f, 0x50, 0x41, 0x47, 0x50, 0x10, 0x10, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, + 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x54, 0x50, 0x10, + 0x11, 0x12, 0x21, 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x10, 0x12, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x5f, 0x4c, 0x32, + 0x10, 0x13, 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, 0x50, 0x56, 0x36, 0x5f, 0x4c, 0x32, + 0x10, 0x14, 0x12, 0x2e, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x43, 0x55, + 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, + 0x81, 0x20, 0x12, 0x21, 0x0a, 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, + 0x53, 0x54, 0x10, 0x81, 0x40, 0x12, 0x22, 0x0a, 0x1d, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x50, 0x5f, 0x52, 0x45, + 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x10, 0x82, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, + 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, + 0x43, 0x50, 0x10, 0x83, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x10, 0x84, + 0x40, 0x12, 0x19, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x4d, 0x10, 0x85, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, - 0x55, 0x50, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x83, 0x80, 0x02, 0x12, 0x32, 0x0a, 0x2c, 0x48, + 0x5f, 0x56, 0x52, 0x52, 0x50, 0x10, 0x86, 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x48, 0x43, + 0x50, 0x56, 0x36, 0x10, 0x87, 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x53, 0x50, 0x46, 0x56, + 0x36, 0x10, 0x88, 0x40, 0x12, 0x1c, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x52, 0x52, 0x50, 0x56, 0x36, 0x10, + 0x89, 0x40, 0x12, 0x2d, 0x0a, 0x28, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, + 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59, 0x10, 0x8a, + 0x40, 0x12, 0x24, 0x0a, 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, + 0x31, 0x5f, 0x56, 0x32, 0x10, 0x8b, 0x40, 0x12, 0x28, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, + 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, + 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, 0x31, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x8c, + 0x40, 0x12, 0x26, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x4c, 0x44, 0x5f, 0x56, + 0x31, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x8d, 0x40, 0x12, 0x23, 0x0a, 0x1e, 0x48, 0x4f, 0x53, + 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4c, + 0x44, 0x5f, 0x56, 0x32, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x8e, 0x40, 0x12, 0x2a, + 0x0a, 0x25, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0x8f, 0x40, 0x12, 0x1f, 0x0a, 0x1a, 0x48, 0x4f, + 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x4e, 0x41, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x90, 0x40, 0x12, 0x1f, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0xa0, 0x02, 0x12, - 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x81, 0xc0, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x2a, - 0xa0, 0x01, 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x59, 0x50, 0x41, - 0x53, 0x53, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, - 0x58, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, - 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, - 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, - 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, - 0x80, 0x01, 0x2a, 0x70, 0x0a, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x12, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, - 0x44, 0x45, 0x56, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, - 0x54, 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x54, 0x4c, 0x49, - 0x4e, 0x4b, 0x10, 0x03, 0x2a, 0xf8, 0x03, 0x0a, 0x19, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, + 0x44, 0x4e, 0x41, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x91, 0x40, 0x12, 0x21, 0x0a, 0x1c, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x48, 0x41, 0x49, 0x52, 0x50, 0x49, 0x4e, 0x10, 0x92, 0x40, 0x12, + 0x30, 0x0a, 0x2b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, + 0x52, 0x5f, 0x53, 0x4f, 0x4c, 0x49, 0x43, 0x49, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x93, + 0x40, 0x12, 0x31, 0x0a, 0x2c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, + 0x42, 0x4f, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x4d, 0x45, 0x4e, + 0x54, 0x10, 0x94, 0x40, 0x12, 0x1a, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x49, 0x53, 0x10, 0x95, 0x40, + 0x12, 0x23, 0x0a, 0x1e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4d, 0x49, + 0x53, 0x53, 0x10, 0x96, 0x40, 0x12, 0x2e, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, + 0x53, 0x45, 0x10, 0x81, 0x60, 0x12, 0x1c, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x32, 0x4d, 0x45, 0x10, + 0x81, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x53, 0x48, 0x10, 0x82, 0x80, 0x01, 0x12, + 0x1b, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4e, 0x4d, 0x50, 0x10, 0x83, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x42, 0x47, 0x50, 0x10, 0x84, 0x80, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x47, 0x50, + 0x56, 0x36, 0x10, 0x85, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x10, 0x86, + 0x80, 0x01, 0x12, 0x1c, 0x0a, 0x16, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x56, 0x36, 0x10, 0x87, 0x80, 0x01, + 0x12, 0x20, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x10, 0x88, + 0x80, 0x01, 0x12, 0x22, 0x0a, 0x1c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x56, 0x36, 0x5f, 0x4d, 0x49, 0x43, + 0x52, 0x4f, 0x10, 0x89, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x44, 0x50, 0x10, 0x8a, + 0x80, 0x01, 0x12, 0x1b, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x4e, 0x4d, 0x49, 0x10, 0x8b, 0x80, 0x01, 0x12, + 0x1b, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x34, 0x52, 0x54, 0x10, 0x8c, 0x80, 0x01, 0x12, 0x20, 0x0a, 0x1a, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4e, 0x54, 0x50, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, 0x8d, 0x80, 0x01, 0x12, 0x20, + 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x54, 0x50, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x8e, 0x80, 0x01, + 0x12, 0x21, 0x0a, 0x1b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x10, + 0x8f, 0x80, 0x01, 0x12, 0x21, 0x0a, 0x1b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x45, 0x52, 0x56, + 0x45, 0x52, 0x10, 0x90, 0x80, 0x01, 0x12, 0x31, 0x0a, 0x2b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, + 0x5f, 0x49, 0x50, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, + 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0xa0, 0x01, 0x12, 0x23, 0x0a, 0x1d, 0x48, 0x4f, 0x53, + 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x33, + 0x5f, 0x4d, 0x54, 0x55, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x81, 0xc0, 0x01, 0x12, 0x20, + 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x82, 0xc0, 0x01, + 0x12, 0x26, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x5f, 0x46, 0x44, 0x42, 0x5f, + 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x83, 0xc0, 0x01, 0x12, 0x35, 0x0a, 0x2f, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, + 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x5f, 0x45, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x10, 0x81, 0xe0, 0x01, 0x12, + 0x2c, 0x0a, 0x26, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, + 0x43, 0x41, 0x52, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x10, 0x82, 0xe0, 0x01, 0x12, 0x2e, 0x0a, + 0x28, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, + 0x52, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x83, 0xe0, 0x01, 0x12, 0x25, 0x0a, + 0x1f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x81, 0x80, 0x02, 0x12, 0x2e, 0x0a, 0x28, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x10, 0x82, 0x80, 0x02, 0x12, 0x2d, 0x0a, 0x27, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, + 0x83, 0x80, 0x02, 0x12, 0x32, 0x0a, 0x2c, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x45, + 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x10, 0x81, 0xa0, 0x02, 0x12, 0x1a, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, + 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, + 0x81, 0xc0, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xa0, 0x01, 0x0a, 0x0c, 0x48, 0x6f, 0x73, 0x74, + 0x69, 0x66, 0x54, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x4c, + 0x49, 0x4e, 0x45, 0x5f, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, + 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x10, 0x02, + 0x12, 0x28, 0x0a, 0x20, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x58, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x70, 0x0a, 0x0a, 0x48, 0x6f, + 0x73, 0x74, 0x69, 0x66, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x54, 0x44, 0x45, 0x56, 0x10, 0x01, 0x12, 0x12, 0x0a, + 0x0e, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x10, + 0x02, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x03, 0x2a, 0xf8, 0x03, 0x0a, + 0x19, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, - 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x10, 0x02, - 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x53, + 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, - 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x03, - 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x44, 0x42, 0x10, 0x04, 0x12, 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, - 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x06, 0x12, 0x34, 0x0a, - 0x2f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, - 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, - 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, - 0x10, 0x81, 0x20, 0x12, 0x26, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x20, 0x1a, 0x02, 0x10, 0x01, 0x2a, - 0x83, 0x01, 0x0a, 0x0d, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, - 0x67, 0x12, 0x1f, 0x0a, 0x1b, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, - 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x50, 0x10, 0x01, 0x12, 0x18, 0x0a, - 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, - 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4f, 0x52, 0x49, 0x47, 0x49, - 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x2a, 0xac, 0x10, 0x0a, 0x0c, 0x49, 0x6e, 0x44, 0x72, 0x6f, 0x70, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, + 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, + 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, + 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, + 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x10, + 0x02, 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, + 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, + 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x10, 0x04, 0x12, + 0x2d, 0x0a, 0x29, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, + 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x05, 0x12, 0x25, + 0x0a, 0x21, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, + 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x41, 0x4d, 0x10, 0x06, 0x12, 0x34, 0x0a, 0x2f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x20, 0x12, 0x26, 0x0a, 0x21, 0x48, + 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, + 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, + 0x10, 0x82, 0x20, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x83, 0x01, 0x0a, 0x0d, 0x48, 0x6f, 0x73, 0x74, + 0x69, 0x66, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x12, 0x1f, 0x0a, 0x1b, 0x48, 0x4f, 0x53, + 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x48, 0x4f, + 0x53, 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x53, 0x54, + 0x52, 0x49, 0x50, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4b, 0x45, 0x45, 0x50, 0x10, 0x02, 0x12, + 0x1c, 0x0a, 0x18, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, + 0x41, 0x47, 0x5f, 0x4f, 0x52, 0x49, 0x47, 0x49, 0x4e, 0x41, 0x4c, 0x10, 0x03, 0x2a, 0x8c, 0x01, + 0x0a, 0x13, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, + 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, + 0x21, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, + 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, + 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0x81, 0x01, 0x0a, + 0x14, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, + 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, + 0x0a, 0x1c, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, + 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x50, 0x10, 0x02, + 0x2a, 0xac, 0x10, 0x0a, 0x0c, 0x49, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x32, + 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x4d, 0x41, 0x43, 0x5f, 0x4d, 0x55, + 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x4d, 0x41, 0x43, + 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x10, 0x03, 0x12, 0x20, + 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x04, + 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, + 0x06, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x50, 0x5f, + 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x55, + 0x43, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x10, 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x44, + 0x42, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x10, 0x09, 0x12, 0x25, + 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x4c, 0x32, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, 0x5f, + 0x4c, 0x32, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x41, 0x4e, + 0x59, 0x10, 0x0c, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x4c, 0x33, + 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x0e, 0x12, 0x25, + 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x4c, 0x33, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x46, 0x49, 0x4c, + 0x54, 0x45, 0x52, 0x10, 0x0f, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x55, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x10, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x4c, 0x33, 0x5f, 0x48, + 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x11, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x5f, 0x48, 0x45, 0x41, + 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x43, + 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x10, 0x13, 0x12, 0x1f, + 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x14, 0x12, + 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x15, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x4c, 0x32, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x4d, - 0x41, 0x43, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, - 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x53, 0x4d, 0x41, 0x43, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x44, 0x4d, 0x41, - 0x43, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x57, 0x45, 0x44, 0x10, 0x05, 0x12, 0x26, - 0x0a, 0x22, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x49, - 0x4c, 0x54, 0x45, 0x52, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x07, 0x12, 0x21, 0x0a, - 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x46, 0x44, 0x42, 0x5f, 0x55, 0x43, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x10, 0x08, + 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x10, 0x16, 0x12, 0x1e, 0x0a, 0x1a, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, + 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x45, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, + 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x18, 0x12, + 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, + 0x43, 0x48, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, + 0x53, 0x5f, 0x44, 0x49, 0x50, 0x10, 0x1a, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x42, 0x43, + 0x10, 0x1b, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x1c, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, - 0x44, 0x10, 0x09, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x32, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, - 0x4b, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x43, - 0x45, 0x45, 0x44, 0x53, 0x5f, 0x4c, 0x32, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0b, 0x12, 0x19, 0x0a, - 0x15, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x4c, 0x33, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x0c, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, - 0x44, 0x53, 0x5f, 0x4c, 0x33, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x49, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x54, - 0x4c, 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, - 0x4b, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x0f, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, - 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x10, 0x12, 0x1f, 0x0a, 0x1b, 0x49, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x5f, 0x4c, 0x33, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x11, 0x12, 0x22, 0x0a, 0x1e, + 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4c, 0x4f, 0x43, 0x41, + 0x4c, 0x10, 0x1d, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4c, + 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x1e, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x43, + 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x30, 0x10, 0x1f, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x36, + 0x5f, 0x4d, 0x43, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x31, 0x10, 0x20, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, - 0x50, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x12, - 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x4d, 0x41, - 0x43, 0x10, 0x13, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, - 0x43, 0x4b, 0x10, 0x14, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, - 0x41, 0x43, 0x4b, 0x10, 0x15, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x10, 0x16, - 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x45, 0x10, 0x17, - 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x43, 0x5f, 0x44, 0x4d, 0x41, 0x43, 0x5f, 0x4d, - 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x19, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, - 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x5f, 0x44, 0x49, 0x50, 0x10, 0x1a, 0x12, 0x19, 0x0a, 0x15, - 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, - 0x49, 0x50, 0x5f, 0x42, 0x43, 0x10, 0x1b, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x4f, - 0x43, 0x41, 0x4c, 0x10, 0x1c, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x50, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, - 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x1d, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x50, 0x5f, 0x4c, - 0x49, 0x4e, 0x4b, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x1e, 0x12, 0x21, 0x0a, 0x1d, 0x49, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x50, - 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x30, 0x10, 0x1f, 0x12, 0x21, - 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x31, 0x10, - 0x20, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x52, 0x49, 0x46, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x44, 0x10, 0x21, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x52, 0x49, 0x46, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, - 0x4c, 0x45, 0x44, 0x10, 0x22, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x50, 0x4d, 0x34, 0x5f, 0x4d, 0x49, 0x53, - 0x53, 0x10, 0x23, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x50, 0x4d, 0x36, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, - 0x24, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x48, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x4f, - 0x55, 0x54, 0x45, 0x10, 0x25, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x48, 0x4f, 0x4c, - 0x45, 0x5f, 0x41, 0x52, 0x50, 0x10, 0x26, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x53, 0x4f, - 0x4c, 0x56, 0x45, 0x44, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x27, 0x12, - 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, - 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x28, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x29, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x4e, - 0x59, 0x10, 0x2a, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x52, 0x49, 0x46, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x21, 0x12, 0x20, + 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x45, 0x52, 0x49, 0x46, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x22, + 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x4c, 0x50, 0x4d, 0x34, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x23, 0x12, 0x1c, + 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x4c, 0x50, 0x4d, 0x36, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x24, 0x12, 0x22, 0x0a, 0x1e, + 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x42, + 0x4c, 0x41, 0x43, 0x4b, 0x48, 0x4f, 0x4c, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x25, + 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x48, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x52, 0x50, + 0x10, 0x26, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x56, 0x45, 0x44, 0x5f, + 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x27, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, + 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x44, 0x4f, 0x57, 0x4e, + 0x10, 0x28, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x29, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x2a, 0x12, 0x23, + 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x2b, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x2b, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x2c, 0x12, 0x23, 0x0a, 0x1f, - 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, - 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, - 0x2d, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x52, 0x49, 0x46, 0x10, 0x2e, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x2f, 0x12, 0x22, 0x0a, 0x1e, + 0x53, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x2c, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x2d, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, - 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x30, - 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x41, - 0x47, 0x10, 0x31, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, + 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x49, 0x46, 0x10, 0x2e, + 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x2f, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x52, 0x49, 0x46, 0x10, 0x33, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, - 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x34, - 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x4c, 0x41, 0x43, 0x4b, - 0x48, 0x4f, 0x4c, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x35, 0x12, - 0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x36, 0x12, 0x26, 0x0a, - 0x22, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x53, 0x52, 0x56, 0x36, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x10, 0x37, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x38, 0x12, 0x28, 0x0a, - 0x20, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, - 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, 0x80, 0x01, - 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xd6, 0x04, 0x0a, 0x18, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, - 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, - 0x0a, 0x23, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x47, 0x52, 0x45, - 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x34, - 0x0a, 0x30, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, - 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x03, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, 0x3b, 0x0a, 0x37, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, - 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, - 0x10, 0x05, 0x12, 0x36, 0x0a, 0x32, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x30, 0x12, 0x21, 0x0a, 0x1d, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x31, 0x12, 0x22, + 0x0a, 0x1e, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, + 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, + 0x52, 0x49, 0x46, 0x10, 0x33, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x34, 0x12, 0x2d, 0x0a, 0x29, 0x49, + 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x44, + 0x42, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x4c, 0x41, 0x43, 0x4b, 0x48, 0x4f, 0x4c, 0x45, 0x5f, + 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x35, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x4e, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x36, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x4e, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, + 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x37, + 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x38, 0x12, 0x28, 0x0a, 0x20, 0x49, 0x4e, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, + 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, + 0x80, 0x01, 0x12, 0x27, 0x0a, 0x1f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, 0x80, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x2a, + 0xd6, 0x04, 0x0a, 0x18, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x27, + 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, - 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x3e, 0x0a, 0x3a, 0x49, 0x4e, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, - 0x4f, 0x4f, 0x4d, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, - 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x39, 0x0a, 0x35, 0x49, 0x4e, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, - 0x4f, 0x4f, 0x4d, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x08, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, + 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, + 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, + 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, + 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x04, + 0x12, 0x3b, 0x0a, 0x37, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, + 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, + 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x36, 0x0a, + 0x32, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, + 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x3e, 0x0a, 0x3a, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x09, 0x12, 0x35, 0x0a, 0x2d, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x89, 0x01, - 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, 0x51, - 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x50, 0x4f, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, - 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x10, 0x02, 0x2a, 0x89, 0x01, 0x0a, 0x14, 0x49, 0x6e, - 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, - 0x64, 0x65, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, - 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, - 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, - 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, - 0x49, 0x50, 0x45, 0x10, 0x02, 0x2a, 0x77, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x50, 0x73, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x43, + 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x39, 0x0a, 0x35, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x57, + 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x08, + 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, + 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, + 0x09, 0x12, 0x35, 0x0a, 0x2d, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, + 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x89, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x73, + 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, 0x51, 0x6f, 0x73, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x49, + 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x10, + 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, + 0x50, 0x45, 0x10, 0x02, 0x2a, 0x89, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x28, 0x0a, + 0x24, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, + 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x53, 0x45, 0x47, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x21, 0x0a, + 0x1d, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x50, + 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x10, 0x02, + 0x2a, 0x77, 0x0a, 0x11, 0x49, 0x6e, 0x73, 0x65, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x73, + 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x53, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, + 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x53, 0x43, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4c, 0x53, 0x50, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x53, 0x43, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x50, 0x53, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4c, 0x53, 0x50, 0x10, 0x01, 0x12, - 0x1d, 0x0a, 0x19, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, - 0x53, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4c, 0x53, 0x50, 0x10, 0x02, 0x2a, 0x60, - 0x0a, 0x0c, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1e, - 0x0a, 0x1a, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, - 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x50, 0x5f, 0x41, 0x44, - 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, - 0x2a, 0x60, 0x0a, 0x0d, 0x49, 0x70, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x47, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, - 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, - 0x10, 0x02, 0x2a, 0xa5, 0x01, 0x0a, 0x0b, 0x49, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, - 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, - 0x5f, 0x41, 0x45, 0x53, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x31, 0x36, 0x10, 0x01, 0x12, - 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, - 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x31, 0x36, 0x10, 0x02, 0x12, 0x1c, - 0x0a, 0x18, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, - 0x45, 0x53, 0x31, 0x32, 0x38, 0x5f, 0x47, 0x4d, 0x41, 0x43, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x45, 0x53, - 0x32, 0x35, 0x36, 0x5f, 0x47, 0x4d, 0x41, 0x43, 0x10, 0x04, 0x2a, 0x6a, 0x0a, 0x0e, 0x49, 0x70, - 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, - 0x16, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x2a, 0x8a, 0x02, 0x0a, 0x0d, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, - 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x54, 0x58, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x54, 0x58, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, - 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x58, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x58, 0x5f, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x52, 0x58, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x06, 0x2a, 0xe7, 0x01, 0x0a, 0x17, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x4f, - 0x63, 0x74, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2b, 0x0a, 0x27, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, 0x54, 0x45, - 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x2f, + 0x50, 0x45, 0x5f, 0x4c, 0x4c, 0x53, 0x50, 0x10, 0x02, 0x2a, 0x60, 0x0a, 0x0c, 0x49, 0x70, 0x41, + 0x64, 0x64, 0x72, 0x46, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x5f, + 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x50, 0x5f, + 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x49, 0x50, 0x56, 0x34, + 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, + 0x4d, 0x49, 0x4c, 0x59, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x2a, 0x60, 0x0a, 0x0d, 0x49, + 0x70, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, + 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, + 0x12, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x47, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, 0x10, 0x02, 0x2a, 0xa5, 0x01, + 0x0a, 0x0b, 0x49, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x12, 0x1c, 0x0a, + 0x18, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, + 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x45, 0x53, 0x31, + 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x31, 0x36, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x45, 0x53, 0x32, 0x35, + 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x31, 0x36, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x45, 0x53, 0x31, 0x32, 0x38, + 0x5f, 0x47, 0x4d, 0x41, 0x43, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x47, + 0x4d, 0x41, 0x43, 0x10, 0x04, 0x2a, 0x6a, 0x0a, 0x0e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, + 0x02, 0x2a, 0x8a, 0x02, 0x0a, 0x0d, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x54, 0x58, + 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x58, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x58, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x58, 0x5f, 0x4e, 0x4f, + 0x4e, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x06, 0x2a, 0xe7, + 0x01, 0x0a, 0x17, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x4f, 0x63, 0x74, 0x65, 0x74, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x33, 0x0a, 0x2f, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x4f, 0x57, + 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x45, 0x4c, 0x4f, - 0x57, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, - 0x01, 0x12, 0x34, 0x0a, 0x30, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, - 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x42, 0x45, 0x4c, 0x4f, 0x57, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, 0x45, - 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x49, 0x50, 0x53, 0x45, 0x43, - 0x5f, 0x53, 0x41, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x48, 0x49, 0x47, - 0x48, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x03, 0x2a, 0x94, 0x03, - 0x0a, 0x0b, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1d, 0x0a, - 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x52, - 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, - 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, - 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x49, 0x4e, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x54, - 0x52, 0x41, 0x49, 0x4c, 0x45, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x07, - 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x49, 0x4e, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x55, 0x4d, 0x4d, 0x59, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x09, 0x12, 0x24, - 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x10, 0x0a, 0x2a, 0x7f, 0x0a, 0x12, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x53, + 0x57, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, + 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x4f, + 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x41, 0x42, 0x4f, 0x56, 0x45, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, + 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x03, 0x2a, 0x94, 0x03, 0x0a, 0x0b, 0x49, 0x70, 0x73, + 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, + 0x45, 0x44, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x49, + 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x4f, + 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, + 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, + 0x4f, 0x4f, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x41, 0x44, 0x5f, + 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x04, + 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x49, 0x4e, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x49, 0x4e, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4c, 0x45, + 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x07, 0x12, 0x23, 0x0a, 0x1f, 0x49, + 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x41, 0x55, 0x54, + 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x08, + 0x12, 0x27, 0x0a, 0x23, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x44, 0x55, 0x4d, 0x4d, 0x59, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x10, 0x09, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0a, 0x2a, + 0x7f, 0x0a, 0x12, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x49, + 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, - 0x24, 0x0a, 0x20, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x10, 0x02, 0x2a, 0x60, 0x0a, 0x0d, 0x4c, 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x32, 0x4d, 0x43, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x47, 0x10, 0x01, 0x12, - 0x16, 0x0a, 0x12, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x58, 0x47, 0x10, 0x02, 0x2a, 0xa5, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, - 0x55, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, - 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x4f, 0x47, 0x5f, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x12, - 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, - 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x06, 0x2a, - 0xd4, 0x01, 0x0a, 0x11, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, - 0x53, 0x75, 0x69, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, + 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, + 0x2a, 0x60, 0x0a, 0x0d, 0x4c, 0x32, 0x6d, 0x63, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x47, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x32, + 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, + 0x10, 0x02, 0x2a, 0xa5, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, + 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x01, 0x12, + 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, + 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, + 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x04, 0x12, 0x13, 0x0a, + 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x05, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, + 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x06, 0x2a, 0xd4, 0x01, 0x0a, 0x11, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, + 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, + 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x43, 0x4d, + 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, - 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x01, 0x12, - 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, - 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, - 0x35, 0x36, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, - 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, - 0x41, 0x45, 0x53, 0x5f, 0x58, 0x50, 0x4e, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x03, 0x12, 0x27, 0x0a, - 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, - 0x55, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x58, 0x50, 0x4e, - 0x5f, 0x32, 0x35, 0x36, 0x10, 0x04, 0x2a, 0x6e, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x2a, 0xc6, 0x06, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x26, 0x0a, - 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4d, - 0x4d, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x2c, 0x0a, 0x28, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, - 0x44, 0x10, 0x05, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, - 0x30, 0x0a, 0x2c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, - 0x07, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, - 0x08, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, - 0x44, 0x10, 0x09, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, - 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, - 0x44, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, - 0x55, 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, + 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x10, 0x02, 0x12, + 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, + 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x58, + 0x50, 0x4e, 0x5f, 0x31, 0x32, 0x38, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, + 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x5f, 0x58, 0x50, 0x4e, 0x5f, 0x32, 0x35, 0x36, 0x10, + 0x04, 0x2a, 0x6e, 0x0a, 0x0f, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, + 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, + 0x02, 0x2a, 0xc6, 0x06, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, + 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x45, 0x52, 0x52, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, + 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x2c, 0x0a, 0x28, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x2a, + 0x0a, 0x26, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4d, + 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x07, 0x12, 0x2e, 0x0a, 0x2a, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x08, 0x12, 0x30, 0x0a, 0x2c, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x55, 0x4e, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x09, 0x12, 0x2e, + 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x21, + 0x0a, 0x1d, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, + 0x47, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x54, 0x41, 0x47, + 0x47, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x0d, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x0e, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0d, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, - 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x0e, 0x12, - 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x54, - 0x41, 0x47, 0x10, 0x0f, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, - 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x42, 0x41, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, + 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0f, 0x12, + 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x42, 0x41, 0x44, 0x5f, + 0x54, 0x41, 0x47, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x11, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x11, 0x12, - 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x12, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x55, 0x4e, 0x10, 0x13, 0x2a, - 0xb8, 0x01, 0x0a, 0x20, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x65, 0x41, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, - 0x65, 0x72, 0x53, 0x63, 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4d, - 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, - 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, - 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x57, 0x4f, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, - 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, 0x52, - 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x2a, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, - 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x29, 0x0a, 0x25, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, - 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x2a, 0xe9, 0x03, - 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, - 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, + 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x53, + 0x43, 0x49, 0x10, 0x12, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x55, 0x4e, 0x10, 0x13, 0x2a, 0xb8, 0x01, 0x0a, 0x20, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x4d, 0x61, 0x78, 0x53, 0x65, 0x63, 0x75, 0x72, 0x65, 0x41, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x65, 0x72, 0x53, 0x63, 0x12, + 0x35, 0x0a, 0x31, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, + 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x4f, + 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x5f, + 0x54, 0x57, 0x4f, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, + 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x46, + 0x4f, 0x55, 0x52, 0x10, 0x02, 0x2a, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, + 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, + 0x4b, 0x54, 0x53, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x2a, 0xe9, 0x03, 0x0a, 0x0c, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, + 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, + 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x4f, - 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, - 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, - 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, - 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x55, 0x4e, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x45, + 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x43, 0x48, + 0x45, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10, 0x06, - 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x10, - 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x41, - 0x4c, 0x49, 0x44, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x08, + 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x10, 0x09, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x41, 0x10, 0x0a, 0x12, + 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, + 0x5f, 0x53, 0x41, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x09, 0x12, 0x27, 0x0a, 0x23, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x55, 0x53, 0x49, 0x4e, 0x47, 0x5f, - 0x53, 0x41, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x55, - 0x4e, 0x55, 0x53, 0x45, 0x44, 0x5f, 0x53, 0x41, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x0c, 0x2a, 0x50, 0x0a, 0x0c, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x41, 0x5f, 0x4e, - 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x10, 0x01, 0x2a, 0x7b, 0x0a, 0x09, 0x4d, - 0x65, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, 0x45, - 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, - 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, - 0x10, 0x02, 0x12, 0x24, 0x0a, 0x1c, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, - 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x69, 0x72, - 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, - 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, - 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x50, - 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x49, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, - 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, - 0x4c, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xbf, 0x01, 0x0a, 0x11, 0x4d, 0x69, 0x72, 0x72, - 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, - 0x1f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, - 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, - 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, - 0x02, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x48, 0x41, 0x4e, 0x43, 0x45, - 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x49, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x2a, 0xfa, 0x03, 0x0a, 0x20, 0x4d, 0x79, - 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x12, 0x35, - 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, - 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, - 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, - 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, - 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, - 0x53, 0x50, 0x10, 0x02, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, - 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, - 0x50, 0x10, 0x03, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, - 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, 0x44, - 0x10, 0x04, 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, - 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x59, 0x5f, + 0x4f, 0x4b, 0x10, 0x0c, 0x2a, 0x50, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, + 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, + 0x43, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, + 0x43, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x41, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, + 0x5f, 0x55, 0x53, 0x45, 0x10, 0x01, 0x2a, 0x7b, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x45, 0x54, 0x45, 0x52, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x24, 0x0a, + 0x1c, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, + 0x80, 0x80, 0x01, 0x2a, 0xac, 0x01, 0x0a, 0x1b, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, + 0x54, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, + 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x4c, 0x41, 0x54, 0x45, 0x44, + 0x10, 0x02, 0x2a, 0xbf, 0x01, 0x0a, 0x11, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x49, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, + 0x19, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, + 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, + 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x48, 0x41, 0x4e, 0x43, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x4c, + 0x4f, 0x57, 0x10, 0x04, 0x2a, 0xfa, 0x03, 0x0a, 0x20, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, - 0x4f, 0x52, 0x5f, 0x55, 0x53, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x06, - 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, - 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x07, 0x12, 0x3d, 0x0a, 0x39, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, - 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, - 0x5f, 0x55, 0x53, 0x44, 0x10, 0x08, 0x2a, 0x89, 0x06, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x69, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, - 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, - 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4d, - 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, - 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x58, 0x10, - 0x02, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, - 0x49, 0x4f, 0x52, 0x5f, 0x54, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x58, 0x36, 0x10, 0x04, 0x12, - 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, - 0x52, 0x5f, 0x44, 0x58, 0x34, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x54, 0x36, 0x10, 0x06, 0x12, - 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, - 0x52, 0x5f, 0x44, 0x54, 0x34, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x54, 0x34, 0x36, 0x10, 0x08, - 0x12, 0x2c, 0x0a, 0x28, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, - 0x4f, 0x52, 0x5f, 0x42, 0x36, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x10, 0x09, 0x12, 0x30, - 0x0a, 0x2c, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, + 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x10, 0x02, 0x12, + 0x2d, 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, + 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x03, 0x12, 0x2d, + 0x0a, 0x29, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, - 0x5f, 0x42, 0x36, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x0a, - 0x12, 0x2c, 0x0a, 0x28, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, 0x44, 0x10, 0x04, 0x12, 0x35, 0x0a, + 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, + 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, + 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, + 0x53, 0x50, 0x10, 0x05, 0x12, 0x35, 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, + 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x55, 0x53, + 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x50, 0x10, 0x06, 0x12, 0x35, 0x0a, 0x31, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, + 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, + 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x44, + 0x10, 0x07, 0x12, 0x3d, 0x0a, 0x39, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, + 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x5f, 0x50, 0x53, 0x50, 0x5f, + 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x55, 0x53, 0x44, 0x10, + 0x08, 0x2a, 0x89, 0x06, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, - 0x4f, 0x52, 0x5f, 0x42, 0x36, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x0b, 0x12, 0x30, - 0x0a, 0x2c, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, - 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, - 0x5f, 0x42, 0x36, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x0c, - 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, - 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, - 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x41, 0x10, 0x0e, 0x12, 0x39, - 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, - 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, - 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x12, 0x37, 0x0a, 0x2f, 0x4d, 0x59, 0x5f, + 0x4f, 0x52, 0x5f, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, + 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x58, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, + 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, + 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x54, + 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, + 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x58, 0x36, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, + 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, + 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x58, 0x34, + 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, + 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x54, 0x36, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x59, + 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, + 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x54, 0x34, + 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, + 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x44, 0x54, 0x34, 0x36, 0x10, 0x08, 0x12, 0x2c, 0x0a, 0x28, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, + 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x42, 0x36, + 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x5f, + 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, + 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x42, 0x36, 0x5f, 0x45, + 0x4e, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x2c, 0x0a, 0x28, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, + 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x42, 0x36, + 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x0b, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x5f, + 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, + 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x42, 0x36, 0x5f, 0x49, + 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, + 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x4e, + 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, + 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x55, 0x41, 0x10, 0x0e, 0x12, 0x39, 0x0a, 0x31, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, - 0x80, 0x01, 0x2a, 0x4d, 0x0a, 0x08, 0x4e, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, - 0x0a, 0x15, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, - 0x0e, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x47, 0x45, 0x44, 0x10, - 0x02, 0x2a, 0xa9, 0x01, 0x0a, 0x07, 0x4e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, - 0x14, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x41, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x41, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, 0x41, - 0x54, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x54, 0x10, - 0x03, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, - 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x05, 0x2a, 0xdf, 0x09, - 0x0a, 0x0f, 0x4e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, - 0x64, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, - 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, - 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, - 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, - 0x49, 0x50, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, - 0x43, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1b, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, - 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x1c, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x1d, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, - 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1e, 0x12, 0x24, - 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, - 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, - 0x56, 0x34, 0x10, 0x1f, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x20, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, + 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x01, 0x12, 0x37, 0x0a, 0x2f, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, + 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x4d, 0x0a, + 0x08, 0x4e, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x41, 0x54, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x41, 0x54, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x47, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xa9, 0x01, 0x0a, + 0x07, 0x4e, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4e, 0x41, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x02, 0x12, 0x1c, + 0x0a, 0x18, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49, + 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, 0x54, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, + 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, + 0x4e, 0x41, 0x54, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x41, + 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x05, 0x2a, 0xdf, 0x09, 0x0a, 0x0f, 0x4e, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x48, 0x61, 0x73, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x1d, + 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, + 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1c, 0x0a, 0x18, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x4e, + 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x03, 0x12, + 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, + 0x50, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, + 0x34, 0x10, 0x1a, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, + 0x34, 0x10, 0x1b, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, + 0x36, 0x10, 0x1c, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, + 0x36, 0x10, 0x1d, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, + 0x52, 0x43, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1e, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, + 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, + 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x1f, 0x12, + 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, + 0x50, 0x56, 0x36, 0x10, 0x20, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, + 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, + 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x21, 0x12, 0x1d, 0x0a, 0x19, 0x4e, + 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x06, 0x12, 0x1f, 0x0a, + 0x1b, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x21, + 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, + 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, + 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, + 0x43, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, + 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, + 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, + 0x0c, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x50, 0x5f, + 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x4e, 0x41, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, + 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, + 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0f, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, - 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x21, - 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, - 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, - 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x07, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, - 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x10, 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, - 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4c, 0x34, 0x5f, 0x44, - 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, - 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x53, - 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x41, 0x54, 0x49, 0x56, - 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0c, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, - 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, - 0x52, 0x5f, 0x49, 0x50, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x0d, 0x12, - 0x25, 0x0a, 0x21, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, - 0x54, 0x59, 0x50, 0x45, 0x10, 0x0e, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, - 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, - 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x0f, 0x12, - 0x27, 0x0a, 0x23, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, - 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, - 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x41, 0x54, 0x49, + 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x4c, 0x34, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x53, + 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x4e, - 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x11, 0x12, 0x23, 0x0a, - 0x1f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, - 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, - 0x10, 0x12, 0x12, 0x24, 0x0a, 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, - 0x45, 0x4c, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x13, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x30, 0x10, 0x14, 0x12, 0x22, 0x0a, 0x1e, - 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x31, 0x10, 0x15, - 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, - 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, - 0x5f, 0x32, 0x10, 0x16, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, - 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x33, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, - 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x34, 0x10, 0x18, 0x12, 0x25, 0x0a, 0x21, - 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, - 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x42, 0x45, - 0x4c, 0x10, 0x19, 0x12, 0x1a, 0x0a, 0x16, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, - 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x22, 0x2a, - 0x75, 0x0a, 0x13, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, - 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x35, 0x0a, 0x31, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, - 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, - 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x49, - 0x4e, 0x44, 0x45, 0x58, 0x10, 0x01, 0x2a, 0xbf, 0x01, 0x0a, 0x20, 0x4e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x31, 0x4e, + 0x4e, 0x45, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x12, 0x12, 0x24, 0x0a, + 0x20, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, + 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x41, 0x4c, + 0x4c, 0x10, 0x13, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x5f, 0x30, 0x10, 0x14, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, + 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x31, 0x10, 0x15, 0x12, 0x22, 0x0a, 0x1e, 0x4e, + 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, + 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x32, 0x10, 0x16, 0x12, + 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, + 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, + 0x33, 0x10, 0x17, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x4c, 0x41, + 0x42, 0x45, 0x4c, 0x5f, 0x34, 0x10, 0x18, 0x12, 0x25, 0x0a, 0x21, 0x4e, 0x41, 0x54, 0x49, 0x56, + 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x49, 0x50, 0x56, + 0x36, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x19, 0x12, 0x1a, + 0x0a, 0x16, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, + 0x45, 0x4c, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x22, 0x2a, 0x75, 0x0a, 0x13, 0x4e, 0x65, + 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x4e, 0x45, + 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, + 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x54, 0x4f, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, + 0x01, 0x2a, 0xbf, 0x01, 0x0a, 0x20, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x35, 0x0a, 0x31, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, + 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x31, 0x0a, + 0x2d, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, + 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x01, + 0x12, 0x31, 0x0a, 0x2d, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x55, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x42, + 0x59, 0x10, 0x02, 0x2a, 0xb7, 0x01, 0x0a, 0x1e, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, + 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, - 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, - 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x31, 0x0a, 0x2d, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4d, - 0x41, 0x52, 0x59, 0x10, 0x01, 0x12, 0x31, 0x0a, 0x2d, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, - 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x4e, 0x44, 0x42, 0x59, 0x10, 0x02, 0x2a, 0xb7, 0x01, 0x0a, 0x1e, 0x4e, 0x65, 0x78, - 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x4e, + 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x52, 0x4f, - 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x2e, 0x0a, 0x2a, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, - 0x12, 0x30, 0x0a, 0x2c, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, - 0x45, 0x44, 0x5f, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, - 0x10, 0x02, 0x2a, 0xd4, 0x02, 0x0a, 0x10, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x45, 0x58, 0x54, 0x5f, - 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, + 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x2a, 0xfb, 0x02, + 0x0a, 0x10, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x4e, 0x45, 0x58, 0x54, 0x5f, + 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, + 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, + 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4e, 0x45, 0x58, 0x54, 0x5f, + 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x43, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, + 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x59, 0x4e, + 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4d, + 0x50, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4e, 0x45, 0x5f, + 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x55, 0x4e, 0x4f, 0x52, - 0x44, 0x45, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x42, 0x41, + 0x53, 0x45, 0x44, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, + 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x57, 0x5f, + 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x12, 0x29, 0x0a, 0x25, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x4e, 0x45, - 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x44, 0x59, 0x4e, 0x41, 0x4d, 0x49, 0x43, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, 0x45, - 0x44, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x4e, 0x45, 0x58, 0x54, - 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x10, - 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, - 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x41, - 0x53, 0x53, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x44, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x4e, 0x45, - 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x53, 0x10, 0x06, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xb2, 0x01, 0x0a, 0x0b, 0x4e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4e, 0x45, 0x58, - 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x45, 0x58, 0x54, - 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x16, - 0x0a, 0x12, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4d, 0x50, 0x4c, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, - 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, - 0x4e, 0x43, 0x41, 0x50, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, - 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, - 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x10, 0x05, 0x2a, 0x75, - 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, - 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x48, - 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x10, 0x03, 0x2a, 0xe8, 0x05, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, - 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, - 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x70, 0x12, 0x31, - 0x0a, 0x2d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, - 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, - 0x70, 0x12, 0x29, 0x0a, 0x25, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x71, 0x12, 0x27, 0x0a, 0x23, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x10, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x10, 0x73, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x55, - 0x4c, 0x45, 0x10, 0x74, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, - 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x75, 0x12, 0x2b, 0x0a, 0x27, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x49, 0x5f, - 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, - 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x76, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x49, 0x10, 0x77, 0x12, 0x25, - 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, - 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x10, 0x78, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, - 0x54, 0x10, 0x79, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, - 0x7a, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x7b, 0x12, 0x27, 0x0a, - 0x23, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, - 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x43, 0x41, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x7c, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x53, 0x10, 0x07, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xb2, 0x01, 0x0a, 0x0b, + 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x4e, + 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4e, 0x45, + 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x01, + 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x45, 0x58, 0x54, + 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x4e, 0x45, 0x58, 0x54, + 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, + 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x4e, 0x45, 0x58, 0x54, + 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x10, 0x05, + 0x2a, 0x75, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x12, + 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, + 0x11, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x4f, + 0x54, 0x48, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x17, + 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x03, 0x2a, 0x8c, 0x09, 0x0a, 0x14, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x35, 0x0a, 0x2d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, + 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2d, 0x0a, 0x25, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x10, 0x82, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2b, 0x0a, 0x23, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x10, 0x83, 0x80, 0x80, 0x80, 0x02, 0x12, 0x22, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x43, 0x4c, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x84, 0x80, 0x80, 0x80, 0x02, 0x12, 0x21, 0x0a, 0x19, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, + 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x10, 0x85, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2a, + 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x10, 0x86, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2f, 0x0a, 0x27, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x45, 0x54, + 0x48, 0x45, 0x52, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x87, 0x80, 0x80, 0x80, 0x02, 0x12, 0x17, 0x0a, 0x0f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x49, 0x10, 0x88, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x29, 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, + 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x89, 0x80, 0x80, 0x80, 0x02, 0x12, + 0x26, 0x0a, 0x1e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, + 0x45, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x10, 0x8a, 0x80, 0x80, 0x80, 0x02, 0x12, 0x20, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, + 0x49, 0x43, 0x59, 0x10, 0x8b, 0x80, 0x80, 0x80, 0x02, 0x12, 0x1e, 0x0a, 0x16, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x52, + 0x55, 0x4c, 0x45, 0x10, 0x8c, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2b, 0x0a, 0x23, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, + 0x44, 0x5f, 0x43, 0x41, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x41, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x8d, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2a, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, - 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x7d, 0x12, 0x14, - 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4e, - 0x45, 0x54, 0x10, 0x7e, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x7f, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0x80, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, - 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x81, 0x01, 0x1a, 0x02, 0x10, 0x01, - 0x2a, 0xd1, 0x1a, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, - 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, 0x10, 0x03, 0x12, 0x1e, 0x0a, - 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x52, - 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x18, 0x0a, - 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, - 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x09, 0x12, - 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, - 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0c, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x0d, + 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x8e, 0x80, 0x80, + 0x80, 0x02, 0x12, 0x18, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x56, 0x4e, 0x45, 0x54, 0x10, 0x8f, 0x80, 0x80, 0x80, 0x02, 0x12, 0x27, 0x0a, 0x1f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x5f, 0x56, + 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, + 0x90, 0x80, 0x80, 0x80, 0x02, 0x12, 0x1d, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x91, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x1a, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x45, 0x54, 0x10, 0x92, 0x80, 0x80, 0x80, 0x02, + 0x12, 0x1c, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, 0x10, 0x93, 0x80, 0x80, 0x80, 0x02, 0x12, 0x1f, + 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, + 0x53, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x94, 0x80, 0x80, 0x80, 0x02, 0x12, + 0x2a, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, + 0x55, 0x54, 0x42, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x95, 0x80, 0x80, 0x80, 0x02, 0x12, 0x1e, 0x0a, 0x16, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x96, 0x80, 0x80, 0x80, 0x02, 0x12, 0x1e, 0x0a, 0x16, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x97, 0x80, 0x80, 0x80, 0x02, 0x12, 0x36, 0x0a, 0x2e, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x98, 0x80, + 0x80, 0x80, 0x02, 0x12, 0x2f, 0x0a, 0x27, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x42, 0x55, + 0x4c, 0x4b, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x99, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x22, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x41, 0x4e, + 0x43, 0x45, 0x10, 0x9a, 0x80, 0x80, 0x80, 0x02, 0x12, 0x28, 0x0a, 0x20, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x9b, 0x80, 0x80, + 0x80, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xd7, 0x1a, 0x0a, 0x0a, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x13, + 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, + 0x47, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, + 0x52, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, + 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, + 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x06, 0x12, 0x20, 0x0a, + 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x07, 0x12, + 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, + 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x1f, 0x0a, + 0x1b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0c, 0x12, 0x26, + 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, + 0x4d, 0x42, 0x45, 0x52, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x10, 0x0e, 0x12, 0x1e, + 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x1c, + 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x41, + 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x50, 0x10, + 0x11, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x10, 0x12, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x13, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x52, 0x45, + 0x44, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x10, 0x16, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x17, 0x12, 0x1f, + 0x0a, 0x1b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x18, 0x12, + 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x19, 0x12, 0x1e, 0x0a, 0x1a, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x1a, 0x12, 0x26, 0x0a, 0x22, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x10, 0x1b, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x1c, + 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x48, 0x41, 0x53, 0x48, 0x10, 0x1d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x46, 0x10, 0x1e, 0x12, 0x19, 0x0a, 0x15, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x46, 0x5f, 0x4d, + 0x41, 0x54, 0x43, 0x48, 0x10, 0x1f, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, + 0x20, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x10, 0x22, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x10, + 0x23, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x10, 0x24, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x10, 0x25, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x26, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x27, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, + 0x42, 0x45, 0x52, 0x10, 0x28, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x10, 0x29, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x2a, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x10, 0x0e, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, - 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x0f, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x50, 0x10, 0x11, 0x12, 0x21, 0x0a, 0x1d, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x12, 0x12, 0x17, - 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x45, 0x52, 0x10, 0x13, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x10, 0x14, 0x12, 0x17, 0x0a, - 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x4f, 0x53, - 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x15, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x16, 0x12, 0x19, 0x0a, - 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x10, 0x17, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x19, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, - 0x46, 0x49, 0x4c, 0x45, 0x10, 0x1a, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, - 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x1b, 0x12, 0x1a, - 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, - 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x1c, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x1d, - 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x44, 0x46, 0x10, 0x1e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x46, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x1f, - 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x20, 0x12, 0x19, 0x0a, 0x15, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x21, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x22, 0x12, 0x1b, - 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x10, 0x23, 0x12, 0x22, 0x0a, 0x1e, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x24, 0x12, - 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, - 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x25, 0x12, - 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x26, 0x12, 0x14, 0x0a, 0x10, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, - 0x10, 0x27, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x28, 0x12, - 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, 0x29, 0x12, 0x1a, - 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x2a, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x10, 0x2b, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x2c, 0x12, 0x19, 0x0a, 0x15, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x46, - 0x4c, 0x55, 0x53, 0x48, 0x10, 0x2d, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x2e, 0x12, 0x18, 0x0a, - 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x50, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x2f, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x50, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x10, 0x30, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x52, 0x50, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x10, 0x31, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x32, - 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, - 0x52, 0x10, 0x33, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x34, 0x12, - 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, - 0x50, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, - 0x10, 0x35, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x36, 0x12, 0x1a, - 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, - 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x37, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x38, 0x12, 0x28, 0x0a, 0x24, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, - 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, - 0x52, 0x41, 0x50, 0x10, 0x39, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x3a, 0x12, 0x1b, 0x0a, - 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x3b, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3c, 0x12, 0x13, 0x0a, 0x0f, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x10, - 0x3d, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x3e, 0x12, - 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x3f, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x40, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x10, 0x41, 0x12, 0x21, 0x0a, - 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, - 0x4c, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x42, - 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x43, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x44, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x10, 0x45, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x46, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x2b, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, + 0x2c, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x46, 0x4c, 0x55, 0x53, 0x48, 0x10, 0x2d, 0x12, 0x25, 0x0a, 0x21, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, + 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, + 0x52, 0x10, 0x2e, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x2f, 0x12, 0x19, 0x0a, + 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x50, 0x46, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x30, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x50, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x31, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x10, 0x32, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x33, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x10, 0x34, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x35, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x10, 0x36, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x37, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, - 0x47, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x48, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4d, 0x41, 0x54, - 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x49, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, - 0x52, 0x54, 0x10, 0x4a, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, - 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x4b, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x4c, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, - 0x50, 0x4f, 0x52, 0x54, 0x10, 0x4d, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, - 0x54, 0x52, 0x59, 0x10, 0x4e, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, - 0x4f, 0x52, 0x10, 0x4f, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x50, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, - 0x51, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, - 0x52, 0x10, 0x52, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x53, 0x12, 0x17, - 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, - 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x10, 0x54, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x55, - 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x56, 0x12, - 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x57, 0x12, - 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x10, 0x58, 0x12, 0x16, 0x0a, 0x12, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x10, 0x59, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x5a, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x5b, 0x12, 0x19, - 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x10, 0x5c, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x53, 0x41, 0x10, 0x5d, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x5e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x48, 0x41, - 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x5f, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x60, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, - 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x61, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x62, 0x12, - 0x22, 0x0a, 0x1e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, - 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, - 0x50, 0x10, 0x63, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x10, 0x64, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, - 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x10, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x10, 0x66, - 0x12, 0x24, 0x0a, 0x20, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x4d, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x10, 0x68, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x10, 0x69, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x6a, 0x12, + 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, + 0x38, 0x12, 0x28, 0x0a, 0x24, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, + 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x10, 0x39, 0x12, 0x16, 0x0a, 0x12, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x10, 0x3a, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x3b, + 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x3c, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x10, 0x3d, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0x3e, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x3f, + 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x49, 0x4e, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x40, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, + 0x4c, 0x10, 0x41, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x10, 0x42, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x43, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x44, 0x12, 0x1a, 0x0a, + 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x54, 0x45, + 0x4c, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x45, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x46, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x47, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x48, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, - 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x6b, 0x12, 0x28, - 0x0a, 0x24, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, - 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, - 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x6c, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x44, 0x45, 0x56, 0x49, - 0x43, 0x45, 0x10, 0x6d, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x53, 0x45, 0x10, 0x6e, 0x12, 0x18, 0x0a, - 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x45, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x6f, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x70, 0x12, 0x23, 0x0a, 0x1e, - 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, - 0x02, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, - 0x44, 0x10, 0x82, 0x02, 0x2a, 0xf7, 0x02, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x44, 0x72, 0x6f, 0x70, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x55, 0x54, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x32, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x26, - 0x0a, 0x22, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x49, - 0x4c, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x41, 0x4e, 0x59, - 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x04, 0x12, 0x2f, 0x0a, 0x2b, 0x4f, - 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, + 0x41, 0x4d, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x10, 0x49, 0x12, 0x1a, + 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x4a, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x4b, 0x12, + 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x4c, 0x12, 0x1d, 0x0a, + 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x4d, 0x12, 0x1d, 0x0a, 0x19, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, + 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x10, 0x4e, 0x12, 0x1d, 0x0a, 0x19, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x43, + 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x4f, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x50, 0x12, 0x19, 0x0a, 0x15, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x10, 0x51, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x52, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x10, 0x53, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x10, 0x54, 0x12, 0x17, 0x0a, + 0x13, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x45, 0x52, 0x10, 0x55, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x10, 0x56, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, + 0x54, 0x4f, 0x52, 0x10, 0x57, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, + 0x10, 0x58, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x10, 0x59, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x5a, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x10, 0x5b, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x10, 0x5c, 0x12, + 0x19, 0x0a, 0x15, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x10, 0x5d, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x5e, 0x12, 0x27, 0x0a, 0x23, 0x4f, 0x42, 0x4a, 0x45, 0x43, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x4e, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, + 0x4e, 0x45, 0x44, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x10, 0x5f, + 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x10, 0x60, 0x12, + 0x1c, 0x0a, 0x18, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x61, 0x12, 0x16, 0x0a, + 0x12, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x59, 0x5f, + 0x4d, 0x41, 0x43, 0x10, 0x62, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x63, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x10, 0x64, + 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x65, 0x12, 0x18, 0x0a, 0x14, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x41, 0x10, 0x66, 0x12, 0x24, 0x0a, 0x20, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x52, + 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x4d, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x67, 0x12, 0x1b, 0x0a, 0x17, + 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x5f, + 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x68, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x52, 0x53, 0x10, 0x69, 0x12, 0x25, + 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x10, 0x6a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x10, 0x6b, 0x12, 0x28, 0x0a, 0x24, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x6c, 0x12, 0x1a, + 0x0a, 0x16, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, + 0x45, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x10, 0x6d, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x53, + 0x45, 0x10, 0x6e, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x6f, 0x12, 0x21, 0x0a, + 0x1d, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x43, 0x4d, + 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x70, + 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4d, 0x41, 0x58, 0x10, 0x71, 0x12, 0x29, 0x0a, 0x21, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, + 0x2a, 0xf7, 0x02, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1a, + 0x0a, 0x16, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x4c, 0x32, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x55, + 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x12, 0x27, + 0x0a, 0x23, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x4c, 0x33, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, + 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x04, 0x12, 0x2f, 0x0a, 0x2b, 0x4f, 0x55, 0x54, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x55, 0x54, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x10, + 0x06, 0x12, 0x29, 0x0a, 0x21, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x12, 0x28, 0x0a, 0x20, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x45, 0x4e, 0x44, 0x10, 0x06, 0x12, 0x29, 0x0a, 0x21, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, - 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, - 0x12, 0x28, 0x0a, 0x20, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, - 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, 0x80, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x67, - 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, - 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x18, 0x0a, - 0x14, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x50, 0x49, 0x50, 0x45, 0x10, 0x02, 0x2a, 0x67, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x73, 0x65, - 0x67, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x53, - 0x45, 0x47, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x55, 0x54, - 0x53, 0x45, 0x47, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, - 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, - 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x10, 0x02, - 0x2a, 0x55, 0x0a, 0x0a, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, - 0x0a, 0x17, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, - 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, - 0x01, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x57, 0x41, 0x50, 0x10, 0x02, 0x2a, 0x96, 0x02, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x12, - 0x19, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x50, 0x59, - 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, - 0x04, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x06, - 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, - 0x54, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f, 0x4e, 0x4f, 0x54, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x09, - 0x2a, 0x72, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, - 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, 0x52, - 0x45, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x14, - 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x52, - 0x45, 0x44, 0x10, 0x03, 0x2a, 0x7e, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, - 0x61, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, - 0x4e, 0x54, 0x41, 0x47, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, - 0x41, 0x47, 0x10, 0x03, 0x2a, 0xba, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, + 0x10, 0x82, 0x80, 0x80, 0x80, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x67, 0x0a, 0x0d, 0x4f, 0x75, + 0x74, 0x73, 0x65, 0x67, 0x45, 0x78, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, + 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, + 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x55, 0x54, + 0x53, 0x45, 0x47, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, + 0x45, 0x10, 0x02, 0x2a, 0x67, 0x0a, 0x0d, 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x74, 0x6c, + 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, + 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, + 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x54, 0x4c, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x10, 0x02, 0x2a, 0x55, 0x0a, 0x0a, + 0x4f, 0x75, 0x74, 0x73, 0x65, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x55, + 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x55, 0x54, 0x53, 0x45, + 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x53, 0x48, 0x10, 0x01, 0x12, 0x14, 0x0a, + 0x10, 0x4f, 0x55, 0x54, 0x53, 0x45, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x41, + 0x50, 0x10, 0x02, 0x2a, 0x96, 0x02, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, + 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x10, 0x03, 0x12, 0x1d, + 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x10, 0x04, 0x12, 0x16, 0x0a, + 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x52, 0x41, 0x50, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, + 0x4e, 0x59, 0x10, 0x07, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x54, 0x10, 0x08, 0x12, + 0x1b, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x4f, 0x4e, 0x4f, 0x54, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x09, 0x2a, 0x72, 0x0a, 0x0b, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, + 0x52, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x03, + 0x2a, 0x7e, 0x0a, 0x0a, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, + 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, + 0x41, 0x47, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x03, + 0x2a, 0xba, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, + 0x28, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, + 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x41, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x42, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x42, 0x10, 0x02, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x10, - 0x03, 0x2a, 0x97, 0x01, 0x0a, 0x16, 0x50, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, - 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, - 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x45, 0x5f, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x10, 0x03, 0x2a, 0x97, 0x01, + 0x0a, 0x16, 0x50, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, - 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, - 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x41, - 0x53, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x55, 0x54, 0x4f, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x02, 0x2a, 0x85, 0x01, 0x0a, 0x14, - 0x50, 0x6f, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, - 0x1e, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, - 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, - 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x49, - 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x55, 0x41, - 0x4c, 0x10, 0x02, 0x2a, 0xaa, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x43, - 0x6f, 0x6c, 0x6f, 0x72, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, - 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x44, 0x10, 0x01, - 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, - 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x41, 0x57, 0x41, 0x52, 0x45, 0x10, 0x02, - 0x12, 0x2e, 0x0a, 0x26, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, - 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, - 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, - 0x2a, 0xa5, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, - 0x52, 0x5f, 0x54, 0x43, 0x4d, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x4c, 0x49, 0x43, - 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x52, 0x5f, 0x54, 0x43, 0x4d, 0x10, 0x02, - 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x03, - 0x12, 0x26, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, - 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xc2, 0x02, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, - 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, - 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, - 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, - 0x45, 0x45, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, - 0x45, 0x45, 0x4e, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x50, - 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, - 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, - 0x4c, 0x4f, 0x57, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x50, - 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x4c, - 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x08, 0x12, 0x26, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x86, 0x01, - 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, - 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xb3, - 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, - 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x45, 0x4e, 0x44, 0x10, 0xb4, 0x01, 0x2a, 0xd9, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x72, 0x74, 0x41, - 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, - 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, - 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x53, 0x54, 0x45, 0x52, - 0x10, 0x04, 0x2a, 0xcc, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, - 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x31, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x32, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x34, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x03, - 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, - 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, - 0x04, 0x2a, 0xe2, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x50, - 0x61, 0x69, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x45, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, + 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, + 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x02, 0x2a, 0x85, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x49, 0x47, + 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x45, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x20, 0x0a, + 0x1c, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x54, + 0x55, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x10, 0x02, 0x2a, + 0xaa, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, + 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x41, 0x57, 0x41, 0x52, 0x45, 0x10, 0x02, 0x12, 0x2e, 0x0a, 0x26, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, + 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xa5, 0x01, 0x0a, + 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, + 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x52, 0x5f, 0x54, 0x43, + 0x4d, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x52, 0x5f, 0x54, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, + 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x1e, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x55, 0x53, + 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x01, 0x2a, 0xc2, 0x02, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x4c, + 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, + 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x4c, 0x49, 0x43, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x53, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, + 0x08, 0x12, 0x26, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x8c, 0x01, 0x0a, 0x12, 0x50, 0x6f, + 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, + 0x12, 0x26, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, + 0x4e, 0x44, 0x10, 0x82, 0x80, 0x80, 0x80, 0x02, 0x2a, 0xd9, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, + 0x64, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, + 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, + 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, + 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x03, 0x12, 0x24, + 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x53, 0x54, + 0x45, 0x52, 0x10, 0x04, 0x2a, 0xf0, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x72, 0x74, 0x42, 0x72, 0x65, + 0x61, 0x6b, 0x6f, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, + 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, + 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x31, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x22, + 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x34, 0x5f, 0x4c, 0x41, 0x4e, 0x45, + 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, + 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x38, 0x5f, + 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x42, + 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x05, 0x2a, 0xe2, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, + 0x43, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x25, + 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, + 0x4b, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x45, + 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x48, 0x4f, + 0x52, 0x54, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, + 0x4f, 0x53, 0x53, 0x54, 0x41, 0x4c, 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x2a, 0xd1, 0x01, 0x0a, + 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, - 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x02, 0x12, 0x1f, 0x0a, - 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x48, 0x4f, 0x52, 0x54, 0x10, 0x03, 0x12, 0x23, - 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, - 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x54, 0x41, 0x4c, - 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x05, 0x2a, 0xd1, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x43, - 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, - 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x35, 0x10, 0x02, - 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x35, 0x45, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x50, + 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x43, 0x41, 0x54, 0x35, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x35, 0x45, 0x10, + 0x03, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x36, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, - 0x41, 0x54, 0x36, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x36, 0x41, 0x10, 0x05, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x37, 0x10, 0x06, 0x2a, 0xc9, 0x01, 0x0a, 0x19, 0x50, - 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 0x69, 0x6c, - 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, - 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, + 0x41, 0x54, 0x36, 0x41, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x37, 0x10, 0x06, + 0x2a, 0xc9, 0x01, 0x0a, 0x19, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2c, + 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x46, + 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, - 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x02, + 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x50, 0x52, 0x49, 0x4d, 0x41, 0x52, 0x59, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x4f, 0x4e, - 0x44, 0x41, 0x52, 0x59, 0x10, 0x03, 0x2a, 0x8e, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x44, - 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, - 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, - 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, - 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, - 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, - 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x41, 0x54, 0x48, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x43, 0x53, 0x5f, 0x49, 0x45, 0x45, 0x45, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x2a, 0xd6, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, - 0x44, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x4e, 0x4f, - 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, - 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x43, 0x4f, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x4f, - 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, - 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x46, 0x49, 0x42, 0x45, 0x52, 0x5f, 0x4f, - 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, - 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x43, 0x4f, 0x50, 0x50, 0x45, 0x52, 0x5f, - 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x50, + 0x5f, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x41, 0x52, 0x59, 0x10, 0x03, 0x2a, 0x8e, 0x01, 0x0a, + 0x12, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x41, + 0x54, 0x41, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x43, + 0x53, 0x5f, 0x49, 0x45, 0x45, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x2a, 0xd6, 0x01, + 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x12, + 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, + 0x49, 0x41, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, + 0x44, 0x49, 0x41, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x43, 0x4f, + 0x50, 0x50, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x46, - 0x49, 0x42, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x05, - 0x2a, 0x85, 0x03, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, - 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, + 0x49, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x43, + 0x4f, 0x50, 0x50, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, + 0x45, 0x44, 0x49, 0x41, 0x5f, 0x46, 0x49, 0x42, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x45, + 0x52, 0x52, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x85, 0x03, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x45, + 0x72, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, + 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, + 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, + 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x26, + 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, + 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x52, 0x58, 0x5f, + 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x06, 0x12, 0x1c, + 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, - 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x49, - 0x53, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x49, 0x47, 0x4e, - 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, - 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x52, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, - 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x43, 0x5f, - 0x52, 0x41, 0x54, 0x45, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, - 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, - 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x08, 0x12, - 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x09, 0x2a, 0xef, 0x01, 0x0a, 0x13, 0x50, 0x6f, 0x72, - 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, - 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, - 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, 0x35, 0x32, 0x38, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, 0x35, 0x34, 0x34, 0x10, 0x03, 0x12, 0x2c, 0x0a, - 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, - 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, 0x35, 0x34, 0x34, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x46, 0x43, 0x10, 0x05, 0x2a, 0x70, 0x0a, 0x0b, 0x50, 0x6f, - 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x52, 0x53, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, - 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x43, 0x10, 0x03, 0x2a, 0xd1, 0x01, 0x0a, - 0x13, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, - 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x4f, 0x4e, - 0x4c, 0x59, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, - 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, - 0x58, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, - 0x2a, 0x90, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x72, 0x74, 0x48, 0x6f, 0x73, 0x74, 0x54, 0x78, 0x52, - 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, + 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x09, 0x2a, 0xdd, + 0x04, 0x0a, 0x0f, 0x50, 0x6f, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01, 0x12, 0x23, - 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, - 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, - 0x59, 0x10, 0x02, 0x2a, 0xb4, 0x06, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, - 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x52, 0x32, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x34, - 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x10, 0x05, 0x12, 0x1b, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, + 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x4c, 0x4f, 0x43, 0x41, + 0x4c, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, + 0x41, 0x43, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, + 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x5f, + 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x05, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x45, 0x43, 0x5f, + 0x4c, 0x4f, 0x53, 0x53, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4d, + 0x41, 0x52, 0x4b, 0x45, 0x52, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x48, 0x49, 0x47, + 0x48, 0x5f, 0x53, 0x45, 0x52, 0x10, 0x11, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x48, 0x49, 0x47, + 0x48, 0x5f, 0x42, 0x45, 0x52, 0x10, 0x21, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x43, + 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x41, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x81, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, + 0x49, 0x54, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x81, 0x02, 0x12, 0x33, 0x0a, 0x2e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x41, 0x4c, 0x49, + 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x81, 0x04, 0x12, + 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x81, 0x08, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x49, + 0x47, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x81, 0x10, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x52, 0x58, 0x5f, 0x52, + 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x81, 0x20, 0x2a, 0xef, + 0x01, 0x0a, 0x13, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, + 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, + 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, 0x35, 0x32, 0x38, 0x10, + 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, 0x35, 0x34, + 0x34, 0x10, 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x53, + 0x35, 0x34, 0x34, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x46, 0x43, 0x10, 0x05, + 0x2a, 0x70, 0x0a, 0x0b, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, + 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, + 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x53, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x43, + 0x10, 0x03, 0x2a, 0xd1, 0x01, 0x0a, 0x13, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x49, 0x53, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x54, 0x58, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x58, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x03, 0x12, 0x26, + 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x48, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x2a, 0x90, 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x72, 0x74, 0x48, + 0x6f, 0x73, 0x74, 0x54, 0x78, 0x52, 0x65, 0x61, 0x64, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, + 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, + 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x59, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, + 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x2a, 0xb4, 0x06, 0x0a, 0x11, 0x50, 0x6f, + 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x32, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x32, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x52, 0x34, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, + 0x50, 0x45, 0x5f, 0x43, 0x52, 0x34, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x4c, 0x52, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x52, 0x34, 0x10, - 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, - 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x10, 0x0a, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x34, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, + 0x53, 0x52, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x32, 0x10, + 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x34, 0x10, 0x07, 0x12, 0x1a, + 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x52, 0x10, 0x08, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x43, 0x41, 0x55, 0x49, 0x10, 0x0c, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x47, 0x4d, 0x49, 0x49, 0x10, 0x0d, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, - 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, - 0x49, 0x10, 0x0e, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x4c, 0x41, 0x55, 0x49, - 0x10, 0x0f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x32, 0x10, 0x10, 0x12, - 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x55, 0x49, 0x34, 0x10, 0x11, 0x12, 0x1c, + 0x45, 0x5f, 0x4c, 0x52, 0x34, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, + 0x52, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x34, 0x10, 0x0b, + 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x55, 0x49, 0x10, 0x0c, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x41, 0x55, 0x49, 0x10, 0x12, 0x12, 0x1b, 0x0a, 0x17, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x4d, 0x49, 0x49, 0x10, 0x0d, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x58, 0x46, 0x49, 0x10, 0x13, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x10, 0x0e, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x58, 0x47, 0x4d, 0x49, 0x49, 0x10, 0x14, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x58, 0x4c, 0x41, 0x55, 0x49, 0x10, 0x0f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x43, 0x52, 0x38, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x38, - 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x52, 0x38, 0x10, 0x17, 0x12, - 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x52, 0x38, 0x10, 0x18, 0x12, 0x1f, 0x0a, 0x1b, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x53, 0x58, 0x47, 0x4d, 0x49, 0x49, 0x10, 0x19, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x1a, 0x2a, 0xb7, 0x01, 0x0a, 0x18, 0x50, - 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, - 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, - 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, + 0x4b, 0x52, 0x32, 0x10, 0x10, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x55, + 0x49, 0x34, 0x10, 0x11, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x41, 0x55, 0x49, + 0x10, 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x46, 0x49, 0x10, 0x13, 0x12, + 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, 0x4d, 0x49, 0x49, 0x10, 0x14, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x38, 0x10, 0x15, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4b, 0x52, 0x38, 0x10, 0x16, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x52, 0x38, 0x10, 0x17, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x52, 0x38, + 0x10, 0x18, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x53, 0x58, 0x47, 0x4d, 0x49, + 0x49, 0x10, 0x19, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x10, 0x1a, + 0x2a, 0xb7, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, + 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, + 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, - 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x10, 0x02, 0x12, - 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, - 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, - 0x41, 0x43, 0x10, 0x03, 0x2a, 0xa5, 0x02, 0x0a, 0x1d, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, - 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, - 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, - 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x36, 0x0a, 0x32, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, - 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, - 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x02, 0x12, 0x39, 0x0a, 0x35, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, - 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4e, 0x52, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, - 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, + 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, + 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x50, 0x48, 0x59, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x03, 0x2a, 0xa5, 0x02, 0x0a, 0x1d, 0x50, + 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x46, + 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x2a, 0xa0, 0x01, 0x0a, - 0x18, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, - 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, - 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x49, - 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, - 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x02, 0x2a, - 0xd1, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, - 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, - 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, - 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x10, - 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, - 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x03, 0x12, 0x21, 0x0a, - 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x04, - 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, - 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, - 0x45, 0x10, 0x05, 0x2a, 0xa4, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, - 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, - 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x49, - 0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, - 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x43, - 0x52, 0x4f, 0x53, 0x53, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x03, 0x2a, 0x84, 0x01, 0x0a, 0x12, 0x50, - 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x49, 0x47, 0x48, 0x54, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x4f, 0x56, 0x45, 0x52, 0x10, - 0x02, 0x2a, 0xc4, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, - 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, - 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, - 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, - 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x42, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1a, 0x0a, - 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x43, 0x4f, 0x50, 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x41, 0x43, - 0x4b, 0x50, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x05, 0x2a, 0x91, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x72, - 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, - 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x58, 0x10, 0x01, 0x12, 0x1a, - 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x31, 0x30, 0x30, 0x46, 0x58, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x47, 0x4d, 0x49, 0x49, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x10, 0x03, 0x2a, 0xc4, 0x01, 0x0a, - 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, - 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, - 0x4e, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, - 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, - 0x54, 0x10, 0x05, 0x2a, 0xff, 0x01, 0x0a, 0x1c, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x74, 0x68, - 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, - 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, - 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, - 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x38, 0x5f, 0x31, 0x35, 0x10, - 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, - 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x32, 0x5f, 0x31, 0x39, 0x10, 0x02, 0x12, 0x2a, 0x0a, - 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, - 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x31, 0x36, 0x5f, 0x32, 0x33, 0x10, 0x03, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, - 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x32, 0x30, - 0x5f, 0x32, 0x37, 0x10, 0x04, 0x2a, 0xf1, 0x07, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x43, 0x54, 0x45, - 0x54, 0x53, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, - 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, - 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x53, 0x10, 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x03, - 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, - 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x2b, - 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x29, 0x0a, 0x25, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, - 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, - 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, - 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, - 0x59, 0x54, 0x45, 0x53, 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, - 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, - 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0b, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, - 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, - 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x2f, 0x0a, 0x2b, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, - 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0d, 0x12, 0x2e, 0x0a, 0x2a, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, - 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, - 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0e, 0x12, 0x2c, 0x0a, 0x28, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, - 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, - 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, - 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x10, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, - 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x11, - 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, - 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, - 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x13, 0x12, 0x2e, 0x0a, - 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, - 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x14, 0x12, 0x29, 0x0a, - 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x15, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x16, 0x2a, 0xb3, 0x01, 0x0a, 0x0e, 0x50, 0x6f, - 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x1c, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, - 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x58, 0x10, 0x02, 0x12, - 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x58, 0x10, 0x03, 0x12, - 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x58, 0x10, 0x04, 0x2a, - 0xc4, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, - 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, + 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x01, 0x12, + 0x36, 0x0a, 0x32, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, + 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, + 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x4e, 0x52, + 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, + 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, + 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x4f, 0x55, 0x54, + 0x10, 0x04, 0x2a, 0xa0, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x6e, 0x6b, 0x54, + 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, + 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, + 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, + 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, + 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x52, 0x41, 0x49, + 0x4e, 0x45, 0x44, 0x10, 0x02, 0x2a, 0xd1, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, + 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, + 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x50, 0x48, 0x59, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, + 0x43, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, + 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, + 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x43, + 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x05, 0x2a, 0xa4, 0x01, 0x0a, 0x12, 0x50, 0x6f, + 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x5f, 0x53, 0x54, 0x52, 0x41, 0x49, 0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x03, + 0x2a, 0x84, 0x01, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, + 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x49, 0x47, 0x48, 0x54, + 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x52, 0x4f, 0x53, + 0x53, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x02, 0x2a, 0xc4, 0x01, 0x0a, 0x0d, 0x50, 0x6f, 0x72, 0x74, + 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x42, 0x45, + 0x52, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x50, 0x50, 0x45, 0x52, 0x10, 0x04, 0x12, + 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x50, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x05, 0x2a, 0x91, + 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, + 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x42, 0x41, 0x53, 0x45, + 0x5f, 0x58, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, + 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x30, 0x30, 0x46, 0x58, 0x10, 0x02, + 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x47, 0x4d, 0x49, 0x49, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, + 0x10, 0x03, 0x2a, 0xc4, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x19, + 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x54, 0x45, + 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x54, 0x10, 0x05, 0x2a, 0xff, 0x01, 0x0a, 0x1c, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, + 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, + 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x38, 0x5f, 0x31, 0x35, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x32, 0x5f, 0x31, + 0x39, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, + 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, + 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x31, 0x36, 0x5f, 0x32, 0x33, 0x10, 0x03, 0x12, + 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, + 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x32, 0x30, 0x5f, 0x32, 0x37, 0x10, 0x04, 0x2a, 0xf1, 0x07, 0x0a, 0x0c, + 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1e, 0x0a, 0x1a, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x46, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, + 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, + 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, + 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, + 0x45, 0x53, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, + 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, + 0x06, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, + 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, + 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, + 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x2e, + 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, + 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0b, 0x12, 0x31, + 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, + 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, + 0x0c, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, + 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x0d, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, + 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x0e, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, + 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0f, + 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, + 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x10, 0x12, 0x28, 0x0a, 0x24, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x11, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, + 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, + 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, + 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x13, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, + 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x14, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, + 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x15, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x16, 0x2a, + 0xb3, 0x01, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, + 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, + 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x58, + 0x5f, 0x52, 0x58, 0x10, 0x02, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, + 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x52, 0x58, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, + 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x54, 0x58, 0x10, 0x04, 0x2a, 0xc4, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, + 0x62, 0x73, 0x52, 0x78, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, + 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, + 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x4f, 0x4b, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, - 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x43, - 0x4b, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x02, 0x12, - 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, - 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, - 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x4f, 0x53, 0x54, 0x5f, - 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x04, 0x2a, 0xaa, 0x01, 0x0a, 0x1b, 0x50, 0x6f, 0x72, 0x74, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, - 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, - 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x45, 0x50, 0x41, 0x52, 0x41, 0x54, - 0x45, 0x10, 0x02, 0x2a, 0x93, 0x01, 0x0a, 0x0b, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x74, 0x70, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, - 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, - 0x50, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x57, 0x4f, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x54, 0x49, - 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x03, 0x2a, 0xbc, 0x02, 0x0a, 0x12, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, - 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, - 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, 0x60, 0x12, 0x29, 0x0a, - 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, - 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x5f, - 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x81, 0x60, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, - 0x54, 0x48, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x53, 0x10, 0x82, 0x60, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, - 0x45, 0x4e, 0x49, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x83, - 0x60, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4c, - 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x5f, - 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x84, 0x60, 0x12, - 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, - 0x44, 0x10, 0x85, 0x60, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xd4, 0x47, 0x0a, 0x08, 0x50, 0x6f, 0x72, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, - 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x05, 0x12, - 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, - 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, - 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x09, 0x12, 0x1b, - 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, - 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0b, 0x12, 0x23, 0x0a, 0x1f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, - 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0d, - 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, - 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x19, 0x0a, - 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, - 0x54, 0x5f, 0x51, 0x4c, 0x45, 0x4e, 0x10, 0x0f, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x42, 0x52, 0x4f, - 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x10, 0x12, 0x23, 0x0a, - 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, - 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x12, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x13, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x42, 0x52, 0x4f, - 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x14, 0x12, 0x28, 0x0a, - 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x15, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, - 0x5f, 0x46, 0x52, 0x41, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x16, 0x12, 0x28, 0x0a, 0x24, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x34, 0x5f, 0x4f, 0x43, - 0x54, 0x45, 0x54, 0x53, 0x10, 0x17, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x35, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x4f, - 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x18, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x35, 0x35, - 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x19, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, + 0x5f, 0x4c, 0x4f, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x04, 0x2a, 0xaa, 0x01, 0x0a, + 0x1b, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x2b, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, + 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2c, 0x0a, 0x28, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, + 0x45, 0x50, 0x41, 0x52, 0x41, 0x54, 0x45, 0x10, 0x02, 0x2a, 0x93, 0x01, 0x0a, 0x0b, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x45, 0x50, 0x5f, 0x54, 0x49, + 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x57, 0x4f, 0x5f, 0x53, + 0x54, 0x45, 0x50, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x03, 0x2a, + 0xfc, 0x04, 0x0a, 0x12, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x20, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, + 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, + 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x12, 0x2c, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, + 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x2e, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x49, + 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x82, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x2d, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, + 0x4e, 0x49, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x83, 0x80, + 0x80, 0x80, 0x02, 0x12, 0x2f, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, + 0x49, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x84, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x27, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x56, 0x49, 0x50, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x85, 0x80, 0x80, 0x80, 0x02, 0x12, 0x27, 0x0a, + 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x4d, + 0x49, 0x53, 0x53, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x86, 0x80, 0x80, 0x80, 0x02, 0x12, 0x31, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, + 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x87, 0x80, 0x80, 0x80, 0x02, 0x12, 0x33, 0x0a, 0x2b, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, + 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x49, 0x4e, + 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x88, 0x80, 0x80, 0x80, 0x02, 0x12, 0x37, + 0x0a, 0x2f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, + 0x49, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x89, 0x80, 0x80, 0x80, 0x02, 0x12, 0x39, 0x0a, 0x31, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x42, 0x5f, 0x46, 0x41, 0x53, + 0x54, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x49, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x8a, 0x80, 0x80, + 0x80, 0x02, 0x12, 0x26, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, + 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x8b, 0x80, 0x80, 0x80, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xec, + 0x48, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, + 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, + 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x44, + 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x42, 0x52, 0x4f, + 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x07, 0x12, 0x22, 0x0a, + 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, + 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, + 0x44, 0x53, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, + 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x0b, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0c, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, + 0x41, 0x52, 0x44, 0x53, 0x10, 0x0d, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x53, 0x10, 0x0e, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x51, 0x4c, 0x45, 0x4e, 0x10, 0x0f, 0x12, 0x23, + 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, + 0x55, 0x54, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x10, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, + 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x12, 0x12, + 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, + 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x13, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x35, - 0x31, 0x31, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1a, 0x12, 0x31, 0x0a, 0x2d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x35, 0x31, 0x32, 0x5f, 0x54, 0x4f, - 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1b, 0x12, 0x32, - 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x30, 0x32, - 0x34, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, - 0x10, 0x1c, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x54, 0x53, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x14, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x55, 0x4e, 0x44, + 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x15, 0x12, 0x23, 0x0a, + 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x46, 0x52, 0x41, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x53, + 0x10, 0x16, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x31, 0x35, 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x30, 0x34, 0x37, 0x5f, 0x4f, 0x43, - 0x54, 0x45, 0x54, 0x53, 0x10, 0x1d, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x34, 0x30, 0x39, - 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1e, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, - 0x5f, 0x39, 0x32, 0x31, 0x36, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x33, - 0x0a, 0x2f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x39, 0x32, 0x31, - 0x37, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x20, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4f, 0x56, 0x45, - 0x52, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, + 0x5f, 0x36, 0x34, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x17, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, - 0x52, 0x58, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x22, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x5a, - 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x23, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x35, 0x5f, 0x54, 0x4f, + 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x18, 0x12, 0x30, 0x0a, + 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, + 0x54, 0x4f, 0x5f, 0x32, 0x35, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x19, 0x12, + 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, + 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x35, + 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x35, 0x31, 0x31, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, + 0x1a, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, + 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, + 0x35, 0x31, 0x32, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x1b, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, + 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1c, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x53, 0x5f, 0x4a, 0x41, 0x42, 0x42, 0x45, 0x52, 0x53, 0x10, 0x24, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x25, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x26, 0x12, 0x24, 0x0a, - 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, - 0x53, 0x10, 0x27, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x52, 0x43, - 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x28, 0x12, - 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, - 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x54, 0x58, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x29, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, - 0x5f, 0x52, 0x58, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x2a, 0x12, - 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, - 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x53, 0x10, 0x2b, 0x12, 0x1a, 0x0a, - 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, - 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x2c, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, - 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x2d, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, - 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x2e, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, - 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x2f, 0x12, 0x1b, 0x0a, 0x17, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, 0x55, 0x54, 0x5f, - 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x30, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, - 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x31, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, - 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x32, 0x12, 0x1d, - 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x33, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, - 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x53, 0x10, 0x34, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, - 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x35, 0x12, 0x20, 0x0a, 0x1c, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, - 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x36, 0x12, 0x24, 0x0a, - 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, + 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x35, 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, + 0x30, 0x34, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1d, 0x12, 0x32, 0x0a, 0x2e, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f, + 0x54, 0x4f, 0x5f, 0x34, 0x30, 0x39, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x1e, + 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, + 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x34, + 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x39, 0x32, 0x31, 0x36, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x1f, 0x12, 0x33, 0x0a, 0x2f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x5f, 0x39, 0x32, 0x31, 0x37, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x33, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x20, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x53, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x21, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x5a, + 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x22, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4f, + 0x56, 0x45, 0x52, 0x53, 0x49, 0x5a, 0x45, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x23, 0x12, 0x21, + 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4a, 0x41, 0x42, 0x42, 0x45, 0x52, 0x53, 0x10, + 0x24, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, + 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, + 0x53, 0x10, 0x25, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x26, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x4c, + 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x27, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x53, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x28, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x54, + 0x58, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x29, 0x12, 0x26, 0x0a, + 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x4e, 0x4f, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x53, 0x10, 0x2a, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, + 0x53, 0x10, 0x2b, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x2c, 0x12, + 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, + 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x2d, 0x12, + 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x37, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x38, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, - 0x52, 0x44, 0x53, 0x10, 0x39, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, - 0x54, 0x53, 0x10, 0x3a, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x3b, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, - 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x3c, 0x12, 0x21, - 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, - 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x3d, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, - 0x10, 0x3e, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x53, 0x10, 0x2e, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, + 0x2f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x50, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x30, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, + 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x31, 0x12, + 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x32, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, + 0x53, 0x10, 0x33, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, + 0x53, 0x10, 0x34, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, + 0x35, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, + 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x36, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, + 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x37, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, 0x5f, 0x4d, + 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x38, 0x12, 0x1e, 0x0a, 0x1a, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x49, 0x4e, + 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x39, 0x12, 0x1d, 0x0a, 0x19, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x3a, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x3b, 0x12, 0x25, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x3c, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x3d, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, + 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x3e, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x3f, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x3f, 0x12, 0x26, 0x0a, 0x22, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, - 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x40, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x41, 0x12, - 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, - 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x42, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x43, - 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, - 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, - 0x59, 0x54, 0x45, 0x53, 0x10, 0x44, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, - 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x45, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x46, 0x12, 0x20, 0x0a, 0x1c, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, - 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x47, 0x12, 0x25, - 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x34, 0x5f, 0x4f, 0x43, 0x54, - 0x45, 0x54, 0x53, 0x10, 0x48, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x36, 0x35, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x49, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, - 0x32, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x35, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, - 0x10, 0x4a, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x35, - 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x35, 0x31, 0x31, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x4b, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x35, 0x31, 0x32, - 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x4c, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x30, 0x32, - 0x34, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, - 0x10, 0x4d, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x35, - 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x30, 0x34, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x4e, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, - 0x30, 0x34, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x34, 0x30, 0x39, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, - 0x54, 0x53, 0x10, 0x4f, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x40, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, + 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x53, 0x10, 0x41, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x42, 0x12, 0x26, + 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x43, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x44, 0x12, 0x22, 0x0a, 0x1e, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x45, + 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, + 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x46, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x53, 0x10, 0x47, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, - 0x34, 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x39, 0x32, 0x31, 0x36, 0x5f, 0x4f, 0x43, 0x54, - 0x45, 0x54, 0x53, 0x10, 0x50, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x5f, 0x39, 0x32, 0x31, 0x37, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x33, 0x5f, 0x4f, - 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x51, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x34, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x52, 0x12, - 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, - 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x35, 0x5f, 0x54, - 0x4f, 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x53, 0x12, 0x2e, - 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x54, - 0x4f, 0x5f, 0x32, 0x35, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x54, 0x12, 0x2e, - 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x54, - 0x4f, 0x5f, 0x35, 0x31, 0x31, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x55, 0x12, 0x2f, - 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, - 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x35, 0x31, 0x32, 0x5f, 0x54, - 0x4f, 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x56, 0x12, - 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, - 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x30, 0x32, 0x34, - 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x57, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x35, - 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x30, 0x34, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x58, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, - 0x32, 0x30, 0x34, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x34, 0x30, 0x39, 0x35, 0x5f, 0x4f, 0x43, 0x54, - 0x45, 0x54, 0x53, 0x10, 0x59, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x36, 0x34, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x48, 0x12, 0x2c, 0x0a, 0x28, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, + 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x35, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x32, 0x37, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x49, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x35, 0x35, 0x5f, + 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4a, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, + 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x35, 0x31, 0x31, 0x5f, 0x4f, + 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4b, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x5f, 0x35, 0x31, 0x32, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, + 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4c, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, + 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4d, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x50, + 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x35, 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x30, 0x34, 0x37, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4e, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x34, 0x30, 0x39, + 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x4f, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x39, 0x32, + 0x31, 0x36, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x50, 0x12, 0x30, 0x0a, 0x2c, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x49, + 0x4e, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x39, 0x32, 0x31, 0x37, 0x5f, 0x54, 0x4f, 0x5f, 0x31, + 0x36, 0x33, 0x38, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x51, 0x12, 0x26, 0x0a, + 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x36, 0x34, 0x5f, 0x4f, 0x43, 0x54, + 0x45, 0x54, 0x53, 0x10, 0x52, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x5f, 0x36, 0x35, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x32, 0x37, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x53, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x5f, 0x31, 0x32, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x35, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x54, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x35, 0x31, 0x31, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x55, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x5f, 0x35, 0x31, 0x32, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x30, 0x32, 0x33, 0x5f, 0x4f, 0x43, 0x54, + 0x45, 0x54, 0x53, 0x10, 0x56, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, 0x5f, 0x39, 0x32, 0x31, 0x36, 0x5f, 0x4f, - 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x5a, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x5f, 0x31, 0x30, 0x32, 0x34, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x35, 0x31, 0x38, 0x5f, 0x4f, + 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x57, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x5f, 0x39, 0x32, 0x31, 0x37, 0x5f, 0x54, 0x4f, 0x5f, 0x31, 0x36, 0x33, 0x38, - 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x5b, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, - 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, - 0x5c, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, - 0x53, 0x10, 0x5d, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, - 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, - 0x5e, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, - 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x5f, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, - 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, - 0x10, 0x60, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x4f, 0x55, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x61, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, - 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x62, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, - 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x63, 0x12, 0x1d, - 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x64, 0x12, 0x1e, 0x0a, - 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x65, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, - 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x66, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x54, 0x58, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x10, 0x68, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x69, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, - 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6a, 0x12, 0x1b, + 0x4b, 0x54, 0x53, 0x5f, 0x31, 0x35, 0x31, 0x39, 0x5f, 0x54, 0x4f, 0x5f, 0x32, 0x30, 0x34, 0x37, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x58, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x32, 0x30, 0x34, 0x38, 0x5f, 0x54, 0x4f, 0x5f, 0x34, 0x30, + 0x39, 0x35, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x59, 0x12, 0x30, 0x0a, 0x2c, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x4f, + 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x34, 0x30, 0x39, 0x36, 0x5f, 0x54, 0x4f, 0x5f, + 0x39, 0x32, 0x31, 0x36, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x5a, 0x12, 0x31, 0x0a, + 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x54, 0x48, 0x45, 0x52, + 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x5f, 0x39, 0x32, 0x31, 0x37, 0x5f, 0x54, + 0x4f, 0x5f, 0x31, 0x36, 0x33, 0x38, 0x33, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x5b, + 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, + 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x5c, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, + 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x5d, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, + 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x5e, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, + 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x5f, + 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, + 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x60, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, + 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x61, 0x12, 0x2d, 0x0a, 0x29, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x48, 0x41, + 0x52, 0x45, 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, + 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x62, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, + 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, + 0x45, 0x53, 0x10, 0x63, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x64, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x66, + 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, + 0x55, 0x53, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x67, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, + 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x68, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x54, 0x58, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x69, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x6a, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x6b, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, + 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6c, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x31, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6b, 0x12, 0x1b, 0x0a, 0x17, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, - 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6c, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6f, 0x12, + 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, + 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x54, 0x58, 0x5f, 0x50, + 0x4b, 0x54, 0x53, 0x10, 0x6f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x70, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x71, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x70, 0x12, 0x1b, 0x0a, 0x17, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, - 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x71, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x52, 0x58, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x74, + 0x5f, 0x35, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x72, 0x12, 0x1b, 0x0a, 0x17, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, + 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x10, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x75, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x76, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, - 0x43, 0x5f, 0x36, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x75, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, - 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x76, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x54, 0x58, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x77, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x78, 0x12, 0x25, + 0x43, 0x5f, 0x37, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x77, 0x12, 0x25, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, + 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x78, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, + 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, + 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x7a, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, + 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7b, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, 0x58, 0x5f, + 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7c, + 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, + 0x43, 0x5f, 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7d, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, + 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7e, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x30, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x79, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, - 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7a, 0x12, 0x25, 0x0a, 0x21, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, - 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x7b, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, - 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7c, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x54, 0x58, - 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x7d, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, - 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7e, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x54, 0x58, 0x5f, 0x50, - 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x7f, 0x12, - 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x80, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x81, 0x01, 0x12, - 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x35, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x82, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x83, 0x01, 0x12, - 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x84, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x85, 0x01, 0x12, - 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x37, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x86, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x87, 0x01, 0x12, - 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x30, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x88, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x54, 0x58, - 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x55, 0x53, 0x10, 0x89, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, - 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8a, 0x01, + 0x33, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x7f, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x80, 0x01, 0x12, 0x26, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, + 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x81, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x82, 0x01, 0x12, 0x26, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, + 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x83, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x84, 0x01, 0x12, 0x26, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, + 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x85, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x86, 0x01, 0x12, 0x26, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, + 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x87, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x88, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, - 0x43, 0x5f, 0x31, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8b, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, + 0x43, 0x5f, 0x30, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x89, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x55, 0x53, 0x10, 0x8c, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, - 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8d, + 0x5f, 0x55, 0x53, 0x10, 0x8a, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, + 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8b, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, - 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, - 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8e, 0x01, 0x12, 0x29, 0x0a, 0x24, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, + 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, + 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8c, 0x01, 0x12, 0x29, 0x0a, 0x24, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8f, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, + 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8d, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, - 0x90, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, - 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x91, 0x01, 0x12, 0x29, 0x0a, - 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, + 0x8e, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, + 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x8f, 0x01, 0x12, 0x29, 0x0a, + 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x92, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x54, 0x58, 0x5f, 0x50, + 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x90, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, - 0x10, 0x93, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, - 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x94, 0x01, 0x12, 0x29, + 0x10, 0x91, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, + 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x92, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x36, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x95, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x52, 0x58, 0x5f, + 0x35, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x93, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, - 0x53, 0x10, 0x96, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, - 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x97, 0x01, 0x12, + 0x53, 0x10, 0x94, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, + 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x95, 0x01, 0x12, + 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, + 0x5f, 0x37, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x10, 0x96, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x54, 0x58, + 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x53, 0x10, 0x97, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x30, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, + 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x98, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x4f, 0x4e, + 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x99, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, - 0x5f, 0x30, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x98, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x31, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, - 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x99, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x32, 0x5f, 0x4f, 0x4e, 0x32, - 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9a, 0x01, 0x12, 0x23, + 0x5f, 0x32, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x9a, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x33, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, + 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9b, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x4f, 0x4e, 0x32, + 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x33, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x9b, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x34, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9c, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x35, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, - 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9d, 0x01, 0x12, 0x23, 0x0a, - 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, - 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x9e, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9f, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, - 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, - 0x10, 0xa0, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x46, 0x43, 0x53, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa1, 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x53, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, - 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x53, 0x10, 0xa2, 0x01, 0x12, 0x33, 0x0a, 0x2e, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, - 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x53, 0x10, 0xa3, - 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, - 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x53, 0x51, 0x45, 0x5f, 0x54, 0x45, - 0x53, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa4, 0x01, 0x12, 0x30, 0x0a, 0x2b, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x52, 0x52, 0x45, 0x44, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0xa5, 0x01, 0x12, 0x29, - 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4c, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0xa6, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x50, 0x4f, 0x52, + 0x35, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x9d, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x36, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x58, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9e, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x37, 0x5f, 0x4f, 0x4e, 0x32, 0x4f, + 0x46, 0x46, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x9f, 0x01, 0x12, 0x2a, 0x0a, + 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa0, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x53, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, - 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0xa7, 0x01, 0x12, 0x36, 0x0a, 0x31, 0x50, 0x4f, 0x52, + 0x53, 0x5f, 0x46, 0x43, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa1, 0x01, 0x12, + 0x31, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, + 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x43, + 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x53, 0x10, + 0xa2, 0x01, 0x12, 0x33, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, + 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x52, + 0x41, 0x4d, 0x45, 0x53, 0x10, 0xa3, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, + 0x53, 0x51, 0x45, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, + 0xa4, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x52, + 0x52, 0x45, 0x44, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x53, 0x10, 0xa5, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4c, 0x41, 0x54, + 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0xa6, 0x01, 0x12, + 0x2e, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, + 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x53, 0x53, 0x49, 0x56, + 0x45, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x49, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0xa7, 0x01, 0x12, + 0x36, 0x0a, 0x31, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, + 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, + 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa8, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, + 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa9, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, + 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x53, 0x10, + 0xaa, 0x01, 0x12, 0x35, 0x0a, 0x30, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x4e, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xab, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, - 0x52, 0x41, 0x4e, 0x53, 0x4d, 0x49, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa8, - 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, - 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x41, 0x52, 0x52, 0x49, 0x45, - 0x52, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xa9, - 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, - 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, - 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x53, 0x10, 0xaa, 0x01, 0x12, 0x35, 0x0a, 0x30, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4d, 0x41, - 0x43, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, - 0x10, 0xab, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x53, 0x59, 0x4d, 0x42, - 0x4f, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xac, 0x01, 0x12, 0x2e, 0x0a, 0x29, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, 0x45, 0x53, 0x10, 0xad, 0x01, 0x12, 0x21, 0x0a, 0x1c, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x54, 0x58, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xae, 0x01, 0x12, - 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x45, 0x45, - 0x5f, 0x52, 0x58, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, - 0xaf, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x45, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0xb0, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x45, 0x45, 0x45, 0x5f, 0x52, 0x58, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0xb1, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x50, 0x52, 0x42, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x10, 0xb2, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, - 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x53, 0x10, 0xb3, 0x01, - 0x12, 0x2f, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, - 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x52, 0x52, - 0x45, 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x53, 0x10, 0xb4, - 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xb5, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x41, 0x42, - 0x52, 0x49, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x53, 0x10, 0xb6, - 0x01, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x53, 0x10, 0xb7, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, + 0x53, 0x5f, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, + 0xac, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x44, 0x4f, 0x54, 0x33, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x49, 0x4e, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4f, 0x50, 0x43, 0x4f, 0x44, 0x45, 0x53, 0x10, + 0xad, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x45, 0x45, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x10, 0xae, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x52, 0x58, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xaf, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x54, 0x58, 0x5f, 0x44, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xb0, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x52, 0x58, 0x5f, 0x44, 0x55, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0xb1, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xb2, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, + 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x52, 0x41, + 0x4d, 0x45, 0x53, 0x10, 0xb3, 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4e, 0x4f, + 0x54, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x52, + 0x41, 0x4d, 0x45, 0x53, 0x10, 0xb4, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x53, + 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0xb5, 0x01, 0x12, + 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, + 0x49, 0x4e, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, + 0x4e, 0x49, 0x54, 0x53, 0x10, 0xb6, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x46, 0x41, 0x42, 0x52, + 0x49, 0x43, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x53, 0x10, 0xb7, 0x01, + 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, + 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x30, 0x10, 0xb8, 0x01, 0x12, 0x2b, 0x0a, + 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, + 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x10, 0xb9, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x53, 0x5f, 0x53, 0x30, 0x10, 0xb8, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x5f, 0x53, 0x32, 0x10, 0xba, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, - 0x31, 0x10, 0xb9, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x33, 0x10, 0xbb, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x32, 0x10, 0xba, + 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x34, 0x10, 0xbc, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, - 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x33, 0x10, 0xbb, 0x01, 0x12, 0x2b, + 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x35, 0x10, 0xbd, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x34, 0x10, 0xbc, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, + 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x36, 0x10, 0xbe, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x53, 0x5f, 0x53, 0x35, 0x10, 0xbd, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, + 0x52, 0x53, 0x5f, 0x53, 0x37, 0x10, 0xbf, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, - 0x53, 0x36, 0x10, 0xbe, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x53, 0x38, 0x10, 0xc0, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x37, 0x10, - 0xbf, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x39, 0x10, + 0xc1, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, - 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x38, 0x10, 0xc0, 0x01, 0x12, - 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, - 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x39, 0x10, 0xc1, 0x01, 0x12, 0x2c, 0x0a, 0x27, + 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x30, 0x10, 0xc2, 0x01, + 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, + 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x31, 0x10, 0xc3, 0x01, 0x12, 0x2c, + 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, + 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x32, 0x10, 0xc4, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x30, 0x10, 0xc2, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, + 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x33, 0x10, 0xc5, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x53, 0x5f, 0x53, 0x31, 0x31, 0x10, 0xc3, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, + 0x53, 0x5f, 0x53, 0x31, 0x34, 0x10, 0xc6, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, - 0x53, 0x31, 0x32, 0x10, 0xc4, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x53, 0x31, 0x35, 0x10, 0xc7, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, - 0x33, 0x10, 0xc5, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x57, 0x4f, 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x34, 0x10, - 0xc6, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, - 0x52, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x35, 0x10, 0xc7, 0x01, - 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, - 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x57, 0x4f, 0x52, 0x44, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x53, 0x31, 0x36, 0x10, 0xc8, 0x01, 0x12, 0x27, - 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, - 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, - 0x42, 0x49, 0x54, 0x53, 0x10, 0xc9, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, + 0x36, 0x10, 0xc8, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x43, 0x4f, 0x52, 0x52, + 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x49, 0x54, 0x53, 0x10, 0xc9, 0x01, 0x12, 0x28, 0x0a, + 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, + 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x10, 0x82, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, + 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x83, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x83, 0x20, 0x12, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x33, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x34, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, + 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x53, 0x5f, 0x34, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, - 0x10, 0x85, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x86, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x20, 0x12, 0x38, 0x0a, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x20, 0x12, 0x38, 0x0a, 0x33, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, - 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, - 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x88, - 0x20, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, - 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x40, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, - 0x53, 0x45, 0x10, 0x81, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, - 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x40, - 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, - 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, + 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x10, 0x88, 0x20, 0x12, 0x27, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x40, + 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x83, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, + 0x4b, 0x54, 0x53, 0x10, 0x81, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, - 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, + 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x34, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x40, 0x12, 0x39, 0x0a, 0x34, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x83, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, - 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x87, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x5f, 0x34, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x85, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x37, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x88, 0x40, 0x12, 0x28, 0x0a, - 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, - 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x60, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x81, 0x60, 0x1a, 0x02, 0x10, 0x01, 0x2a, - 0x7c, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, - 0x0d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x10, 0x02, - 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, - 0x42, 0x52, 0x49, 0x43, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x10, 0x04, 0x2a, 0x85, 0x05, - 0x0a, 0x0a, 0x51, 0x6f, 0x73, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, - 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x4f, - 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, - 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x51, 0x4f, 0x53, 0x5f, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x40, 0x12, 0x39, 0x0a, + 0x34, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x40, 0x12, 0x39, 0x0a, 0x34, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x53, 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x88, 0x40, 0x12, 0x34, 0x0a, 0x2f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x48, 0x57, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x89, 0x40, 0x12, 0x37, 0x0a, 0x32, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x46, 0x5f, 0x49, 0x4e, 0x5f, 0x48, 0x57, 0x5f, + 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, + 0x8a, 0x40, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x60, 0x12, 0x12, 0x0a, 0x0d, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x81, 0x60, + 0x12, 0x27, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x7c, 0x0a, + 0x08, 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4c, 0x4f, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x50, 0x55, 0x10, 0x02, 0x12, 0x14, + 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, + 0x49, 0x43, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x52, 0x45, 0x43, 0x59, 0x43, 0x4c, 0x45, 0x10, 0x04, 0x2a, 0x85, 0x05, 0x0a, 0x0a, + 0x51, 0x6f, 0x73, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x4f, + 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, - 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x4f, 0x53, - 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, - 0x4f, 0x5f, 0x54, 0x43, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, - 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, - 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x51, - 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, - 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x4f, 0x54, 0x31, - 0x50, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x08, 0x12, 0x2f, 0x0a, 0x2b, 0x51, 0x4f, - 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, - 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, - 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x09, 0x12, 0x26, 0x0a, 0x22, 0x51, - 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, - 0x45, 0x10, 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, - 0x54, 0x43, 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, - 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x4f, 0x53, 0x5f, - 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, - 0x50, 0x10, 0x0d, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, - 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x2d, - 0x0a, 0x29, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, - 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0f, 0x12, 0x26, 0x0a, - 0x1e, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, - 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, - 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xf9, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, - 0x66, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, - 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, - 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x32, - 0x0a, 0x2e, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, - 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, - 0x10, 0x02, 0x12, 0x3d, 0x0a, 0x39, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x10, - 0x03, 0x2a, 0xa3, 0x01, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, - 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x2d, 0x0a, 0x29, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, - 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, - 0x0a, 0x26, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, - 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x51, 0x55, - 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, - 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x87, 0x0c, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x16, 0x0a, 0x12, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, - 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, - 0x1c, 0x0a, 0x18, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, 0x1c, 0x0a, - 0x18, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, - 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x51, + 0x4f, 0x5f, 0x54, 0x43, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, + 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x4f, 0x53, 0x5f, 0x4d, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, + 0x54, 0x43, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, + 0x4f, 0x52, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, + 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x06, 0x12, 0x26, 0x0a, 0x22, 0x51, 0x4f, 0x53, + 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x10, + 0x07, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x08, 0x12, 0x2f, 0x0a, 0x2b, 0x51, 0x4f, 0x53, 0x5f, + 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x09, 0x12, 0x26, 0x0a, 0x22, 0x51, 0x4f, 0x53, + 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, + 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, + 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, + 0x4f, 0x4c, 0x4f, 0x52, 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, + 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x10, + 0x0d, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, + 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0e, 0x12, 0x2d, 0x0a, 0x29, + 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, + 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x10, 0x0f, 0x12, 0x26, 0x0a, 0x1e, 0x51, + 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, + 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, + 0x80, 0x80, 0x01, 0x2a, 0xf9, 0x01, 0x0a, 0x1f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, + 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, + 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x2f, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, + 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x32, 0x0a, 0x2e, + 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, + 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x2e, 0x0a, 0x2a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x3d, 0x0a, 0x39, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, + 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, + 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x5f, 0x4e, + 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x10, 0x03, 0x2a, + 0xa3, 0x01, 0x0a, 0x19, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, 0x61, 0x64, + 0x6c, 0x6f, 0x63, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, + 0x29, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, + 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, + 0x43, 0x4b, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, + 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, + 0x52, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x87, 0x0c, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x02, 0x12, 0x1e, 0x0a, + 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1c, 0x0a, + 0x18, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, + 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, - 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x20, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x07, 0x12, 0x22, 0x0a, - 0x1e, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, - 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, - 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x09, - 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, - 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x25, 0x0a, - 0x21, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x53, 0x10, 0x0b, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x53, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0e, 0x12, - 0x22, 0x0a, 0x1e, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, + 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x08, 0x12, + 0x1d, 0x0a, 0x19, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, + 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x09, 0x12, 0x1b, + 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, + 0x4c, 0x4f, 0x57, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0a, 0x12, 0x25, 0x0a, 0x21, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x0b, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x53, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0e, 0x12, 0x22, 0x0a, + 0x1e, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, + 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x10, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, + 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x11, 0x12, 0x27, + 0x0a, 0x23, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x53, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x10, 0x12, 0x29, 0x0a, 0x25, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x11, - 0x12, 0x27, 0x0a, 0x23, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, - 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, - 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, - 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x53, 0x10, 0x13, 0x12, 0x28, 0x0a, 0x24, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x14, 0x12, - 0x27, 0x0a, 0x23, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, - 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x55, 0x45, 0x55, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x16, 0x12, - 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, - 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x53, 0x10, 0x17, 0x12, 0x21, 0x0a, 0x1d, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, - 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, - 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x19, 0x12, 0x1e, 0x0a, 0x1a, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, - 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1a, 0x12, 0x2a, 0x0a, 0x26, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, - 0x44, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, - 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1b, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x55, 0x45, 0x55, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, - 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1c, 0x12, - 0x2c, 0x0a, 0x28, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, - 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x1d, 0x12, 0x2a, 0x0a, - 0x26, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, + 0x53, 0x10, 0x13, 0x12, 0x28, 0x0a, 0x24, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x14, 0x12, 0x27, 0x0a, + 0x23, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x16, 0x12, 0x23, 0x0a, + 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, + 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x17, 0x12, 0x21, 0x0a, 0x1d, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, + 0x43, 0x59, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x19, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x55, + 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, + 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1a, 0x12, 0x2a, 0x0a, 0x26, 0x51, 0x55, + 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, + 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x1b, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x41, 0x54, 0x45, + 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1c, 0x12, 0x2c, 0x0a, + 0x28, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, - 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x2d, 0x0a, 0x29, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, - 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x2b, 0x0a, 0x27, 0x51, 0x55, 0x45, 0x55, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, - 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, - 0x54, 0x45, 0x53, 0x10, 0x20, 0x12, 0x2a, 0x0a, 0x26, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, + 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x1d, 0x12, 0x2a, 0x0a, 0x26, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x1e, 0x12, 0x2d, 0x0a, 0x29, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, + 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x1f, 0x12, 0x2b, 0x0a, 0x27, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x59, 0x45, 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x52, 0x45, 0x44, + 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, + 0x53, 0x10, 0x20, 0x12, 0x2a, 0x0a, 0x26, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, + 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x21, 0x12, + 0x28, 0x0a, 0x24, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, + 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, + 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x22, 0x12, 0x26, 0x0a, 0x22, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, - 0x21, 0x12, 0x28, 0x0a, 0x24, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x52, 0x45, 0x44, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, - 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x22, 0x12, 0x26, 0x0a, 0x22, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, - 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x53, 0x10, 0x23, 0x12, 0x24, 0x0a, 0x20, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, - 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x24, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, - 0x55, 0x50, 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x25, 0x12, 0x1e, - 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, - 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x26, 0x12, 0x28, - 0x0a, 0x24, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x52, 0x45, - 0x44, 0x49, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x51, 0x55, 0x45, 0x55, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x57, 0x41, 0x54, - 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4e, 0x53, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x1c, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, - 0x01, 0x2a, 0xe7, 0x01, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x23, 0x12, 0x24, 0x0a, 0x20, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x41, 0x52, 0x4b, 0x45, 0x44, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x24, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x5f, 0x4f, 0x43, 0x43, 0x55, 0x50, + 0x41, 0x4e, 0x43, 0x59, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x25, 0x12, 0x1e, 0x0a, 0x1a, + 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, + 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x26, 0x12, 0x28, 0x0a, 0x24, + 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, + 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x53, 0x10, 0x27, 0x12, 0x21, 0x0a, 0x1d, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, + 0x4d, 0x41, 0x52, 0x4b, 0x5f, 0x4e, 0x53, 0x10, 0x28, 0x12, 0x24, 0x0a, 0x1c, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, + 0xe7, 0x01, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, + 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x16, 0x0a, + 0x12, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x43, + 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, - 0x16, 0x0a, 0x12, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x10, - 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x04, 0x12, 0x1c, 0x0a, - 0x18, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, - 0x5f, 0x54, 0x58, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, - 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x84, 0x03, 0x0a, 0x13, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, - 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, - 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, - 0x10, 0x04, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x2a, 0x0a, - 0x26, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x4f, 0x55, + 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, + 0x41, 0x53, 0x54, 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x54, + 0x58, 0x10, 0x06, 0x12, 0x24, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0x84, 0x03, 0x0a, 0x13, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, + 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x24, 0x0a, + 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x53, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x43, 0x54, - 0x45, 0x54, 0x53, 0x10, 0x07, 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, - 0x10, 0x08, 0x2a, 0xb2, 0x02, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, + 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, + 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x05, 0x12, 0x2a, 0x0a, 0x26, 0x52, + 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x4f, 0x55, 0x54, 0x45, + 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, + 0x53, 0x10, 0x07, 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x08, + 0x2a, 0xb2, 0x02, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, + 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x01, 0x12, + 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x02, 0x12, + 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, + 0x4b, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, + 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, - 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, - 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, - 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, - 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, - 0x12, 0x20, 0x0a, 0x1c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, - 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x49, 0x4e, 0x51, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x07, 0x2a, 0x74, 0x0a, 0x10, 0x53, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, - 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, - 0x0a, 0x1b, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x7c, 0x0a, - 0x10, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x5f, 0x50, - 0x41, 0x54, 0x48, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, - 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0x80, 0x01, 0x0a, 0x0e, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, - 0x0a, 0x1b, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x20, + 0x0a, 0x1c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x10, 0x06, + 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x49, 0x4e, 0x51, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x10, 0x07, 0x2a, 0x74, 0x0a, 0x10, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x41, 0x4d, + 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, + 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x45, 0x58, 0x43, 0x4c, 0x55, 0x53, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, + 0x18, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x7c, 0x0a, 0x10, 0x53, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x21, 0x0a, 0x1d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x54, + 0x48, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0x80, 0x01, 0x0a, 0x0e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, + 0x16, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, 0x52, 0x52, + 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x57, 0x52, 0x52, 0x10, 0x03, 0x2a, 0x9e, 0x02, 0x0a, + 0x11, 0x53, 0x65, 0x72, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x45, 0x52, 0x5f, 0x43, + 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, + 0x4f, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x45, + 0x52, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, + 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x45, 0x52, 0x5f, + 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x57, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, + 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x57, 0x5f, 0x43, 0x41, 0x43, + 0x48, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, + 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x41, 0x4c, 0x10, 0x06, 0x2a, 0xbf, 0x01, + 0x0a, 0x0a, 0x53, 0x65, 0x72, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, + 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x4d, 0x10, 0x02, + 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x52, 0x45, 0x47, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x4f, + 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x10, 0x05, 0x12, 0x1a, + 0x0a, 0x16, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, + 0x4f, 0x52, 0x52, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x45, + 0x52, 0x5f, 0x4c, 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x11, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x45, 0x52, 0x5f, 0x4c, + 0x4f, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x41, 0x43, 0x48, 0x45, 0x10, 0x21, 0x2a, + 0x88, 0x01, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x49, 0x54, 0x59, 0x10, 0x02, + 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x43, 0x43, + 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x10, 0x03, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x43, 0x43, 0x5f, 0x44, 0x4f, + 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x10, 0x04, 0x2a, 0x79, 0x0a, 0x0f, 0x53, 0x72, + 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x12, 0x21, 0x0a, + 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x53, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, + 0x49, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, + 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0xe1, 0x01, 0x0a, 0x0f, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, + 0x64, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, + 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x52, + 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x52, + 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x2b, 0x0a, 0x23, + 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xab, 0x01, 0x0a, 0x0e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, + 0x0a, 0x20, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x42, 0x59, + 0x54, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x10, + 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x2a, 0xb4, 0x01, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4c, + 0x45, 0x41, 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x05, 0x12, + 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, + 0x4c, 0x4b, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x10, 0x09, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x54, + 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x52, 0x45, + 0x41, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x10, 0x11, 0x2a, 0x87, + 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1a, 0x0a, 0x16, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x43, 0x54, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x57, - 0x52, 0x52, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, - 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x57, 0x52, 0x52, 0x10, 0x03, 0x2a, 0x79, - 0x0a, 0x0f, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, - 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x52, 0x56, 0x36, 0x5f, - 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, - 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0xe1, 0x01, 0x0a, 0x0f, 0x53, 0x72, - 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, - 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x10, 0x01, 0x12, 0x20, - 0x0a, 0x1c, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x02, - 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x10, 0x03, 0x12, 0x20, - 0x0a, 0x1c, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x52, 0x45, 0x44, 0x10, 0x04, - 0x12, 0x2b, 0x0a, 0x23, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xb4, 0x01, - 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x53, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, - 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x53, - 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x52, - 0x45, 0x41, 0x44, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x10, 0x09, - 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, - 0x55, 0x4c, 0x4b, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4c, 0x45, - 0x41, 0x52, 0x10, 0x11, 0x2a, 0x87, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x70, 0x50, 0x6f, 0x72, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, - 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0xf7, - 0x01, 0x0a, 0x1b, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2f, - 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, - 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, - 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, - 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, - 0x52, 0x59, 0x5f, 0x53, 0x57, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, - 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x46, 0x57, 0x10, 0x02, 0x12, - 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, - 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, - 0x52, 0x59, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x48, 0x57, 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, - 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, - 0x53, 0x49, 0x43, 0x5f, 0x48, 0x57, 0x10, 0x04, 0x2a, 0xd2, 0x01, 0x0a, 0x1b, 0x53, 0x77, 0x69, + 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, + 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, + 0x54, 0x50, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x2a, 0xf7, 0x01, 0x0a, 0x1b, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, - 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, + 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, - 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x41, 0x54, - 0x41, 0x4c, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, - 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, - 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, - 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, 0x45, - 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x03, 0x2a, 0x8e, 0x01, - 0x0a, 0x14, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x45, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, - 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, - 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x52, 0x54, 0x10, 0xe9, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, - 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0xea, 0x01, 0x2a, 0x9c, - 0x01, 0x0a, 0x18, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x53, + 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x53, 0x57, 0x10, + 0x01, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, + 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x46, 0x57, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, + 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x43, 0x50, 0x55, + 0x5f, 0x48, 0x57, 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, + 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x48, 0x57, + 0x10, 0x04, 0x2a, 0xd2, 0x01, 0x0a, 0x1b, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, + 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x2f, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, + 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, + 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, + 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, + 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x2b, + 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, + 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, + 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, + 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x03, 0x2a, 0x87, 0x03, 0x0a, 0x14, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, + 0x4e, 0x53, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x02, 0x12, 0x3c, 0x0a, 0x34, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x4d, 0x41, + 0x58, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x5f, 0x42, 0x55, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x49, 0x10, 0x81, 0x80, 0x80, + 0x80, 0x02, 0x12, 0x2c, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x44, 0x41, 0x53, 0x48, 0x5f, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x48, 0x41, 0x5f, 0x53, + 0x43, 0x4f, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x82, 0x80, 0x80, 0x80, 0x02, + 0x12, 0x2d, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x44, 0x41, 0x53, 0x48, 0x5f, 0x43, 0x41, 0x50, 0x53, 0x5f, 0x48, 0x41, 0x5f, 0x4f, 0x57, 0x4e, + 0x45, 0x52, 0x5f, 0x4e, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, 0x83, 0x80, 0x80, 0x80, 0x02, 0x12, + 0x27, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, + 0x41, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x59, 0x10, 0x84, 0x80, 0x80, 0x80, 0x02, 0x12, 0x29, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x41, 0x5f, 0x53, 0x43, 0x4f, 0x50, 0x45, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x85, 0x80, + 0x80, 0x80, 0x02, 0x12, 0x28, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x53, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x86, 0x80, 0x80, 0x80, 0x02, 0x1a, 0x02, 0x10, + 0x01, 0x2a, 0x9c, 0x01, 0x0a, 0x18, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, + 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, + 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, - 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x48, 0x49, 0x54, 0x4c, 0x45, - 0x53, 0x53, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, - 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x48, 0x49, 0x54, 0x4c, 0x45, 0x53, 0x53, 0x10, 0x02, 0x2a, 0xbf, 0x01, - 0x0a, 0x18, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, + 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x48, 0x49, + 0x54, 0x4c, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x48, 0x49, 0x54, 0x4c, 0x45, 0x53, 0x53, 0x10, 0x02, + 0x2a, 0xbf, 0x01, 0x0a, 0x18, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x2b, 0x0a, + 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, + 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, - 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x28, 0x0a, - 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, - 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x45, 0x45, 0x50, 0x52, 0x4f, 0x4d, 0x10, 0x03, 0x2a, - 0xb0, 0x01, 0x0a, 0x16, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, + 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, + 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, - 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, - 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x02, 0x12, 0x22, - 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, - 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, - 0x10, 0x03, 0x2a, 0xb3, 0x01, 0x0a, 0x17, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x61, 0x72, - 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x75, 0x73, 0x12, 0x2a, - 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, - 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, - 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x4d, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, - 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, - 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x49, 0x32, - 0x43, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, - 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, - 0x53, 0x5f, 0x43, 0x50, 0x4c, 0x44, 0x10, 0x03, 0x2a, 0xc7, 0x01, 0x0a, 0x20, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, - 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, - 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, - 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, - 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x35, 0x0a, 0x31, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, 0x50, 0x45, - 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, 0x45, 0x52, - 0x10, 0x02, 0x2a, 0xfe, 0x01, 0x0a, 0x1d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4d, 0x63, 0x61, - 0x73, 0x74, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, + 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x45, 0x45, 0x50, 0x52, 0x4f, 0x4d, + 0x10, 0x03, 0x2a, 0xb0, 0x01, 0x0a, 0x16, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, + 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, + 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, + 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, + 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x46, 0x49, 0x52, 0x4d, + 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, + 0x55, 0x54, 0x4f, 0x10, 0x03, 0x2a, 0xb3, 0x01, 0x0a, 0x17, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x42, 0x75, + 0x73, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, + 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, + 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, + 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x4d, 0x44, 0x49, 0x4f, + 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, + 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, + 0x5f, 0x49, 0x32, 0x43, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x5f, 0x42, 0x55, 0x53, 0x5f, 0x43, 0x50, 0x4c, 0x44, 0x10, 0x03, 0x2a, 0xc7, 0x01, 0x0a, 0x20, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x35, 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, + 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x35, 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x41, 0x50, 0x50, 0x4c, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x35, + 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, + 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x41, 0x49, 0x5f, 0x41, 0x44, 0x41, 0x50, + 0x54, 0x45, 0x52, 0x10, 0x02, 0x2a, 0xfe, 0x01, 0x0a, 0x1d, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x4d, 0x63, 0x61, 0x73, 0x74, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, + 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, + 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, + 0x4e, 0x45, 0x10, 0x01, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, - 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x58, 0x47, 0x10, 0x02, 0x12, 0x27, 0x0a, + 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, + 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, + 0x59, 0x5f, 0x53, 0x47, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, - 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x01, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, - 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, - 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x58, 0x47, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, - 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, - 0x47, 0x10, 0x03, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4d, 0x43, - 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, - 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x58, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, - 0x47, 0x10, 0x04, 0x2a, 0xad, 0x01, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x70, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, - 0x57, 0x4e, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, - 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, - 0x44, 0x10, 0x04, 0x2a, 0x94, 0x01, 0x0a, 0x11, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, - 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, + 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x58, 0x47, 0x5f, 0x41, 0x4e, + 0x44, 0x5f, 0x53, 0x47, 0x10, 0x04, 0x2a, 0xad, 0x01, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, + 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, + 0x49, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x94, 0x01, 0x0a, 0x11, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1b, 0x0a, - 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x2a, 0xbb, 0x0b, 0x0a, 0x0a, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, - 0x81, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x20, 0x12, 0x3a, - 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, - 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x83, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, - 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, - 0x5f, 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x84, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x34, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x20, 0x12, 0x3a, - 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, + 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x2a, 0xbb, 0x0b, + 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, + 0x53, 0x45, 0x10, 0x81, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, + 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, + 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x20, 0x12, 0x3a, 0x0a, + 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, + 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x83, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x53, 0x5f, 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x84, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, + 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, + 0x34, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, + 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x20, 0x12, 0x3a, 0x0a, + 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, + 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, + 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x53, 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x88, 0x20, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x40, + 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x40, 0x12, 0x3b, 0x0a, + 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, - 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, - 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, - 0x4b, 0x54, 0x53, 0x10, 0x87, 0x20, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, - 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, - 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x88, 0x20, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x40, 0x12, 0x2b, 0x0a, - 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, + 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x30, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x81, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, + 0x50, 0x4b, 0x54, 0x53, 0x10, 0x82, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x53, 0x5f, 0x31, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, - 0x53, 0x10, 0x82, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, + 0x4e, 0x53, 0x5f, 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, + 0x53, 0x10, 0x83, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, - 0x32, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x83, + 0x33, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, - 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x33, 0x5f, 0x44, - 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x84, 0x40, 0x12, 0x3b, + 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x34, 0x5f, 0x44, + 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x34, 0x5f, 0x44, 0x52, 0x4f, 0x50, - 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x85, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, + 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, 0x4f, 0x50, + 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x35, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x86, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, + 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x87, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x53, 0x5f, 0x36, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, - 0x54, 0x53, 0x10, 0x87, 0x40, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, - 0x52, 0x45, 0x44, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, - 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x88, 0x40, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, 0x60, 0x12, 0x2e, - 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x46, 0x41, - 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x60, 0x12, 0x19, - 0x0a, 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x45, 0x43, - 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x81, 0x60, 0x12, 0x22, 0x0a, 0x1d, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, - 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x82, 0x60, 0x12, 0x2f, 0x0a, - 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x47, - 0x48, 0x45, 0x53, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x47, 0x45, - 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x83, 0x60, 0x12, 0x1c, - 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x47, 0x4c, - 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x84, 0x60, 0x12, 0x26, 0x0a, 0x21, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x52, 0x4f, - 0x50, 0x10, 0x85, 0x60, 0x12, 0x2e, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, - 0x10, 0x80, 0x80, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x90, 0x01, 0x0a, 0x13, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x43, 0x55, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, 0x01, 0x12, 0x2b, - 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, - 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x2a, 0x95, 0x01, 0x0a, 0x0a, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x10, - 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x10, 0x04, 0x12, 0x13, - 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, - 0x45, 0x10, 0x05, 0x2a, 0x6b, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x72, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x59, 0x53, 0x54, 0x45, - 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x4f, 0x43, 0x41, - 0x4c, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x10, 0x02, - 0x2a, 0xd2, 0x01, 0x0a, 0x24, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x34, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, - 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, - 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, 0x01, 0x12, 0x35, - 0x0a, 0x31, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, - 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0xcb, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x36, 0x0a, 0x32, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, - 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, - 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, - 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x35, 0x0a, 0x31, + 0x4f, 0x4e, 0x53, 0x5f, 0x37, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x88, 0x40, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x80, + 0x60, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, + 0x60, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x45, 0x43, 0x43, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x81, 0x60, 0x12, 0x22, 0x0a, 0x1d, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x43, + 0x48, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x82, 0x60, + 0x12, 0x2f, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x48, 0x49, 0x47, 0x48, 0x45, 0x53, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x43, 0x4f, + 0x4e, 0x47, 0x45, 0x53, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x83, + 0x60, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x84, 0x60, 0x12, + 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x47, 0x52, 0x49, 0x54, 0x59, 0x5f, + 0x44, 0x52, 0x4f, 0x50, 0x10, 0x85, 0x60, 0x12, 0x2e, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x44, 0x52, + 0x4f, 0x50, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, + 0x45, 0x4e, 0x44, 0x10, 0x80, 0x80, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x90, 0x01, 0x0a, 0x13, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x55, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x10, + 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, + 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x02, 0x2a, 0x95, + 0x01, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x50, 0x55, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, + 0x48, 0x59, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4f, 0x51, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x10, + 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x4f, 0x45, 0x10, 0x05, 0x2a, 0x6b, 0x0a, 0x0e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x50, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x59, 0x53, 0x54, + 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x59, + 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, + 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, + 0x45, 0x10, 0x02, 0x2a, 0xd2, 0x01, 0x0a, 0x24, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, + 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x34, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, - 0x53, 0x10, 0x02, 0x2a, 0xb7, 0x02, 0x0a, 0x1c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, - 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, - 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x4e, 0x45, - 0x58, 0x54, 0x48, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x39, 0x0a, 0x35, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x10, + 0x01, 0x12, 0x35, 0x0a, 0x31, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, + 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0xcb, 0x01, 0x0a, 0x22, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, + 0x36, 0x0a, 0x32, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x36, 0x0a, 0x32, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, + 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, + 0x35, 0x0a, 0x31, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, + 0x43, 0x4c, 0x41, 0x53, 0x53, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4f, 0x43, + 0x54, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0xb7, 0x02, 0x0a, 0x1c, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, - 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, + 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x48, 0x4f, 0x50, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, + 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x4f, 0x5f, 0x4c, 0x4f, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, + 0x5f, 0x43, 0x50, 0x55, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x50, - 0x55, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, - 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x04, 0x12, 0x2d, - 0x0a, 0x29, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, 0x2a, 0xab, 0x01, - 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x2e, 0x0a, 0x2a, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, - 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, - 0x49, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0xaa, 0x01, 0x0a, 0x1a, + 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, + 0x04, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, + 0x50, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x05, + 0x2a, 0xab, 0x01, 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x69, 0x74, 0x6d, 0x61, 0x70, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, + 0x2e, 0x0a, 0x2a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x2e, 0x0a, 0x2a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, + 0x2d, 0x0a, 0x29, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x42, 0x49, 0x54, 0x4d, 0x41, 0x50, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0xaa, + 0x01, 0x0a, 0x1a, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, + 0x2a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, + 0x2b, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x10, 0x01, 0x12, 0x2b, + 0x0a, 0x27, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x4e, 0x4f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0xa3, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x2a, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x2a, 0xa3, 0x01, 0x0a, 0x18, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, - 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, - 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x02, 0x2a, 0x89, - 0x02, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, - 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, + 0x6e, 0x74, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, + 0x02, 0x2a, 0x89, 0x02, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, + 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, + 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x42, - 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, - 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x41, 0x47, - 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, - 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x04, - 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x05, + 0x4c, 0x41, 0x47, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, + 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x10, 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, + 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, + 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, - 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x10, 0x06, 0x12, 0x1b, 0x0a, - 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x42, 0x49, 0x4e, 0x44, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x53, 0x50, 0x10, 0x07, 0x2a, 0xc1, 0x02, 0x0a, 0x15, 0x54, - 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x55, 0x6e, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, - 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, - 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4e, 0x41, 0x4e, 0x4f, 0x53, - 0x45, 0x43, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, - 0x5f, 0x55, 0x53, 0x45, 0x43, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x53, 0x50, 0x10, 0x07, 0x2a, 0xc1, 0x02, + 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, - 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x53, 0x45, 0x43, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, - 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, - 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, 0x54, 0x10, 0x04, - 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, - 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x42, 0x59, 0x54, - 0x45, 0x53, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, - 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, + 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4e, 0x41, + 0x4e, 0x4f, 0x53, 0x45, 0x43, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, + 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x43, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, - 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x53, 0x10, 0x07, 0x2a, 0xfb, - 0x02, 0x0a, 0x0c, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x21, - 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x54, 0x43, 0x50, 0x46, 0x4c, 0x41, 0x47, - 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, - 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, - 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, - 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, - 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x06, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x41, - 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x44, - 0x10, 0x08, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x5f, 0x58, 0x4f, 0x46, 0x46, 0x5f, 0x52, 0x4f, - 0x4f, 0x4d, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x53, 0x50, 0x10, 0x0a, 0x2a, 0xc5, 0x01, 0x0a, - 0x12, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x63, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, - 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, - 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, - 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x42, 0x10, 0x02, 0x12, 0x25, 0x0a, - 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x33, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, - 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, - 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x53, - 0x43, 0x50, 0x10, 0x04, 0x2a, 0x85, 0x02, 0x0a, 0x0a, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x4d, 0x5f, - 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x46, 0x41, 0x31, 0x10, 0x02, 0x12, - 0x15, 0x0a, 0x11, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x49, 0x46, 0x41, 0x32, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x34, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x31, 0x10, - 0x04, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x34, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x32, 0x10, 0x05, 0x12, 0x1e, 0x0a, 0x1a, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, - 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x46, 0x41, - 0x31, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x07, 0x12, 0x1d, 0x0a, - 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x41, - 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x2a, 0xad, 0x01, 0x0a, - 0x15, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, - 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, - 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4e, 0x41, 0x4e, - 0x4f, 0x53, 0x45, 0x43, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, - 0x49, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x43, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, - 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, - 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x53, 0x45, 0x43, 0x10, 0x03, 0x2a, 0x63, 0x0a, 0x0d, - 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, - 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x13, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, 0x4c, 0x4b, 0x10, - 0x02, 0x2a, 0xde, 0x02, 0x0a, 0x0d, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, + 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x53, 0x45, 0x43, 0x10, 0x03, 0x12, 0x24, 0x0a, + 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, + 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x43, 0x45, 0x4e, + 0x54, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, + 0x4e, 0x49, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x06, 0x12, 0x22, 0x0a, + 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, + 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x53, 0x10, + 0x07, 0x2a, 0xfb, 0x02, 0x0a, 0x0c, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, + 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x54, 0x43, 0x50, 0x46, + 0x4c, 0x41, 0x47, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x54, 0x48, + 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, + 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x05, 0x12, 0x1e, 0x0a, + 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x06, 0x12, 0x27, 0x0a, + 0x23, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x55, 0x54, 0x49, 0x4c, 0x49, 0x5a, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x5f, 0x53, 0x48, 0x41, + 0x52, 0x45, 0x44, 0x10, 0x08, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x47, 0x5f, 0x58, 0x4f, 0x46, 0x46, + 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x4d, 0x5f, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x53, 0x50, 0x10, 0x0a, 0x2a, + 0xc5, 0x01, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x49, 0x6e, 0x74, 0x50, 0x72, 0x65, 0x73, 0x65, 0x6e, + 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, + 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, + 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, + 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, + 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x42, 0x10, 0x02, + 0x12, 0x25, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, + 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x33, 0x5f, 0x50, 0x52, 0x4f, + 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, + 0x4e, 0x54, 0x5f, 0x50, 0x52, 0x45, 0x53, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x04, 0x2a, 0x85, 0x02, 0x0a, 0x0a, 0x54, 0x61, 0x6d, 0x49, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, - 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x49, 0x50, 0x46, 0x49, 0x58, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, - 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, - 0x4f, 0x54, 0x4f, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x46, 0x54, 0x10, - 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x54, - 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, - 0x34, 0x5f, 0x45, 0x58, 0x54, 0x4e, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, - 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x49, 0x53, 0x54, - 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, 0x4e, 0x44, 0x4f, - 0x52, 0x5f, 0x45, 0x58, 0x54, 0x4e, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, - 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, - 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x09, 0x12, 0x29, 0x0a, 0x21, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, - 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, - 0x80, 0x01, 0x2a, 0xaa, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, - 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x54, - 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, - 0x54, 0x5f, 0x53, 0x45, 0x43, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x52, - 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x49, - 0x4e, 0x55, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, - 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x48, 0x4f, 0x55, - 0x52, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, - 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x04, 0x2a, - 0x93, 0x02, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x4d, 0x61, 0x74, 0x68, 0x46, 0x75, - 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4f, 0x41, 0x4d, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, + 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x46, 0x41, 0x31, + 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x49, 0x46, 0x41, 0x32, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, + 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x34, 0x5f, 0x49, 0x4e, 0x54, + 0x5f, 0x31, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x34, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x32, 0x10, 0x05, 0x12, + 0x1e, 0x0a, 0x1a, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x45, 0x58, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x12, + 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x49, 0x46, 0x41, 0x31, 0x5f, 0x54, 0x41, 0x49, 0x4c, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x07, + 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x49, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x2a, + 0xad, 0x01, 0x0a, 0x15, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x24, 0x54, 0x41, 0x4d, + 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, + 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, + 0x4e, 0x41, 0x4e, 0x4f, 0x53, 0x45, 0x43, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x4d, + 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, + 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x43, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, + 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x56, 0x41, 0x4c, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x4d, 0x53, 0x45, 0x43, 0x10, 0x03, 0x2a, + 0x63, 0x0a, 0x0d, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x55, + 0x4c, 0x4b, 0x10, 0x02, 0x2a, 0xde, 0x02, 0x0a, 0x0d, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, + 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x4c, 0x4f, 0x57, + 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x46, 0x49, 0x58, 0x10, 0x02, 0x12, 0x19, 0x0a, + 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, + 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x49, + 0x46, 0x54, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x05, 0x12, 0x1b, + 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x50, 0x34, 0x5f, 0x45, 0x58, 0x54, 0x4e, 0x10, 0x06, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, + 0x49, 0x53, 0x54, 0x4f, 0x47, 0x52, 0x41, 0x4d, 0x10, 0x07, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x45, + 0x4e, 0x44, 0x4f, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x4e, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, + 0x45, 0x4e, 0x45, 0x54, 0x4c, 0x49, 0x4e, 0x4b, 0x10, 0x09, 0x12, 0x29, 0x0a, 0x21, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, + 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, + 0x81, 0x80, 0x80, 0x80, 0x01, 0x2a, 0xaa, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x52, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, + 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, + 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, + 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, + 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, + 0x48, 0x4f, 0x55, 0x52, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x52, 0x45, + 0x50, 0x4f, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x44, 0x41, 0x59, + 0x10, 0x04, 0x2a, 0x93, 0x02, 0x0a, 0x12, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, 0x4d, 0x61, 0x74, + 0x68, 0x46, 0x75, 0x6e, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x41, 0x4d, + 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, + 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, + 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, + 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4f, + 0x5f, 0x4d, 0x45, 0x41, 0x4e, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x54, + 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x4c, 0x47, 0x45, 0x42, 0x52, 0x41, 0x49, 0x43, 0x5f, 0x4d, 0x45, 0x41, 0x4e, + 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, + 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x56, 0x45, + 0x52, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, - 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, - 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, - 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, - 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x45, 0x4f, 0x5f, 0x4d, 0x45, - 0x41, 0x4e, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, - 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, - 0x4c, 0x47, 0x45, 0x42, 0x52, 0x41, 0x49, 0x43, 0x5f, 0x4d, 0x45, 0x41, 0x4e, 0x10, 0x03, 0x12, - 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, - 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, - 0x45, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, 0x4d, - 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x5f, - 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, - 0x41, 0x54, 0x45, 0x10, 0x06, 0x2a, 0xf5, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x54, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, + 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x54, 0x48, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x06, 0x2a, 0xf5, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, + 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, + 0x1e, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, + 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, + 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, - 0x0a, 0x15, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, - 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, - 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, - 0x41, 0x42, 0x52, 0x49, 0x43, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x54, - 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, - 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x10, 0x05, - 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, - 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x53, - 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, 0x2a, 0xa3, 0x01, - 0x0a, 0x14, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x75, - 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, - 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, + 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x54, + 0x45, 0x4c, 0x45, 0x4d, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, + 0x54, 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x45, 0x4c, 0x45, 0x4d, + 0x45, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x06, + 0x2a, 0xa3, 0x01, 0x0a, 0x14, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x41, 0x4d, + 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, + 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x53, 0x53, 0x4c, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, + 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x4c, 0x53, 0x10, 0x03, 0x2a, 0xc7, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x54, + 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x20, 0x0a, 0x1c, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, - 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x53, 0x4c, - 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x4c, - 0x53, 0x10, 0x03, 0x2a, 0xc7, 0x01, 0x0a, 0x10, 0x54, 0x61, 0x6d, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x41, 0x4d, 0x5f, - 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, + 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, - 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, - 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x50, 0x10, - 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x50, 0x43, 0x10, 0x04, 0x12, 0x1d, - 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x2a, 0x76, 0x0a, - 0x07, 0x54, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x4c, 0x56, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x56, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, - 0x0f, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x41, 0x51, 0x55, 0x45, - 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, - 0x4d, 0x41, 0x43, 0x10, 0x04, 0x2a, 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x21, - 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, - 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, - 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x43, - 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x0e, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, - 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, - 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, - 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, - 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x4c, 0x10, 0x02, 0x2a, 0x87, 0x01, 0x0a, 0x12, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, - 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, + 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x41, 0x4d, 0x5f, + 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x44, 0x50, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, + 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x50, 0x43, 0x10, + 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x41, 0x4d, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, + 0x2a, 0x76, 0x0a, 0x07, 0x54, 0x6c, 0x76, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x54, + 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x54, + 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, + 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x41, + 0x51, 0x55, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x48, 0x4d, 0x41, 0x43, 0x10, 0x04, 0x2a, 0xb2, 0x01, 0x0a, 0x12, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, + 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x50, 0x59, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x77, 0x0a, + 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, - 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, - 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x91, 0x05, - 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x55, 0x45, 0x43, 0x4e, - 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x45, 0x43, 0x4e, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, - 0x54, 0x4f, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4e, 0x49, - 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x22, 0x0a, - 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4e, 0x49, 0x10, - 0x04, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x52, 0x49, 0x44, - 0x47, 0x45, 0x5f, 0x49, 0x46, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, - 0x45, 0x5f, 0x49, 0x46, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x06, 0x12, 0x2c, 0x0a, - 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, - 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x2c, 0x0a, 0x28, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, - 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, - 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x53, 0x49, - 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x09, 0x12, 0x23, - 0x0a, 0x1f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x53, 0x49, - 0x44, 0x10, 0x0a, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x53, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x42, - 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x10, 0x0b, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, + 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x44, 0x53, 0x43, 0x50, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x87, 0x01, 0x0a, 0x12, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, + 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, + 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x45, + 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, + 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x02, + 0x2a, 0x91, 0x05, 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x55, + 0x45, 0x43, 0x4e, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x45, 0x43, 0x4e, 0x5f, 0x4f, 0x45, + 0x43, 0x4e, 0x5f, 0x54, 0x4f, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x56, 0x4e, 0x49, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x03, + 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, + 0x4e, 0x49, 0x10, 0x04, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x54, 0x4f, 0x5f, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x52, - 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x53, 0x49, 0x44, 0x10, - 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x50, 0x4e, 0x5f, 0x53, 0x49, - 0x44, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, - 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, 0x5f, 0x41, 0x47, - 0x47, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x56, 0x50, 0x4e, - 0x5f, 0x53, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, - 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, 0x80, 0x80, 0x80, - 0x01, 0x2a, 0x67, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x50, 0x45, - 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x50, 0x45, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x32, 0x50, 0x10, 0x01, 0x12, - 0x19, 0x0a, 0x15, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x32, 0x4d, 0x50, 0x10, 0x02, 0x2a, 0x99, 0x01, 0x0a, 0x0a, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, - 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1a, 0x0a, - 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, - 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0xe4, 0x01, 0x0a, 0x18, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, - 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, + 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x06, + 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, + 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x2c, + 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, + 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4e, 0x49, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x56, 0x53, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, + 0x09, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, + 0x56, 0x53, 0x49, 0x44, 0x10, 0x0a, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x53, 0x49, 0x44, 0x5f, 0x54, + 0x4f, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x10, 0x0b, 0x12, 0x25, 0x0a, + 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x46, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x53, + 0x49, 0x44, 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, + 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x56, 0x50, 0x4e, + 0x5f, 0x53, 0x49, 0x44, 0x10, 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, + 0x5f, 0x41, 0x47, 0x47, 0x5f, 0x49, 0x44, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, + 0x56, 0x50, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x21, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, + 0x54, 0x4f, 0x4d, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x81, + 0x80, 0x80, 0x80, 0x01, 0x2a, 0x67, 0x0a, 0x0e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x65, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x32, 0x50, + 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x50, 0x45, 0x45, + 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x32, 0x4d, 0x50, 0x10, 0x02, 0x2a, 0x99, 0x01, + 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x17, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, + 0x54, 0x53, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, + 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x04, 0x2a, 0xe4, 0x01, 0x0a, 0x18, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x32, 0x50, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x32, 0x4d, 0x50, 0x10, + 0x02, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x50, 0x32, 0x50, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x32, 0x4d, 0x50, 0x10, 0x02, 0x12, 0x25, - 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, - 0x50, 0x32, 0x50, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x32, 0x4d, 0x50, 0x10, 0x04, 0x2a, 0x73, 0x0a, - 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1f, - 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x21, 0x0a, 0x1d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, - 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, - 0x10, 0x02, 0x2a, 0x92, 0x02, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, - 0x49, 0x4e, 0x49, 0x50, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x49, 0x4e, 0x49, 0x50, 0x5f, 0x47, 0x52, 0x45, - 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x10, 0x04, 0x12, - 0x14, 0x0a, 0x10, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, - 0x52, 0x56, 0x36, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x56, 0x47, 0x52, 0x45, 0x10, 0x06, 0x12, 0x1a, 0x0a, 0x16, - 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x49, 0x4e, - 0x49, 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x49, 0x4e, 0x49, 0x50, 0x5f, 0x55, - 0x44, 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x44, - 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x09, 0x2a, 0x9f, 0x01, 0x0a, 0x17, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x58, + 0x45, 0x5f, 0x4d, 0x50, 0x32, 0x50, 0x10, 0x03, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, + 0x54, 0x52, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x32, 0x4d, 0x50, 0x10, 0x04, + 0x2a, 0x73, 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x54, 0x4c, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x4c, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x49, 0x50, 0x45, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x4c, 0x10, 0x02, 0x2a, 0x92, 0x02, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x49, 0x50, 0x49, 0x4e, 0x49, 0x50, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x49, 0x4e, 0x49, 0x50, 0x5f, + 0x47, 0x52, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x50, 0x4c, 0x53, + 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x56, 0x47, 0x52, 0x45, 0x10, 0x06, 0x12, + 0x1a, 0x0a, 0x16, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, + 0x50, 0x49, 0x4e, 0x49, 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x50, 0x49, 0x4e, 0x49, + 0x50, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, + 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x45, 0x53, 0x50, 0x10, 0x09, 0x2a, 0x9f, 0x01, 0x0a, 0x17, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, + 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, - 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x01, 0x12, 0x29, - 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, - 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x50, - 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0x56, 0x0a, 0x07, 0x55, 0x64, 0x66, - 0x42, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, - 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x32, 0x10, 0x01, 0x12, - 0x0f, 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x33, 0x10, 0x02, - 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x34, 0x10, - 0x03, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x44, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x56, 0x58, 0x4c, 0x41, + 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x45, 0x50, 0x48, 0x45, 0x4d, 0x45, 0x52, 0x41, 0x4c, 0x10, 0x02, 0x2a, 0x56, 0x0a, 0x07, + 0x55, 0x64, 0x66, 0x42, 0x61, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x44, 0x46, 0x5f, 0x42, + 0x41, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x32, + 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4c, + 0x33, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x44, 0x46, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, + 0x4c, 0x34, 0x10, 0x03, 0x2a, 0x99, 0x01, 0x0a, 0x0c, 0x55, 0x64, 0x66, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, + 0x1a, 0x0a, 0x16, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, + 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x41, + 0x53, 0x48, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, + 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x10, 0x01, + 0x2a, 0xd0, 0x01, 0x0a, 0x14, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, - 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, - 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x44, 0x46, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, - 0x02, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x44, 0x46, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x10, 0x03, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xd0, 0x01, - 0x0a, 0x14, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x23, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, - 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x1f, 0x0a, 0x1b, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, - 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, - 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x32, - 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x04, - 0x2a, 0xdb, 0x01, 0x0a, 0x16, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, - 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x4c, 0x41, 0x4e, 0x5f, - 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x44, 0x41, 0x10, 0x01, 0x12, 0x21, - 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, - 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, 0x10, - 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, + 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, + 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, + 0x4c, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, + 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, + 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x03, 0x12, 0x24, 0x0a, + 0x20, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, + 0x44, 0x10, 0x04, 0x2a, 0xdb, 0x01, 0x0a, 0x16, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, + 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, + 0x0a, 0x26, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, + 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, + 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x44, 0x41, 0x10, + 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x47, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, + 0x58, 0x47, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x58, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x47, 0x10, 0x04, 0x2a, 0xae, - 0x03, 0x0a, 0x08, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x01, 0x12, - 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, - 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, - 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, - 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x53, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, - 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x43, - 0x54, 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, - 0x09, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x0a, 0x12, - 0x20, 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, - 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, - 0x0b, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0c, 0x12, 0x18, 0x0a, - 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x4c, 0x41, 0x4e, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x51, 0x4c, 0x45, 0x4e, 0x10, 0x0e, 0x2a, - 0x99, 0x01, 0x0a, 0x0f, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x47, - 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, - 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x54, 0x41, - 0x47, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, - 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x47, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, - 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, - 0x54, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x32, 0xd0, 0x02, 0x0a, 0x0a, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x72, 0x0a, 0x0f, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2d, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, - 0x0a, 0x0a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, - 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x55, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, - 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x6e, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x3a, 0x4c, - 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0xce, 0xbb, 0xd2, 0xf5, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, - 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x64, 0x0a, 0x08, - 0x73, 0x61, 0x69, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x94, 0x85, 0xd2, 0xf5, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x73, 0x61, 0x69, 0x54, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x50, 0x45, 0x5f, 0x53, 0x47, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x58, 0x47, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x47, 0x10, + 0x04, 0x2a, 0xae, 0x03, 0x0a, 0x08, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x12, 0x19, + 0x0a, 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x49, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x43, 0x41, + 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, + 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, + 0x52, 0x44, 0x53, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x06, 0x12, 0x1f, + 0x0a, 0x1b, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x53, 0x10, 0x07, 0x12, + 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, + 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x53, 0x10, 0x08, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x53, 0x10, 0x09, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, 0x54, 0x53, + 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x4f, 0x55, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x55, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x50, 0x4b, + 0x54, 0x53, 0x10, 0x0b, 0x12, 0x1a, 0x0a, 0x16, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x53, 0x10, 0x0c, + 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x10, 0x0d, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x51, 0x4c, 0x45, 0x4e, + 0x10, 0x0e, 0x2a, 0x99, 0x01, 0x0a, 0x0f, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, + 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, + 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x03, 0x32, 0xd0, + 0x02, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x72, 0x0a, + 0x0f, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x63, 0x0a, 0x0a, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, + 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x55, 0x6e, 0x69, 0x6e, 0x69, 0x74, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, + 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x3a, 0x4c, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0xce, 0xbb, 0xd2, 0xf5, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x61, + 0x74, 0x74, 0x72, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x3a, + 0x64, 0x0a, 0x08, 0x73, 0x61, 0x69, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x94, 0x85, 0xd2, + 0xf5, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x73, 0x61, 0x69, 0x54, 0x79, + 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, }) var ( @@ -45366,8 +47868,8 @@ func file_dataplane_proto_sai_common_proto_rawDescGZIP() []byte { return file_dataplane_proto_sai_common_proto_rawDescData } -var file_dataplane_proto_sai_common_proto_enumTypes = make([]protoimpl.EnumInfo, 202) -var file_dataplane_proto_sai_common_proto_msgTypes = make([]protoimpl.MessageInfo, 149) +var file_dataplane_proto_sai_common_proto_enumTypes = make([]protoimpl.EnumInfo, 221) +var file_dataplane_proto_sai_common_proto_msgTypes = make([]protoimpl.MessageInfo, 150) var file_dataplane_proto_sai_common_proto_goTypes = []any{ (AclActionType)(0), // 0: lemming.dataplane.sai.AclActionType (AclBindPointType)(0), // 1: lemming.dataplane.sai.AclBindPointType @@ -45403,520 +47905,540 @@ var file_dataplane_proto_sai_common_proto_goTypes = []any{ (CommonApi)(0), // 31: lemming.dataplane.sai.CommonApi (CounterStat)(0), // 32: lemming.dataplane.sai.CounterStat (CounterType)(0), // 33: lemming.dataplane.sai.CounterType - (DashDirection)(0), // 34: lemming.dataplane.sai.DashDirection - (DashEncapsulation)(0), // 35: lemming.dataplane.sai.DashEncapsulation - (DashTunnelDscpMode)(0), // 36: lemming.dataplane.sai.DashTunnelDscpMode - (DebugCounterBindMethod)(0), // 37: lemming.dataplane.sai.DebugCounterBindMethod - (DebugCounterType)(0), // 38: lemming.dataplane.sai.DebugCounterType - (DtelEventType)(0), // 39: lemming.dataplane.sai.DtelEventType - (EcnMarkMode)(0), // 40: lemming.dataplane.sai.EcnMarkMode - (ErspanEncapsulationType)(0), // 41: lemming.dataplane.sai.ErspanEncapsulationType - (FdbEntryType)(0), // 42: lemming.dataplane.sai.FdbEntryType - (FdbEvent)(0), // 43: lemming.dataplane.sai.FdbEvent - (FdbFlushEntryType)(0), // 44: lemming.dataplane.sai.FdbFlushEntryType - (HashAlgorithm)(0), // 45: lemming.dataplane.sai.HashAlgorithm - (HealthDataType)(0), // 46: lemming.dataplane.sai.HealthDataType - (HostifTableEntryChannelType)(0), // 47: lemming.dataplane.sai.HostifTableEntryChannelType - (HostifTableEntryType)(0), // 48: lemming.dataplane.sai.HostifTableEntryType - (HostifTrapType)(0), // 49: lemming.dataplane.sai.HostifTrapType - (HostifTxType)(0), // 50: lemming.dataplane.sai.HostifTxType - (HostifType)(0), // 51: lemming.dataplane.sai.HostifType - (HostifUserDefinedTrapType)(0), // 52: lemming.dataplane.sai.HostifUserDefinedTrapType - (HostifVlanTag)(0), // 53: lemming.dataplane.sai.HostifVlanTag - (InDropReason)(0), // 54: lemming.dataplane.sai.InDropReason - (IngressPriorityGroupStat)(0), // 55: lemming.dataplane.sai.IngressPriorityGroupStat - (InsegEntryPopQosMode)(0), // 56: lemming.dataplane.sai.InsegEntryPopQosMode - (InsegEntryPopTtlMode)(0), // 57: lemming.dataplane.sai.InsegEntryPopTtlMode - (InsegEntryPscType)(0), // 58: lemming.dataplane.sai.InsegEntryPscType - (IpAddrFamily)(0), // 59: lemming.dataplane.sai.IpAddrFamily - (IpmcEntryType)(0), // 60: lemming.dataplane.sai.IpmcEntryType - (IpsecCipher)(0), // 61: lemming.dataplane.sai.IpsecCipher - (IpsecDirection)(0), // 62: lemming.dataplane.sai.IpsecDirection - (IpsecPortStat)(0), // 63: lemming.dataplane.sai.IpsecPortStat - (IpsecSaOctetCountStatus)(0), // 64: lemming.dataplane.sai.IpsecSaOctetCountStatus - (IpsecSaStat)(0), // 65: lemming.dataplane.sai.IpsecSaStat - (IsolationGroupType)(0), // 66: lemming.dataplane.sai.IsolationGroupType - (L2McEntryType)(0), // 67: lemming.dataplane.sai.L2mcEntryType - (LogLevel)(0), // 68: lemming.dataplane.sai.LogLevel - (MacsecCipherSuite)(0), // 69: lemming.dataplane.sai.MacsecCipherSuite - (MacsecDirection)(0), // 70: lemming.dataplane.sai.MacsecDirection - (MacsecFlowStat)(0), // 71: lemming.dataplane.sai.MacsecFlowStat - (MacsecMaxSecureAssociationsPerSc)(0), // 72: lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc - (MacsecPortStat)(0), // 73: lemming.dataplane.sai.MacsecPortStat - (MacsecSaStat)(0), // 74: lemming.dataplane.sai.MacsecSaStat - (MacsecScStat)(0), // 75: lemming.dataplane.sai.MacsecScStat - (MeterType)(0), // 76: lemming.dataplane.sai.MeterType - (MirrorSessionCongestionMode)(0), // 77: lemming.dataplane.sai.MirrorSessionCongestionMode - (MirrorSessionType)(0), // 78: lemming.dataplane.sai.MirrorSessionType - (MySidEntryEndpointBehaviorFlavor)(0), // 79: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - (MySidEntryEndpointBehavior)(0), // 80: lemming.dataplane.sai.MySidEntryEndpointBehavior - (NatEvent)(0), // 81: lemming.dataplane.sai.NatEvent - (NatType)(0), // 82: lemming.dataplane.sai.NatType - (NativeHashField)(0), // 83: lemming.dataplane.sai.NativeHashField - (NextHopGroupMapType)(0), // 84: lemming.dataplane.sai.NextHopGroupMapType - (NextHopGroupMemberConfiguredRole)(0), // 85: lemming.dataplane.sai.NextHopGroupMemberConfiguredRole - (NextHopGroupMemberObservedRole)(0), // 86: lemming.dataplane.sai.NextHopGroupMemberObservedRole - (NextHopGroupType)(0), // 87: lemming.dataplane.sai.NextHopGroupType - (NextHopType)(0), // 88: lemming.dataplane.sai.NextHopType - (ObjectStage)(0), // 89: lemming.dataplane.sai.ObjectStage - (ObjectTypeExtensions)(0), // 90: lemming.dataplane.sai.ObjectTypeExtensions - (ObjectType)(0), // 91: lemming.dataplane.sai.ObjectType - (OutDropReason)(0), // 92: lemming.dataplane.sai.OutDropReason - (OutsegExpMode)(0), // 93: lemming.dataplane.sai.OutsegExpMode - (OutsegTtlMode)(0), // 94: lemming.dataplane.sai.OutsegTtlMode - (OutsegType)(0), // 95: lemming.dataplane.sai.OutsegType - (PacketAction)(0), // 96: lemming.dataplane.sai.PacketAction - (PacketColor)(0), // 97: lemming.dataplane.sai.PacketColor - (PacketVlan)(0), // 98: lemming.dataplane.sai.PacketVlan - (PoePortActiveChannelType)(0), // 99: lemming.dataplane.sai.PoePortActiveChannelType - (PoePortClassMethodType)(0), // 100: lemming.dataplane.sai.PoePortClassMethodType - (PoePortSignatureType)(0), // 101: lemming.dataplane.sai.PoePortSignatureType - (PolicerColorSource)(0), // 102: lemming.dataplane.sai.PolicerColorSource - (PolicerMode)(0), // 103: lemming.dataplane.sai.PolicerMode - (PolicerStat)(0), // 104: lemming.dataplane.sai.PolicerStat - (PortAttrExtensions)(0), // 105: lemming.dataplane.sai.PortAttrExtensions - (PortAutoNegConfigMode)(0), // 106: lemming.dataplane.sai.PortAutoNegConfigMode - (PortBreakoutModeType)(0), // 107: lemming.dataplane.sai.PortBreakoutModeType - (PortCablePairState)(0), // 108: lemming.dataplane.sai.PortCablePairState - (PortCableType)(0), // 109: lemming.dataplane.sai.PortCableType - (PortConnectorFailoverMode)(0), // 110: lemming.dataplane.sai.PortConnectorFailoverMode - (PortDatapathEnable)(0), // 111: lemming.dataplane.sai.PortDatapathEnable - (PortDualMedia)(0), // 112: lemming.dataplane.sai.PortDualMedia - (PortErrStatus)(0), // 113: lemming.dataplane.sai.PortErrStatus - (PortFecModeExtended)(0), // 114: lemming.dataplane.sai.PortFecModeExtended - (PortFecMode)(0), // 115: lemming.dataplane.sai.PortFecMode - (PortFlowControlMode)(0), // 116: lemming.dataplane.sai.PortFlowControlMode - (PortHostTxReadyStatus)(0), // 117: lemming.dataplane.sai.PortHostTxReadyStatus - (PortInterfaceType)(0), // 118: lemming.dataplane.sai.PortInterfaceType - (PortInternalLoopbackMode)(0), // 119: lemming.dataplane.sai.PortInternalLoopbackMode - (PortLinkTrainingFailureStatus)(0), // 120: lemming.dataplane.sai.PortLinkTrainingFailureStatus - (PortLinkTrainingRxStatus)(0), // 121: lemming.dataplane.sai.PortLinkTrainingRxStatus - (PortLoopbackMode)(0), // 122: lemming.dataplane.sai.PortLoopbackMode - (PortMdixModeConfig)(0), // 123: lemming.dataplane.sai.PortMdixModeConfig - (PortMdixModeStatus)(0), // 124: lemming.dataplane.sai.PortMdixModeStatus - (PortMediaType)(0), // 125: lemming.dataplane.sai.PortMediaType - (PortModuleType)(0), // 126: lemming.dataplane.sai.PortModuleType - (PortOperStatus)(0), // 127: lemming.dataplane.sai.PortOperStatus - (PortPathTracingTimestampType)(0), // 128: lemming.dataplane.sai.PortPathTracingTimestampType - (PortPoolStat)(0), // 129: lemming.dataplane.sai.PortPoolStat - (PortPrbsConfig)(0), // 130: lemming.dataplane.sai.PortPrbsConfig - (PortPrbsRxStatus)(0), // 131: lemming.dataplane.sai.PortPrbsRxStatus - (PortPriorityFlowControlMode)(0), // 132: lemming.dataplane.sai.PortPriorityFlowControlMode - (PortPtpMode)(0), // 133: lemming.dataplane.sai.PortPtpMode - (PortStatExtensions)(0), // 134: lemming.dataplane.sai.PortStatExtensions - (PortStat)(0), // 135: lemming.dataplane.sai.PortStat - (PortType)(0), // 136: lemming.dataplane.sai.PortType - (QosMapType)(0), // 137: lemming.dataplane.sai.QosMapType - (QueuePfcContinuousDeadlockState)(0), // 138: lemming.dataplane.sai.QueuePfcContinuousDeadlockState - (QueuePfcDeadlockEventType)(0), // 139: lemming.dataplane.sai.QueuePfcDeadlockEventType - (QueueStat)(0), // 140: lemming.dataplane.sai.QueueStat - (QueueType)(0), // 141: lemming.dataplane.sai.QueueType - (RouterInterfaceStat)(0), // 142: lemming.dataplane.sai.RouterInterfaceStat - (RouterInterfaceType)(0), // 143: lemming.dataplane.sai.RouterInterfaceType - (SamplepacketMode)(0), // 144: lemming.dataplane.sai.SamplepacketMode - (SamplepacketType)(0), // 145: lemming.dataplane.sai.SamplepacketType - (SchedulingType)(0), // 146: lemming.dataplane.sai.SchedulingType - (Srv6SidlistStat)(0), // 147: lemming.dataplane.sai.Srv6SidlistStat - (Srv6SidlistType)(0), // 148: lemming.dataplane.sai.Srv6SidlistType - (StatsMode)(0), // 149: lemming.dataplane.sai.StatsMode - (StpPortState)(0), // 150: lemming.dataplane.sai.StpPortState - (SwitchAsicSdkHealthCategory)(0), // 151: lemming.dataplane.sai.SwitchAsicSdkHealthCategory - (SwitchAsicSdkHealthSeverity)(0), // 152: lemming.dataplane.sai.SwitchAsicSdkHealthSeverity - (SwitchAttrExtensions)(0), // 153: lemming.dataplane.sai.SwitchAttrExtensions - (SwitchFailoverConfigMode)(0), // 154: lemming.dataplane.sai.SwitchFailoverConfigMode - (SwitchFirmwareLoadMethod)(0), // 155: lemming.dataplane.sai.SwitchFirmwareLoadMethod - (SwitchFirmwareLoadType)(0), // 156: lemming.dataplane.sai.SwitchFirmwareLoadType - (SwitchHardwareAccessBus)(0), // 157: lemming.dataplane.sai.SwitchHardwareAccessBus - (SwitchHostifOperStatusUpdateMode)(0), // 158: lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode - (SwitchMcastSnoopingCapability)(0), // 159: lemming.dataplane.sai.SwitchMcastSnoopingCapability - (SwitchOperStatus)(0), // 160: lemming.dataplane.sai.SwitchOperStatus - (SwitchRestartType)(0), // 161: lemming.dataplane.sai.SwitchRestartType - (SwitchStat)(0), // 162: lemming.dataplane.sai.SwitchStat - (SwitchSwitchingMode)(0), // 163: lemming.dataplane.sai.SwitchSwitchingMode - (SwitchType)(0), // 164: lemming.dataplane.sai.SwitchType - (SystemPortType)(0), // 165: lemming.dataplane.sai.SystemPortType - (TableBitmapClassificationEntryAction)(0), // 166: lemming.dataplane.sai.TableBitmapClassificationEntryAction - (TableBitmapClassificationEntryStat)(0), // 167: lemming.dataplane.sai.TableBitmapClassificationEntryStat - (TableBitmapRouterEntryAction)(0), // 168: lemming.dataplane.sai.TableBitmapRouterEntryAction - (TableBitmapRouterEntryStat)(0), // 169: lemming.dataplane.sai.TableBitmapRouterEntryStat - (TableMetaTunnelEntryAction)(0), // 170: lemming.dataplane.sai.TableMetaTunnelEntryAction - (TableMetaTunnelEntryStat)(0), // 171: lemming.dataplane.sai.TableMetaTunnelEntryStat - (TamBindPointType)(0), // 172: lemming.dataplane.sai.TamBindPointType - (TamEventThresholdUnit)(0), // 173: lemming.dataplane.sai.TamEventThresholdUnit - (TamEventType)(0), // 174: lemming.dataplane.sai.TamEventType - (TamIntPresenceType)(0), // 175: lemming.dataplane.sai.TamIntPresenceType - (TamIntType)(0), // 176: lemming.dataplane.sai.TamIntType - (TamReportIntervalUnit)(0), // 177: lemming.dataplane.sai.TamReportIntervalUnit - (TamReportMode)(0), // 178: lemming.dataplane.sai.TamReportMode - (TamReportType)(0), // 179: lemming.dataplane.sai.TamReportType - (TamReportingUnit)(0), // 180: lemming.dataplane.sai.TamReportingUnit - (TamTelMathFuncType)(0), // 181: lemming.dataplane.sai.TamTelMathFuncType - (TamTelemetryType)(0), // 182: lemming.dataplane.sai.TamTelemetryType - (TamTransportAuthType)(0), // 183: lemming.dataplane.sai.TamTransportAuthType - (TamTransportType)(0), // 184: lemming.dataplane.sai.TamTransportType - (TlvType)(0), // 185: lemming.dataplane.sai.TlvType - (TunnelDecapEcnMode)(0), // 186: lemming.dataplane.sai.TunnelDecapEcnMode - (TunnelDscpMode)(0), // 187: lemming.dataplane.sai.TunnelDscpMode - (TunnelEncapEcnMode)(0), // 188: lemming.dataplane.sai.TunnelEncapEcnMode - (TunnelMapType)(0), // 189: lemming.dataplane.sai.TunnelMapType - (TunnelPeerMode)(0), // 190: lemming.dataplane.sai.TunnelPeerMode - (TunnelStat)(0), // 191: lemming.dataplane.sai.TunnelStat - (TunnelTermTableEntryType)(0), // 192: lemming.dataplane.sai.TunnelTermTableEntryType - (TunnelTtlMode)(0), // 193: lemming.dataplane.sai.TunnelTtlMode - (TunnelType)(0), // 194: lemming.dataplane.sai.TunnelType - (TunnelVxlanUdpSportMode)(0), // 195: lemming.dataplane.sai.TunnelVxlanUdpSportMode - (UdfBase)(0), // 196: lemming.dataplane.sai.UdfBase - (UdfGroupType)(0), // 197: lemming.dataplane.sai.UdfGroupType - (VlanFloodControlType)(0), // 198: lemming.dataplane.sai.VlanFloodControlType - (VlanMcastLookupKeyType)(0), // 199: lemming.dataplane.sai.VlanMcastLookupKeyType - (VlanStat)(0), // 200: lemming.dataplane.sai.VlanStat - (VlanTaggingMode)(0), // 201: lemming.dataplane.sai.VlanTaggingMode - (*AclActionData)(nil), // 202: lemming.dataplane.sai.AclActionData - (*ACLCapability)(nil), // 203: lemming.dataplane.sai.ACLCapability - (*AclFieldData)(nil), // 204: lemming.dataplane.sai.AclFieldData - (*Uint64List)(nil), // 205: lemming.dataplane.sai.Uint64List - (*ACLResource)(nil), // 206: lemming.dataplane.sai.ACLResource - (*BfdSessionStateChangeNotificationData)(nil), // 207: lemming.dataplane.sai.BfdSessionStateChangeNotificationData - (*FabricPortReachability)(nil), // 208: lemming.dataplane.sai.FabricPortReachability - (*FdbEntry)(nil), // 209: lemming.dataplane.sai.FdbEntry - (*FdbEventNotificationData)(nil), // 210: lemming.dataplane.sai.FdbEventNotificationData - (*InsegEntry)(nil), // 211: lemming.dataplane.sai.InsegEntry - (*IpPrefix)(nil), // 212: lemming.dataplane.sai.IpPrefix - (*IpmcEntry)(nil), // 213: lemming.dataplane.sai.IpmcEntry - (*IpsecSaStatusNotificationData)(nil), // 214: lemming.dataplane.sai.IpsecSaStatusNotificationData - (*L2McEntry)(nil), // 215: lemming.dataplane.sai.L2mcEntry - (*LatchStatus)(nil), // 216: lemming.dataplane.sai.LatchStatus - (*UintMap)(nil), // 217: lemming.dataplane.sai.UintMap - (*McastFdbEntry)(nil), // 218: lemming.dataplane.sai.McastFdbEntry - (*MySidEntry)(nil), // 219: lemming.dataplane.sai.MySidEntry - (*NatEntryData)(nil), // 220: lemming.dataplane.sai.NatEntryData - (*NatEntry)(nil), // 221: lemming.dataplane.sai.NatEntry - (*NeighborEntry)(nil), // 222: lemming.dataplane.sai.NeighborEntry - (*PortEyeValues)(nil), // 223: lemming.dataplane.sai.PortEyeValues - (*PortLaneLatchStatus)(nil), // 224: lemming.dataplane.sai.PortLaneLatchStatus - (*PortOperStatusNotification)(nil), // 225: lemming.dataplane.sai.PortOperStatusNotification - (*PRBS_RXState)(nil), // 226: lemming.dataplane.sai.PRBS_RXState - (*QOSMapParams)(nil), // 227: lemming.dataplane.sai.QOSMapParams - (*QOSMap)(nil), // 228: lemming.dataplane.sai.QOSMap - (*QueueDeadlockNotificationData)(nil), // 229: lemming.dataplane.sai.QueueDeadlockNotificationData - (*RouteEntry)(nil), // 230: lemming.dataplane.sai.RouteEntry - (*SystemPortConfig)(nil), // 231: lemming.dataplane.sai.SystemPortConfig - (*HMAC)(nil), // 232: lemming.dataplane.sai.HMAC - (*TLVEntry)(nil), // 233: lemming.dataplane.sai.TLVEntry - (*Uint32Range)(nil), // 234: lemming.dataplane.sai.Uint32Range - (*ObjectTypeQueryRequest)(nil), // 235: lemming.dataplane.sai.ObjectTypeQueryRequest - (*ObjectTypeQueryResponse)(nil), // 236: lemming.dataplane.sai.ObjectTypeQueryResponse - (*InitializeRequest)(nil), // 237: lemming.dataplane.sai.InitializeRequest - (*InitializeResponse)(nil), // 238: lemming.dataplane.sai.InitializeResponse - (*UninitializeRequest)(nil), // 239: lemming.dataplane.sai.UninitializeRequest - (*UninitializeResponse)(nil), // 240: lemming.dataplane.sai.UninitializeResponse - (*AclCounterAttribute)(nil), // 241: lemming.dataplane.sai.AclCounterAttribute - (*AclEntryAttribute)(nil), // 242: lemming.dataplane.sai.AclEntryAttribute - (*AclRangeAttribute)(nil), // 243: lemming.dataplane.sai.AclRangeAttribute - (*AclTableAttribute)(nil), // 244: lemming.dataplane.sai.AclTableAttribute - (*AclTableChainGroupAttribute)(nil), // 245: lemming.dataplane.sai.AclTableChainGroupAttribute - (*AclTableGroupAttribute)(nil), // 246: lemming.dataplane.sai.AclTableGroupAttribute - (*AclTableGroupMemberAttribute)(nil), // 247: lemming.dataplane.sai.AclTableGroupMemberAttribute - (*BfdSessionAttribute)(nil), // 248: lemming.dataplane.sai.BfdSessionAttribute - (*BridgeAttribute)(nil), // 249: lemming.dataplane.sai.BridgeAttribute - (*BridgePortAttribute)(nil), // 250: lemming.dataplane.sai.BridgePortAttribute - (*BufferPoolAttribute)(nil), // 251: lemming.dataplane.sai.BufferPoolAttribute - (*BufferProfileAttribute)(nil), // 252: lemming.dataplane.sai.BufferProfileAttribute - (*CounterAttribute)(nil), // 253: lemming.dataplane.sai.CounterAttribute - (*DebugCounterAttribute)(nil), // 254: lemming.dataplane.sai.DebugCounterAttribute - (*DtelAttribute)(nil), // 255: lemming.dataplane.sai.DtelAttribute - (*DtelEventAttribute)(nil), // 256: lemming.dataplane.sai.DtelEventAttribute - (*DtelIntSessionAttribute)(nil), // 257: lemming.dataplane.sai.DtelIntSessionAttribute - (*DtelQueueReportAttribute)(nil), // 258: lemming.dataplane.sai.DtelQueueReportAttribute - (*DtelReportSessionAttribute)(nil), // 259: lemming.dataplane.sai.DtelReportSessionAttribute - (*FdbEntryAttribute)(nil), // 260: lemming.dataplane.sai.FdbEntryAttribute - (*FdbFlushAttribute)(nil), // 261: lemming.dataplane.sai.FdbFlushAttribute - (*FineGrainedHashFieldAttribute)(nil), // 262: lemming.dataplane.sai.FineGrainedHashFieldAttribute - (*GenericProgrammableAttribute)(nil), // 263: lemming.dataplane.sai.GenericProgrammableAttribute - (*HashAttribute)(nil), // 264: lemming.dataplane.sai.HashAttribute - (*HostifAttribute)(nil), // 265: lemming.dataplane.sai.HostifAttribute - (*HostifPacketAttribute)(nil), // 266: lemming.dataplane.sai.HostifPacketAttribute - (*HostifTableEntryAttribute)(nil), // 267: lemming.dataplane.sai.HostifTableEntryAttribute - (*HostifTrapAttribute)(nil), // 268: lemming.dataplane.sai.HostifTrapAttribute - (*HostifTrapGroupAttribute)(nil), // 269: lemming.dataplane.sai.HostifTrapGroupAttribute - (*HostifUserDefinedTrapAttribute)(nil), // 270: lemming.dataplane.sai.HostifUserDefinedTrapAttribute - (*IngressPriorityGroupAttribute)(nil), // 271: lemming.dataplane.sai.IngressPriorityGroupAttribute - (*InsegEntryAttribute)(nil), // 272: lemming.dataplane.sai.InsegEntryAttribute - (*IpmcEntryAttribute)(nil), // 273: lemming.dataplane.sai.IpmcEntryAttribute - (*IpmcGroupAttribute)(nil), // 274: lemming.dataplane.sai.IpmcGroupAttribute - (*IpmcGroupMemberAttribute)(nil), // 275: lemming.dataplane.sai.IpmcGroupMemberAttribute - (*IpsecAttribute)(nil), // 276: lemming.dataplane.sai.IpsecAttribute - (*IpsecPortAttribute)(nil), // 277: lemming.dataplane.sai.IpsecPortAttribute - (*IpsecSaAttribute)(nil), // 278: lemming.dataplane.sai.IpsecSaAttribute - (*IsolationGroupAttribute)(nil), // 279: lemming.dataplane.sai.IsolationGroupAttribute - (*IsolationGroupMemberAttribute)(nil), // 280: lemming.dataplane.sai.IsolationGroupMemberAttribute - (*L2McEntryAttribute)(nil), // 281: lemming.dataplane.sai.L2mcEntryAttribute - (*L2McGroupAttribute)(nil), // 282: lemming.dataplane.sai.L2mcGroupAttribute - (*L2McGroupMemberAttribute)(nil), // 283: lemming.dataplane.sai.L2mcGroupMemberAttribute - (*LagAttribute)(nil), // 284: lemming.dataplane.sai.LagAttribute - (*LagMemberAttribute)(nil), // 285: lemming.dataplane.sai.LagMemberAttribute - (*MacsecAttribute)(nil), // 286: lemming.dataplane.sai.MacsecAttribute - (*MacsecFlowAttribute)(nil), // 287: lemming.dataplane.sai.MacsecFlowAttribute - (*MacsecPortAttribute)(nil), // 288: lemming.dataplane.sai.MacsecPortAttribute - (*MacsecSaAttribute)(nil), // 289: lemming.dataplane.sai.MacsecSaAttribute - (*MacsecScAttribute)(nil), // 290: lemming.dataplane.sai.MacsecScAttribute - (*McastFdbEntryAttribute)(nil), // 291: lemming.dataplane.sai.McastFdbEntryAttribute - (*MirrorSessionAttribute)(nil), // 292: lemming.dataplane.sai.MirrorSessionAttribute - (*MyMacAttribute)(nil), // 293: lemming.dataplane.sai.MyMacAttribute - (*MySidEntryAttribute)(nil), // 294: lemming.dataplane.sai.MySidEntryAttribute - (*NatEntryAttribute)(nil), // 295: lemming.dataplane.sai.NatEntryAttribute - (*NatZoneCounterAttribute)(nil), // 296: lemming.dataplane.sai.NatZoneCounterAttribute - (*NeighborEntryAttribute)(nil), // 297: lemming.dataplane.sai.NeighborEntryAttribute - (*NextHopAttribute)(nil), // 298: lemming.dataplane.sai.NextHopAttribute - (*NextHopGroupAttribute)(nil), // 299: lemming.dataplane.sai.NextHopGroupAttribute - (*NextHopGroupMapAttribute)(nil), // 300: lemming.dataplane.sai.NextHopGroupMapAttribute - (*NextHopGroupMemberAttribute)(nil), // 301: lemming.dataplane.sai.NextHopGroupMemberAttribute - (*PolicerAttribute)(nil), // 302: lemming.dataplane.sai.PolicerAttribute - (*PortAttribute)(nil), // 303: lemming.dataplane.sai.PortAttribute - (*PortConnectorAttribute)(nil), // 304: lemming.dataplane.sai.PortConnectorAttribute - (*PortPoolAttribute)(nil), // 305: lemming.dataplane.sai.PortPoolAttribute - (*PortSerdesAttribute)(nil), // 306: lemming.dataplane.sai.PortSerdesAttribute - (*QosMapAttribute)(nil), // 307: lemming.dataplane.sai.QosMapAttribute - (*QueueAttribute)(nil), // 308: lemming.dataplane.sai.QueueAttribute - (*RouterInterfaceAttribute)(nil), // 309: lemming.dataplane.sai.RouterInterfaceAttribute - (*RouteEntryAttribute)(nil), // 310: lemming.dataplane.sai.RouteEntryAttribute - (*RpfGroupAttribute)(nil), // 311: lemming.dataplane.sai.RpfGroupAttribute - (*RpfGroupMemberAttribute)(nil), // 312: lemming.dataplane.sai.RpfGroupMemberAttribute - (*SamplepacketAttribute)(nil), // 313: lemming.dataplane.sai.SamplepacketAttribute - (*SchedulerAttribute)(nil), // 314: lemming.dataplane.sai.SchedulerAttribute - (*SchedulerGroupAttribute)(nil), // 315: lemming.dataplane.sai.SchedulerGroupAttribute - (*Srv6SidlistAttribute)(nil), // 316: lemming.dataplane.sai.Srv6SidlistAttribute - (*StpAttribute)(nil), // 317: lemming.dataplane.sai.StpAttribute - (*StpPortAttribute)(nil), // 318: lemming.dataplane.sai.StpPortAttribute - (*SwitchAttribute)(nil), // 319: lemming.dataplane.sai.SwitchAttribute - (*SwitchTunnelAttribute)(nil), // 320: lemming.dataplane.sai.SwitchTunnelAttribute - (*SystemPortAttribute)(nil), // 321: lemming.dataplane.sai.SystemPortAttribute - (*TableBitmapClassificationEntryAttribute)(nil), // 322: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute - (*TableBitmapRouterEntryAttribute)(nil), // 323: lemming.dataplane.sai.TableBitmapRouterEntryAttribute - (*TableMetaTunnelEntryAttribute)(nil), // 324: lemming.dataplane.sai.TableMetaTunnelEntryAttribute - (*TamAttribute)(nil), // 325: lemming.dataplane.sai.TamAttribute - (*TamCollectorAttribute)(nil), // 326: lemming.dataplane.sai.TamCollectorAttribute - (*TamCounterSubscriptionAttribute)(nil), // 327: lemming.dataplane.sai.TamCounterSubscriptionAttribute - (*TamEventAttribute)(nil), // 328: lemming.dataplane.sai.TamEventAttribute - (*TamEventActionAttribute)(nil), // 329: lemming.dataplane.sai.TamEventActionAttribute - (*TamEventThresholdAttribute)(nil), // 330: lemming.dataplane.sai.TamEventThresholdAttribute - (*TamIntAttribute)(nil), // 331: lemming.dataplane.sai.TamIntAttribute - (*TamMathFuncAttribute)(nil), // 332: lemming.dataplane.sai.TamMathFuncAttribute - (*TamReportAttribute)(nil), // 333: lemming.dataplane.sai.TamReportAttribute - (*TamTelemetryAttribute)(nil), // 334: lemming.dataplane.sai.TamTelemetryAttribute - (*TamTelTypeAttribute)(nil), // 335: lemming.dataplane.sai.TamTelTypeAttribute - (*TamTransportAttribute)(nil), // 336: lemming.dataplane.sai.TamTransportAttribute - (*TunnelAttribute)(nil), // 337: lemming.dataplane.sai.TunnelAttribute - (*TunnelMapAttribute)(nil), // 338: lemming.dataplane.sai.TunnelMapAttribute - (*TunnelMapEntryAttribute)(nil), // 339: lemming.dataplane.sai.TunnelMapEntryAttribute - (*TunnelTermTableEntryAttribute)(nil), // 340: lemming.dataplane.sai.TunnelTermTableEntryAttribute - (*UdfAttribute)(nil), // 341: lemming.dataplane.sai.UdfAttribute - (*UdfGroupAttribute)(nil), // 342: lemming.dataplane.sai.UdfGroupAttribute - (*UdfMatchAttribute)(nil), // 343: lemming.dataplane.sai.UdfMatchAttribute - (*VirtualRouterAttribute)(nil), // 344: lemming.dataplane.sai.VirtualRouterAttribute - (*VlanAttribute)(nil), // 345: lemming.dataplane.sai.VlanAttribute - (*VlanMemberAttribute)(nil), // 346: lemming.dataplane.sai.VlanMemberAttribute - (*WredAttribute)(nil), // 347: lemming.dataplane.sai.WredAttribute - nil, // 348: lemming.dataplane.sai.UintMap.UintmapEntry - nil, // 349: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry - nil, // 350: lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry - (*timestamppb.Timestamp)(nil), // 351: google.protobuf.Timestamp - (*descriptorpb.FieldOptions)(nil), // 352: google.protobuf.FieldOptions - (*descriptorpb.MessageOptions)(nil), // 353: google.protobuf.MessageOptions + (DashCapsHaScopeLevel)(0), // 34: lemming.dataplane.sai.DashCapsHaScopeLevel + (DashDirection)(0), // 35: lemming.dataplane.sai.DashDirection + (DashEncapsulation)(0), // 36: lemming.dataplane.sai.DashEncapsulation + (DashEniMacOverrideType)(0), // 37: lemming.dataplane.sai.DashEniMacOverrideType + (DashFlowAction)(0), // 38: lemming.dataplane.sai.DashFlowAction + (DashFlowEnabledKey)(0), // 39: lemming.dataplane.sai.DashFlowEnabledKey + (DashFlowEntryBulkGetSessionFilterKey)(0), // 40: lemming.dataplane.sai.DashFlowEntryBulkGetSessionFilterKey + (DashFlowEntryBulkGetSessionMode)(0), // 41: lemming.dataplane.sai.DashFlowEntryBulkGetSessionMode + (DashFlowEntryBulkGetSessionOpKey)(0), // 42: lemming.dataplane.sai.DashFlowEntryBulkGetSessionOpKey + (DashHaRole)(0), // 43: lemming.dataplane.sai.DashHaRole + (DashHaState)(0), // 44: lemming.dataplane.sai.DashHaState + (DashRoutingActions)(0), // 45: lemming.dataplane.sai.DashRoutingActions + (DashTunnelDscpMode)(0), // 46: lemming.dataplane.sai.DashTunnelDscpMode + (DebugCounterBindMethod)(0), // 47: lemming.dataplane.sai.DebugCounterBindMethod + (DebugCounterType)(0), // 48: lemming.dataplane.sai.DebugCounterType + (DtelEventType)(0), // 49: lemming.dataplane.sai.DtelEventType + (EcnMarkMode)(0), // 50: lemming.dataplane.sai.EcnMarkMode + (ErspanEncapsulationType)(0), // 51: lemming.dataplane.sai.ErspanEncapsulationType + (FdbEntryType)(0), // 52: lemming.dataplane.sai.FdbEntryType + (FdbEvent)(0), // 53: lemming.dataplane.sai.FdbEvent + (FdbFlushEntryType)(0), // 54: lemming.dataplane.sai.FdbFlushEntryType + (HaScopeEvent)(0), // 55: lemming.dataplane.sai.HaScopeEvent + (HaSetEvent)(0), // 56: lemming.dataplane.sai.HaSetEvent + (HashAlgorithm)(0), // 57: lemming.dataplane.sai.HashAlgorithm + (HealthDataType)(0), // 58: lemming.dataplane.sai.HealthDataType + (HostifTableEntryChannelType)(0), // 59: lemming.dataplane.sai.HostifTableEntryChannelType + (HostifTableEntryType)(0), // 60: lemming.dataplane.sai.HostifTableEntryType + (HostifTrapType)(0), // 61: lemming.dataplane.sai.HostifTrapType + (HostifTxType)(0), // 62: lemming.dataplane.sai.HostifTxType + (HostifType)(0), // 63: lemming.dataplane.sai.HostifType + (HostifUserDefinedTrapType)(0), // 64: lemming.dataplane.sai.HostifUserDefinedTrapType + (HostifVlanTag)(0), // 65: lemming.dataplane.sai.HostifVlanTag + (IcmpEchoSessionStat)(0), // 66: lemming.dataplane.sai.IcmpEchoSessionStat + (IcmpEchoSessionState)(0), // 67: lemming.dataplane.sai.IcmpEchoSessionState + (InDropReason)(0), // 68: lemming.dataplane.sai.InDropReason + (IngressPriorityGroupStat)(0), // 69: lemming.dataplane.sai.IngressPriorityGroupStat + (InsegEntryPopQosMode)(0), // 70: lemming.dataplane.sai.InsegEntryPopQosMode + (InsegEntryPopTtlMode)(0), // 71: lemming.dataplane.sai.InsegEntryPopTtlMode + (InsegEntryPscType)(0), // 72: lemming.dataplane.sai.InsegEntryPscType + (IpAddrFamily)(0), // 73: lemming.dataplane.sai.IpAddrFamily + (IpmcEntryType)(0), // 74: lemming.dataplane.sai.IpmcEntryType + (IpsecCipher)(0), // 75: lemming.dataplane.sai.IpsecCipher + (IpsecDirection)(0), // 76: lemming.dataplane.sai.IpsecDirection + (IpsecPortStat)(0), // 77: lemming.dataplane.sai.IpsecPortStat + (IpsecSaOctetCountStatus)(0), // 78: lemming.dataplane.sai.IpsecSaOctetCountStatus + (IpsecSaStat)(0), // 79: lemming.dataplane.sai.IpsecSaStat + (IsolationGroupType)(0), // 80: lemming.dataplane.sai.IsolationGroupType + (L2McEntryType)(0), // 81: lemming.dataplane.sai.L2mcEntryType + (LogLevel)(0), // 82: lemming.dataplane.sai.LogLevel + (MacsecCipherSuite)(0), // 83: lemming.dataplane.sai.MacsecCipherSuite + (MacsecDirection)(0), // 84: lemming.dataplane.sai.MacsecDirection + (MacsecFlowStat)(0), // 85: lemming.dataplane.sai.MacsecFlowStat + (MacsecMaxSecureAssociationsPerSc)(0), // 86: lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc + (MacsecPortStat)(0), // 87: lemming.dataplane.sai.MacsecPortStat + (MacsecSaStat)(0), // 88: lemming.dataplane.sai.MacsecSaStat + (MacsecScStat)(0), // 89: lemming.dataplane.sai.MacsecScStat + (MeterType)(0), // 90: lemming.dataplane.sai.MeterType + (MirrorSessionCongestionMode)(0), // 91: lemming.dataplane.sai.MirrorSessionCongestionMode + (MirrorSessionType)(0), // 92: lemming.dataplane.sai.MirrorSessionType + (MySidEntryEndpointBehaviorFlavor)(0), // 93: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor + (MySidEntryEndpointBehavior)(0), // 94: lemming.dataplane.sai.MySidEntryEndpointBehavior + (NatEvent)(0), // 95: lemming.dataplane.sai.NatEvent + (NatType)(0), // 96: lemming.dataplane.sai.NatType + (NativeHashField)(0), // 97: lemming.dataplane.sai.NativeHashField + (NextHopGroupMapType)(0), // 98: lemming.dataplane.sai.NextHopGroupMapType + (NextHopGroupMemberConfiguredRole)(0), // 99: lemming.dataplane.sai.NextHopGroupMemberConfiguredRole + (NextHopGroupMemberObservedRole)(0), // 100: lemming.dataplane.sai.NextHopGroupMemberObservedRole + (NextHopGroupType)(0), // 101: lemming.dataplane.sai.NextHopGroupType + (NextHopType)(0), // 102: lemming.dataplane.sai.NextHopType + (ObjectStage)(0), // 103: lemming.dataplane.sai.ObjectStage + (ObjectTypeExtensions)(0), // 104: lemming.dataplane.sai.ObjectTypeExtensions + (ObjectType)(0), // 105: lemming.dataplane.sai.ObjectType + (OutDropReason)(0), // 106: lemming.dataplane.sai.OutDropReason + (OutsegExpMode)(0), // 107: lemming.dataplane.sai.OutsegExpMode + (OutsegTtlMode)(0), // 108: lemming.dataplane.sai.OutsegTtlMode + (OutsegType)(0), // 109: lemming.dataplane.sai.OutsegType + (PacketAction)(0), // 110: lemming.dataplane.sai.PacketAction + (PacketColor)(0), // 111: lemming.dataplane.sai.PacketColor + (PacketVlan)(0), // 112: lemming.dataplane.sai.PacketVlan + (PoePortActiveChannelType)(0), // 113: lemming.dataplane.sai.PoePortActiveChannelType + (PoePortClassMethodType)(0), // 114: lemming.dataplane.sai.PoePortClassMethodType + (PoePortSignatureType)(0), // 115: lemming.dataplane.sai.PoePortSignatureType + (PolicerColorSource)(0), // 116: lemming.dataplane.sai.PolicerColorSource + (PolicerMode)(0), // 117: lemming.dataplane.sai.PolicerMode + (PolicerStat)(0), // 118: lemming.dataplane.sai.PolicerStat + (PortAttrExtensions)(0), // 119: lemming.dataplane.sai.PortAttrExtensions + (PortAutoNegConfigMode)(0), // 120: lemming.dataplane.sai.PortAutoNegConfigMode + (PortBreakoutModeType)(0), // 121: lemming.dataplane.sai.PortBreakoutModeType + (PortCablePairState)(0), // 122: lemming.dataplane.sai.PortCablePairState + (PortCableType)(0), // 123: lemming.dataplane.sai.PortCableType + (PortConnectorFailoverMode)(0), // 124: lemming.dataplane.sai.PortConnectorFailoverMode + (PortDatapathEnable)(0), // 125: lemming.dataplane.sai.PortDatapathEnable + (PortDualMedia)(0), // 126: lemming.dataplane.sai.PortDualMedia + (PortErrStatus)(0), // 127: lemming.dataplane.sai.PortErrStatus + (PortErrorStatus)(0), // 128: lemming.dataplane.sai.PortErrorStatus + (PortFecModeExtended)(0), // 129: lemming.dataplane.sai.PortFecModeExtended + (PortFecMode)(0), // 130: lemming.dataplane.sai.PortFecMode + (PortFlowControlMode)(0), // 131: lemming.dataplane.sai.PortFlowControlMode + (PortHostTxReadyStatus)(0), // 132: lemming.dataplane.sai.PortHostTxReadyStatus + (PortInterfaceType)(0), // 133: lemming.dataplane.sai.PortInterfaceType + (PortInternalLoopbackMode)(0), // 134: lemming.dataplane.sai.PortInternalLoopbackMode + (PortLinkTrainingFailureStatus)(0), // 135: lemming.dataplane.sai.PortLinkTrainingFailureStatus + (PortLinkTrainingRxStatus)(0), // 136: lemming.dataplane.sai.PortLinkTrainingRxStatus + (PortLoopbackMode)(0), // 137: lemming.dataplane.sai.PortLoopbackMode + (PortMdixModeConfig)(0), // 138: lemming.dataplane.sai.PortMdixModeConfig + (PortMdixModeStatus)(0), // 139: lemming.dataplane.sai.PortMdixModeStatus + (PortMediaType)(0), // 140: lemming.dataplane.sai.PortMediaType + (PortModuleType)(0), // 141: lemming.dataplane.sai.PortModuleType + (PortOperStatus)(0), // 142: lemming.dataplane.sai.PortOperStatus + (PortPathTracingTimestampType)(0), // 143: lemming.dataplane.sai.PortPathTracingTimestampType + (PortPoolStat)(0), // 144: lemming.dataplane.sai.PortPoolStat + (PortPrbsConfig)(0), // 145: lemming.dataplane.sai.PortPrbsConfig + (PortPrbsRxStatus)(0), // 146: lemming.dataplane.sai.PortPrbsRxStatus + (PortPriorityFlowControlMode)(0), // 147: lemming.dataplane.sai.PortPriorityFlowControlMode + (PortPtpMode)(0), // 148: lemming.dataplane.sai.PortPtpMode + (PortStatExtensions)(0), // 149: lemming.dataplane.sai.PortStatExtensions + (PortStat)(0), // 150: lemming.dataplane.sai.PortStat + (PortType)(0), // 151: lemming.dataplane.sai.PortType + (QosMapType)(0), // 152: lemming.dataplane.sai.QosMapType + (QueuePfcContinuousDeadlockState)(0), // 153: lemming.dataplane.sai.QueuePfcContinuousDeadlockState + (QueuePfcDeadlockEventType)(0), // 154: lemming.dataplane.sai.QueuePfcDeadlockEventType + (QueueStat)(0), // 155: lemming.dataplane.sai.QueueStat + (QueueType)(0), // 156: lemming.dataplane.sai.QueueType + (RouterInterfaceStat)(0), // 157: lemming.dataplane.sai.RouterInterfaceStat + (RouterInterfaceType)(0), // 158: lemming.dataplane.sai.RouterInterfaceType + (SamplepacketMode)(0), // 159: lemming.dataplane.sai.SamplepacketMode + (SamplepacketType)(0), // 160: lemming.dataplane.sai.SamplepacketType + (SchedulingType)(0), // 161: lemming.dataplane.sai.SchedulingType + (SerCorrectionType)(0), // 162: lemming.dataplane.sai.SerCorrectionType + (SerLogType)(0), // 163: lemming.dataplane.sai.SerLogType + (SerType)(0), // 164: lemming.dataplane.sai.SerType + (Srv6SidlistStat)(0), // 165: lemming.dataplane.sai.Srv6SidlistStat + (Srv6SidlistType)(0), // 166: lemming.dataplane.sai.Srv6SidlistType + (StatsCountMode)(0), // 167: lemming.dataplane.sai.StatsCountMode + (StatsMode)(0), // 168: lemming.dataplane.sai.StatsMode + (StpPortState)(0), // 169: lemming.dataplane.sai.StpPortState + (SwitchAsicSdkHealthCategory)(0), // 170: lemming.dataplane.sai.SwitchAsicSdkHealthCategory + (SwitchAsicSdkHealthSeverity)(0), // 171: lemming.dataplane.sai.SwitchAsicSdkHealthSeverity + (SwitchAttrExtensions)(0), // 172: lemming.dataplane.sai.SwitchAttrExtensions + (SwitchFailoverConfigMode)(0), // 173: lemming.dataplane.sai.SwitchFailoverConfigMode + (SwitchFirmwareLoadMethod)(0), // 174: lemming.dataplane.sai.SwitchFirmwareLoadMethod + (SwitchFirmwareLoadType)(0), // 175: lemming.dataplane.sai.SwitchFirmwareLoadType + (SwitchHardwareAccessBus)(0), // 176: lemming.dataplane.sai.SwitchHardwareAccessBus + (SwitchHostifOperStatusUpdateMode)(0), // 177: lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode + (SwitchMcastSnoopingCapability)(0), // 178: lemming.dataplane.sai.SwitchMcastSnoopingCapability + (SwitchOperStatus)(0), // 179: lemming.dataplane.sai.SwitchOperStatus + (SwitchRestartType)(0), // 180: lemming.dataplane.sai.SwitchRestartType + (SwitchStat)(0), // 181: lemming.dataplane.sai.SwitchStat + (SwitchSwitchingMode)(0), // 182: lemming.dataplane.sai.SwitchSwitchingMode + (SwitchType)(0), // 183: lemming.dataplane.sai.SwitchType + (SystemPortType)(0), // 184: lemming.dataplane.sai.SystemPortType + (TableBitmapClassificationEntryAction)(0), // 185: lemming.dataplane.sai.TableBitmapClassificationEntryAction + (TableBitmapClassificationEntryStat)(0), // 186: lemming.dataplane.sai.TableBitmapClassificationEntryStat + (TableBitmapRouterEntryAction)(0), // 187: lemming.dataplane.sai.TableBitmapRouterEntryAction + (TableBitmapRouterEntryStat)(0), // 188: lemming.dataplane.sai.TableBitmapRouterEntryStat + (TableMetaTunnelEntryAction)(0), // 189: lemming.dataplane.sai.TableMetaTunnelEntryAction + (TableMetaTunnelEntryStat)(0), // 190: lemming.dataplane.sai.TableMetaTunnelEntryStat + (TamBindPointType)(0), // 191: lemming.dataplane.sai.TamBindPointType + (TamEventThresholdUnit)(0), // 192: lemming.dataplane.sai.TamEventThresholdUnit + (TamEventType)(0), // 193: lemming.dataplane.sai.TamEventType + (TamIntPresenceType)(0), // 194: lemming.dataplane.sai.TamIntPresenceType + (TamIntType)(0), // 195: lemming.dataplane.sai.TamIntType + (TamReportIntervalUnit)(0), // 196: lemming.dataplane.sai.TamReportIntervalUnit + (TamReportMode)(0), // 197: lemming.dataplane.sai.TamReportMode + (TamReportType)(0), // 198: lemming.dataplane.sai.TamReportType + (TamReportingUnit)(0), // 199: lemming.dataplane.sai.TamReportingUnit + (TamTelMathFuncType)(0), // 200: lemming.dataplane.sai.TamTelMathFuncType + (TamTelemetryType)(0), // 201: lemming.dataplane.sai.TamTelemetryType + (TamTransportAuthType)(0), // 202: lemming.dataplane.sai.TamTransportAuthType + (TamTransportType)(0), // 203: lemming.dataplane.sai.TamTransportType + (TlvType)(0), // 204: lemming.dataplane.sai.TlvType + (TunnelDecapEcnMode)(0), // 205: lemming.dataplane.sai.TunnelDecapEcnMode + (TunnelDscpMode)(0), // 206: lemming.dataplane.sai.TunnelDscpMode + (TunnelEncapEcnMode)(0), // 207: lemming.dataplane.sai.TunnelEncapEcnMode + (TunnelMapType)(0), // 208: lemming.dataplane.sai.TunnelMapType + (TunnelPeerMode)(0), // 209: lemming.dataplane.sai.TunnelPeerMode + (TunnelStat)(0), // 210: lemming.dataplane.sai.TunnelStat + (TunnelTermTableEntryType)(0), // 211: lemming.dataplane.sai.TunnelTermTableEntryType + (TunnelTtlMode)(0), // 212: lemming.dataplane.sai.TunnelTtlMode + (TunnelType)(0), // 213: lemming.dataplane.sai.TunnelType + (TunnelVxlanUdpSportMode)(0), // 214: lemming.dataplane.sai.TunnelVxlanUdpSportMode + (UdfBase)(0), // 215: lemming.dataplane.sai.UdfBase + (UdfGroupType)(0), // 216: lemming.dataplane.sai.UdfGroupType + (VlanFloodControlType)(0), // 217: lemming.dataplane.sai.VlanFloodControlType + (VlanMcastLookupKeyType)(0), // 218: lemming.dataplane.sai.VlanMcastLookupKeyType + (VlanStat)(0), // 219: lemming.dataplane.sai.VlanStat + (VlanTaggingMode)(0), // 220: lemming.dataplane.sai.VlanTaggingMode + (*AclActionData)(nil), // 221: lemming.dataplane.sai.AclActionData + (*ACLCapability)(nil), // 222: lemming.dataplane.sai.ACLCapability + (*AclFieldData)(nil), // 223: lemming.dataplane.sai.AclFieldData + (*Uint64List)(nil), // 224: lemming.dataplane.sai.Uint64List + (*ACLResource)(nil), // 225: lemming.dataplane.sai.ACLResource + (*BfdSessionStateChangeNotificationData)(nil), // 226: lemming.dataplane.sai.BfdSessionStateChangeNotificationData + (*FabricPortReachability)(nil), // 227: lemming.dataplane.sai.FabricPortReachability + (*FdbEntry)(nil), // 228: lemming.dataplane.sai.FdbEntry + (*FdbEventNotificationData)(nil), // 229: lemming.dataplane.sai.FdbEventNotificationData + (*InsegEntry)(nil), // 230: lemming.dataplane.sai.InsegEntry + (*IpPrefix)(nil), // 231: lemming.dataplane.sai.IpPrefix + (*IpmcEntry)(nil), // 232: lemming.dataplane.sai.IpmcEntry + (*IpsecSaStatusNotificationData)(nil), // 233: lemming.dataplane.sai.IpsecSaStatusNotificationData + (*L2McEntry)(nil), // 234: lemming.dataplane.sai.L2mcEntry + (*LatchStatus)(nil), // 235: lemming.dataplane.sai.LatchStatus + (*UintMap)(nil), // 236: lemming.dataplane.sai.UintMap + (*McastFdbEntry)(nil), // 237: lemming.dataplane.sai.McastFdbEntry + (*MySidEntry)(nil), // 238: lemming.dataplane.sai.MySidEntry + (*NatEntryData)(nil), // 239: lemming.dataplane.sai.NatEntryData + (*NatEntry)(nil), // 240: lemming.dataplane.sai.NatEntry + (*NeighborEntry)(nil), // 241: lemming.dataplane.sai.NeighborEntry + (*PortEyeValues)(nil), // 242: lemming.dataplane.sai.PortEyeValues + (*PortLaneLatchStatus)(nil), // 243: lemming.dataplane.sai.PortLaneLatchStatus + (*PortOperStatusNotification)(nil), // 244: lemming.dataplane.sai.PortOperStatusNotification + (*PRBS_RXState)(nil), // 245: lemming.dataplane.sai.PRBS_RXState + (*QOSMapParams)(nil), // 246: lemming.dataplane.sai.QOSMapParams + (*QOSMap)(nil), // 247: lemming.dataplane.sai.QOSMap + (*QueueDeadlockNotificationData)(nil), // 248: lemming.dataplane.sai.QueueDeadlockNotificationData + (*RouteEntry)(nil), // 249: lemming.dataplane.sai.RouteEntry + (*SystemPortConfig)(nil), // 250: lemming.dataplane.sai.SystemPortConfig + (*HMAC)(nil), // 251: lemming.dataplane.sai.HMAC + (*TLVEntry)(nil), // 252: lemming.dataplane.sai.TLVEntry + (*Uint32Range)(nil), // 253: lemming.dataplane.sai.Uint32Range + (*ObjectTypeQueryRequest)(nil), // 254: lemming.dataplane.sai.ObjectTypeQueryRequest + (*ObjectTypeQueryResponse)(nil), // 255: lemming.dataplane.sai.ObjectTypeQueryResponse + (*InitializeRequest)(nil), // 256: lemming.dataplane.sai.InitializeRequest + (*InitializeResponse)(nil), // 257: lemming.dataplane.sai.InitializeResponse + (*UninitializeRequest)(nil), // 258: lemming.dataplane.sai.UninitializeRequest + (*UninitializeResponse)(nil), // 259: lemming.dataplane.sai.UninitializeResponse + (*AclCounterAttribute)(nil), // 260: lemming.dataplane.sai.AclCounterAttribute + (*AclEntryAttribute)(nil), // 261: lemming.dataplane.sai.AclEntryAttribute + (*AclRangeAttribute)(nil), // 262: lemming.dataplane.sai.AclRangeAttribute + (*AclTableAttribute)(nil), // 263: lemming.dataplane.sai.AclTableAttribute + (*AclTableChainGroupAttribute)(nil), // 264: lemming.dataplane.sai.AclTableChainGroupAttribute + (*AclTableGroupAttribute)(nil), // 265: lemming.dataplane.sai.AclTableGroupAttribute + (*AclTableGroupMemberAttribute)(nil), // 266: lemming.dataplane.sai.AclTableGroupMemberAttribute + (*BfdSessionAttribute)(nil), // 267: lemming.dataplane.sai.BfdSessionAttribute + (*BridgeAttribute)(nil), // 268: lemming.dataplane.sai.BridgeAttribute + (*BridgePortAttribute)(nil), // 269: lemming.dataplane.sai.BridgePortAttribute + (*BufferPoolAttribute)(nil), // 270: lemming.dataplane.sai.BufferPoolAttribute + (*BufferProfileAttribute)(nil), // 271: lemming.dataplane.sai.BufferProfileAttribute + (*CounterAttribute)(nil), // 272: lemming.dataplane.sai.CounterAttribute + (*DebugCounterAttribute)(nil), // 273: lemming.dataplane.sai.DebugCounterAttribute + (*DtelAttribute)(nil), // 274: lemming.dataplane.sai.DtelAttribute + (*DtelEventAttribute)(nil), // 275: lemming.dataplane.sai.DtelEventAttribute + (*DtelIntSessionAttribute)(nil), // 276: lemming.dataplane.sai.DtelIntSessionAttribute + (*DtelQueueReportAttribute)(nil), // 277: lemming.dataplane.sai.DtelQueueReportAttribute + (*DtelReportSessionAttribute)(nil), // 278: lemming.dataplane.sai.DtelReportSessionAttribute + (*FdbEntryAttribute)(nil), // 279: lemming.dataplane.sai.FdbEntryAttribute + (*FdbFlushAttribute)(nil), // 280: lemming.dataplane.sai.FdbFlushAttribute + (*FineGrainedHashFieldAttribute)(nil), // 281: lemming.dataplane.sai.FineGrainedHashFieldAttribute + (*GenericProgrammableAttribute)(nil), // 282: lemming.dataplane.sai.GenericProgrammableAttribute + (*HashAttribute)(nil), // 283: lemming.dataplane.sai.HashAttribute + (*HostifAttribute)(nil), // 284: lemming.dataplane.sai.HostifAttribute + (*HostifPacketAttribute)(nil), // 285: lemming.dataplane.sai.HostifPacketAttribute + (*HostifTableEntryAttribute)(nil), // 286: lemming.dataplane.sai.HostifTableEntryAttribute + (*HostifTrapAttribute)(nil), // 287: lemming.dataplane.sai.HostifTrapAttribute + (*HostifTrapGroupAttribute)(nil), // 288: lemming.dataplane.sai.HostifTrapGroupAttribute + (*HostifUserDefinedTrapAttribute)(nil), // 289: lemming.dataplane.sai.HostifUserDefinedTrapAttribute + (*IcmpEchoSessionAttribute)(nil), // 290: lemming.dataplane.sai.IcmpEchoSessionAttribute + (*IngressPriorityGroupAttribute)(nil), // 291: lemming.dataplane.sai.IngressPriorityGroupAttribute + (*InsegEntryAttribute)(nil), // 292: lemming.dataplane.sai.InsegEntryAttribute + (*IpmcEntryAttribute)(nil), // 293: lemming.dataplane.sai.IpmcEntryAttribute + (*IpmcGroupAttribute)(nil), // 294: lemming.dataplane.sai.IpmcGroupAttribute + (*IpmcGroupMemberAttribute)(nil), // 295: lemming.dataplane.sai.IpmcGroupMemberAttribute + (*IpsecAttribute)(nil), // 296: lemming.dataplane.sai.IpsecAttribute + (*IpsecPortAttribute)(nil), // 297: lemming.dataplane.sai.IpsecPortAttribute + (*IpsecSaAttribute)(nil), // 298: lemming.dataplane.sai.IpsecSaAttribute + (*IsolationGroupAttribute)(nil), // 299: lemming.dataplane.sai.IsolationGroupAttribute + (*IsolationGroupMemberAttribute)(nil), // 300: lemming.dataplane.sai.IsolationGroupMemberAttribute + (*L2McEntryAttribute)(nil), // 301: lemming.dataplane.sai.L2mcEntryAttribute + (*L2McGroupAttribute)(nil), // 302: lemming.dataplane.sai.L2mcGroupAttribute + (*L2McGroupMemberAttribute)(nil), // 303: lemming.dataplane.sai.L2mcGroupMemberAttribute + (*LagAttribute)(nil), // 304: lemming.dataplane.sai.LagAttribute + (*LagMemberAttribute)(nil), // 305: lemming.dataplane.sai.LagMemberAttribute + (*MacsecAttribute)(nil), // 306: lemming.dataplane.sai.MacsecAttribute + (*MacsecFlowAttribute)(nil), // 307: lemming.dataplane.sai.MacsecFlowAttribute + (*MacsecPortAttribute)(nil), // 308: lemming.dataplane.sai.MacsecPortAttribute + (*MacsecSaAttribute)(nil), // 309: lemming.dataplane.sai.MacsecSaAttribute + (*MacsecScAttribute)(nil), // 310: lemming.dataplane.sai.MacsecScAttribute + (*McastFdbEntryAttribute)(nil), // 311: lemming.dataplane.sai.McastFdbEntryAttribute + (*MirrorSessionAttribute)(nil), // 312: lemming.dataplane.sai.MirrorSessionAttribute + (*MyMacAttribute)(nil), // 313: lemming.dataplane.sai.MyMacAttribute + (*MySidEntryAttribute)(nil), // 314: lemming.dataplane.sai.MySidEntryAttribute + (*NatEntryAttribute)(nil), // 315: lemming.dataplane.sai.NatEntryAttribute + (*NatZoneCounterAttribute)(nil), // 316: lemming.dataplane.sai.NatZoneCounterAttribute + (*NeighborEntryAttribute)(nil), // 317: lemming.dataplane.sai.NeighborEntryAttribute + (*NextHopAttribute)(nil), // 318: lemming.dataplane.sai.NextHopAttribute + (*NextHopGroupAttribute)(nil), // 319: lemming.dataplane.sai.NextHopGroupAttribute + (*NextHopGroupMapAttribute)(nil), // 320: lemming.dataplane.sai.NextHopGroupMapAttribute + (*NextHopGroupMemberAttribute)(nil), // 321: lemming.dataplane.sai.NextHopGroupMemberAttribute + (*PolicerAttribute)(nil), // 322: lemming.dataplane.sai.PolicerAttribute + (*PortAttribute)(nil), // 323: lemming.dataplane.sai.PortAttribute + (*PortConnectorAttribute)(nil), // 324: lemming.dataplane.sai.PortConnectorAttribute + (*PortPoolAttribute)(nil), // 325: lemming.dataplane.sai.PortPoolAttribute + (*PortSerdesAttribute)(nil), // 326: lemming.dataplane.sai.PortSerdesAttribute + (*QosMapAttribute)(nil), // 327: lemming.dataplane.sai.QosMapAttribute + (*QueueAttribute)(nil), // 328: lemming.dataplane.sai.QueueAttribute + (*RouterInterfaceAttribute)(nil), // 329: lemming.dataplane.sai.RouterInterfaceAttribute + (*RouteEntryAttribute)(nil), // 330: lemming.dataplane.sai.RouteEntryAttribute + (*RpfGroupAttribute)(nil), // 331: lemming.dataplane.sai.RpfGroupAttribute + (*RpfGroupMemberAttribute)(nil), // 332: lemming.dataplane.sai.RpfGroupMemberAttribute + (*SamplepacketAttribute)(nil), // 333: lemming.dataplane.sai.SamplepacketAttribute + (*SchedulerAttribute)(nil), // 334: lemming.dataplane.sai.SchedulerAttribute + (*SchedulerGroupAttribute)(nil), // 335: lemming.dataplane.sai.SchedulerGroupAttribute + (*Srv6SidlistAttribute)(nil), // 336: lemming.dataplane.sai.Srv6SidlistAttribute + (*StpAttribute)(nil), // 337: lemming.dataplane.sai.StpAttribute + (*StpPortAttribute)(nil), // 338: lemming.dataplane.sai.StpPortAttribute + (*SwitchAttribute)(nil), // 339: lemming.dataplane.sai.SwitchAttribute + (*SwitchTunnelAttribute)(nil), // 340: lemming.dataplane.sai.SwitchTunnelAttribute + (*SystemPortAttribute)(nil), // 341: lemming.dataplane.sai.SystemPortAttribute + (*TableBitmapClassificationEntryAttribute)(nil), // 342: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute + (*TableBitmapRouterEntryAttribute)(nil), // 343: lemming.dataplane.sai.TableBitmapRouterEntryAttribute + (*TableMetaTunnelEntryAttribute)(nil), // 344: lemming.dataplane.sai.TableMetaTunnelEntryAttribute + (*TamAttribute)(nil), // 345: lemming.dataplane.sai.TamAttribute + (*TamCollectorAttribute)(nil), // 346: lemming.dataplane.sai.TamCollectorAttribute + (*TamCounterSubscriptionAttribute)(nil), // 347: lemming.dataplane.sai.TamCounterSubscriptionAttribute + (*TamEventAttribute)(nil), // 348: lemming.dataplane.sai.TamEventAttribute + (*TamEventActionAttribute)(nil), // 349: lemming.dataplane.sai.TamEventActionAttribute + (*TamEventThresholdAttribute)(nil), // 350: lemming.dataplane.sai.TamEventThresholdAttribute + (*TamIntAttribute)(nil), // 351: lemming.dataplane.sai.TamIntAttribute + (*TamMathFuncAttribute)(nil), // 352: lemming.dataplane.sai.TamMathFuncAttribute + (*TamReportAttribute)(nil), // 353: lemming.dataplane.sai.TamReportAttribute + (*TamTelemetryAttribute)(nil), // 354: lemming.dataplane.sai.TamTelemetryAttribute + (*TamTelTypeAttribute)(nil), // 355: lemming.dataplane.sai.TamTelTypeAttribute + (*TamTransportAttribute)(nil), // 356: lemming.dataplane.sai.TamTransportAttribute + (*TunnelAttribute)(nil), // 357: lemming.dataplane.sai.TunnelAttribute + (*TunnelMapAttribute)(nil), // 358: lemming.dataplane.sai.TunnelMapAttribute + (*TunnelMapEntryAttribute)(nil), // 359: lemming.dataplane.sai.TunnelMapEntryAttribute + (*TunnelTermTableEntryAttribute)(nil), // 360: lemming.dataplane.sai.TunnelTermTableEntryAttribute + (*UdfAttribute)(nil), // 361: lemming.dataplane.sai.UdfAttribute + (*UdfGroupAttribute)(nil), // 362: lemming.dataplane.sai.UdfGroupAttribute + (*UdfMatchAttribute)(nil), // 363: lemming.dataplane.sai.UdfMatchAttribute + (*VirtualRouterAttribute)(nil), // 364: lemming.dataplane.sai.VirtualRouterAttribute + (*VlanAttribute)(nil), // 365: lemming.dataplane.sai.VlanAttribute + (*VlanMemberAttribute)(nil), // 366: lemming.dataplane.sai.VlanMemberAttribute + (*WredAttribute)(nil), // 367: lemming.dataplane.sai.WredAttribute + nil, // 368: lemming.dataplane.sai.UintMap.UintmapEntry + nil, // 369: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry + nil, // 370: lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry + (*timestamppb.Timestamp)(nil), // 371: google.protobuf.Timestamp + (*descriptorpb.FieldOptions)(nil), // 372: google.protobuf.FieldOptions + (*descriptorpb.MessageOptions)(nil), // 373: google.protobuf.MessageOptions } var file_dataplane_proto_sai_common_proto_depIdxs = []int32{ - 205, // 0: lemming.dataplane.sai.AclActionData.objlist:type_name -> lemming.dataplane.sai.Uint64List - 96, // 1: lemming.dataplane.sai.AclActionData.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 224, // 0: lemming.dataplane.sai.AclActionData.objlist:type_name -> lemming.dataplane.sai.Uint64List + 110, // 1: lemming.dataplane.sai.AclActionData.packet_action:type_name -> lemming.dataplane.sai.PacketAction 0, // 2: lemming.dataplane.sai.ACLCapability.action_list:type_name -> lemming.dataplane.sai.AclActionType - 205, // 3: lemming.dataplane.sai.AclFieldData.mask_list:type_name -> lemming.dataplane.sai.Uint64List - 205, // 4: lemming.dataplane.sai.AclFieldData.data_list:type_name -> lemming.dataplane.sai.Uint64List + 224, // 3: lemming.dataplane.sai.AclFieldData.mask_list:type_name -> lemming.dataplane.sai.Uint64List + 224, // 4: lemming.dataplane.sai.AclFieldData.data_list:type_name -> lemming.dataplane.sai.Uint64List 4, // 5: lemming.dataplane.sai.AclFieldData.data_ip_type:type_name -> lemming.dataplane.sai.AclIpType 6, // 6: lemming.dataplane.sai.ACLResource.stage:type_name -> lemming.dataplane.sai.AclStage 1, // 7: lemming.dataplane.sai.ACLResource.bind_point:type_name -> lemming.dataplane.sai.AclBindPointType 17, // 8: lemming.dataplane.sai.BfdSessionStateChangeNotificationData.session_state:type_name -> lemming.dataplane.sai.BfdSessionState - 43, // 9: lemming.dataplane.sai.FdbEventNotificationData.event_type:type_name -> lemming.dataplane.sai.FdbEvent - 209, // 10: lemming.dataplane.sai.FdbEventNotificationData.fdb_entry:type_name -> lemming.dataplane.sai.FdbEntry - 260, // 11: lemming.dataplane.sai.FdbEventNotificationData.attrs:type_name -> lemming.dataplane.sai.FdbEntryAttribute - 60, // 12: lemming.dataplane.sai.IpmcEntry.type:type_name -> lemming.dataplane.sai.IpmcEntryType - 64, // 13: lemming.dataplane.sai.IpsecSaStatusNotificationData.ipsec_sa_octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus - 67, // 14: lemming.dataplane.sai.L2mcEntry.type:type_name -> lemming.dataplane.sai.L2mcEntryType - 348, // 15: lemming.dataplane.sai.UintMap.uintmap:type_name -> lemming.dataplane.sai.UintMap.UintmapEntry - 82, // 16: lemming.dataplane.sai.NatEntry.nat_type:type_name -> lemming.dataplane.sai.NatType - 220, // 17: lemming.dataplane.sai.NatEntry.data:type_name -> lemming.dataplane.sai.NatEntryData - 216, // 18: lemming.dataplane.sai.PortLaneLatchStatus.value:type_name -> lemming.dataplane.sai.LatchStatus - 127, // 19: lemming.dataplane.sai.PortOperStatusNotification.port_state:type_name -> lemming.dataplane.sai.PortOperStatus - 131, // 20: lemming.dataplane.sai.PRBS_RXState.rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus - 97, // 21: lemming.dataplane.sai.QOSMapParams.color:type_name -> lemming.dataplane.sai.PacketColor - 227, // 22: lemming.dataplane.sai.QOSMap.key:type_name -> lemming.dataplane.sai.QOSMapParams - 227, // 23: lemming.dataplane.sai.QOSMap.value:type_name -> lemming.dataplane.sai.QOSMapParams - 139, // 24: lemming.dataplane.sai.QueueDeadlockNotificationData.event:type_name -> lemming.dataplane.sai.QueuePfcDeadlockEventType - 212, // 25: lemming.dataplane.sai.RouteEntry.destination:type_name -> lemming.dataplane.sai.IpPrefix - 232, // 26: lemming.dataplane.sai.TLVEntry.hmac:type_name -> lemming.dataplane.sai.HMAC - 91, // 27: lemming.dataplane.sai.ObjectTypeQueryResponse.type:type_name -> lemming.dataplane.sai.ObjectType - 204, // 28: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 29: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 30: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 31: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 32: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 33: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 34: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 35: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 36: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 37: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 38: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 39: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 40: lemming.dataplane.sai.AclEntryAttribute.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 41: lemming.dataplane.sai.AclEntryAttribute.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 42: lemming.dataplane.sai.AclEntryAttribute.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 43: lemming.dataplane.sai.AclEntryAttribute.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 44: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 45: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 46: lemming.dataplane.sai.AclEntryAttribute.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 47: lemming.dataplane.sai.AclEntryAttribute.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 48: lemming.dataplane.sai.AclEntryAttribute.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 49: lemming.dataplane.sai.AclEntryAttribute.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 50: lemming.dataplane.sai.AclEntryAttribute.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 51: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 52: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 53: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 54: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 55: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 56: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 57: lemming.dataplane.sai.AclEntryAttribute.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 58: lemming.dataplane.sai.AclEntryAttribute.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 59: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 60: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 61: lemming.dataplane.sai.AclEntryAttribute.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 62: lemming.dataplane.sai.AclEntryAttribute.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 63: lemming.dataplane.sai.AclEntryAttribute.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 64: lemming.dataplane.sai.AclEntryAttribute.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 65: lemming.dataplane.sai.AclEntryAttribute.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 66: lemming.dataplane.sai.AclEntryAttribute.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 67: lemming.dataplane.sai.AclEntryAttribute.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 68: lemming.dataplane.sai.AclEntryAttribute.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 69: lemming.dataplane.sai.AclEntryAttribute.field_tos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 70: lemming.dataplane.sai.AclEntryAttribute.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 71: lemming.dataplane.sai.AclEntryAttribute.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 72: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 73: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 74: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 75: lemming.dataplane.sai.AclEntryAttribute.field_tc:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 76: lemming.dataplane.sai.AclEntryAttribute.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 77: lemming.dataplane.sai.AclEntryAttribute.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 78: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 79: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 80: lemming.dataplane.sai.AclEntryAttribute.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 81: lemming.dataplane.sai.AclEntryAttribute.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 82: lemming.dataplane.sai.AclEntryAttribute.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 83: lemming.dataplane.sai.AclEntryAttribute.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 84: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 85: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 86: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 87: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 88: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 89: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 90: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 91: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 92: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 93: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 94: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 95: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 96: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 97: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 98: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 99: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 100: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 101: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 102: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 103: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 104: lemming.dataplane.sai.AclEntryAttribute.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 105: lemming.dataplane.sai.AclEntryAttribute.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 106: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 107: lemming.dataplane.sai.AclEntryAttribute.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 108: lemming.dataplane.sai.AclEntryAttribute.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 109: lemming.dataplane.sai.AclEntryAttribute.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 110: lemming.dataplane.sai.AclEntryAttribute.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 111: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 112: lemming.dataplane.sai.AclEntryAttribute.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 113: lemming.dataplane.sai.AclEntryAttribute.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 114: lemming.dataplane.sai.AclEntryAttribute.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData - 349, // 115: lemming.dataplane.sai.AclEntryAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry - 204, // 116: lemming.dataplane.sai.AclEntryAttribute.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 117: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 118: lemming.dataplane.sai.AclEntryAttribute.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 119: lemming.dataplane.sai.AclEntryAttribute.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 120: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_mac:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 121: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 122: lemming.dataplane.sai.AclEntryAttribute.field_vrf_id:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 123: lemming.dataplane.sai.AclEntryAttribute.field_ipmc_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 124: lemming.dataplane.sai.AclEntryAttribute.field_tunnel_terminated:type_name -> lemming.dataplane.sai.AclFieldData - 202, // 125: lemming.dataplane.sai.AclEntryAttribute.action_redirect:type_name -> lemming.dataplane.sai.AclActionData - 202, // 126: lemming.dataplane.sai.AclEntryAttribute.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData - 202, // 127: lemming.dataplane.sai.AclEntryAttribute.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData - 202, // 128: lemming.dataplane.sai.AclEntryAttribute.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData - 202, // 129: lemming.dataplane.sai.AclEntryAttribute.action_flood:type_name -> lemming.dataplane.sai.AclActionData - 202, // 130: lemming.dataplane.sai.AclEntryAttribute.action_counter:type_name -> lemming.dataplane.sai.AclActionData - 202, // 131: lemming.dataplane.sai.AclEntryAttribute.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData - 202, // 132: lemming.dataplane.sai.AclEntryAttribute.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData - 202, // 133: lemming.dataplane.sai.AclEntryAttribute.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData - 202, // 134: lemming.dataplane.sai.AclEntryAttribute.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData - 202, // 135: lemming.dataplane.sai.AclEntryAttribute.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData - 202, // 136: lemming.dataplane.sai.AclEntryAttribute.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData - 202, // 137: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 138: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 202, // 139: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 140: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 202, // 141: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 142: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData - 202, // 143: lemming.dataplane.sai.AclEntryAttribute.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData - 202, // 144: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData - 202, // 145: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData - 202, // 146: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData - 202, // 147: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 202, // 148: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData - 202, // 149: lemming.dataplane.sai.AclEntryAttribute.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData - 202, // 150: lemming.dataplane.sai.AclEntryAttribute.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData - 202, // 151: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData - 202, // 152: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData - 202, // 153: lemming.dataplane.sai.AclEntryAttribute.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 202, // 154: lemming.dataplane.sai.AclEntryAttribute.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData - 202, // 155: lemming.dataplane.sai.AclEntryAttribute.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData - 202, // 156: lemming.dataplane.sai.AclEntryAttribute.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData - 202, // 157: lemming.dataplane.sai.AclEntryAttribute.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 158: lemming.dataplane.sai.AclEntryAttribute.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData - 202, // 159: lemming.dataplane.sai.AclEntryAttribute.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData - 202, // 160: lemming.dataplane.sai.AclEntryAttribute.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData - 202, // 161: lemming.dataplane.sai.AclEntryAttribute.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 202, // 162: lemming.dataplane.sai.AclEntryAttribute.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData - 202, // 163: lemming.dataplane.sai.AclEntryAttribute.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData - 202, // 164: lemming.dataplane.sai.AclEntryAttribute.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData - 202, // 165: lemming.dataplane.sai.AclEntryAttribute.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData - 202, // 166: lemming.dataplane.sai.AclEntryAttribute.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData - 202, // 167: lemming.dataplane.sai.AclEntryAttribute.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData - 202, // 168: lemming.dataplane.sai.AclEntryAttribute.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData - 202, // 169: lemming.dataplane.sai.AclEntryAttribute.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData - 202, // 170: lemming.dataplane.sai.AclEntryAttribute.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData - 202, // 171: lemming.dataplane.sai.AclEntryAttribute.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData - 202, // 172: lemming.dataplane.sai.AclEntryAttribute.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData - 202, // 173: lemming.dataplane.sai.AclEntryAttribute.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData - 202, // 174: lemming.dataplane.sai.AclEntryAttribute.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 175: lemming.dataplane.sai.AclEntryAttribute.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData - 202, // 176: lemming.dataplane.sai.AclEntryAttribute.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData - 202, // 177: lemming.dataplane.sai.AclEntryAttribute.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData - 202, // 178: lemming.dataplane.sai.AclEntryAttribute.action_set_ars_monitoring:type_name -> lemming.dataplane.sai.AclActionData - 202, // 179: lemming.dataplane.sai.AclEntryAttribute.action_set_ars_object:type_name -> lemming.dataplane.sai.AclActionData - 202, // 180: lemming.dataplane.sai.AclEntryAttribute.action_disable_ars_forwarding:type_name -> lemming.dataplane.sai.AclActionData - 202, // 181: lemming.dataplane.sai.AclEntryAttribute.action_chain_redirect:type_name -> lemming.dataplane.sai.AclActionData + 53, // 9: lemming.dataplane.sai.FdbEventNotificationData.event_type:type_name -> lemming.dataplane.sai.FdbEvent + 228, // 10: lemming.dataplane.sai.FdbEventNotificationData.fdb_entry:type_name -> lemming.dataplane.sai.FdbEntry + 279, // 11: lemming.dataplane.sai.FdbEventNotificationData.attrs:type_name -> lemming.dataplane.sai.FdbEntryAttribute + 74, // 12: lemming.dataplane.sai.IpmcEntry.type:type_name -> lemming.dataplane.sai.IpmcEntryType + 78, // 13: lemming.dataplane.sai.IpsecSaStatusNotificationData.ipsec_sa_octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus + 81, // 14: lemming.dataplane.sai.L2mcEntry.type:type_name -> lemming.dataplane.sai.L2mcEntryType + 368, // 15: lemming.dataplane.sai.UintMap.uintmap:type_name -> lemming.dataplane.sai.UintMap.UintmapEntry + 96, // 16: lemming.dataplane.sai.NatEntry.nat_type:type_name -> lemming.dataplane.sai.NatType + 239, // 17: lemming.dataplane.sai.NatEntry.data:type_name -> lemming.dataplane.sai.NatEntryData + 235, // 18: lemming.dataplane.sai.PortLaneLatchStatus.value:type_name -> lemming.dataplane.sai.LatchStatus + 142, // 19: lemming.dataplane.sai.PortOperStatusNotification.port_state:type_name -> lemming.dataplane.sai.PortOperStatus + 146, // 20: lemming.dataplane.sai.PRBS_RXState.rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus + 111, // 21: lemming.dataplane.sai.QOSMapParams.color:type_name -> lemming.dataplane.sai.PacketColor + 246, // 22: lemming.dataplane.sai.QOSMap.key:type_name -> lemming.dataplane.sai.QOSMapParams + 246, // 23: lemming.dataplane.sai.QOSMap.value:type_name -> lemming.dataplane.sai.QOSMapParams + 154, // 24: lemming.dataplane.sai.QueueDeadlockNotificationData.event:type_name -> lemming.dataplane.sai.QueuePfcDeadlockEventType + 231, // 25: lemming.dataplane.sai.RouteEntry.destination:type_name -> lemming.dataplane.sai.IpPrefix + 251, // 26: lemming.dataplane.sai.TLVEntry.hmac:type_name -> lemming.dataplane.sai.HMAC + 105, // 27: lemming.dataplane.sai.ObjectTypeQueryResponse.type:type_name -> lemming.dataplane.sai.ObjectType + 223, // 28: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 29: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 30: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 31: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 32: lemming.dataplane.sai.AclEntryAttribute.field_src_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 33: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 34: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word3:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 35: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word2:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 36: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word1:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 37: lemming.dataplane.sai.AclEntryAttribute.field_dst_ipv6_word0:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 38: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 39: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 40: lemming.dataplane.sai.AclEntryAttribute.field_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 41: lemming.dataplane.sai.AclEntryAttribute.field_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 42: lemming.dataplane.sai.AclEntryAttribute.field_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 43: lemming.dataplane.sai.AclEntryAttribute.field_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 44: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_ip:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 45: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_ip:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 46: lemming.dataplane.sai.AclEntryAttribute.field_in_ports:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 47: lemming.dataplane.sai.AclEntryAttribute.field_out_ports:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 48: lemming.dataplane.sai.AclEntryAttribute.field_in_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 49: lemming.dataplane.sai.AclEntryAttribute.field_out_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 50: lemming.dataplane.sai.AclEntryAttribute.field_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 51: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 52: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 53: lemming.dataplane.sai.AclEntryAttribute.field_outer_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 54: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_id:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 55: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 56: lemming.dataplane.sai.AclEntryAttribute.field_inner_vlan_cfi:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 57: lemming.dataplane.sai.AclEntryAttribute.field_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 58: lemming.dataplane.sai.AclEntryAttribute.field_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 59: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_src_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 60: lemming.dataplane.sai.AclEntryAttribute.field_inner_l4_dst_port:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 61: lemming.dataplane.sai.AclEntryAttribute.field_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 62: lemming.dataplane.sai.AclEntryAttribute.field_inner_ether_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 63: lemming.dataplane.sai.AclEntryAttribute.field_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 64: lemming.dataplane.sai.AclEntryAttribute.field_inner_ip_protocol:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 65: lemming.dataplane.sai.AclEntryAttribute.field_ip_identification:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 66: lemming.dataplane.sai.AclEntryAttribute.field_dscp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 67: lemming.dataplane.sai.AclEntryAttribute.field_ecn:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 68: lemming.dataplane.sai.AclEntryAttribute.field_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 69: lemming.dataplane.sai.AclEntryAttribute.field_tos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 70: lemming.dataplane.sai.AclEntryAttribute.field_ip_flags:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 71: lemming.dataplane.sai.AclEntryAttribute.field_tcp_flags:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 72: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 73: lemming.dataplane.sai.AclEntryAttribute.field_acl_ip_frag:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 74: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_flow_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 75: lemming.dataplane.sai.AclEntryAttribute.field_tc:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 76: lemming.dataplane.sai.AclEntryAttribute.field_icmp_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 77: lemming.dataplane.sai.AclEntryAttribute.field_icmp_code:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 78: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 79: lemming.dataplane.sai.AclEntryAttribute.field_icmpv6_code:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 80: lemming.dataplane.sai.AclEntryAttribute.field_packet_vlan:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 81: lemming.dataplane.sai.AclEntryAttribute.field_tunnel_vni:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 82: lemming.dataplane.sai.AclEntryAttribute.field_has_vlan_tag:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 83: lemming.dataplane.sai.AclEntryAttribute.field_macsec_sci:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 84: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 85: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 86: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_exp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 87: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label0_bos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 88: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 89: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 90: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_exp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 91: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label1_bos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 92: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 93: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 94: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_exp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 95: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label2_bos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 96: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 97: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 98: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_exp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 99: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label3_bos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 100: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_label:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 101: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_ttl:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 102: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_exp:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 103: lemming.dataplane.sai.AclEntryAttribute.field_mpls_label4_bos:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 104: lemming.dataplane.sai.AclEntryAttribute.field_fdb_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 105: lemming.dataplane.sai.AclEntryAttribute.field_route_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 106: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_dst_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 107: lemming.dataplane.sai.AclEntryAttribute.field_port_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 108: lemming.dataplane.sai.AclEntryAttribute.field_vlan_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 109: lemming.dataplane.sai.AclEntryAttribute.field_acl_user_meta:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 110: lemming.dataplane.sai.AclEntryAttribute.field_fdb_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 111: lemming.dataplane.sai.AclEntryAttribute.field_neighbor_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 112: lemming.dataplane.sai.AclEntryAttribute.field_route_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 113: lemming.dataplane.sai.AclEntryAttribute.field_bth_opcode:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 114: lemming.dataplane.sai.AclEntryAttribute.field_aeth_syndrome:type_name -> lemming.dataplane.sai.AclFieldData + 369, // 115: lemming.dataplane.sai.AclEntryAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry + 223, // 116: lemming.dataplane.sai.AclEntryAttribute.field_acl_range_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 117: lemming.dataplane.sai.AclEntryAttribute.field_ipv6_next_header:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 118: lemming.dataplane.sai.AclEntryAttribute.field_gre_key:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 119: lemming.dataplane.sai.AclEntryAttribute.field_tam_int_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 120: lemming.dataplane.sai.AclEntryAttribute.field_inner_src_mac:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 121: lemming.dataplane.sai.AclEntryAttribute.field_inner_dst_mac:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 122: lemming.dataplane.sai.AclEntryAttribute.field_vrf_id:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 123: lemming.dataplane.sai.AclEntryAttribute.field_ipmc_npu_meta_dst_hit:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 124: lemming.dataplane.sai.AclEntryAttribute.field_tunnel_terminated:type_name -> lemming.dataplane.sai.AclFieldData + 221, // 125: lemming.dataplane.sai.AclEntryAttribute.action_redirect:type_name -> lemming.dataplane.sai.AclActionData + 221, // 126: lemming.dataplane.sai.AclEntryAttribute.action_endpoint_ip:type_name -> lemming.dataplane.sai.AclActionData + 221, // 127: lemming.dataplane.sai.AclEntryAttribute.action_redirect_list:type_name -> lemming.dataplane.sai.AclActionData + 221, // 128: lemming.dataplane.sai.AclEntryAttribute.action_packet_action:type_name -> lemming.dataplane.sai.AclActionData + 221, // 129: lemming.dataplane.sai.AclEntryAttribute.action_flood:type_name -> lemming.dataplane.sai.AclActionData + 221, // 130: lemming.dataplane.sai.AclEntryAttribute.action_counter:type_name -> lemming.dataplane.sai.AclActionData + 221, // 131: lemming.dataplane.sai.AclEntryAttribute.action_mirror_ingress:type_name -> lemming.dataplane.sai.AclActionData + 221, // 132: lemming.dataplane.sai.AclEntryAttribute.action_mirror_egress:type_name -> lemming.dataplane.sai.AclActionData + 221, // 133: lemming.dataplane.sai.AclEntryAttribute.action_set_policer:type_name -> lemming.dataplane.sai.AclActionData + 221, // 134: lemming.dataplane.sai.AclEntryAttribute.action_decrement_ttl:type_name -> lemming.dataplane.sai.AclActionData + 221, // 135: lemming.dataplane.sai.AclEntryAttribute.action_set_tc:type_name -> lemming.dataplane.sai.AclActionData + 221, // 136: lemming.dataplane.sai.AclEntryAttribute.action_set_packet_color:type_name -> lemming.dataplane.sai.AclActionData + 221, // 137: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 138: lemming.dataplane.sai.AclEntryAttribute.action_set_inner_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 221, // 139: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 140: lemming.dataplane.sai.AclEntryAttribute.action_set_outer_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 221, // 141: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 142: lemming.dataplane.sai.AclEntryAttribute.action_add_vlan_pri:type_name -> lemming.dataplane.sai.AclActionData + 221, // 143: lemming.dataplane.sai.AclEntryAttribute.action_set_src_mac:type_name -> lemming.dataplane.sai.AclActionData + 221, // 144: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_mac:type_name -> lemming.dataplane.sai.AclActionData + 221, // 145: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ip:type_name -> lemming.dataplane.sai.AclActionData + 221, // 146: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ip:type_name -> lemming.dataplane.sai.AclActionData + 221, // 147: lemming.dataplane.sai.AclEntryAttribute.action_set_src_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 221, // 148: lemming.dataplane.sai.AclEntryAttribute.action_set_dst_ipv6:type_name -> lemming.dataplane.sai.AclActionData + 221, // 149: lemming.dataplane.sai.AclEntryAttribute.action_set_dscp:type_name -> lemming.dataplane.sai.AclActionData + 221, // 150: lemming.dataplane.sai.AclEntryAttribute.action_set_ecn:type_name -> lemming.dataplane.sai.AclActionData + 221, // 151: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_src_port:type_name -> lemming.dataplane.sai.AclActionData + 221, // 152: lemming.dataplane.sai.AclEntryAttribute.action_set_l4_dst_port:type_name -> lemming.dataplane.sai.AclActionData + 221, // 153: lemming.dataplane.sai.AclEntryAttribute.action_ingress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 221, // 154: lemming.dataplane.sai.AclEntryAttribute.action_egress_samplepacket_enable:type_name -> lemming.dataplane.sai.AclActionData + 221, // 155: lemming.dataplane.sai.AclEntryAttribute.action_set_acl_meta_data:type_name -> lemming.dataplane.sai.AclActionData + 221, // 156: lemming.dataplane.sai.AclEntryAttribute.action_egress_block_port_list:type_name -> lemming.dataplane.sai.AclActionData + 221, // 157: lemming.dataplane.sai.AclEntryAttribute.action_set_user_trap_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 158: lemming.dataplane.sai.AclEntryAttribute.action_set_do_not_learn:type_name -> lemming.dataplane.sai.AclActionData + 221, // 159: lemming.dataplane.sai.AclEntryAttribute.action_acl_dtel_flow_op:type_name -> lemming.dataplane.sai.AclActionData + 221, // 160: lemming.dataplane.sai.AclEntryAttribute.action_dtel_int_session:type_name -> lemming.dataplane.sai.AclActionData + 221, // 161: lemming.dataplane.sai.AclEntryAttribute.action_dtel_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 221, // 162: lemming.dataplane.sai.AclEntryAttribute.action_dtel_tail_drop_report_enable:type_name -> lemming.dataplane.sai.AclActionData + 221, // 163: lemming.dataplane.sai.AclEntryAttribute.action_dtel_flow_sample_percent:type_name -> lemming.dataplane.sai.AclActionData + 221, // 164: lemming.dataplane.sai.AclEntryAttribute.action_dtel_report_all_packets:type_name -> lemming.dataplane.sai.AclActionData + 221, // 165: lemming.dataplane.sai.AclEntryAttribute.action_no_nat:type_name -> lemming.dataplane.sai.AclActionData + 221, // 166: lemming.dataplane.sai.AclEntryAttribute.action_int_insert:type_name -> lemming.dataplane.sai.AclActionData + 221, // 167: lemming.dataplane.sai.AclEntryAttribute.action_int_delete:type_name -> lemming.dataplane.sai.AclActionData + 221, // 168: lemming.dataplane.sai.AclEntryAttribute.action_int_report_flow:type_name -> lemming.dataplane.sai.AclActionData + 221, // 169: lemming.dataplane.sai.AclEntryAttribute.action_int_report_drops:type_name -> lemming.dataplane.sai.AclActionData + 221, // 170: lemming.dataplane.sai.AclEntryAttribute.action_int_report_tail_drops:type_name -> lemming.dataplane.sai.AclActionData + 221, // 171: lemming.dataplane.sai.AclEntryAttribute.action_tam_int_object:type_name -> lemming.dataplane.sai.AclActionData + 221, // 172: lemming.dataplane.sai.AclEntryAttribute.action_set_isolation_group:type_name -> lemming.dataplane.sai.AclActionData + 221, // 173: lemming.dataplane.sai.AclEntryAttribute.action_macsec_flow:type_name -> lemming.dataplane.sai.AclActionData + 221, // 174: lemming.dataplane.sai.AclEntryAttribute.action_set_lag_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 175: lemming.dataplane.sai.AclEntryAttribute.action_set_ecmp_hash_id:type_name -> lemming.dataplane.sai.AclActionData + 221, // 176: lemming.dataplane.sai.AclEntryAttribute.action_set_vrf:type_name -> lemming.dataplane.sai.AclActionData + 221, // 177: lemming.dataplane.sai.AclEntryAttribute.action_set_forwarding_class:type_name -> lemming.dataplane.sai.AclActionData + 221, // 178: lemming.dataplane.sai.AclEntryAttribute.action_set_ars_monitoring:type_name -> lemming.dataplane.sai.AclActionData + 221, // 179: lemming.dataplane.sai.AclEntryAttribute.action_set_ars_object:type_name -> lemming.dataplane.sai.AclActionData + 221, // 180: lemming.dataplane.sai.AclEntryAttribute.action_disable_ars_forwarding:type_name -> lemming.dataplane.sai.AclActionData + 221, // 181: lemming.dataplane.sai.AclEntryAttribute.action_chain_redirect:type_name -> lemming.dataplane.sai.AclActionData 5, // 182: lemming.dataplane.sai.AclRangeAttribute.type:type_name -> lemming.dataplane.sai.AclRangeType - 234, // 183: lemming.dataplane.sai.AclRangeAttribute.limit:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 183: lemming.dataplane.sai.AclRangeAttribute.limit:type_name -> lemming.dataplane.sai.Uint32Range 6, // 184: lemming.dataplane.sai.AclTableAttribute.acl_stage:type_name -> lemming.dataplane.sai.AclStage 1, // 185: lemming.dataplane.sai.AclTableAttribute.acl_bind_point_type_list:type_name -> lemming.dataplane.sai.AclBindPointType 0, // 186: lemming.dataplane.sai.AclTableAttribute.acl_action_type_list:type_name -> lemming.dataplane.sai.AclActionType - 350, // 187: lemming.dataplane.sai.AclTableAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry + 370, // 187: lemming.dataplane.sai.AclTableAttribute.user_defined_field_group_min:type_name -> lemming.dataplane.sai.AclTableAttribute.UserDefinedFieldGroupMinEntry 5, // 188: lemming.dataplane.sai.AclTableAttribute.field_acl_range_type:type_name -> lemming.dataplane.sai.AclRangeType 10, // 189: lemming.dataplane.sai.AclTableAttribute.acl_table_match_type:type_name -> lemming.dataplane.sai.AclTableMatchType - 204, // 190: lemming.dataplane.sai.AclTableAttribute.field_valid_bits_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 191: lemming.dataplane.sai.AclTableAttribute.field_valid_bits_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 190: lemming.dataplane.sai.AclTableAttribute.field_valid_bits_src_ipv6:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 191: lemming.dataplane.sai.AclTableAttribute.field_valid_bits_dst_ipv6:type_name -> lemming.dataplane.sai.AclFieldData 8, // 192: lemming.dataplane.sai.AclTableChainGroupAttribute.type:type_name -> lemming.dataplane.sai.AclTableChainGroupType 7, // 193: lemming.dataplane.sai.AclTableChainGroupAttribute.stage:type_name -> lemming.dataplane.sai.AclTableChainGroupStage 6, // 194: lemming.dataplane.sai.AclTableGroupAttribute.acl_stage:type_name -> lemming.dataplane.sai.AclStage @@ -45926,278 +48448,299 @@ var file_dataplane_proto_sai_common_proto_depIdxs = []int32{ 14, // 198: lemming.dataplane.sai.BfdSessionAttribute.bfd_encapsulation_type:type_name -> lemming.dataplane.sai.BfdEncapsulationType 17, // 199: lemming.dataplane.sai.BfdSessionAttribute.state:type_name -> lemming.dataplane.sai.BfdSessionState 15, // 200: lemming.dataplane.sai.BfdSessionAttribute.offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 25, // 201: lemming.dataplane.sai.BridgeAttribute.type:type_name -> lemming.dataplane.sai.BridgeType - 19, // 202: lemming.dataplane.sai.BridgeAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 19, // 203: lemming.dataplane.sai.BridgeAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 19, // 204: lemming.dataplane.sai.BridgeAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType - 23, // 205: lemming.dataplane.sai.BridgePortAttribute.type:type_name -> lemming.dataplane.sai.BridgePortType - 22, // 206: lemming.dataplane.sai.BridgePortAttribute.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode - 20, // 207: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode - 96, // 208: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 28, // 209: lemming.dataplane.sai.BufferPoolAttribute.type:type_name -> lemming.dataplane.sai.BufferPoolType - 27, // 210: lemming.dataplane.sai.BufferPoolAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferPoolThresholdMode - 29, // 211: lemming.dataplane.sai.BufferProfileAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferProfileThresholdMode - 33, // 212: lemming.dataplane.sai.CounterAttribute.type:type_name -> lemming.dataplane.sai.CounterType - 38, // 213: lemming.dataplane.sai.DebugCounterAttribute.type:type_name -> lemming.dataplane.sai.DebugCounterType - 37, // 214: lemming.dataplane.sai.DebugCounterAttribute.bind_method:type_name -> lemming.dataplane.sai.DebugCounterBindMethod - 54, // 215: lemming.dataplane.sai.DebugCounterAttribute.in_drop_reason_list:type_name -> lemming.dataplane.sai.InDropReason - 92, // 216: lemming.dataplane.sai.DebugCounterAttribute.out_drop_reason_list:type_name -> lemming.dataplane.sai.OutDropReason - 204, // 217: lemming.dataplane.sai.DtelAttribute.int_l4_dscp:type_name -> lemming.dataplane.sai.AclFieldData - 39, // 218: lemming.dataplane.sai.DtelEventAttribute.type:type_name -> lemming.dataplane.sai.DtelEventType - 42, // 219: lemming.dataplane.sai.FdbEntryAttribute.type:type_name -> lemming.dataplane.sai.FdbEntryType - 96, // 220: lemming.dataplane.sai.FdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 44, // 221: lemming.dataplane.sai.FdbFlushAttribute.entry_type:type_name -> lemming.dataplane.sai.FdbFlushEntryType - 83, // 222: lemming.dataplane.sai.FineGrainedHashFieldAttribute.native_hash_field:type_name -> lemming.dataplane.sai.NativeHashField - 83, // 223: lemming.dataplane.sai.HashAttribute.native_hash_field_list:type_name -> lemming.dataplane.sai.NativeHashField - 51, // 224: lemming.dataplane.sai.HostifAttribute.type:type_name -> lemming.dataplane.sai.HostifType - 53, // 225: lemming.dataplane.sai.HostifAttribute.vlan_tag:type_name -> lemming.dataplane.sai.HostifVlanTag - 50, // 226: lemming.dataplane.sai.HostifPacketAttribute.hostif_tx_type:type_name -> lemming.dataplane.sai.HostifTxType - 351, // 227: lemming.dataplane.sai.HostifPacketAttribute.timestamp:type_name -> google.protobuf.Timestamp - 48, // 228: lemming.dataplane.sai.HostifTableEntryAttribute.type:type_name -> lemming.dataplane.sai.HostifTableEntryType - 47, // 229: lemming.dataplane.sai.HostifTableEntryAttribute.channel_type:type_name -> lemming.dataplane.sai.HostifTableEntryChannelType - 49, // 230: lemming.dataplane.sai.HostifTrapAttribute.trap_type:type_name -> lemming.dataplane.sai.HostifTrapType - 96, // 231: lemming.dataplane.sai.HostifTrapAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 89, // 232: lemming.dataplane.sai.HostifTrapGroupAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage - 52, // 233: lemming.dataplane.sai.HostifUserDefinedTrapAttribute.type:type_name -> lemming.dataplane.sai.HostifUserDefinedTrapType - 96, // 234: lemming.dataplane.sai.InsegEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 58, // 235: lemming.dataplane.sai.InsegEntryAttribute.psc_type:type_name -> lemming.dataplane.sai.InsegEntryPscType - 57, // 236: lemming.dataplane.sai.InsegEntryAttribute.pop_ttl_mode:type_name -> lemming.dataplane.sai.InsegEntryPopTtlMode - 56, // 237: lemming.dataplane.sai.InsegEntryAttribute.pop_qos_mode:type_name -> lemming.dataplane.sai.InsegEntryPopQosMode - 96, // 238: lemming.dataplane.sai.IpmcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 61, // 239: lemming.dataplane.sai.IpsecAttribute.supported_cipher_list:type_name -> lemming.dataplane.sai.IpsecCipher - 149, // 240: lemming.dataplane.sai.IpsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 163, // 241: lemming.dataplane.sai.IpsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 62, // 242: lemming.dataplane.sai.IpsecSaAttribute.ipsec_direction:type_name -> lemming.dataplane.sai.IpsecDirection - 64, // 243: lemming.dataplane.sai.IpsecSaAttribute.octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus - 61, // 244: lemming.dataplane.sai.IpsecSaAttribute.ipsec_cipher:type_name -> lemming.dataplane.sai.IpsecCipher - 66, // 245: lemming.dataplane.sai.IsolationGroupAttribute.type:type_name -> lemming.dataplane.sai.IsolationGroupType - 96, // 246: lemming.dataplane.sai.L2mcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 70, // 247: lemming.dataplane.sai.MacsecAttribute.direction:type_name -> lemming.dataplane.sai.MacsecDirection - 69, // 248: lemming.dataplane.sai.MacsecAttribute.supported_cipher_suite_list:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 149, // 249: lemming.dataplane.sai.MacsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 72, // 250: lemming.dataplane.sai.MacsecAttribute.max_secure_associations_per_sc:type_name -> lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc - 70, // 251: lemming.dataplane.sai.MacsecFlowAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 70, // 252: lemming.dataplane.sai.MacsecPortAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 163, // 253: lemming.dataplane.sai.MacsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 70, // 254: lemming.dataplane.sai.MacsecSaAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 70, // 255: lemming.dataplane.sai.MacsecScAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 69, // 256: lemming.dataplane.sai.MacsecScAttribute.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 96, // 257: lemming.dataplane.sai.McastFdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 78, // 258: lemming.dataplane.sai.MirrorSessionAttribute.type:type_name -> lemming.dataplane.sai.MirrorSessionType - 77, // 259: lemming.dataplane.sai.MirrorSessionAttribute.congestion_mode:type_name -> lemming.dataplane.sai.MirrorSessionCongestionMode - 41, // 260: lemming.dataplane.sai.MirrorSessionAttribute.erspan_encapsulation_type:type_name -> lemming.dataplane.sai.ErspanEncapsulationType - 80, // 261: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 79, // 262: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 96, // 263: lemming.dataplane.sai.MySidEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 82, // 264: lemming.dataplane.sai.NatEntryAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType - 82, // 265: lemming.dataplane.sai.NatZoneCounterAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType - 96, // 266: lemming.dataplane.sai.NeighborEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 59, // 267: lemming.dataplane.sai.NeighborEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 88, // 268: lemming.dataplane.sai.NextHopAttribute.type:type_name -> lemming.dataplane.sai.NextHopType - 95, // 269: lemming.dataplane.sai.NextHopAttribute.outseg_type:type_name -> lemming.dataplane.sai.OutsegType - 94, // 270: lemming.dataplane.sai.NextHopAttribute.outseg_ttl_mode:type_name -> lemming.dataplane.sai.OutsegTtlMode - 93, // 271: lemming.dataplane.sai.NextHopAttribute.outseg_exp_mode:type_name -> lemming.dataplane.sai.OutsegExpMode - 87, // 272: lemming.dataplane.sai.NextHopGroupAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupType - 84, // 273: lemming.dataplane.sai.NextHopGroupMapAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupMapType - 217, // 274: lemming.dataplane.sai.NextHopGroupMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.UintMap - 85, // 275: lemming.dataplane.sai.NextHopGroupMemberAttribute.configured_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberConfiguredRole - 86, // 276: lemming.dataplane.sai.NextHopGroupMemberAttribute.observed_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberObservedRole - 76, // 277: lemming.dataplane.sai.PolicerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType - 103, // 278: lemming.dataplane.sai.PolicerAttribute.mode:type_name -> lemming.dataplane.sai.PolicerMode - 102, // 279: lemming.dataplane.sai.PolicerAttribute.color_source:type_name -> lemming.dataplane.sai.PolicerColorSource - 96, // 280: lemming.dataplane.sai.PolicerAttribute.green_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 281: lemming.dataplane.sai.PolicerAttribute.yellow_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 282: lemming.dataplane.sai.PolicerAttribute.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 283: lemming.dataplane.sai.PolicerAttribute.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction - 89, // 284: lemming.dataplane.sai.PolicerAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage - 136, // 285: lemming.dataplane.sai.PortAttribute.type:type_name -> lemming.dataplane.sai.PortType - 127, // 286: lemming.dataplane.sai.PortAttribute.oper_status:type_name -> lemming.dataplane.sai.PortOperStatus - 107, // 287: lemming.dataplane.sai.PortAttribute.supported_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType - 107, // 288: lemming.dataplane.sai.PortAttribute.current_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType - 115, // 289: lemming.dataplane.sai.PortAttribute.supported_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 114, // 290: lemming.dataplane.sai.PortAttribute.supported_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 116, // 291: lemming.dataplane.sai.PortAttribute.supported_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 125, // 292: lemming.dataplane.sai.PortAttribute.supported_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 115, // 293: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 114, // 294: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 116, // 295: lemming.dataplane.sai.PortAttribute.remote_advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 125, // 296: lemming.dataplane.sai.PortAttribute.remote_advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 223, // 297: lemming.dataplane.sai.PortAttribute.eye_values:type_name -> lemming.dataplane.sai.PortEyeValues - 125, // 298: lemming.dataplane.sai.PortAttribute.media_type:type_name -> lemming.dataplane.sai.PortMediaType - 115, // 299: lemming.dataplane.sai.PortAttribute.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 114, // 300: lemming.dataplane.sai.PortAttribute.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 116, // 301: lemming.dataplane.sai.PortAttribute.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 125, // 302: lemming.dataplane.sai.PortAttribute.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 119, // 303: lemming.dataplane.sai.PortAttribute.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode - 115, // 304: lemming.dataplane.sai.PortAttribute.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 114, // 305: lemming.dataplane.sai.PortAttribute.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 116, // 306: lemming.dataplane.sai.PortAttribute.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 132, // 307: lemming.dataplane.sai.PortAttribute.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode - 133, // 308: lemming.dataplane.sai.PortAttribute.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode - 118, // 309: lemming.dataplane.sai.PortAttribute.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 118, // 310: lemming.dataplane.sai.PortAttribute.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 120, // 311: lemming.dataplane.sai.PortAttribute.link_training_failure_status:type_name -> lemming.dataplane.sai.PortLinkTrainingFailureStatus - 121, // 312: lemming.dataplane.sai.PortAttribute.link_training_rx_status:type_name -> lemming.dataplane.sai.PortLinkTrainingRxStatus - 130, // 313: lemming.dataplane.sai.PortAttribute.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig - 131, // 314: lemming.dataplane.sai.PortAttribute.prbs_rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus - 226, // 315: lemming.dataplane.sai.PortAttribute.prbs_rx_state:type_name -> lemming.dataplane.sai.PRBS_RXState - 113, // 316: lemming.dataplane.sai.PortAttribute.err_status_list:type_name -> lemming.dataplane.sai.PortErrStatus - 164, // 317: lemming.dataplane.sai.PortAttribute.fabric_attached_switch_type:type_name -> lemming.dataplane.sai.SwitchType - 208, // 318: lemming.dataplane.sai.PortAttribute.fabric_reachability:type_name -> lemming.dataplane.sai.FabricPortReachability - 122, // 319: lemming.dataplane.sai.PortAttribute.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode - 124, // 320: lemming.dataplane.sai.PortAttribute.mdix_mode_status:type_name -> lemming.dataplane.sai.PortMdixModeStatus - 123, // 321: lemming.dataplane.sai.PortAttribute.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig - 106, // 322: lemming.dataplane.sai.PortAttribute.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode - 126, // 323: lemming.dataplane.sai.PortAttribute.module_type:type_name -> lemming.dataplane.sai.PortModuleType - 112, // 324: lemming.dataplane.sai.PortAttribute.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia - 114, // 325: lemming.dataplane.sai.PortAttribute.auto_neg_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 234, // 326: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 217, // 327: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 234, // 328: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 217, // 329: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 224, // 330: lemming.dataplane.sai.PortAttribute.rx_signal_detect:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 224, // 331: lemming.dataplane.sai.PortAttribute.rx_lock_status:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 216, // 332: lemming.dataplane.sai.PortAttribute.pcs_rx_link_status:type_name -> lemming.dataplane.sai.LatchStatus - 224, // 333: lemming.dataplane.sai.PortAttribute.fec_alignment_lock:type_name -> lemming.dataplane.sai.PortLaneLatchStatus - 45, // 334: lemming.dataplane.sai.PortAttribute.ecmp_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 115, // 335: lemming.dataplane.sai.PortAttribute.oper_port_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 117, // 336: lemming.dataplane.sai.PortAttribute.host_tx_ready_status:type_name -> lemming.dataplane.sai.PortHostTxReadyStatus - 128, // 337: lemming.dataplane.sai.PortAttribute.path_tracing_timestamp_type:type_name -> lemming.dataplane.sai.PortPathTracingTimestampType - 111, // 338: lemming.dataplane.sai.PortAttribute.datapath_enable:type_name -> lemming.dataplane.sai.PortDatapathEnable - 108, // 339: lemming.dataplane.sai.PortAttribute.cable_pair_state:type_name -> lemming.dataplane.sai.PortCablePairState - 109, // 340: lemming.dataplane.sai.PortAttribute.cable_type:type_name -> lemming.dataplane.sai.PortCableType - 110, // 341: lemming.dataplane.sai.PortConnectorAttribute.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 137, // 342: lemming.dataplane.sai.QosMapAttribute.type:type_name -> lemming.dataplane.sai.QosMapType - 228, // 343: lemming.dataplane.sai.QosMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.QOSMap - 141, // 344: lemming.dataplane.sai.QueueAttribute.type:type_name -> lemming.dataplane.sai.QueueType - 96, // 345: lemming.dataplane.sai.QueueAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 138, // 346: lemming.dataplane.sai.QueueAttribute.pfc_continuous_deadlock_state:type_name -> lemming.dataplane.sai.QueuePfcContinuousDeadlockState - 143, // 347: lemming.dataplane.sai.RouterInterfaceAttribute.type:type_name -> lemming.dataplane.sai.RouterInterfaceType - 96, // 348: lemming.dataplane.sai.RouterInterfaceAttribute.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 349: lemming.dataplane.sai.RouterInterfaceAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 350: lemming.dataplane.sai.RouteEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 59, // 351: lemming.dataplane.sai.RouteEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 145, // 352: lemming.dataplane.sai.SamplepacketAttribute.type:type_name -> lemming.dataplane.sai.SamplepacketType - 144, // 353: lemming.dataplane.sai.SamplepacketAttribute.mode:type_name -> lemming.dataplane.sai.SamplepacketMode - 146, // 354: lemming.dataplane.sai.SchedulerAttribute.scheduling_type:type_name -> lemming.dataplane.sai.SchedulingType - 76, // 355: lemming.dataplane.sai.SchedulerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType - 148, // 356: lemming.dataplane.sai.Srv6SidlistAttribute.type:type_name -> lemming.dataplane.sai.Srv6SidlistType - 233, // 357: lemming.dataplane.sai.Srv6SidlistAttribute.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry - 150, // 358: lemming.dataplane.sai.StpPortAttribute.state:type_name -> lemming.dataplane.sai.StpPortState - 160, // 359: lemming.dataplane.sai.SwitchAttribute.oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus - 234, // 360: lemming.dataplane.sai.SwitchAttribute.fdb_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 361: lemming.dataplane.sai.SwitchAttribute.route_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 362: lemming.dataplane.sai.SwitchAttribute.neighbor_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 363: lemming.dataplane.sai.SwitchAttribute.port_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 364: lemming.dataplane.sai.SwitchAttribute.vlan_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 365: lemming.dataplane.sai.SwitchAttribute.acl_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range - 234, // 366: lemming.dataplane.sai.SwitchAttribute.acl_user_trap_id_range:type_name -> lemming.dataplane.sai.Uint32Range - 206, // 367: lemming.dataplane.sai.SwitchAttribute.available_acl_table:type_name -> lemming.dataplane.sai.ACLResource - 206, // 368: lemming.dataplane.sai.SwitchAttribute.available_acl_table_group:type_name -> lemming.dataplane.sai.ACLResource - 161, // 369: lemming.dataplane.sai.SwitchAttribute.restart_type:type_name -> lemming.dataplane.sai.SwitchRestartType - 203, // 370: lemming.dataplane.sai.SwitchAttribute.acl_capability:type_name -> lemming.dataplane.sai.ACLCapability - 159, // 371: lemming.dataplane.sai.SwitchAttribute.mcast_snooping_capability:type_name -> lemming.dataplane.sai.SwitchMcastSnoopingCapability - 163, // 372: lemming.dataplane.sai.SwitchAttribute.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 96, // 373: lemming.dataplane.sai.SwitchAttribute.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 374: lemming.dataplane.sai.SwitchAttribute.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 375: lemming.dataplane.sai.SwitchAttribute.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 45, // 376: lemming.dataplane.sai.SwitchAttribute.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 45, // 377: lemming.dataplane.sai.SwitchAttribute.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 203, // 378: lemming.dataplane.sai.SwitchAttribute.acl_stage_ingress:type_name -> lemming.dataplane.sai.ACLCapability - 203, // 379: lemming.dataplane.sai.SwitchAttribute.acl_stage_egress:type_name -> lemming.dataplane.sai.ACLCapability - 185, // 380: lemming.dataplane.sai.SwitchAttribute.srv6_tlv_type:type_name -> lemming.dataplane.sai.TlvType - 96, // 381: lemming.dataplane.sai.SwitchAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 234, // 382: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 217, // 383: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 234, // 384: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range - 217, // 385: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 91, // 386: lemming.dataplane.sai.SwitchAttribute.supported_protected_object_type:type_name -> lemming.dataplane.sai.ObjectType - 15, // 387: lemming.dataplane.sai.SwitchAttribute.supported_ipv4_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 15, // 388: lemming.dataplane.sai.SwitchAttribute.supported_ipv6_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType - 149, // 389: lemming.dataplane.sai.SwitchAttribute.supported_extended_stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 91, // 390: lemming.dataplane.sai.SwitchAttribute.supported_object_type_list:type_name -> lemming.dataplane.sai.ObjectType - 157, // 391: lemming.dataplane.sai.SwitchAttribute.hardware_access_bus:type_name -> lemming.dataplane.sai.SwitchHardwareAccessBus - 155, // 392: lemming.dataplane.sai.SwitchAttribute.firmware_load_method:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadMethod - 156, // 393: lemming.dataplane.sai.SwitchAttribute.firmware_load_type:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadType - 164, // 394: lemming.dataplane.sai.SwitchAttribute.type:type_name -> lemming.dataplane.sai.SwitchType - 231, // 395: lemming.dataplane.sai.SwitchAttribute.system_port_config_list:type_name -> lemming.dataplane.sai.SystemPortConfig - 154, // 396: lemming.dataplane.sai.SwitchAttribute.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode - 203, // 397: lemming.dataplane.sai.SwitchAttribute.acl_stage_post_ingress:type_name -> lemming.dataplane.sai.ACLCapability - 158, // 398: lemming.dataplane.sai.SwitchAttribute.hostif_oper_status_update_mode:type_name -> lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode - 151, // 399: lemming.dataplane.sai.SwitchAttribute.reg_fatal_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 151, // 400: lemming.dataplane.sai.SwitchAttribute.reg_warning_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 151, // 401: lemming.dataplane.sai.SwitchAttribute.reg_notice_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 203, // 402: lemming.dataplane.sai.SwitchAttribute.acl_stage_pre_ingress:type_name -> lemming.dataplane.sai.ACLCapability - 194, // 403: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 96, // 404: lemming.dataplane.sai.SwitchTunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 188, // 405: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 186, // 406: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 195, // 407: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 165, // 408: lemming.dataplane.sai.SystemPortAttribute.type:type_name -> lemming.dataplane.sai.SystemPortType - 231, // 409: lemming.dataplane.sai.SystemPortAttribute.config_info:type_name -> lemming.dataplane.sai.SystemPortConfig - 166, // 410: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapClassificationEntryAction - 168, // 411: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapRouterEntryAction - 212, // 412: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.dst_ip_key:type_name -> lemming.dataplane.sai.IpPrefix - 170, // 413: lemming.dataplane.sai.TableMetaTunnelEntryAttribute.action:type_name -> lemming.dataplane.sai.TableMetaTunnelEntryAction - 172, // 414: lemming.dataplane.sai.TamAttribute.tam_bind_point_type_list:type_name -> lemming.dataplane.sai.TamBindPointType - 174, // 415: lemming.dataplane.sai.TamEventAttribute.type:type_name -> lemming.dataplane.sai.TamEventType - 173, // 416: lemming.dataplane.sai.TamEventThresholdAttribute.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit - 176, // 417: lemming.dataplane.sai.TamIntAttribute.type:type_name -> lemming.dataplane.sai.TamIntType - 175, // 418: lemming.dataplane.sai.TamIntAttribute.int_presence_type:type_name -> lemming.dataplane.sai.TamIntPresenceType - 181, // 419: lemming.dataplane.sai.TamMathFuncAttribute.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType - 179, // 420: lemming.dataplane.sai.TamReportAttribute.type:type_name -> lemming.dataplane.sai.TamReportType - 178, // 421: lemming.dataplane.sai.TamReportAttribute.report_mode:type_name -> lemming.dataplane.sai.TamReportMode - 177, // 422: lemming.dataplane.sai.TamReportAttribute.report_interval_unit:type_name -> lemming.dataplane.sai.TamReportIntervalUnit - 180, // 423: lemming.dataplane.sai.TamTelemetryAttribute.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit - 182, // 424: lemming.dataplane.sai.TamTelTypeAttribute.tam_telemetry_type:type_name -> lemming.dataplane.sai.TamTelemetryType - 184, // 425: lemming.dataplane.sai.TamTransportAttribute.transport_type:type_name -> lemming.dataplane.sai.TamTransportType - 183, // 426: lemming.dataplane.sai.TamTransportAttribute.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType - 194, // 427: lemming.dataplane.sai.TunnelAttribute.type:type_name -> lemming.dataplane.sai.TunnelType - 190, // 428: lemming.dataplane.sai.TunnelAttribute.peer_mode:type_name -> lemming.dataplane.sai.TunnelPeerMode - 193, // 429: lemming.dataplane.sai.TunnelAttribute.encap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 187, // 430: lemming.dataplane.sai.TunnelAttribute.encap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 188, // 431: lemming.dataplane.sai.TunnelAttribute.encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 186, // 432: lemming.dataplane.sai.TunnelAttribute.decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 193, // 433: lemming.dataplane.sai.TunnelAttribute.decap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 187, // 434: lemming.dataplane.sai.TunnelAttribute.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 96, // 435: lemming.dataplane.sai.TunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 195, // 436: lemming.dataplane.sai.TunnelAttribute.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 189, // 437: lemming.dataplane.sai.TunnelMapAttribute.type:type_name -> lemming.dataplane.sai.TunnelMapType - 189, // 438: lemming.dataplane.sai.TunnelMapEntryAttribute.tunnel_map_type:type_name -> lemming.dataplane.sai.TunnelMapType - 192, // 439: lemming.dataplane.sai.TunnelTermTableEntryAttribute.type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryType - 194, // 440: lemming.dataplane.sai.TunnelTermTableEntryAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 59, // 441: lemming.dataplane.sai.TunnelTermTableEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily - 196, // 442: lemming.dataplane.sai.UdfAttribute.base:type_name -> lemming.dataplane.sai.UdfBase - 197, // 443: lemming.dataplane.sai.UdfGroupAttribute.type:type_name -> lemming.dataplane.sai.UdfGroupType - 204, // 444: lemming.dataplane.sai.UdfMatchAttribute.l2_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 445: lemming.dataplane.sai.UdfMatchAttribute.l3_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 446: lemming.dataplane.sai.UdfMatchAttribute.gre_type:type_name -> lemming.dataplane.sai.AclFieldData - 204, // 447: lemming.dataplane.sai.UdfMatchAttribute.l4_dst_port_type:type_name -> lemming.dataplane.sai.AclFieldData - 96, // 448: lemming.dataplane.sai.VirtualRouterAttribute.violation_ttl1_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 449: lemming.dataplane.sai.VirtualRouterAttribute.violation_ip_options_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 96, // 450: lemming.dataplane.sai.VirtualRouterAttribute.unknown_l3_multicast_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 199, // 451: lemming.dataplane.sai.VlanAttribute.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 199, // 452: lemming.dataplane.sai.VlanAttribute.ipv6_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 198, // 453: lemming.dataplane.sai.VlanAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 198, // 454: lemming.dataplane.sai.VlanAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 198, // 455: lemming.dataplane.sai.VlanAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 201, // 456: lemming.dataplane.sai.VlanMemberAttribute.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode - 40, // 457: lemming.dataplane.sai.WredAttribute.ecn_mark_mode:type_name -> lemming.dataplane.sai.EcnMarkMode - 204, // 458: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData - 352, // 459: lemming.dataplane.sai.attr_enum_value:extendee -> google.protobuf.FieldOptions - 353, // 460: lemming.dataplane.sai.sai_type:extendee -> google.protobuf.MessageOptions - 91, // 461: lemming.dataplane.sai.sai_type:type_name -> lemming.dataplane.sai.ObjectType - 235, // 462: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:input_type -> lemming.dataplane.sai.ObjectTypeQueryRequest - 237, // 463: lemming.dataplane.sai.Entrypoint.Initialize:input_type -> lemming.dataplane.sai.InitializeRequest - 239, // 464: lemming.dataplane.sai.Entrypoint.Uninitialize:input_type -> lemming.dataplane.sai.UninitializeRequest - 236, // 465: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:output_type -> lemming.dataplane.sai.ObjectTypeQueryResponse - 238, // 466: lemming.dataplane.sai.Entrypoint.Initialize:output_type -> lemming.dataplane.sai.InitializeResponse - 240, // 467: lemming.dataplane.sai.Entrypoint.Uninitialize:output_type -> lemming.dataplane.sai.UninitializeResponse - 465, // [465:468] is the sub-list for method output_type - 462, // [462:465] is the sub-list for method input_type - 461, // [461:462] is the sub-list for extension type_name - 459, // [459:461] is the sub-list for extension extendee - 0, // [0:459] is the sub-list for field type_name + 167, // 201: lemming.dataplane.sai.BfdSessionAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 25, // 202: lemming.dataplane.sai.BridgeAttribute.type:type_name -> lemming.dataplane.sai.BridgeType + 19, // 203: lemming.dataplane.sai.BridgeAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 19, // 204: lemming.dataplane.sai.BridgeAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 19, // 205: lemming.dataplane.sai.BridgeAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.BridgeFloodControlType + 167, // 206: lemming.dataplane.sai.BridgeAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 23, // 207: lemming.dataplane.sai.BridgePortAttribute.type:type_name -> lemming.dataplane.sai.BridgePortType + 22, // 208: lemming.dataplane.sai.BridgePortAttribute.tagging_mode:type_name -> lemming.dataplane.sai.BridgePortTaggingMode + 20, // 209: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_mode:type_name -> lemming.dataplane.sai.BridgePortFdbLearningMode + 110, // 210: lemming.dataplane.sai.BridgePortAttribute.fdb_learning_limit_violation_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 167, // 211: lemming.dataplane.sai.BridgePortAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 28, // 212: lemming.dataplane.sai.BufferPoolAttribute.type:type_name -> lemming.dataplane.sai.BufferPoolType + 27, // 213: lemming.dataplane.sai.BufferPoolAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferPoolThresholdMode + 167, // 214: lemming.dataplane.sai.BufferPoolAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 29, // 215: lemming.dataplane.sai.BufferProfileAttribute.threshold_mode:type_name -> lemming.dataplane.sai.BufferProfileThresholdMode + 33, // 216: lemming.dataplane.sai.CounterAttribute.type:type_name -> lemming.dataplane.sai.CounterType + 105, // 217: lemming.dataplane.sai.CounterAttribute.object_type:type_name -> lemming.dataplane.sai.ObjectType + 48, // 218: lemming.dataplane.sai.DebugCounterAttribute.type:type_name -> lemming.dataplane.sai.DebugCounterType + 47, // 219: lemming.dataplane.sai.DebugCounterAttribute.bind_method:type_name -> lemming.dataplane.sai.DebugCounterBindMethod + 68, // 220: lemming.dataplane.sai.DebugCounterAttribute.in_drop_reason_list:type_name -> lemming.dataplane.sai.InDropReason + 106, // 221: lemming.dataplane.sai.DebugCounterAttribute.out_drop_reason_list:type_name -> lemming.dataplane.sai.OutDropReason + 223, // 222: lemming.dataplane.sai.DtelAttribute.int_l4_dscp:type_name -> lemming.dataplane.sai.AclFieldData + 49, // 223: lemming.dataplane.sai.DtelEventAttribute.type:type_name -> lemming.dataplane.sai.DtelEventType + 52, // 224: lemming.dataplane.sai.FdbEntryAttribute.type:type_name -> lemming.dataplane.sai.FdbEntryType + 110, // 225: lemming.dataplane.sai.FdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 54, // 226: lemming.dataplane.sai.FdbFlushAttribute.entry_type:type_name -> lemming.dataplane.sai.FdbFlushEntryType + 97, // 227: lemming.dataplane.sai.FineGrainedHashFieldAttribute.native_hash_field:type_name -> lemming.dataplane.sai.NativeHashField + 97, // 228: lemming.dataplane.sai.HashAttribute.native_hash_field_list:type_name -> lemming.dataplane.sai.NativeHashField + 63, // 229: lemming.dataplane.sai.HostifAttribute.type:type_name -> lemming.dataplane.sai.HostifType + 65, // 230: lemming.dataplane.sai.HostifAttribute.vlan_tag:type_name -> lemming.dataplane.sai.HostifVlanTag + 62, // 231: lemming.dataplane.sai.HostifPacketAttribute.hostif_tx_type:type_name -> lemming.dataplane.sai.HostifTxType + 371, // 232: lemming.dataplane.sai.HostifPacketAttribute.timestamp:type_name -> google.protobuf.Timestamp + 60, // 233: lemming.dataplane.sai.HostifTableEntryAttribute.type:type_name -> lemming.dataplane.sai.HostifTableEntryType + 59, // 234: lemming.dataplane.sai.HostifTableEntryAttribute.channel_type:type_name -> lemming.dataplane.sai.HostifTableEntryChannelType + 61, // 235: lemming.dataplane.sai.HostifTrapAttribute.trap_type:type_name -> lemming.dataplane.sai.HostifTrapType + 110, // 236: lemming.dataplane.sai.HostifTrapAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 103, // 237: lemming.dataplane.sai.HostifTrapGroupAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage + 64, // 238: lemming.dataplane.sai.HostifUserDefinedTrapAttribute.type:type_name -> lemming.dataplane.sai.HostifUserDefinedTrapType + 67, // 239: lemming.dataplane.sai.IcmpEchoSessionAttribute.state:type_name -> lemming.dataplane.sai.IcmpEchoSessionState + 167, // 240: lemming.dataplane.sai.IcmpEchoSessionAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 167, // 241: lemming.dataplane.sai.IngressPriorityGroupAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 110, // 242: lemming.dataplane.sai.InsegEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 72, // 243: lemming.dataplane.sai.InsegEntryAttribute.psc_type:type_name -> lemming.dataplane.sai.InsegEntryPscType + 71, // 244: lemming.dataplane.sai.InsegEntryAttribute.pop_ttl_mode:type_name -> lemming.dataplane.sai.InsegEntryPopTtlMode + 70, // 245: lemming.dataplane.sai.InsegEntryAttribute.pop_qos_mode:type_name -> lemming.dataplane.sai.InsegEntryPopQosMode + 110, // 246: lemming.dataplane.sai.IpmcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 75, // 247: lemming.dataplane.sai.IpsecAttribute.supported_cipher_list:type_name -> lemming.dataplane.sai.IpsecCipher + 168, // 248: lemming.dataplane.sai.IpsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode + 182, // 249: lemming.dataplane.sai.IpsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 167, // 250: lemming.dataplane.sai.IpsecPortAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 76, // 251: lemming.dataplane.sai.IpsecSaAttribute.ipsec_direction:type_name -> lemming.dataplane.sai.IpsecDirection + 78, // 252: lemming.dataplane.sai.IpsecSaAttribute.octet_count_status:type_name -> lemming.dataplane.sai.IpsecSaOctetCountStatus + 75, // 253: lemming.dataplane.sai.IpsecSaAttribute.ipsec_cipher:type_name -> lemming.dataplane.sai.IpsecCipher + 167, // 254: lemming.dataplane.sai.IpsecSaAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 80, // 255: lemming.dataplane.sai.IsolationGroupAttribute.type:type_name -> lemming.dataplane.sai.IsolationGroupType + 110, // 256: lemming.dataplane.sai.L2mcEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 84, // 257: lemming.dataplane.sai.MacsecAttribute.direction:type_name -> lemming.dataplane.sai.MacsecDirection + 83, // 258: lemming.dataplane.sai.MacsecAttribute.supported_cipher_suite_list:type_name -> lemming.dataplane.sai.MacsecCipherSuite + 168, // 259: lemming.dataplane.sai.MacsecAttribute.stats_mode:type_name -> lemming.dataplane.sai.StatsMode + 86, // 260: lemming.dataplane.sai.MacsecAttribute.max_secure_associations_per_sc:type_name -> lemming.dataplane.sai.MacsecMaxSecureAssociationsPerSc + 84, // 261: lemming.dataplane.sai.MacsecFlowAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 167, // 262: lemming.dataplane.sai.MacsecFlowAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 84, // 263: lemming.dataplane.sai.MacsecPortAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 182, // 264: lemming.dataplane.sai.MacsecPortAttribute.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 167, // 265: lemming.dataplane.sai.MacsecPortAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 84, // 266: lemming.dataplane.sai.MacsecSaAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 84, // 267: lemming.dataplane.sai.MacsecScAttribute.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 83, // 268: lemming.dataplane.sai.MacsecScAttribute.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite + 110, // 269: lemming.dataplane.sai.McastFdbEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 92, // 270: lemming.dataplane.sai.MirrorSessionAttribute.type:type_name -> lemming.dataplane.sai.MirrorSessionType + 91, // 271: lemming.dataplane.sai.MirrorSessionAttribute.congestion_mode:type_name -> lemming.dataplane.sai.MirrorSessionCongestionMode + 51, // 272: lemming.dataplane.sai.MirrorSessionAttribute.erspan_encapsulation_type:type_name -> lemming.dataplane.sai.ErspanEncapsulationType + 94, // 273: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior + 93, // 274: lemming.dataplane.sai.MySidEntryAttribute.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor + 110, // 275: lemming.dataplane.sai.MySidEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 96, // 276: lemming.dataplane.sai.NatEntryAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType + 96, // 277: lemming.dataplane.sai.NatZoneCounterAttribute.nat_type:type_name -> lemming.dataplane.sai.NatType + 110, // 278: lemming.dataplane.sai.NeighborEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 73, // 279: lemming.dataplane.sai.NeighborEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily + 102, // 280: lemming.dataplane.sai.NextHopAttribute.type:type_name -> lemming.dataplane.sai.NextHopType + 109, // 281: lemming.dataplane.sai.NextHopAttribute.outseg_type:type_name -> lemming.dataplane.sai.OutsegType + 108, // 282: lemming.dataplane.sai.NextHopAttribute.outseg_ttl_mode:type_name -> lemming.dataplane.sai.OutsegTtlMode + 107, // 283: lemming.dataplane.sai.NextHopAttribute.outseg_exp_mode:type_name -> lemming.dataplane.sai.OutsegExpMode + 101, // 284: lemming.dataplane.sai.NextHopGroupAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupType + 98, // 285: lemming.dataplane.sai.NextHopGroupMapAttribute.type:type_name -> lemming.dataplane.sai.NextHopGroupMapType + 236, // 286: lemming.dataplane.sai.NextHopGroupMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.UintMap + 99, // 287: lemming.dataplane.sai.NextHopGroupMemberAttribute.configured_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberConfiguredRole + 100, // 288: lemming.dataplane.sai.NextHopGroupMemberAttribute.observed_role:type_name -> lemming.dataplane.sai.NextHopGroupMemberObservedRole + 90, // 289: lemming.dataplane.sai.PolicerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType + 117, // 290: lemming.dataplane.sai.PolicerAttribute.mode:type_name -> lemming.dataplane.sai.PolicerMode + 116, // 291: lemming.dataplane.sai.PolicerAttribute.color_source:type_name -> lemming.dataplane.sai.PolicerColorSource + 110, // 292: lemming.dataplane.sai.PolicerAttribute.green_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 293: lemming.dataplane.sai.PolicerAttribute.yellow_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 294: lemming.dataplane.sai.PolicerAttribute.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 295: lemming.dataplane.sai.PolicerAttribute.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction + 103, // 296: lemming.dataplane.sai.PolicerAttribute.object_stage:type_name -> lemming.dataplane.sai.ObjectStage + 167, // 297: lemming.dataplane.sai.PolicerAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 151, // 298: lemming.dataplane.sai.PortAttribute.type:type_name -> lemming.dataplane.sai.PortType + 142, // 299: lemming.dataplane.sai.PortAttribute.oper_status:type_name -> lemming.dataplane.sai.PortOperStatus + 121, // 300: lemming.dataplane.sai.PortAttribute.supported_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType + 121, // 301: lemming.dataplane.sai.PortAttribute.current_breakout_mode_type:type_name -> lemming.dataplane.sai.PortBreakoutModeType + 130, // 302: lemming.dataplane.sai.PortAttribute.supported_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 129, // 303: lemming.dataplane.sai.PortAttribute.supported_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 131, // 304: lemming.dataplane.sai.PortAttribute.supported_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 140, // 305: lemming.dataplane.sai.PortAttribute.supported_media_type:type_name -> lemming.dataplane.sai.PortMediaType + 130, // 306: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 129, // 307: lemming.dataplane.sai.PortAttribute.remote_advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 131, // 308: lemming.dataplane.sai.PortAttribute.remote_advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 140, // 309: lemming.dataplane.sai.PortAttribute.remote_advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType + 242, // 310: lemming.dataplane.sai.PortAttribute.eye_values:type_name -> lemming.dataplane.sai.PortEyeValues + 140, // 311: lemming.dataplane.sai.PortAttribute.media_type:type_name -> lemming.dataplane.sai.PortMediaType + 130, // 312: lemming.dataplane.sai.PortAttribute.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 129, // 313: lemming.dataplane.sai.PortAttribute.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 131, // 314: lemming.dataplane.sai.PortAttribute.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 140, // 315: lemming.dataplane.sai.PortAttribute.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType + 134, // 316: lemming.dataplane.sai.PortAttribute.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode + 130, // 317: lemming.dataplane.sai.PortAttribute.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 129, // 318: lemming.dataplane.sai.PortAttribute.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 131, // 319: lemming.dataplane.sai.PortAttribute.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 147, // 320: lemming.dataplane.sai.PortAttribute.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode + 148, // 321: lemming.dataplane.sai.PortAttribute.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode + 133, // 322: lemming.dataplane.sai.PortAttribute.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType + 133, // 323: lemming.dataplane.sai.PortAttribute.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType + 135, // 324: lemming.dataplane.sai.PortAttribute.link_training_failure_status:type_name -> lemming.dataplane.sai.PortLinkTrainingFailureStatus + 136, // 325: lemming.dataplane.sai.PortAttribute.link_training_rx_status:type_name -> lemming.dataplane.sai.PortLinkTrainingRxStatus + 145, // 326: lemming.dataplane.sai.PortAttribute.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig + 146, // 327: lemming.dataplane.sai.PortAttribute.prbs_rx_status:type_name -> lemming.dataplane.sai.PortPrbsRxStatus + 245, // 328: lemming.dataplane.sai.PortAttribute.prbs_rx_state:type_name -> lemming.dataplane.sai.PRBS_RXState + 127, // 329: lemming.dataplane.sai.PortAttribute.err_status_list:type_name -> lemming.dataplane.sai.PortErrStatus + 183, // 330: lemming.dataplane.sai.PortAttribute.fabric_attached_switch_type:type_name -> lemming.dataplane.sai.SwitchType + 227, // 331: lemming.dataplane.sai.PortAttribute.fabric_reachability:type_name -> lemming.dataplane.sai.FabricPortReachability + 137, // 332: lemming.dataplane.sai.PortAttribute.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode + 139, // 333: lemming.dataplane.sai.PortAttribute.mdix_mode_status:type_name -> lemming.dataplane.sai.PortMdixModeStatus + 138, // 334: lemming.dataplane.sai.PortAttribute.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig + 120, // 335: lemming.dataplane.sai.PortAttribute.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode + 141, // 336: lemming.dataplane.sai.PortAttribute.module_type:type_name -> lemming.dataplane.sai.PortModuleType + 126, // 337: lemming.dataplane.sai.PortAttribute.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia + 129, // 338: lemming.dataplane.sai.PortAttribute.auto_neg_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 253, // 339: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range + 236, // 340: lemming.dataplane.sai.PortAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap + 253, // 341: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range + 236, // 342: lemming.dataplane.sai.PortAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap + 243, // 343: lemming.dataplane.sai.PortAttribute.rx_signal_detect:type_name -> lemming.dataplane.sai.PortLaneLatchStatus + 243, // 344: lemming.dataplane.sai.PortAttribute.rx_lock_status:type_name -> lemming.dataplane.sai.PortLaneLatchStatus + 235, // 345: lemming.dataplane.sai.PortAttribute.pcs_rx_link_status:type_name -> lemming.dataplane.sai.LatchStatus + 243, // 346: lemming.dataplane.sai.PortAttribute.fec_alignment_lock:type_name -> lemming.dataplane.sai.PortLaneLatchStatus + 57, // 347: lemming.dataplane.sai.PortAttribute.ecmp_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 130, // 348: lemming.dataplane.sai.PortAttribute.oper_port_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 132, // 349: lemming.dataplane.sai.PortAttribute.host_tx_ready_status:type_name -> lemming.dataplane.sai.PortHostTxReadyStatus + 143, // 350: lemming.dataplane.sai.PortAttribute.path_tracing_timestamp_type:type_name -> lemming.dataplane.sai.PortPathTracingTimestampType + 125, // 351: lemming.dataplane.sai.PortAttribute.datapath_enable:type_name -> lemming.dataplane.sai.PortDatapathEnable + 122, // 352: lemming.dataplane.sai.PortAttribute.cable_pair_state:type_name -> lemming.dataplane.sai.PortCablePairState + 123, // 353: lemming.dataplane.sai.PortAttribute.cable_type:type_name -> lemming.dataplane.sai.PortCableType + 128, // 354: lemming.dataplane.sai.PortAttribute.error_status:type_name -> lemming.dataplane.sai.PortErrorStatus + 167, // 355: lemming.dataplane.sai.PortAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 124, // 356: lemming.dataplane.sai.PortConnectorAttribute.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode + 152, // 357: lemming.dataplane.sai.QosMapAttribute.type:type_name -> lemming.dataplane.sai.QosMapType + 247, // 358: lemming.dataplane.sai.QosMapAttribute.map_to_value_list:type_name -> lemming.dataplane.sai.QOSMap + 156, // 359: lemming.dataplane.sai.QueueAttribute.type:type_name -> lemming.dataplane.sai.QueueType + 110, // 360: lemming.dataplane.sai.QueueAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 153, // 361: lemming.dataplane.sai.QueueAttribute.pfc_continuous_deadlock_state:type_name -> lemming.dataplane.sai.QueuePfcContinuousDeadlockState + 167, // 362: lemming.dataplane.sai.QueueAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 158, // 363: lemming.dataplane.sai.RouterInterfaceAttribute.type:type_name -> lemming.dataplane.sai.RouterInterfaceType + 110, // 364: lemming.dataplane.sai.RouterInterfaceAttribute.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 365: lemming.dataplane.sai.RouterInterfaceAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 167, // 366: lemming.dataplane.sai.RouterInterfaceAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 110, // 367: lemming.dataplane.sai.RouteEntryAttribute.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 73, // 368: lemming.dataplane.sai.RouteEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily + 160, // 369: lemming.dataplane.sai.SamplepacketAttribute.type:type_name -> lemming.dataplane.sai.SamplepacketType + 159, // 370: lemming.dataplane.sai.SamplepacketAttribute.mode:type_name -> lemming.dataplane.sai.SamplepacketMode + 161, // 371: lemming.dataplane.sai.SchedulerAttribute.scheduling_type:type_name -> lemming.dataplane.sai.SchedulingType + 90, // 372: lemming.dataplane.sai.SchedulerAttribute.meter_type:type_name -> lemming.dataplane.sai.MeterType + 166, // 373: lemming.dataplane.sai.Srv6SidlistAttribute.type:type_name -> lemming.dataplane.sai.Srv6SidlistType + 252, // 374: lemming.dataplane.sai.Srv6SidlistAttribute.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry + 167, // 375: lemming.dataplane.sai.Srv6SidlistAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 169, // 376: lemming.dataplane.sai.StpPortAttribute.state:type_name -> lemming.dataplane.sai.StpPortState + 179, // 377: lemming.dataplane.sai.SwitchAttribute.oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus + 253, // 378: lemming.dataplane.sai.SwitchAttribute.fdb_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 379: lemming.dataplane.sai.SwitchAttribute.route_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 380: lemming.dataplane.sai.SwitchAttribute.neighbor_dst_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 381: lemming.dataplane.sai.SwitchAttribute.port_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 382: lemming.dataplane.sai.SwitchAttribute.vlan_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 383: lemming.dataplane.sai.SwitchAttribute.acl_user_meta_data_range:type_name -> lemming.dataplane.sai.Uint32Range + 253, // 384: lemming.dataplane.sai.SwitchAttribute.acl_user_trap_id_range:type_name -> lemming.dataplane.sai.Uint32Range + 225, // 385: lemming.dataplane.sai.SwitchAttribute.available_acl_table:type_name -> lemming.dataplane.sai.ACLResource + 225, // 386: lemming.dataplane.sai.SwitchAttribute.available_acl_table_group:type_name -> lemming.dataplane.sai.ACLResource + 180, // 387: lemming.dataplane.sai.SwitchAttribute.restart_type:type_name -> lemming.dataplane.sai.SwitchRestartType + 222, // 388: lemming.dataplane.sai.SwitchAttribute.acl_capability:type_name -> lemming.dataplane.sai.ACLCapability + 178, // 389: lemming.dataplane.sai.SwitchAttribute.mcast_snooping_capability:type_name -> lemming.dataplane.sai.SwitchMcastSnoopingCapability + 182, // 390: lemming.dataplane.sai.SwitchAttribute.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 110, // 391: lemming.dataplane.sai.SwitchAttribute.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 392: lemming.dataplane.sai.SwitchAttribute.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 393: lemming.dataplane.sai.SwitchAttribute.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 57, // 394: lemming.dataplane.sai.SwitchAttribute.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 57, // 395: lemming.dataplane.sai.SwitchAttribute.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 222, // 396: lemming.dataplane.sai.SwitchAttribute.acl_stage_ingress:type_name -> lemming.dataplane.sai.ACLCapability + 222, // 397: lemming.dataplane.sai.SwitchAttribute.acl_stage_egress:type_name -> lemming.dataplane.sai.ACLCapability + 204, // 398: lemming.dataplane.sai.SwitchAttribute.srv6_tlv_type:type_name -> lemming.dataplane.sai.TlvType + 110, // 399: lemming.dataplane.sai.SwitchAttribute.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 253, // 400: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval_range:type_name -> lemming.dataplane.sai.Uint32Range + 236, // 401: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap + 253, // 402: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval_range:type_name -> lemming.dataplane.sai.Uint32Range + 236, // 403: lemming.dataplane.sai.SwitchAttribute.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap + 105, // 404: lemming.dataplane.sai.SwitchAttribute.supported_protected_object_type:type_name -> lemming.dataplane.sai.ObjectType + 15, // 405: lemming.dataplane.sai.SwitchAttribute.supported_ipv4_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType + 15, // 406: lemming.dataplane.sai.SwitchAttribute.supported_ipv6_bfd_session_offload_type:type_name -> lemming.dataplane.sai.BfdSessionOffloadType + 168, // 407: lemming.dataplane.sai.SwitchAttribute.supported_extended_stats_mode:type_name -> lemming.dataplane.sai.StatsMode + 105, // 408: lemming.dataplane.sai.SwitchAttribute.supported_object_type_list:type_name -> lemming.dataplane.sai.ObjectType + 176, // 409: lemming.dataplane.sai.SwitchAttribute.hardware_access_bus:type_name -> lemming.dataplane.sai.SwitchHardwareAccessBus + 174, // 410: lemming.dataplane.sai.SwitchAttribute.firmware_load_method:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadMethod + 175, // 411: lemming.dataplane.sai.SwitchAttribute.firmware_load_type:type_name -> lemming.dataplane.sai.SwitchFirmwareLoadType + 183, // 412: lemming.dataplane.sai.SwitchAttribute.type:type_name -> lemming.dataplane.sai.SwitchType + 250, // 413: lemming.dataplane.sai.SwitchAttribute.system_port_config_list:type_name -> lemming.dataplane.sai.SystemPortConfig + 173, // 414: lemming.dataplane.sai.SwitchAttribute.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode + 222, // 415: lemming.dataplane.sai.SwitchAttribute.acl_stage_post_ingress:type_name -> lemming.dataplane.sai.ACLCapability + 177, // 416: lemming.dataplane.sai.SwitchAttribute.hostif_oper_status_update_mode:type_name -> lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode + 170, // 417: lemming.dataplane.sai.SwitchAttribute.reg_fatal_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 170, // 418: lemming.dataplane.sai.SwitchAttribute.reg_warning_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 170, // 419: lemming.dataplane.sai.SwitchAttribute.reg_notice_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 222, // 420: lemming.dataplane.sai.SwitchAttribute.acl_stage_pre_ingress:type_name -> lemming.dataplane.sai.ACLCapability + 167, // 421: lemming.dataplane.sai.SwitchAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 213, // 422: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType + 110, // 423: lemming.dataplane.sai.SwitchTunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 207, // 424: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode + 205, // 425: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode + 214, // 426: lemming.dataplane.sai.SwitchTunnelAttribute.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode + 184, // 427: lemming.dataplane.sai.SystemPortAttribute.type:type_name -> lemming.dataplane.sai.SystemPortType + 250, // 428: lemming.dataplane.sai.SystemPortAttribute.config_info:type_name -> lemming.dataplane.sai.SystemPortConfig + 185, // 429: lemming.dataplane.sai.TableBitmapClassificationEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapClassificationEntryAction + 187, // 430: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.action:type_name -> lemming.dataplane.sai.TableBitmapRouterEntryAction + 231, // 431: lemming.dataplane.sai.TableBitmapRouterEntryAttribute.dst_ip_key:type_name -> lemming.dataplane.sai.IpPrefix + 189, // 432: lemming.dataplane.sai.TableMetaTunnelEntryAttribute.action:type_name -> lemming.dataplane.sai.TableMetaTunnelEntryAction + 191, // 433: lemming.dataplane.sai.TamAttribute.tam_bind_point_type_list:type_name -> lemming.dataplane.sai.TamBindPointType + 193, // 434: lemming.dataplane.sai.TamEventAttribute.type:type_name -> lemming.dataplane.sai.TamEventType + 192, // 435: lemming.dataplane.sai.TamEventThresholdAttribute.unit:type_name -> lemming.dataplane.sai.TamEventThresholdUnit + 195, // 436: lemming.dataplane.sai.TamIntAttribute.type:type_name -> lemming.dataplane.sai.TamIntType + 194, // 437: lemming.dataplane.sai.TamIntAttribute.int_presence_type:type_name -> lemming.dataplane.sai.TamIntPresenceType + 200, // 438: lemming.dataplane.sai.TamMathFuncAttribute.tam_tel_math_func_type:type_name -> lemming.dataplane.sai.TamTelMathFuncType + 198, // 439: lemming.dataplane.sai.TamReportAttribute.type:type_name -> lemming.dataplane.sai.TamReportType + 197, // 440: lemming.dataplane.sai.TamReportAttribute.report_mode:type_name -> lemming.dataplane.sai.TamReportMode + 196, // 441: lemming.dataplane.sai.TamReportAttribute.report_interval_unit:type_name -> lemming.dataplane.sai.TamReportIntervalUnit + 199, // 442: lemming.dataplane.sai.TamTelemetryAttribute.tam_reporting_unit:type_name -> lemming.dataplane.sai.TamReportingUnit + 201, // 443: lemming.dataplane.sai.TamTelTypeAttribute.tam_telemetry_type:type_name -> lemming.dataplane.sai.TamTelemetryType + 203, // 444: lemming.dataplane.sai.TamTransportAttribute.transport_type:type_name -> lemming.dataplane.sai.TamTransportType + 202, // 445: lemming.dataplane.sai.TamTransportAttribute.transport_auth_type:type_name -> lemming.dataplane.sai.TamTransportAuthType + 213, // 446: lemming.dataplane.sai.TunnelAttribute.type:type_name -> lemming.dataplane.sai.TunnelType + 209, // 447: lemming.dataplane.sai.TunnelAttribute.peer_mode:type_name -> lemming.dataplane.sai.TunnelPeerMode + 212, // 448: lemming.dataplane.sai.TunnelAttribute.encap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode + 206, // 449: lemming.dataplane.sai.TunnelAttribute.encap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode + 207, // 450: lemming.dataplane.sai.TunnelAttribute.encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode + 205, // 451: lemming.dataplane.sai.TunnelAttribute.decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode + 212, // 452: lemming.dataplane.sai.TunnelAttribute.decap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode + 206, // 453: lemming.dataplane.sai.TunnelAttribute.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode + 110, // 454: lemming.dataplane.sai.TunnelAttribute.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 214, // 455: lemming.dataplane.sai.TunnelAttribute.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode + 167, // 456: lemming.dataplane.sai.TunnelAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 208, // 457: lemming.dataplane.sai.TunnelMapAttribute.type:type_name -> lemming.dataplane.sai.TunnelMapType + 208, // 458: lemming.dataplane.sai.TunnelMapEntryAttribute.tunnel_map_type:type_name -> lemming.dataplane.sai.TunnelMapType + 211, // 459: lemming.dataplane.sai.TunnelTermTableEntryAttribute.type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryType + 213, // 460: lemming.dataplane.sai.TunnelTermTableEntryAttribute.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType + 73, // 461: lemming.dataplane.sai.TunnelTermTableEntryAttribute.ip_addr_family:type_name -> lemming.dataplane.sai.IpAddrFamily + 215, // 462: lemming.dataplane.sai.UdfAttribute.base:type_name -> lemming.dataplane.sai.UdfBase + 216, // 463: lemming.dataplane.sai.UdfGroupAttribute.type:type_name -> lemming.dataplane.sai.UdfGroupType + 223, // 464: lemming.dataplane.sai.UdfMatchAttribute.l2_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 465: lemming.dataplane.sai.UdfMatchAttribute.l3_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 466: lemming.dataplane.sai.UdfMatchAttribute.gre_type:type_name -> lemming.dataplane.sai.AclFieldData + 223, // 467: lemming.dataplane.sai.UdfMatchAttribute.l4_dst_port_type:type_name -> lemming.dataplane.sai.AclFieldData + 110, // 468: lemming.dataplane.sai.VirtualRouterAttribute.violation_ttl1_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 469: lemming.dataplane.sai.VirtualRouterAttribute.violation_ip_options_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 110, // 470: lemming.dataplane.sai.VirtualRouterAttribute.unknown_l3_multicast_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 218, // 471: lemming.dataplane.sai.VlanAttribute.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType + 218, // 472: lemming.dataplane.sai.VlanAttribute.ipv6_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType + 217, // 473: lemming.dataplane.sai.VlanAttribute.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 217, // 474: lemming.dataplane.sai.VlanAttribute.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 217, // 475: lemming.dataplane.sai.VlanAttribute.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 167, // 476: lemming.dataplane.sai.VlanAttribute.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 220, // 477: lemming.dataplane.sai.VlanMemberAttribute.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode + 50, // 478: lemming.dataplane.sai.WredAttribute.ecn_mark_mode:type_name -> lemming.dataplane.sai.EcnMarkMode + 223, // 479: lemming.dataplane.sai.AclEntryAttribute.UserDefinedFieldGroupMinEntry.value:type_name -> lemming.dataplane.sai.AclFieldData + 372, // 480: lemming.dataplane.sai.attr_enum_value:extendee -> google.protobuf.FieldOptions + 373, // 481: lemming.dataplane.sai.sai_type:extendee -> google.protobuf.MessageOptions + 105, // 482: lemming.dataplane.sai.sai_type:type_name -> lemming.dataplane.sai.ObjectType + 254, // 483: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:input_type -> lemming.dataplane.sai.ObjectTypeQueryRequest + 256, // 484: lemming.dataplane.sai.Entrypoint.Initialize:input_type -> lemming.dataplane.sai.InitializeRequest + 258, // 485: lemming.dataplane.sai.Entrypoint.Uninitialize:input_type -> lemming.dataplane.sai.UninitializeRequest + 255, // 486: lemming.dataplane.sai.Entrypoint.ObjectTypeQuery:output_type -> lemming.dataplane.sai.ObjectTypeQueryResponse + 257, // 487: lemming.dataplane.sai.Entrypoint.Initialize:output_type -> lemming.dataplane.sai.InitializeResponse + 259, // 488: lemming.dataplane.sai.Entrypoint.Uninitialize:output_type -> lemming.dataplane.sai.UninitializeResponse + 486, // [486:489] is the sub-list for method output_type + 483, // [483:486] is the sub-list for method input_type + 482, // [482:483] is the sub-list for extension type_name + 480, // [480:482] is the sub-list for extension extendee + 0, // [0:480] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_common_proto_init() } @@ -46333,7 +48876,7 @@ func file_dataplane_proto_sai_common_proto_init() { file_dataplane_proto_sai_common_proto_msgTypes[120].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[121].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[122].OneofWrappers = []any{} - file_dataplane_proto_sai_common_proto_msgTypes[124].OneofWrappers = []any{} + file_dataplane_proto_sai_common_proto_msgTypes[123].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[125].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[126].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[127].OneofWrappers = []any{} @@ -46355,13 +48898,14 @@ func file_dataplane_proto_sai_common_proto_init() { file_dataplane_proto_sai_common_proto_msgTypes[143].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[144].OneofWrappers = []any{} file_dataplane_proto_sai_common_proto_msgTypes[145].OneofWrappers = []any{} + file_dataplane_proto_sai_common_proto_msgTypes[146].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_common_proto_rawDesc), len(file_dataplane_proto_sai_common_proto_rawDesc)), - NumEnums: 202, - NumMessages: 149, + NumEnums: 221, + NumMessages: 150, NumExtensions: 2, NumServices: 1, }, diff --git a/dataplane/proto/sai/common.proto b/dataplane/proto/sai/common.proto index 5061c2e46..d469b0cae 100644 --- a/dataplane/proto/sai/common.proto +++ b/dataplane/proto/sai/common.proto @@ -2,4518 +2,4958 @@ syntax = "proto3"; package lemming.dataplane.sai; - + import "google/protobuf/timestamp.proto"; import "google/protobuf/descriptor.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; extend google.protobuf.FieldOptions { - optional int32 attr_enum_value = 515153358; + optional int32 attr_enum_value = 515153358; } extend google.protobuf.MessageOptions { - optional ObjectType sai_type = 515146388; + optional ObjectType sai_type = 515146388; } message AclActionData { - bool enable = 1; - oneof parameter { - uint64 uint = 2; - uint64 int = 3; - bytes mac = 4; - bytes ip = 5; - uint64 oid = 6; - Uint64List objlist = 7; - bytes ipaddr = 8; - PacketAction packet_action = 9; - }; + bool enable = 1; + oneof parameter { + uint64 uint = 2; + uint64 int = 3; + bytes mac = 4; + bytes ip = 5; + uint64 oid = 6; + Uint64List objlist = 7; + bytes ipaddr = 8; + PacketAction packet_action = 9; + }; } message ACLCapability { - bool is_action_list_mandatory = 1; - repeated AclActionType action_list = 2; + bool is_action_list_mandatory = 1; + repeated AclActionType action_list = 2; } message AclFieldData { - bool enable = 1; - oneof mask { - uint64 mask_uint = 2; - int64 mask_int = 3; - bytes mask_mac = 4; - bytes mask_ip = 5; - Uint64List mask_list = 6; - bytes mask_u8list = 15; - }; - oneof data { - bool data_bool = 7; - uint64 data_uint = 8; - int64 data_int = 9; - bytes data_mac = 10; - bytes data_ip = 11; - Uint64List data_list = 12; - AclIpType data_ip_type = 13; - uint64 data_oid = 14; - bytes data_u8list = 16; - }; + bool enable = 1; + oneof mask { + uint64 mask_uint = 2; + int64 mask_int = 3; + bytes mask_mac = 4; + bytes mask_ip = 5; + Uint64List mask_list = 6; + bytes mask_u8list = 15; + }; + oneof data { + bool data_bool = 7; + uint64 data_uint = 8; + int64 data_int = 9; + bytes data_mac = 10; + bytes data_ip = 11; + Uint64List data_list = 12; + AclIpType data_ip_type = 13; + uint64 data_oid = 14; + bytes data_u8list = 16; + }; } message Uint64List { - repeated uint64 list = 1; + repeated uint64 list = 1; } message ACLResource { - AclStage stage = 1; - AclBindPointType bind_point = 2; - uint32 avail_num = 3; + AclStage stage = 1; + AclBindPointType bind_point = 2; + uint32 avail_num = 3; } message BfdSessionStateChangeNotificationData { - uint64 bfd_session_id = 1; - BfdSessionState session_state = 2; + uint64 bfd_session_id = 1; + BfdSessionState session_state = 2; } message FabricPortReachability { - uint32 switch_id = 1; - bool reachable = 2; + uint32 switch_id = 1; + bool reachable = 2; } message FdbEntry { - uint64 switch_id = 1; - bytes mac_address = 2; - uint64 bv_id = 3; + uint64 switch_id = 1; + bytes mac_address = 2; + uint64 bv_id = 3; } - message FdbEventNotificationData { - FdbEvent event_type = 1; - FdbEntry fdb_entry = 2; - repeated FdbEntryAttribute attrs = 3; + FdbEvent event_type = 1; + FdbEntry fdb_entry = 2; + repeated FdbEntryAttribute attrs = 3; } message InsegEntry { - uint64 switch_id = 1; - uint32 label = 2; + uint64 switch_id = 1; + uint32 label = 2; } message IpPrefix { - bytes addr = 1; - bytes mask = 2; + bytes addr = 1; + bytes mask = 2; } message IpmcEntry { - uint64 switch_id = 1; - uint64 vr_id = 2; - IpmcEntryType type = 3; - bytes destination = 4; - bytes source = 5; + uint64 switch_id = 1; + uint64 vr_id = 2; + IpmcEntryType type = 3; + bytes destination = 4; + bytes source = 5; } message IpsecSaStatusNotificationData { - uint64 ipsec_sa_id = 1; - IpsecSaOctetCountStatus ipsec_sa_octet_count_status = 2; - bool ipsec_egress_sn_at_max_limit = 3; + uint64 ipsec_sa_id = 1; + IpsecSaOctetCountStatus ipsec_sa_octet_count_status = 2; + bool ipsec_egress_sn_at_max_limit = 3; } message L2mcEntry { - uint64 switch_id = 1; - uint64 bv_id = 2; - L2mcEntryType type = 3; - bytes destination = 4; - bytes source = 5; + uint64 switch_id = 1; + uint64 bv_id = 2; + L2mcEntryType type = 3; + bytes destination = 4; + bytes source = 5; } message LatchStatus { - bool current_status = 1; - bool changed = 2; + bool current_status = 1; + bool changed = 2; } message UintMap { - map uintmap = 1; + map uintmap = 1; } message McastFdbEntry { - uint64 switch_id = 1; - bytes mac_address = 2; - uint64 bv_id = 3; + uint64 switch_id = 1; + bytes mac_address = 2; + uint64 bv_id = 3; } message MySidEntry { - uint64 switch_id = 1; - uint64 vr_id = 2; - uint32 locator_block_len = 3; - uint32 locator_node_len = 4; - uint32 function_len = 5; - uint32 args_len = 6; - bytes sid = 7; -} - -message NatEntryData{ - oneof key { - bytes key_src_ip = 2; - bytes key_dst_ip = 3; - uint32 key_proto = 4; - uint32 key_l4_src_port = 5; - uint32 key_l4_dst_port = 6; - }; - oneof mask { - bytes mask_src_ip = 7; - bytes mask_dst_ip = 8; - uint32 mask_proto = 9; - uint32 mask_l4_src_port = 10; - uint32 mask_l4_dst_port = 11; - }; + uint64 switch_id = 1; + uint64 vr_id = 2; + uint32 locator_block_len = 3; + uint32 locator_node_len = 4; + uint32 function_len = 5; + uint32 args_len = 6; + bytes sid = 7; +} + +message NatEntryData { + oneof key { + bytes key_src_ip = 2; + bytes key_dst_ip = 3; + uint32 key_proto = 4; + uint32 key_l4_src_port = 5; + uint32 key_l4_dst_port = 6; + }; + oneof mask { + bytes mask_src_ip = 7; + bytes mask_dst_ip = 8; + uint32 mask_proto = 9; + uint32 mask_l4_src_port = 10; + uint32 mask_l4_dst_port = 11; + }; } message NatEntry { - uint64 switch_id = 1; - uint64 vr_id = 2; - NatType nat_type = 3; - NatEntryData data = 4; + uint64 switch_id = 1; + uint64 vr_id = 2; + NatType nat_type = 3; + NatEntryData data = 4; } message NeighborEntry { - uint64 switch_id = 1; - uint64 rif_id = 2; - bytes ip_address = 3; + uint64 switch_id = 1; + uint64 rif_id = 2; + bytes ip_address = 3; } message PortEyeValues { - uint32 lane = 1; - int32 left = 2; - int32 right = 3; - int32 up = 4; - int32 down = 5; + uint32 lane = 1; + int32 left = 2; + int32 right = 3; + int32 up = 4; + int32 down = 5; } message PortLaneLatchStatus { - uint32 lane = 1; - LatchStatus value = 2; + uint32 lane = 1; + LatchStatus value = 2; } message PortOperStatusNotification { - uint64 port_id = 1; - PortOperStatus port_state = 2; + uint64 port_id = 1; + PortOperStatus port_state = 2; } message PRBS_RXState { - PortPrbsRxStatus rx_status = 1; - uint32 error_count = 2; + PortPrbsRxStatus rx_status = 1; + uint32 error_count = 2; } - -message QOSMapParams { - uint32 tc = 1; - uint32 dscp = 2; - uint32 dot1p = 3; - uint32 prio = 4; - uint32 pg = 5; - uint32 queue_index = 6; - PacketColor color = 7; - uint32 mpls_exp = 8; - uint32 fc = 9; +message QOSMapParams { + uint32 tc = 1; + uint32 dscp = 2; + uint32 dot1p = 3; + uint32 prio = 4; + uint32 pg = 5; + uint32 queue_index = 6; + PacketColor color = 7; + uint32 mpls_exp = 8; + uint32 fc = 9; } message QOSMap { - QOSMapParams key = 1; - QOSMapParams value = 2; + QOSMapParams key = 1; + QOSMapParams value = 2; } message QueueDeadlockNotificationData { - uint64 queue_id = 1; - QueuePfcDeadlockEventType event= 2; - bool app_managed_recovery = 3; + uint64 queue_id = 1; + QueuePfcDeadlockEventType event = 2; + bool app_managed_recovery = 3; } message RouteEntry { - uint64 switch_id = 1; - uint64 vr_id = 2; - IpPrefix destination = 3; + uint64 switch_id = 1; + uint64 vr_id = 2; + IpPrefix destination = 3; } message SystemPortConfig { - uint32 port_id = 1; - uint32 attached_switch_id = 2; - uint32 attached_core_index = 3; - uint32 attached_core_port_index = 4; - uint32 speed = 5; - uint32 num_voq = 6; + uint32 port_id = 1; + uint32 attached_switch_id = 2; + uint32 attached_core_index = 3; + uint32 attached_core_port_index = 4; + uint32 speed = 5; + uint32 num_voq = 6; } message HMAC { - uint32 key_id = 1; - repeated uint32 hmac = 2; + uint32 key_id = 1; + repeated uint32 hmac = 2; } message TLVEntry { - oneof entry { - bytes ingress_node = 1; - bytes egress_node = 2; - bytes opaque_container = 3; - HMAC hmac = 4; - } + oneof entry { + bytes ingress_node = 1; + bytes egress_node = 2; + bytes opaque_container = 3; + HMAC hmac = 4; + } } message Uint32Range { - uint64 min = 1; - uint64 max = 2; + uint64 min = 1; + uint64 max = 2; } message ObjectTypeQueryRequest { - uint64 object = 1; + uint64 object = 1; } message ObjectTypeQueryResponse { - ObjectType type = 1; + ObjectType type = 1; } -message InitializeRequest { -} +message InitializeRequest {} -message InitializeResponse { -} +message InitializeResponse {} -message UninitializeRequest { -} +message UninitializeRequest {} -message UninitializeResponse { -} +message UninitializeResponse {} service Entrypoint { - rpc ObjectTypeQuery(ObjectTypeQueryRequest) returns (ObjectTypeQueryResponse) {} + rpc ObjectTypeQuery(ObjectTypeQueryRequest) + returns (ObjectTypeQueryResponse) {} rpc Initialize(InitializeRequest) returns (InitializeResponse) {} rpc Uninitialize(UninitializeRequest) returns (UninitializeResponse) {} } enum AclActionType { - ACL_ACTION_TYPE_UNSPECIFIED = 0; - ACL_ACTION_TYPE_REDIRECT = 1; - ACL_ACTION_TYPE_ENDPOINT_IP = 2; - ACL_ACTION_TYPE_REDIRECT_LIST = 3; - ACL_ACTION_TYPE_PACKET_ACTION = 4; - ACL_ACTION_TYPE_FLOOD = 5; - ACL_ACTION_TYPE_COUNTER = 6; - ACL_ACTION_TYPE_MIRROR_INGRESS = 7; - ACL_ACTION_TYPE_MIRROR_EGRESS = 8; - ACL_ACTION_TYPE_SET_POLICER = 9; - ACL_ACTION_TYPE_DECREMENT_TTL = 10; - ACL_ACTION_TYPE_SET_TC = 11; - ACL_ACTION_TYPE_SET_PACKET_COLOR = 12; - ACL_ACTION_TYPE_SET_INNER_VLAN_ID = 13; - ACL_ACTION_TYPE_SET_INNER_VLAN_PRI = 14; - ACL_ACTION_TYPE_SET_OUTER_VLAN_ID = 15; - ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI = 16; - ACL_ACTION_TYPE_ADD_VLAN_ID = 51; - ACL_ACTION_TYPE_ADD_VLAN_PRI = 52; - ACL_ACTION_TYPE_SET_SRC_MAC = 17; - ACL_ACTION_TYPE_SET_DST_MAC = 18; - ACL_ACTION_TYPE_SET_SRC_IP = 19; - ACL_ACTION_TYPE_SET_DST_IP = 20; - ACL_ACTION_TYPE_SET_SRC_IPV6 = 21; - ACL_ACTION_TYPE_SET_DST_IPV6 = 22; - ACL_ACTION_TYPE_SET_DSCP = 23; - ACL_ACTION_TYPE_SET_ECN = 24; - ACL_ACTION_TYPE_SET_L4_SRC_PORT = 25; - ACL_ACTION_TYPE_SET_L4_DST_PORT = 26; - ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE = 27; - ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE = 28; - ACL_ACTION_TYPE_SET_ACL_META_DATA = 29; - ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST = 30; - ACL_ACTION_TYPE_SET_USER_TRAP_ID = 31; - ACL_ACTION_TYPE_SET_DO_NOT_LEARN = 32; - ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP = 33; - ACL_ACTION_TYPE_DTEL_INT_SESSION = 34; - ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE = 35; - ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE = 36; - ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT = 37; - ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS = 38; - ACL_ACTION_TYPE_NO_NAT = 39; - ACL_ACTION_TYPE_INT_INSERT = 40; - ACL_ACTION_TYPE_INT_DELETE = 41; - ACL_ACTION_TYPE_INT_REPORT_FLOW = 42; - ACL_ACTION_TYPE_INT_REPORT_DROPS = 43; - ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS = 44; - ACL_ACTION_TYPE_TAM_INT_OBJECT = 45; - ACL_ACTION_TYPE_SET_ISOLATION_GROUP = 46; - ACL_ACTION_TYPE_MACSEC_FLOW = 47; - ACL_ACTION_TYPE_SET_LAG_HASH_ID = 48; - ACL_ACTION_TYPE_SET_ECMP_HASH_ID = 49; - ACL_ACTION_TYPE_SET_VRF = 50; - ACL_ACTION_TYPE_SET_FORWARDING_CLASS = 53; - ACL_ACTION_TYPE_SET_ARS_MONITORING = 54; - ACL_ACTION_TYPE_SET_ARS_OBJECT = 55; - ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING = 56; - ACL_ACTION_TYPE_CHAIN_REDIRECT = 57; + ACL_ACTION_TYPE_UNSPECIFIED = 0; + ACL_ACTION_TYPE_REDIRECT = 1; + ACL_ACTION_TYPE_ENDPOINT_IP = 2; + ACL_ACTION_TYPE_REDIRECT_LIST = 3; + ACL_ACTION_TYPE_PACKET_ACTION = 4; + ACL_ACTION_TYPE_FLOOD = 5; + ACL_ACTION_TYPE_COUNTER = 6; + ACL_ACTION_TYPE_MIRROR_INGRESS = 7; + ACL_ACTION_TYPE_MIRROR_EGRESS = 8; + ACL_ACTION_TYPE_SET_POLICER = 9; + ACL_ACTION_TYPE_DECREMENT_TTL = 10; + ACL_ACTION_TYPE_SET_TC = 11; + ACL_ACTION_TYPE_SET_PACKET_COLOR = 12; + ACL_ACTION_TYPE_SET_INNER_VLAN_ID = 13; + ACL_ACTION_TYPE_SET_INNER_VLAN_PRI = 14; + ACL_ACTION_TYPE_SET_OUTER_VLAN_ID = 15; + ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI = 16; + ACL_ACTION_TYPE_ADD_VLAN_ID = 51; + ACL_ACTION_TYPE_ADD_VLAN_PRI = 52; + ACL_ACTION_TYPE_SET_SRC_MAC = 17; + ACL_ACTION_TYPE_SET_DST_MAC = 18; + ACL_ACTION_TYPE_SET_SRC_IP = 19; + ACL_ACTION_TYPE_SET_DST_IP = 20; + ACL_ACTION_TYPE_SET_SRC_IPV6 = 21; + ACL_ACTION_TYPE_SET_DST_IPV6 = 22; + ACL_ACTION_TYPE_SET_DSCP = 23; + ACL_ACTION_TYPE_SET_ECN = 24; + ACL_ACTION_TYPE_SET_L4_SRC_PORT = 25; + ACL_ACTION_TYPE_SET_L4_DST_PORT = 26; + ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE = 27; + ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE = 28; + ACL_ACTION_TYPE_SET_ACL_META_DATA = 29; + ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST = 30; + ACL_ACTION_TYPE_SET_USER_TRAP_ID = 31; + ACL_ACTION_TYPE_SET_DO_NOT_LEARN = 32; + ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP = 33; + ACL_ACTION_TYPE_DTEL_INT_SESSION = 34; + ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE = 35; + ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE = 36; + ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT = 37; + ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS = 38; + ACL_ACTION_TYPE_NO_NAT = 39; + ACL_ACTION_TYPE_INT_INSERT = 40; + ACL_ACTION_TYPE_INT_DELETE = 41; + ACL_ACTION_TYPE_INT_REPORT_FLOW = 42; + ACL_ACTION_TYPE_INT_REPORT_DROPS = 43; + ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS = 44; + ACL_ACTION_TYPE_TAM_INT_OBJECT = 45; + ACL_ACTION_TYPE_SET_ISOLATION_GROUP = 46; + ACL_ACTION_TYPE_MACSEC_FLOW = 47; + ACL_ACTION_TYPE_SET_LAG_HASH_ID = 48; + ACL_ACTION_TYPE_SET_ECMP_HASH_ID = 49; + ACL_ACTION_TYPE_SET_VRF = 50; + ACL_ACTION_TYPE_SET_FORWARDING_CLASS = 53; + ACL_ACTION_TYPE_SET_ARS_MONITORING = 54; + ACL_ACTION_TYPE_SET_ARS_OBJECT = 55; + ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING = 56; + ACL_ACTION_TYPE_CHAIN_REDIRECT = 57; } enum AclBindPointType { - option allow_alias = true; - ACL_BIND_POINT_TYPE_UNSPECIFIED = 0; - ACL_BIND_POINT_TYPE_PORT = 1; - ACL_BIND_POINT_TYPE_LAG = 2; - ACL_BIND_POINT_TYPE_VLAN = 3; - ACL_BIND_POINT_TYPE_ROUTER_INTERFACE = 4; - ACL_BIND_POINT_TYPE_ROUTER_INTF = 4; - ACL_BIND_POINT_TYPE_SWITCH = 5; + option allow_alias = true; + ACL_BIND_POINT_TYPE_UNSPECIFIED = 0; + ACL_BIND_POINT_TYPE_PORT = 1; + ACL_BIND_POINT_TYPE_LAG = 2; + ACL_BIND_POINT_TYPE_VLAN = 3; + ACL_BIND_POINT_TYPE_ROUTER_INTERFACE = 4; + ACL_BIND_POINT_TYPE_ROUTER_INTF = 4; + ACL_BIND_POINT_TYPE_SWITCH = 5; } enum AclDtelFlowOp { - ACL_DTEL_FLOW_OP_UNSPECIFIED = 0; - ACL_DTEL_FLOW_OP_NOP = 1; - ACL_DTEL_FLOW_OP_INT = 2; - ACL_DTEL_FLOW_OP_IOAM = 3; - ACL_DTEL_FLOW_OP_POSTCARD = 4; + ACL_DTEL_FLOW_OP_UNSPECIFIED = 0; + ACL_DTEL_FLOW_OP_NOP = 1; + ACL_DTEL_FLOW_OP_INT = 2; + ACL_DTEL_FLOW_OP_IOAM = 3; + ACL_DTEL_FLOW_OP_POSTCARD = 4; } enum AclIpFrag { - ACL_IP_FRAG_UNSPECIFIED = 0; - ACL_IP_FRAG_ANY = 1; - ACL_IP_FRAG_NON_FRAG = 2; - ACL_IP_FRAG_NON_FRAG_OR_HEAD = 3; - ACL_IP_FRAG_HEAD = 4; - ACL_IP_FRAG_NON_HEAD = 5; + ACL_IP_FRAG_UNSPECIFIED = 0; + ACL_IP_FRAG_ANY = 1; + ACL_IP_FRAG_NON_FRAG = 2; + ACL_IP_FRAG_NON_FRAG_OR_HEAD = 3; + ACL_IP_FRAG_HEAD = 4; + ACL_IP_FRAG_NON_HEAD = 5; } enum AclIpType { - ACL_IP_TYPE_UNSPECIFIED = 0; - ACL_IP_TYPE_ANY = 1; - ACL_IP_TYPE_IP = 2; - ACL_IP_TYPE_NON_IP = 3; - ACL_IP_TYPE_IPV4ANY = 4; - ACL_IP_TYPE_NON_IPV4 = 5; - ACL_IP_TYPE_IPV6ANY = 6; - ACL_IP_TYPE_NON_IPV6 = 7; - ACL_IP_TYPE_ARP = 8; - ACL_IP_TYPE_ARP_REQUEST = 9; - ACL_IP_TYPE_ARP_REPLY = 10; + ACL_IP_TYPE_UNSPECIFIED = 0; + ACL_IP_TYPE_ANY = 1; + ACL_IP_TYPE_IP = 2; + ACL_IP_TYPE_NON_IP = 3; + ACL_IP_TYPE_IPV4ANY = 4; + ACL_IP_TYPE_NON_IPV4 = 5; + ACL_IP_TYPE_IPV6ANY = 6; + ACL_IP_TYPE_NON_IPV6 = 7; + ACL_IP_TYPE_ARP = 8; + ACL_IP_TYPE_ARP_REQUEST = 9; + ACL_IP_TYPE_ARP_REPLY = 10; } enum AclRangeType { - ACL_RANGE_TYPE_UNSPECIFIED = 0; - ACL_RANGE_TYPE_L4_SRC_PORT_RANGE = 1; - ACL_RANGE_TYPE_L4_DST_PORT_RANGE = 2; - ACL_RANGE_TYPE_OUTER_VLAN = 3; - ACL_RANGE_TYPE_INNER_VLAN = 4; - ACL_RANGE_TYPE_PACKET_LENGTH = 5; + ACL_RANGE_TYPE_UNSPECIFIED = 0; + ACL_RANGE_TYPE_L4_SRC_PORT_RANGE = 1; + ACL_RANGE_TYPE_L4_DST_PORT_RANGE = 2; + ACL_RANGE_TYPE_OUTER_VLAN = 3; + ACL_RANGE_TYPE_INNER_VLAN = 4; + ACL_RANGE_TYPE_PACKET_LENGTH = 5; } enum AclStage { - ACL_STAGE_UNSPECIFIED = 0; - ACL_STAGE_INGRESS = 1; - ACL_STAGE_EGRESS = 2; - ACL_STAGE_INGRESS_MACSEC = 3; - ACL_STAGE_EGRESS_MACSEC = 4; - ACL_STAGE_PRE_INGRESS = 5; - ACL_STAGE_POST_INGRESS = 6; + ACL_STAGE_UNSPECIFIED = 0; + ACL_STAGE_INGRESS = 1; + ACL_STAGE_EGRESS = 2; + ACL_STAGE_INGRESS_MACSEC = 3; + ACL_STAGE_EGRESS_MACSEC = 4; + ACL_STAGE_PRE_INGRESS = 5; + ACL_STAGE_POST_INGRESS = 6; } enum AclTableChainGroupStage { - ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED = 0; - ACL_TABLE_CHAIN_GROUP_STAGE_0 = 1; - ACL_TABLE_CHAIN_GROUP_STAGE_1 = 2; - ACL_TABLE_CHAIN_GROUP_STAGE_2 = 3; - ACL_TABLE_CHAIN_GROUP_STAGE_3 = 4; + ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED = 0; + ACL_TABLE_CHAIN_GROUP_STAGE_0 = 1; + ACL_TABLE_CHAIN_GROUP_STAGE_1 = 2; + ACL_TABLE_CHAIN_GROUP_STAGE_2 = 3; + ACL_TABLE_CHAIN_GROUP_STAGE_3 = 4; } enum AclTableChainGroupType { - ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED = 0; - ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL = 1; - ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL = 2; + ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED = 0; + ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL = 1; + ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL = 2; } enum AclTableGroupType { - ACL_TABLE_GROUP_TYPE_UNSPECIFIED = 0; - ACL_TABLE_GROUP_TYPE_SEQUENTIAL = 1; - ACL_TABLE_GROUP_TYPE_PARALLEL = 2; + ACL_TABLE_GROUP_TYPE_UNSPECIFIED = 0; + ACL_TABLE_GROUP_TYPE_SEQUENTIAL = 1; + ACL_TABLE_GROUP_TYPE_PARALLEL = 2; } enum AclTableMatchType { - ACL_TABLE_MATCH_TYPE_UNSPECIFIED = 0; - ACL_TABLE_MATCH_TYPE_TERNARY = 1; - ACL_TABLE_MATCH_TYPE_EXACT = 2; + ACL_TABLE_MATCH_TYPE_UNSPECIFIED = 0; + ACL_TABLE_MATCH_TYPE_TERNARY = 1; + ACL_TABLE_MATCH_TYPE_EXACT = 2; } enum AclTableSupportedMatchType { - ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED = 0; - ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY = 1; - ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT = 2; + ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED = 0; + ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY = 1; + ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT = 2; } enum ApiExtensions { - option allow_alias = true; - API_EXTENSIONS_UNSPECIFIED = 0; - API_EXTENSIONS_RANGE_START = 53; - API_BMTOR = 53; - API_DASH_ACL = 54; - API_DASH_DIRECTION_LOOKUP = 55; - API_DASH_ENI = 56; - API_DASH_INBOUND_ROUTING = 57; - API_DASH_METER = 58; - API_DASH_OUTBOUND_CA_TO_PA = 59; - API_DASH_OUTBOUND_ROUTING = 60; - API_DASH_VNET = 61; - API_DASH_PA_VALIDATION = 62; - API_DASH_VIP = 63; - API_EXTENSIONS_RANGE_END = 64; + option allow_alias = true; + API_EXTENSIONS_UNSPECIFIED = 0; + API_EXTENSIONS_RANGE_START = 536870913; + API_BMTOR = 536870913; + API_DASH_ACL = 536870914; + API_DASH_DIRECTION_LOOKUP = 536870915; + API_DASH_ENI = 536870916; + API_DASH_INBOUND_ROUTING = 536870917; + API_DASH_METER = 536870918; + API_DASH_OUTBOUND_CA_TO_PA = 536870919; + API_DASH_OUTBOUND_ROUTING = 536870920; + API_DASH_VNET = 536870921; + API_DASH_PA_VALIDATION = 536870922; + API_DASH_VIP = 536870923; + API_DASH_HA = 536870924; + API_DASH_TUNNEL = 536870925; + API_DASH_FLOW = 536870926; + API_DASH_APPLIANCE = 536870927; + API_EXTENSIONS_RANGE_END = 536870928; } enum Api { - API_UNSPECIFIED = 0; - API_SAI_UNSPECIFIED = 1; - API_SWITCH = 2; - API_PORT = 3; - API_FDB = 4; - API_VLAN = 5; - API_VIRTUAL_ROUTER = 6; - API_ROUTE = 7; - API_NEXT_HOP = 8; - API_NEXT_HOP_GROUP = 9; - API_ROUTER_INTERFACE = 10; - API_NEIGHBOR = 11; - API_ACL = 12; - API_HOSTIF = 13; - API_MIRROR = 14; - API_SAMPLEPACKET = 15; - API_STP = 16; - API_LAG = 17; - API_POLICER = 18; - API_WRED = 19; - API_QOS_MAP = 20; - API_QUEUE = 21; - API_SCHEDULER = 22; - API_SCHEDULER_GROUP = 23; - API_BUFFER = 24; - API_HASH = 25; - API_UDF = 26; - API_TUNNEL = 27; - API_L2MC = 28; - API_IPMC = 29; - API_RPF_GROUP = 30; - API_L2MC_GROUP = 31; - API_IPMC_GROUP = 32; - API_MCAST_FDB = 33; - API_BRIDGE = 34; - API_TAM = 35; - API_SRV6 = 36; - API_MPLS = 37; - API_DTEL = 38; - API_BFD = 39; - API_ISOLATION_GROUP = 40; - API_NAT = 41; - API_COUNTER = 42; - API_DEBUG_COUNTER = 43; - API_MACSEC = 44; - API_SYSTEM_PORT = 45; - API_MY_MAC = 46; - API_IPSEC = 47; - API_GENERIC_PROGRAMMABLE = 48; - API_ARS = 49; - API_ARS_PROFILE = 50; - API_TWAMP = 51; - API_POE = 52; - API_MAX = 53; - API_CUSTOM_RANGE_START = 257; - API_CUSTOM_RANGE_END = 258; + API_UNSPECIFIED = 0; + API_SAI_UNSPECIFIED = 1; + API_SWITCH = 2; + API_PORT = 3; + API_FDB = 4; + API_VLAN = 5; + API_VIRTUAL_ROUTER = 6; + API_ROUTE = 7; + API_NEXT_HOP = 8; + API_NEXT_HOP_GROUP = 9; + API_ROUTER_INTERFACE = 10; + API_NEIGHBOR = 11; + API_ACL = 12; + API_HOSTIF = 13; + API_MIRROR = 14; + API_SAMPLEPACKET = 15; + API_STP = 16; + API_LAG = 17; + API_POLICER = 18; + API_WRED = 19; + API_QOS_MAP = 20; + API_QUEUE = 21; + API_SCHEDULER = 22; + API_SCHEDULER_GROUP = 23; + API_BUFFER = 24; + API_HASH = 25; + API_UDF = 26; + API_TUNNEL = 27; + API_L2MC = 28; + API_IPMC = 29; + API_RPF_GROUP = 30; + API_L2MC_GROUP = 31; + API_IPMC_GROUP = 32; + API_MCAST_FDB = 33; + API_BRIDGE = 34; + API_TAM = 35; + API_SRV6 = 36; + API_MPLS = 37; + API_DTEL = 38; + API_BFD = 39; + API_ISOLATION_GROUP = 40; + API_NAT = 41; + API_COUNTER = 42; + API_DEBUG_COUNTER = 43; + API_MACSEC = 44; + API_SYSTEM_PORT = 45; + API_MY_MAC = 46; + API_IPSEC = 47; + API_GENERIC_PROGRAMMABLE = 48; + API_ARS = 49; + API_ARS_PROFILE = 50; + API_TWAMP = 51; + API_POE = 52; + API_ICMP_ECHO = 53; + API_MAX = 54; + API_EXTENSIONS_RANGE_BASE = 536870913; } enum BfdEncapsulationType { - BFD_ENCAPSULATION_TYPE_UNSPECIFIED = 0; - BFD_ENCAPSULATION_TYPE_IP_IN_IP = 1; - BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL = 2; - BFD_ENCAPSULATION_TYPE_NONE = 3; - BFD_ENCAPSULATION_TYPE_SRV6 = 4; + BFD_ENCAPSULATION_TYPE_UNSPECIFIED = 0; + BFD_ENCAPSULATION_TYPE_IP_IN_IP = 1; + BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL = 2; + BFD_ENCAPSULATION_TYPE_NONE = 3; + BFD_ENCAPSULATION_TYPE_SRV6 = 4; } enum BfdSessionOffloadType { - BFD_SESSION_OFFLOAD_TYPE_UNSPECIFIED = 0; - BFD_SESSION_OFFLOAD_TYPE_NONE = 1; - BFD_SESSION_OFFLOAD_TYPE_FULL = 2; - BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE = 3; + BFD_SESSION_OFFLOAD_TYPE_UNSPECIFIED = 0; + BFD_SESSION_OFFLOAD_TYPE_NONE = 1; + BFD_SESSION_OFFLOAD_TYPE_FULL = 2; + BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE = 3; } enum BfdSessionStat { - BFD_SESSION_STAT_UNSPECIFIED = 0; - BFD_SESSION_STAT_IN_PACKETS = 1; - BFD_SESSION_STAT_OUT_PACKETS = 2; - BFD_SESSION_STAT_DROP_PACKETS = 3; + BFD_SESSION_STAT_UNSPECIFIED = 0; + BFD_SESSION_STAT_IN_PACKETS = 1; + BFD_SESSION_STAT_OUT_PACKETS = 2; + BFD_SESSION_STAT_DROP_PACKETS = 3; } enum BfdSessionState { - BFD_SESSION_STATE_UNSPECIFIED = 0; - BFD_SESSION_STATE_ADMIN_DOWN = 1; - BFD_SESSION_STATE_DOWN = 2; - BFD_SESSION_STATE_INIT = 3; - BFD_SESSION_STATE_UP = 4; + BFD_SESSION_STATE_UNSPECIFIED = 0; + BFD_SESSION_STATE_ADMIN_DOWN = 1; + BFD_SESSION_STATE_DOWN = 2; + BFD_SESSION_STATE_INIT = 3; + BFD_SESSION_STATE_UP = 4; } enum BfdSessionType { - BFD_SESSION_TYPE_UNSPECIFIED = 0; - BFD_SESSION_TYPE_DEMAND_ACTIVE = 1; - BFD_SESSION_TYPE_DEMAND_PASSIVE = 2; - BFD_SESSION_TYPE_ASYNC_ACTIVE = 3; - BFD_SESSION_TYPE_ASYNC_PASSIVE = 4; + BFD_SESSION_TYPE_UNSPECIFIED = 0; + BFD_SESSION_TYPE_DEMAND_ACTIVE = 1; + BFD_SESSION_TYPE_DEMAND_PASSIVE = 2; + BFD_SESSION_TYPE_ASYNC_ACTIVE = 3; + BFD_SESSION_TYPE_ASYNC_PASSIVE = 4; } enum BridgeFloodControlType { - BRIDGE_FLOOD_CONTROL_TYPE_UNSPECIFIED = 0; - BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS = 1; - BRIDGE_FLOOD_CONTROL_TYPE_NONE = 2; - BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP = 3; - BRIDGE_FLOOD_CONTROL_TYPE_COMBINED = 4; + BRIDGE_FLOOD_CONTROL_TYPE_UNSPECIFIED = 0; + BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS = 1; + BRIDGE_FLOOD_CONTROL_TYPE_NONE = 2; + BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP = 3; + BRIDGE_FLOOD_CONTROL_TYPE_COMBINED = 4; } enum BridgePortFdbLearningMode { - BRIDGE_PORT_FDB_LEARNING_MODE_UNSPECIFIED = 0; - BRIDGE_PORT_FDB_LEARNING_MODE_DROP = 1; - BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE = 2; - BRIDGE_PORT_FDB_LEARNING_MODE_HW = 3; - BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP = 4; - BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG = 5; - BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION = 6; + BRIDGE_PORT_FDB_LEARNING_MODE_UNSPECIFIED = 0; + BRIDGE_PORT_FDB_LEARNING_MODE_DROP = 1; + BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE = 2; + BRIDGE_PORT_FDB_LEARNING_MODE_HW = 3; + BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP = 4; + BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG = 5; + BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION = 6; } enum BridgePortStat { - BRIDGE_PORT_STAT_UNSPECIFIED = 0; - BRIDGE_PORT_STAT_IN_OCTETS = 1; - BRIDGE_PORT_STAT_IN_PACKETS = 2; - BRIDGE_PORT_STAT_OUT_OCTETS = 3; - BRIDGE_PORT_STAT_OUT_PACKETS = 4; + BRIDGE_PORT_STAT_UNSPECIFIED = 0; + BRIDGE_PORT_STAT_IN_OCTETS = 1; + BRIDGE_PORT_STAT_IN_PACKETS = 2; + BRIDGE_PORT_STAT_OUT_OCTETS = 3; + BRIDGE_PORT_STAT_OUT_PACKETS = 4; } enum BridgePortTaggingMode { - BRIDGE_PORT_TAGGING_MODE_UNSPECIFIED = 0; - BRIDGE_PORT_TAGGING_MODE_UNTAGGED = 1; - BRIDGE_PORT_TAGGING_MODE_TAGGED = 2; + BRIDGE_PORT_TAGGING_MODE_UNSPECIFIED = 0; + BRIDGE_PORT_TAGGING_MODE_UNTAGGED = 1; + BRIDGE_PORT_TAGGING_MODE_TAGGED = 2; } enum BridgePortType { - BRIDGE_PORT_TYPE_UNSPECIFIED = 0; - BRIDGE_PORT_TYPE_PORT = 1; - BRIDGE_PORT_TYPE_SUB_PORT = 2; - BRIDGE_PORT_TYPE_1Q_ROUTER = 3; - BRIDGE_PORT_TYPE_1D_ROUTER = 4; - BRIDGE_PORT_TYPE_TUNNEL = 5; + BRIDGE_PORT_TYPE_UNSPECIFIED = 0; + BRIDGE_PORT_TYPE_PORT = 1; + BRIDGE_PORT_TYPE_SUB_PORT = 2; + BRIDGE_PORT_TYPE_1Q_ROUTER = 3; + BRIDGE_PORT_TYPE_1D_ROUTER = 4; + BRIDGE_PORT_TYPE_TUNNEL = 5; } enum BridgeStat { - BRIDGE_STAT_UNSPECIFIED = 0; - BRIDGE_STAT_IN_OCTETS = 1; - BRIDGE_STAT_IN_PACKETS = 2; - BRIDGE_STAT_OUT_OCTETS = 3; - BRIDGE_STAT_OUT_PACKETS = 4; + BRIDGE_STAT_UNSPECIFIED = 0; + BRIDGE_STAT_IN_OCTETS = 1; + BRIDGE_STAT_IN_PACKETS = 2; + BRIDGE_STAT_OUT_OCTETS = 3; + BRIDGE_STAT_OUT_PACKETS = 4; } enum BridgeType { - BRIDGE_TYPE_UNSPECIFIED = 0; - BRIDGE_TYPE_1Q = 1; - BRIDGE_TYPE_1D = 2; + BRIDGE_TYPE_UNSPECIFIED = 0; + BRIDGE_TYPE_1Q = 1; + BRIDGE_TYPE_1D = 2; } enum BufferPoolStat { - BUFFER_POOL_STAT_UNSPECIFIED = 0; - BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES = 1; - BUFFER_POOL_STAT_WATERMARK_BYTES = 2; - BUFFER_POOL_STAT_DROPPED_PACKETS = 3; - BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS = 4; - BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES = 5; - BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS = 6; - BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES = 7; - BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS = 8; - BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES = 9; - BUFFER_POOL_STAT_WRED_DROPPED_PACKETS = 10; - BUFFER_POOL_STAT_WRED_DROPPED_BYTES = 11; - BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 12; - BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES = 13; - BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 14; - BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 15; - BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS = 16; - BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES = 17; - BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS = 18; - BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES = 19; - BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES = 20; - BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES = 21; - BUFFER_POOL_STAT_CUSTOM_RANGE_BASE = 268435457; + BUFFER_POOL_STAT_UNSPECIFIED = 0; + BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES = 1; + BUFFER_POOL_STAT_WATERMARK_BYTES = 2; + BUFFER_POOL_STAT_DROPPED_PACKETS = 3; + BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS = 4; + BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES = 5; + BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS = 6; + BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES = 7; + BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS = 8; + BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES = 9; + BUFFER_POOL_STAT_WRED_DROPPED_PACKETS = 10; + BUFFER_POOL_STAT_WRED_DROPPED_BYTES = 11; + BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 12; + BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES = 13; + BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 14; + BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 15; + BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS = 16; + BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES = 17; + BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS = 18; + BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES = 19; + BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES = 20; + BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES = 21; + BUFFER_POOL_STAT_CUSTOM_RANGE_BASE = 268435457; } enum BufferPoolThresholdMode { - BUFFER_POOL_THRESHOLD_MODE_UNSPECIFIED = 0; - BUFFER_POOL_THRESHOLD_MODE_STATIC = 1; - BUFFER_POOL_THRESHOLD_MODE_DYNAMIC = 2; + BUFFER_POOL_THRESHOLD_MODE_UNSPECIFIED = 0; + BUFFER_POOL_THRESHOLD_MODE_STATIC = 1; + BUFFER_POOL_THRESHOLD_MODE_DYNAMIC = 2; } enum BufferPoolType { - BUFFER_POOL_TYPE_UNSPECIFIED = 0; - BUFFER_POOL_TYPE_INGRESS = 1; - BUFFER_POOL_TYPE_EGRESS = 2; - BUFFER_POOL_TYPE_BOTH = 3; + BUFFER_POOL_TYPE_UNSPECIFIED = 0; + BUFFER_POOL_TYPE_INGRESS = 1; + BUFFER_POOL_TYPE_EGRESS = 2; + BUFFER_POOL_TYPE_BOTH = 3; } enum BufferProfileThresholdMode { - BUFFER_PROFILE_THRESHOLD_MODE_UNSPECIFIED = 0; - BUFFER_PROFILE_THRESHOLD_MODE_STATIC = 1; - BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC = 2; + BUFFER_PROFILE_THRESHOLD_MODE_UNSPECIFIED = 0; + BUFFER_PROFILE_THRESHOLD_MODE_STATIC = 1; + BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC = 2; } enum BulkOpErrorMode { - BULK_OP_ERROR_MODE_UNSPECIFIED = 0; - BULK_OP_ERROR_MODE_STOP_ON_ERROR = 1; - BULK_OP_ERROR_MODE_IGNORE_ERROR = 2; + BULK_OP_ERROR_MODE_UNSPECIFIED = 0; + BULK_OP_ERROR_MODE_STOP_ON_ERROR = 1; + BULK_OP_ERROR_MODE_IGNORE_ERROR = 2; } enum CommonApi { - COMMON_API_UNSPECIFIED = 0; - COMMON_API_CREATE = 1; - COMMON_API_REMOVE = 2; - COMMON_API_SET = 3; - COMMON_API_GET = 4; - COMMON_API_BULK_CREATE = 5; - COMMON_API_BULK_REMOVE = 6; - COMMON_API_BULK_SET = 7; - COMMON_API_BULK_GET = 8; - COMMON_API_MAX = 9; + COMMON_API_UNSPECIFIED = 0; + COMMON_API_CREATE = 1; + COMMON_API_REMOVE = 2; + COMMON_API_SET = 3; + COMMON_API_GET = 4; + COMMON_API_BULK_CREATE = 5; + COMMON_API_BULK_REMOVE = 6; + COMMON_API_BULK_SET = 7; + COMMON_API_BULK_GET = 8; + COMMON_API_MAX = 9; } enum CounterStat { - COUNTER_STAT_UNSPECIFIED = 0; - COUNTER_STAT_PACKETS = 1; - COUNTER_STAT_BYTES = 2; - COUNTER_STAT_CUSTOM_RANGE_BASE = 268435457; + COUNTER_STAT_UNSPECIFIED = 0; + COUNTER_STAT_PACKETS = 1; + COUNTER_STAT_BYTES = 2; + COUNTER_STAT_CUSTOM_RANGE_BASE = 268435457; } enum CounterType { - COUNTER_TYPE_UNSPECIFIED = 0; - COUNTER_TYPE_REGULAR = 1; + COUNTER_TYPE_UNSPECIFIED = 0; + COUNTER_TYPE_REGULAR = 1; + COUNTER_TYPE_SELECTIVE = 2; +} + +enum DashCapsHaScopeLevel { + DASH_CAPS_HA_SCOPE_LEVEL_UNSPECIFIED = 0; + DASH_CAPS_HA_SCOPE_LEVEL_CARD = 1; + DASH_CAPS_HA_SCOPE_LEVEL_ENI = 2; } enum DashDirection { - DASH_DIRECTION_UNSPECIFIED = 0; - DASH_DIRECTION_INVALID = 1; - DASH_DIRECTION_OUTBOUND = 2; - DASH_DIRECTION_INBOUND = 3; + DASH_DIRECTION_UNSPECIFIED = 0; + DASH_DIRECTION_INVALID = 1; + DASH_DIRECTION_OUTBOUND = 2; + DASH_DIRECTION_INBOUND = 3; } enum DashEncapsulation { - DASH_ENCAPSULATION_UNSPECIFIED = 0; - DASH_ENCAPSULATION_INVALID = 1; - DASH_ENCAPSULATION_VXLAN = 2; - DASH_ENCAPSULATION_NVGRE = 3; + DASH_ENCAPSULATION_UNSPECIFIED = 0; + DASH_ENCAPSULATION_INVALID = 1; + DASH_ENCAPSULATION_VXLAN = 2; + DASH_ENCAPSULATION_NVGRE = 3; +} + +enum DashEniMacOverrideType { + DASH_ENI_MAC_OVERRIDE_TYPE_UNSPECIFIED = 0; + DASH_ENI_MAC_OVERRIDE_TYPE_NONE = 1; + DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC = 2; + DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC = 3; +} + +enum DashFlowAction { + DASH_FLOW_ACTION_UNSPECIFIED = 0; + DASH_FLOW_ACTION_NONE = 1; +} + +enum DashFlowEnabledKey { + DASH_FLOW_ENABLED_KEY_UNSPECIFIED = 0; + DASH_FLOW_ENABLED_KEY_ENI_MAC = 2; + DASH_FLOW_ENABLED_KEY_VNI = 3; + DASH_FLOW_ENABLED_KEY_PROTOCOL = 5; + DASH_FLOW_ENABLED_KEY_SRC_IP = 9; + DASH_FLOW_ENABLED_KEY_DST_IP = 17; + DASH_FLOW_ENABLED_KEY_SRC_PORT = 33; + DASH_FLOW_ENABLED_KEY_DST_PORT = 65; +} + +enum DashFlowEntryBulkGetSessionFilterKey { + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_UNSPECIFIED = 0; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD = 1; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID = 2; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR = 3; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL = 4; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR = 5; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR = 6; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT = 7; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT = 8; + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION = 9; +} + +enum DashFlowEntryBulkGetSessionMode { + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_UNSPECIFIED = 0; + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC = + 1; + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR = + 2; + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT = + 3; + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE = + 4; +} + +enum DashFlowEntryBulkGetSessionOpKey { + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_UNSPECIFIED = 0; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID = 1; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO = 2; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN = 3; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO = + 4; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN = 5; + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO = 6; +} + +enum DashHaRole { + DASH_HA_ROLE_UNSPECIFIED = 0; + DASH_HA_ROLE_DEAD = 1; + DASH_HA_ROLE_ACTIVE = 2; + DASH_HA_ROLE_STANDBY = 3; + DASH_HA_ROLE_STANDALONE = 4; + DASH_HA_ROLE_SWITCHING_TO_ACTIVE = 5; +} + +enum DashHaState { + DASH_HA_STATE_UNSPECIFIED = 0; + DASH_HA_STATE_DEAD = 1; + DASH_HA_STATE_CONNECTING = 2; + DASH_HA_STATE_CONNECTED = 3; + DASH_HA_STATE_INITIALIZING_TO_ACTIVE = 4; + DASH_HA_STATE_INITIALIZING_TO_STANDBY = 5; + DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION = 6; + DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION = 7; + DASH_HA_STATE_PENDING_STANDBY_ACTIVATION = 8; + DASH_HA_STATE_STANDALONE = 9; + DASH_HA_STATE_ACTIVE = 10; + DASH_HA_STATE_STANDBY = 11; + DASH_HA_STATE_DESTROYING = 12; + DASH_HA_STATE_SWITCHING_TO_STANDALONE = 13; +} + +enum DashRoutingActions { + DASH_ROUTING_ACTIONS_UNSPECIFIED = 0; + DASH_ROUTING_ACTIONS_STATIC_ENCAP = 2; + DASH_ROUTING_ACTIONS_NAT = 3; + DASH_ROUTING_ACTIONS_NAT46 = 5; + DASH_ROUTING_ACTIONS_NAT64 = 9; + DASH_ROUTING_ACTIONS_NAT_PORT = 17; } enum DashTunnelDscpMode { - DASH_TUNNEL_DSCP_MODE_UNSPECIFIED = 0; - DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL = 1; - DASH_TUNNEL_DSCP_MODE_PIPE_MODEL = 2; + DASH_TUNNEL_DSCP_MODE_UNSPECIFIED = 0; + DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL = 1; + DASH_TUNNEL_DSCP_MODE_PIPE_MODEL = 2; } enum DebugCounterBindMethod { - DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED = 0; - DEBUG_COUNTER_BIND_METHOD_AUTOMATIC = 1; + DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED = 0; + DEBUG_COUNTER_BIND_METHOD_AUTOMATIC = 1; } enum DebugCounterType { - DEBUG_COUNTER_TYPE_UNSPECIFIED = 0; - DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS = 1; - DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS = 2; - DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS = 3; - DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS = 4; + DEBUG_COUNTER_TYPE_UNSPECIFIED = 0; + DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS = 1; + DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS = 2; + DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS = 3; + DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS = 4; } enum DtelEventType { - DTEL_EVENT_TYPE_UNSPECIFIED = 0; - DTEL_EVENT_TYPE_FLOW_STATE = 1; - DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS = 2; - DTEL_EVENT_TYPE_FLOW_TCPFLAG = 3; - DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH = 4; - DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP = 5; - DTEL_EVENT_TYPE_DROP_REPORT = 6; - DTEL_EVENT_TYPE_MAX = 7; + DTEL_EVENT_TYPE_UNSPECIFIED = 0; + DTEL_EVENT_TYPE_FLOW_STATE = 1; + DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS = 2; + DTEL_EVENT_TYPE_FLOW_TCPFLAG = 3; + DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH = 4; + DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP = 5; + DTEL_EVENT_TYPE_DROP_REPORT = 6; + DTEL_EVENT_TYPE_MAX = 7; } enum EcnMarkMode { - ECN_MARK_MODE_UNSPECIFIED = 0; - ECN_MARK_MODE_NONE = 1; - ECN_MARK_MODE_GREEN = 2; - ECN_MARK_MODE_YELLOW = 3; - ECN_MARK_MODE_RED = 4; - ECN_MARK_MODE_GREEN_YELLOW = 5; - ECN_MARK_MODE_GREEN_RED = 6; - ECN_MARK_MODE_YELLOW_RED = 7; - ECN_MARK_MODE_ALL = 8; + ECN_MARK_MODE_UNSPECIFIED = 0; + ECN_MARK_MODE_NONE = 1; + ECN_MARK_MODE_GREEN = 2; + ECN_MARK_MODE_YELLOW = 3; + ECN_MARK_MODE_RED = 4; + ECN_MARK_MODE_GREEN_YELLOW = 5; + ECN_MARK_MODE_GREEN_RED = 6; + ECN_MARK_MODE_YELLOW_RED = 7; + ECN_MARK_MODE_ALL = 8; } enum ErspanEncapsulationType { - ERSPAN_ENCAPSULATION_TYPE_UNSPECIFIED = 0; - ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL = 1; + ERSPAN_ENCAPSULATION_TYPE_UNSPECIFIED = 0; + ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL = 1; } enum FdbEntryType { - FDB_ENTRY_TYPE_UNSPECIFIED = 0; - FDB_ENTRY_TYPE_DYNAMIC = 1; - FDB_ENTRY_TYPE_STATIC = 2; + FDB_ENTRY_TYPE_UNSPECIFIED = 0; + FDB_ENTRY_TYPE_DYNAMIC = 1; + FDB_ENTRY_TYPE_STATIC = 2; } enum FdbEvent { - FDB_EVENT_UNSPECIFIED = 0; - FDB_EVENT_LEARNED = 1; - FDB_EVENT_AGED = 2; - FDB_EVENT_MOVE = 3; - FDB_EVENT_FLUSHED = 4; + FDB_EVENT_UNSPECIFIED = 0; + FDB_EVENT_LEARNED = 1; + FDB_EVENT_AGED = 2; + FDB_EVENT_MOVE = 3; + FDB_EVENT_FLUSHED = 4; } enum FdbFlushEntryType { - FDB_FLUSH_ENTRY_TYPE_UNSPECIFIED = 0; - FDB_FLUSH_ENTRY_TYPE_DYNAMIC = 1; - FDB_FLUSH_ENTRY_TYPE_STATIC = 2; - FDB_FLUSH_ENTRY_TYPE_ALL = 3; + FDB_FLUSH_ENTRY_TYPE_UNSPECIFIED = 0; + FDB_FLUSH_ENTRY_TYPE_DYNAMIC = 1; + FDB_FLUSH_ENTRY_TYPE_STATIC = 2; + FDB_FLUSH_ENTRY_TYPE_ALL = 3; +} + +enum HaScopeEvent { + HA_SCOPE_EVENT_UNSPECIFIED = 0; + HA_SCOPE_EVENT_STATE_CHANGED = 1; + HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED = 2; + HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED = 3; +} + +enum HaSetEvent { + HA_SET_EVENT_UNSPECIFIED = 0; + HA_SET_EVENT_DP_CHANNEL_UP = 1; + HA_SET_EVENT_DP_CHANNEL_DOWN = 2; } enum HashAlgorithm { - HASH_ALGORITHM_UNSPECIFIED = 0; - HASH_ALGORITHM_CRC = 1; - HASH_ALGORITHM_XOR = 2; - HASH_ALGORITHM_RANDOM = 3; - HASH_ALGORITHM_CRC_32LO = 4; - HASH_ALGORITHM_CRC_32HI = 5; - HASH_ALGORITHM_CRC_CCITT = 6; - HASH_ALGORITHM_CRC_XOR = 7; + HASH_ALGORITHM_UNSPECIFIED = 0; + HASH_ALGORITHM_CRC = 1; + HASH_ALGORITHM_XOR = 2; + HASH_ALGORITHM_RANDOM = 3; + HASH_ALGORITHM_CRC_32LO = 4; + HASH_ALGORITHM_CRC_32HI = 5; + HASH_ALGORITHM_CRC_CCITT = 6; + HASH_ALGORITHM_CRC_XOR = 7; } enum HealthDataType { - HEALTH_DATA_TYPE_UNSPECIFIED = 0; - HEALTH_DATA_TYPE_GENERAL = 1; + HEALTH_DATA_TYPE_UNSPECIFIED = 0; + HEALTH_DATA_TYPE_GENERAL = 1; + HEALTH_DATA_TYPE_SER = 2; } enum HostifTableEntryChannelType { - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_UNSPECIFIED = 0; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB = 1; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD = 2; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT = 3; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT = 4; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3 = 5; - HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK = 6; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_UNSPECIFIED = 0; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB = 1; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD = 2; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT = 3; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT = 4; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3 = 5; + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK = 6; } enum HostifTableEntryType { - HOSTIF_TABLE_ENTRY_TYPE_UNSPECIFIED = 0; - HOSTIF_TABLE_ENTRY_TYPE_PORT = 1; - HOSTIF_TABLE_ENTRY_TYPE_LAG = 2; - HOSTIF_TABLE_ENTRY_TYPE_VLAN = 3; - HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID = 4; - HOSTIF_TABLE_ENTRY_TYPE_WILDCARD = 5; + HOSTIF_TABLE_ENTRY_TYPE_UNSPECIFIED = 0; + HOSTIF_TABLE_ENTRY_TYPE_PORT = 1; + HOSTIF_TABLE_ENTRY_TYPE_LAG = 2; + HOSTIF_TABLE_ENTRY_TYPE_VLAN = 3; + HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID = 4; + HOSTIF_TABLE_ENTRY_TYPE_WILDCARD = 5; } enum HostifTrapType { - option allow_alias = true; - HOSTIF_TRAP_TYPE_UNSPECIFIED = 0; - HOSTIF_TRAP_TYPE_START = 1; - HOSTIF_TRAP_TYPE_STP = 1; - HOSTIF_TRAP_TYPE_LACP = 2; - HOSTIF_TRAP_TYPE_EAPOL = 3; - HOSTIF_TRAP_TYPE_LLDP = 4; - HOSTIF_TRAP_TYPE_PVRST = 5; - HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY = 6; - HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE = 7; - HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT = 8; - HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT = 9; - HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT = 10; - HOSTIF_TRAP_TYPE_SAMPLEPACKET = 11; - HOSTIF_TRAP_TYPE_UDLD = 12; - HOSTIF_TRAP_TYPE_CDP = 13; - HOSTIF_TRAP_TYPE_VTP = 14; - HOSTIF_TRAP_TYPE_DTP = 15; - HOSTIF_TRAP_TYPE_PAGP = 16; - HOSTIF_TRAP_TYPE_PTP = 17; - HOSTIF_TRAP_TYPE_PTP_TX_EVENT = 18; - HOSTIF_TRAP_TYPE_DHCP_L2 = 19; - HOSTIF_TRAP_TYPE_DHCPV6_L2 = 20; - HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE = 4097; - HOSTIF_TRAP_TYPE_ARP_REQUEST = 8193; - HOSTIF_TRAP_TYPE_ARP_RESPONSE = 8194; - HOSTIF_TRAP_TYPE_DHCP = 8195; - HOSTIF_TRAP_TYPE_OSPF = 8196; - HOSTIF_TRAP_TYPE_PIM = 8197; - HOSTIF_TRAP_TYPE_VRRP = 8198; - HOSTIF_TRAP_TYPE_DHCPV6 = 8199; - HOSTIF_TRAP_TYPE_OSPFV6 = 8200; - HOSTIF_TRAP_TYPE_VRRPV6 = 8201; - HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY = 8202; - HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2 = 8203; - HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT = 8204; - HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE = 8205; - HOSTIF_TRAP_TYPE_MLD_V2_REPORT = 8206; - HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST = 8207; - HOSTIF_TRAP_TYPE_SNAT_MISS = 8208; - HOSTIF_TRAP_TYPE_DNAT_MISS = 8209; - HOSTIF_TRAP_TYPE_NAT_HAIRPIN = 8210; - HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION = 8211; - HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT = 8212; - HOSTIF_TRAP_TYPE_ISIS = 8213; - HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE = 12289; - HOSTIF_TRAP_TYPE_IP2ME = 16385; - HOSTIF_TRAP_TYPE_SSH = 16386; - HOSTIF_TRAP_TYPE_SNMP = 16387; - HOSTIF_TRAP_TYPE_BGP = 16388; - HOSTIF_TRAP_TYPE_BGPV6 = 16389; - HOSTIF_TRAP_TYPE_BFD = 16390; - HOSTIF_TRAP_TYPE_BFDV6 = 16391; - HOSTIF_TRAP_TYPE_BFD_MICRO = 16392; - HOSTIF_TRAP_TYPE_BFDV6_MICRO = 16393; - HOSTIF_TRAP_TYPE_LDP = 16394; - HOSTIF_TRAP_TYPE_GNMI = 16395; - HOSTIF_TRAP_TYPE_P4RT = 16396; - HOSTIF_TRAP_TYPE_NTPCLIENT = 16397; - HOSTIF_TRAP_TYPE_NTPSERVER = 16398; - HOSTIF_TRAP_TYPE_HTTPCLIENT = 16399; - HOSTIF_TRAP_TYPE_HTTPSERVER = 16400; - HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE = 20481; - HOSTIF_TRAP_TYPE_L3_MTU_ERROR = 24577; - HOSTIF_TRAP_TYPE_TTL_ERROR = 24578; - HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE = 24579; - HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER = 28673; - HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED = 28674; - HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER = 28675; - HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR = 32769; - HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL = 32770; - HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS = 32771; - HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE = 36865; - HOSTIF_TRAP_TYPE_END = 40961; + option allow_alias = true; + HOSTIF_TRAP_TYPE_UNSPECIFIED = 0; + HOSTIF_TRAP_TYPE_START = 1; + HOSTIF_TRAP_TYPE_STP = 1; + HOSTIF_TRAP_TYPE_LACP = 2; + HOSTIF_TRAP_TYPE_EAPOL = 3; + HOSTIF_TRAP_TYPE_LLDP = 4; + HOSTIF_TRAP_TYPE_PVRST = 5; + HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY = 6; + HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE = 7; + HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT = 8; + HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT = 9; + HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT = 10; + HOSTIF_TRAP_TYPE_SAMPLEPACKET = 11; + HOSTIF_TRAP_TYPE_UDLD = 12; + HOSTIF_TRAP_TYPE_CDP = 13; + HOSTIF_TRAP_TYPE_VTP = 14; + HOSTIF_TRAP_TYPE_DTP = 15; + HOSTIF_TRAP_TYPE_PAGP = 16; + HOSTIF_TRAP_TYPE_PTP = 17; + HOSTIF_TRAP_TYPE_PTP_TX_EVENT = 18; + HOSTIF_TRAP_TYPE_DHCP_L2 = 19; + HOSTIF_TRAP_TYPE_DHCPV6_L2 = 20; + HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE = 4097; + HOSTIF_TRAP_TYPE_ARP_REQUEST = 8193; + HOSTIF_TRAP_TYPE_ARP_RESPONSE = 8194; + HOSTIF_TRAP_TYPE_DHCP = 8195; + HOSTIF_TRAP_TYPE_OSPF = 8196; + HOSTIF_TRAP_TYPE_PIM = 8197; + HOSTIF_TRAP_TYPE_VRRP = 8198; + HOSTIF_TRAP_TYPE_DHCPV6 = 8199; + HOSTIF_TRAP_TYPE_OSPFV6 = 8200; + HOSTIF_TRAP_TYPE_VRRPV6 = 8201; + HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY = 8202; + HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2 = 8203; + HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT = 8204; + HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE = 8205; + HOSTIF_TRAP_TYPE_MLD_V2_REPORT = 8206; + HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST = 8207; + HOSTIF_TRAP_TYPE_SNAT_MISS = 8208; + HOSTIF_TRAP_TYPE_DNAT_MISS = 8209; + HOSTIF_TRAP_TYPE_NAT_HAIRPIN = 8210; + HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION = 8211; + HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT = 8212; + HOSTIF_TRAP_TYPE_ISIS = 8213; + HOSTIF_TRAP_TYPE_NEIGHBOR_MISS = 8214; + HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE = 12289; + HOSTIF_TRAP_TYPE_IP2ME = 16385; + HOSTIF_TRAP_TYPE_SSH = 16386; + HOSTIF_TRAP_TYPE_SNMP = 16387; + HOSTIF_TRAP_TYPE_BGP = 16388; + HOSTIF_TRAP_TYPE_BGPV6 = 16389; + HOSTIF_TRAP_TYPE_BFD = 16390; + HOSTIF_TRAP_TYPE_BFDV6 = 16391; + HOSTIF_TRAP_TYPE_BFD_MICRO = 16392; + HOSTIF_TRAP_TYPE_BFDV6_MICRO = 16393; + HOSTIF_TRAP_TYPE_LDP = 16394; + HOSTIF_TRAP_TYPE_GNMI = 16395; + HOSTIF_TRAP_TYPE_P4RT = 16396; + HOSTIF_TRAP_TYPE_NTPCLIENT = 16397; + HOSTIF_TRAP_TYPE_NTPSERVER = 16398; + HOSTIF_TRAP_TYPE_HTTPCLIENT = 16399; + HOSTIF_TRAP_TYPE_HTTPSERVER = 16400; + HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE = 20481; + HOSTIF_TRAP_TYPE_L3_MTU_ERROR = 24577; + HOSTIF_TRAP_TYPE_TTL_ERROR = 24578; + HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE = 24579; + HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER = 28673; + HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED = 28674; + HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER = 28675; + HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR = 32769; + HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL = 32770; + HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS = 32771; + HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE = 36865; + HOSTIF_TRAP_TYPE_END = 40961; } enum HostifTxType { - HOSTIF_TX_TYPE_UNSPECIFIED = 0; - HOSTIF_TX_TYPE_PIPELINE_BYPASS = 1; - HOSTIF_TX_TYPE_PIPELINE_LOOKUP = 2; - HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE = 268435457; + HOSTIF_TX_TYPE_UNSPECIFIED = 0; + HOSTIF_TX_TYPE_PIPELINE_BYPASS = 1; + HOSTIF_TX_TYPE_PIPELINE_LOOKUP = 2; + HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum HostifType { - HOSTIF_TYPE_UNSPECIFIED = 0; - HOSTIF_TYPE_NETDEV = 1; - HOSTIF_TYPE_FD = 2; - HOSTIF_TYPE_GENETLINK = 3; + HOSTIF_TYPE_UNSPECIFIED = 0; + HOSTIF_TYPE_NETDEV = 1; + HOSTIF_TYPE_FD = 2; + HOSTIF_TYPE_GENETLINK = 3; } enum HostifUserDefinedTrapType { - option allow_alias = true; - HOSTIF_USER_DEFINED_TRAP_TYPE_UNSPECIFIED = 0; - HOSTIF_USER_DEFINED_TRAP_TYPE_START = 1; - HOSTIF_USER_DEFINED_TRAP_TYPE_ROUTER = 1; - HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR = 2; - HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGH = 2; - HOSTIF_USER_DEFINED_TRAP_TYPE_ACL = 3; - HOSTIF_USER_DEFINED_TRAP_TYPE_FDB = 4; - HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY = 5; - HOSTIF_USER_DEFINED_TRAP_TYPE_TAM = 6; - HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE = 4097; - HOSTIF_USER_DEFINED_TRAP_TYPE_END = 4098; + option allow_alias = true; + HOSTIF_USER_DEFINED_TRAP_TYPE_UNSPECIFIED = 0; + HOSTIF_USER_DEFINED_TRAP_TYPE_START = 1; + HOSTIF_USER_DEFINED_TRAP_TYPE_ROUTER = 1; + HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR = 2; + HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGH = 2; + HOSTIF_USER_DEFINED_TRAP_TYPE_ACL = 3; + HOSTIF_USER_DEFINED_TRAP_TYPE_FDB = 4; + HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY = 5; + HOSTIF_USER_DEFINED_TRAP_TYPE_TAM = 6; + HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE = 4097; + HOSTIF_USER_DEFINED_TRAP_TYPE_END = 4098; } enum HostifVlanTag { - HOSTIF_VLAN_TAG_UNSPECIFIED = 0; - HOSTIF_VLAN_TAG_STRIP = 1; - HOSTIF_VLAN_TAG_KEEP = 2; - HOSTIF_VLAN_TAG_ORIGINAL = 3; + HOSTIF_VLAN_TAG_UNSPECIFIED = 0; + HOSTIF_VLAN_TAG_STRIP = 1; + HOSTIF_VLAN_TAG_KEEP = 2; + HOSTIF_VLAN_TAG_ORIGINAL = 3; +} + +enum IcmpEchoSessionStat { + ICMP_ECHO_SESSION_STAT_UNSPECIFIED = 0; + ICMP_ECHO_SESSION_STAT_IN_PACKETS = 1; + ICMP_ECHO_SESSION_STAT_OUT_PACKETS = 2; +} + +enum IcmpEchoSessionState { + ICMP_ECHO_SESSION_STATE_UNSPECIFIED = 0; + ICMP_ECHO_SESSION_STATE_DOWN = 1; + ICMP_ECHO_SESSION_STATE_UP = 2; } enum InDropReason { - option allow_alias = true; - IN_DROP_REASON_UNSPECIFIED = 0; - IN_DROP_REASON_START = 1; - IN_DROP_REASON_L2_ANY = 1; - IN_DROP_REASON_SMAC_MULTICAST = 2; - IN_DROP_REASON_SMAC_EQUALS_DMAC = 3; - IN_DROP_REASON_DMAC_RESERVED = 4; - IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED = 5; - IN_DROP_REASON_INGRESS_VLAN_FILTER = 6; - IN_DROP_REASON_INGRESS_STP_FILTER = 7; - IN_DROP_REASON_FDB_UC_DISCARD = 8; - IN_DROP_REASON_FDB_MC_DISCARD = 9; - IN_DROP_REASON_L2_LOOPBACK_FILTER = 10; - IN_DROP_REASON_EXCEEDS_L2_MTU = 11; - IN_DROP_REASON_L3_ANY = 12; - IN_DROP_REASON_EXCEEDS_L3_MTU = 13; - IN_DROP_REASON_TTL = 14; - IN_DROP_REASON_L3_LOOPBACK_FILTER = 15; - IN_DROP_REASON_NON_ROUTABLE = 16; - IN_DROP_REASON_NO_L3_HEADER = 17; - IN_DROP_REASON_IP_HEADER_ERROR = 18; - IN_DROP_REASON_UC_DIP_MC_DMAC = 19; - IN_DROP_REASON_DIP_LOOPBACK = 20; - IN_DROP_REASON_SIP_LOOPBACK = 21; - IN_DROP_REASON_SIP_MC = 22; - IN_DROP_REASON_SIP_CLASS_E = 23; - IN_DROP_REASON_SIP_UNSPECIFIED = 24; - IN_DROP_REASON_MC_DMAC_MISMATCH = 25; - IN_DROP_REASON_SIP_EQUALS_DIP = 26; - IN_DROP_REASON_SIP_BC = 27; - IN_DROP_REASON_DIP_LOCAL = 28; - IN_DROP_REASON_DIP_LINK_LOCAL = 29; - IN_DROP_REASON_SIP_LINK_LOCAL = 30; - IN_DROP_REASON_IPV6_MC_SCOPE0 = 31; - IN_DROP_REASON_IPV6_MC_SCOPE1 = 32; - IN_DROP_REASON_IRIF_DISABLED = 33; - IN_DROP_REASON_ERIF_DISABLED = 34; - IN_DROP_REASON_LPM4_MISS = 35; - IN_DROP_REASON_LPM6_MISS = 36; - IN_DROP_REASON_BLACKHOLE_ROUTE = 37; - IN_DROP_REASON_BLACKHOLE_ARP = 38; - IN_DROP_REASON_UNRESOLVED_NEXT_HOP = 39; - IN_DROP_REASON_L3_EGRESS_LINK_DOWN = 40; - IN_DROP_REASON_DECAP_ERROR = 41; - IN_DROP_REASON_ACL_ANY = 42; - IN_DROP_REASON_ACL_INGRESS_PORT = 43; - IN_DROP_REASON_ACL_INGRESS_LAG = 44; - IN_DROP_REASON_ACL_INGRESS_VLAN = 45; - IN_DROP_REASON_ACL_INGRESS_RIF = 46; - IN_DROP_REASON_ACL_INGRESS_SWITCH = 47; - IN_DROP_REASON_ACL_EGRESS_PORT = 48; - IN_DROP_REASON_ACL_EGRESS_LAG = 49; - IN_DROP_REASON_ACL_EGRESS_VLAN = 50; - IN_DROP_REASON_ACL_EGRESS_RIF = 51; - IN_DROP_REASON_ACL_EGRESS_SWITCH = 52; - IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS = 53; - IN_DROP_REASON_MPLS_MISS = 54; - IN_DROP_REASON_SRV6_LOCAL_SID_DROP = 55; - IN_DROP_REASON_END = 56; - IN_DROP_REASON_CUSTOM_RANGE_BASE = 268435457; - IN_DROP_REASON_CUSTOM_RANGE_END = 268435458; + option allow_alias = true; + IN_DROP_REASON_UNSPECIFIED = 0; + IN_DROP_REASON_START = 1; + IN_DROP_REASON_L2_ANY = 1; + IN_DROP_REASON_SMAC_MULTICAST = 2; + IN_DROP_REASON_SMAC_EQUALS_DMAC = 3; + IN_DROP_REASON_DMAC_RESERVED = 4; + IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED = 5; + IN_DROP_REASON_INGRESS_VLAN_FILTER = 6; + IN_DROP_REASON_INGRESS_STP_FILTER = 7; + IN_DROP_REASON_FDB_UC_DISCARD = 8; + IN_DROP_REASON_FDB_MC_DISCARD = 9; + IN_DROP_REASON_L2_LOOPBACK_FILTER = 10; + IN_DROP_REASON_EXCEEDS_L2_MTU = 11; + IN_DROP_REASON_L3_ANY = 12; + IN_DROP_REASON_EXCEEDS_L3_MTU = 13; + IN_DROP_REASON_TTL = 14; + IN_DROP_REASON_L3_LOOPBACK_FILTER = 15; + IN_DROP_REASON_NON_ROUTABLE = 16; + IN_DROP_REASON_NO_L3_HEADER = 17; + IN_DROP_REASON_IP_HEADER_ERROR = 18; + IN_DROP_REASON_UC_DIP_MC_DMAC = 19; + IN_DROP_REASON_DIP_LOOPBACK = 20; + IN_DROP_REASON_SIP_LOOPBACK = 21; + IN_DROP_REASON_SIP_MC = 22; + IN_DROP_REASON_SIP_CLASS_E = 23; + IN_DROP_REASON_SIP_UNSPECIFIED = 24; + IN_DROP_REASON_MC_DMAC_MISMATCH = 25; + IN_DROP_REASON_SIP_EQUALS_DIP = 26; + IN_DROP_REASON_SIP_BC = 27; + IN_DROP_REASON_DIP_LOCAL = 28; + IN_DROP_REASON_DIP_LINK_LOCAL = 29; + IN_DROP_REASON_SIP_LINK_LOCAL = 30; + IN_DROP_REASON_IPV6_MC_SCOPE0 = 31; + IN_DROP_REASON_IPV6_MC_SCOPE1 = 32; + IN_DROP_REASON_IRIF_DISABLED = 33; + IN_DROP_REASON_ERIF_DISABLED = 34; + IN_DROP_REASON_LPM4_MISS = 35; + IN_DROP_REASON_LPM6_MISS = 36; + IN_DROP_REASON_BLACKHOLE_ROUTE = 37; + IN_DROP_REASON_BLACKHOLE_ARP = 38; + IN_DROP_REASON_UNRESOLVED_NEXT_HOP = 39; + IN_DROP_REASON_L3_EGRESS_LINK_DOWN = 40; + IN_DROP_REASON_DECAP_ERROR = 41; + IN_DROP_REASON_ACL_ANY = 42; + IN_DROP_REASON_ACL_INGRESS_PORT = 43; + IN_DROP_REASON_ACL_INGRESS_LAG = 44; + IN_DROP_REASON_ACL_INGRESS_VLAN = 45; + IN_DROP_REASON_ACL_INGRESS_RIF = 46; + IN_DROP_REASON_ACL_INGRESS_SWITCH = 47; + IN_DROP_REASON_ACL_EGRESS_PORT = 48; + IN_DROP_REASON_ACL_EGRESS_LAG = 49; + IN_DROP_REASON_ACL_EGRESS_VLAN = 50; + IN_DROP_REASON_ACL_EGRESS_RIF = 51; + IN_DROP_REASON_ACL_EGRESS_SWITCH = 52; + IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS = 53; + IN_DROP_REASON_MPLS_MISS = 54; + IN_DROP_REASON_SRV6_LOCAL_SID_DROP = 55; + IN_DROP_REASON_END = 56; + IN_DROP_REASON_CUSTOM_RANGE_BASE = 268435457; + IN_DROP_REASON_CUSTOM_RANGE_END = 268435458; } enum IngressPriorityGroupStat { - INGRESS_PRIORITY_GROUP_STAT_UNSPECIFIED = 0; - INGRESS_PRIORITY_GROUP_STAT_PACKETS = 1; - INGRESS_PRIORITY_GROUP_STAT_BYTES = 2; - INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES = 3; - INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES = 4; - INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES = 5; - INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES = 6; - INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES = 7; - INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES = 8; - INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS = 9; - INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE = 268435457; + INGRESS_PRIORITY_GROUP_STAT_UNSPECIFIED = 0; + INGRESS_PRIORITY_GROUP_STAT_PACKETS = 1; + INGRESS_PRIORITY_GROUP_STAT_BYTES = 2; + INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES = 3; + INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES = 4; + INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES = 5; + INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES = 6; + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES = 7; + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES = 8; + INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS = 9; + INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE = 268435457; } enum InsegEntryPopQosMode { - INSEG_ENTRY_POP_QOS_MODE_UNSPECIFIED = 0; - INSEG_ENTRY_POP_QOS_MODE_UNIFORM = 1; - INSEG_ENTRY_POP_QOS_MODE_PIPE = 2; + INSEG_ENTRY_POP_QOS_MODE_UNSPECIFIED = 0; + INSEG_ENTRY_POP_QOS_MODE_UNIFORM = 1; + INSEG_ENTRY_POP_QOS_MODE_PIPE = 2; } enum InsegEntryPopTtlMode { - INSEG_ENTRY_POP_TTL_MODE_UNSPECIFIED = 0; - INSEG_ENTRY_POP_TTL_MODE_UNIFORM = 1; - INSEG_ENTRY_POP_TTL_MODE_PIPE = 2; + INSEG_ENTRY_POP_TTL_MODE_UNSPECIFIED = 0; + INSEG_ENTRY_POP_TTL_MODE_UNIFORM = 1; + INSEG_ENTRY_POP_TTL_MODE_PIPE = 2; } enum InsegEntryPscType { - INSEG_ENTRY_PSC_TYPE_UNSPECIFIED = 0; - INSEG_ENTRY_PSC_TYPE_ELSP = 1; - INSEG_ENTRY_PSC_TYPE_LLSP = 2; + INSEG_ENTRY_PSC_TYPE_UNSPECIFIED = 0; + INSEG_ENTRY_PSC_TYPE_ELSP = 1; + INSEG_ENTRY_PSC_TYPE_LLSP = 2; } enum IpAddrFamily { - IP_ADDR_FAMILY_UNSPECIFIED = 0; - IP_ADDR_FAMILY_IPV4 = 1; - IP_ADDR_FAMILY_IPV6 = 2; + IP_ADDR_FAMILY_UNSPECIFIED = 0; + IP_ADDR_FAMILY_IPV4 = 1; + IP_ADDR_FAMILY_IPV6 = 2; } enum IpmcEntryType { - IPMC_ENTRY_TYPE_UNSPECIFIED = 0; - IPMC_ENTRY_TYPE_SG = 1; - IPMC_ENTRY_TYPE_XG = 2; + IPMC_ENTRY_TYPE_UNSPECIFIED = 0; + IPMC_ENTRY_TYPE_SG = 1; + IPMC_ENTRY_TYPE_XG = 2; } enum IpsecCipher { - IPSEC_CIPHER_UNSPECIFIED = 0; - IPSEC_CIPHER_AES128_GCM16 = 1; - IPSEC_CIPHER_AES256_GCM16 = 2; - IPSEC_CIPHER_AES128_GMAC = 3; - IPSEC_CIPHER_AES256_GMAC = 4; + IPSEC_CIPHER_UNSPECIFIED = 0; + IPSEC_CIPHER_AES128_GCM16 = 1; + IPSEC_CIPHER_AES256_GCM16 = 2; + IPSEC_CIPHER_AES128_GMAC = 3; + IPSEC_CIPHER_AES256_GMAC = 4; } enum IpsecDirection { - IPSEC_DIRECTION_UNSPECIFIED = 0; - IPSEC_DIRECTION_EGRESS = 1; - IPSEC_DIRECTION_INGRESS = 2; + IPSEC_DIRECTION_UNSPECIFIED = 0; + IPSEC_DIRECTION_EGRESS = 1; + IPSEC_DIRECTION_INGRESS = 2; } enum IpsecPortStat { - IPSEC_PORT_STAT_UNSPECIFIED = 0; - IPSEC_PORT_STAT_TX_ERROR_PKTS = 1; - IPSEC_PORT_STAT_TX_IPSEC_PKTS = 2; - IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS = 3; - IPSEC_PORT_STAT_RX_ERROR_PKTS = 4; - IPSEC_PORT_STAT_RX_IPSEC_PKTS = 5; - IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS = 6; + IPSEC_PORT_STAT_UNSPECIFIED = 0; + IPSEC_PORT_STAT_TX_ERROR_PKTS = 1; + IPSEC_PORT_STAT_TX_IPSEC_PKTS = 2; + IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS = 3; + IPSEC_PORT_STAT_RX_ERROR_PKTS = 4; + IPSEC_PORT_STAT_RX_IPSEC_PKTS = 5; + IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS = 6; } enum IpsecSaOctetCountStatus { - IPSEC_SA_OCTET_COUNT_STATUS_UNSPECIFIED = 0; - IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK = 1; - IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK = 2; - IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK = 3; + IPSEC_SA_OCTET_COUNT_STATUS_UNSPECIFIED = 0; + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK = 1; + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK = 2; + IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK = 3; } enum IpsecSaStat { - IPSEC_SA_STAT_UNSPECIFIED = 0; - IPSEC_SA_STAT_PROTECTED_OCTETS = 1; - IPSEC_SA_STAT_PROTECTED_PKTS = 2; - IPSEC_SA_STAT_GOOD_PKTS = 3; - IPSEC_SA_STAT_BAD_HEADER_PKTS_IN = 4; - IPSEC_SA_STAT_REPLAYED_PKTS_IN = 5; - IPSEC_SA_STAT_LATE_PKTS_IN = 6; - IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN = 7; - IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN = 8; - IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN = 9; - IPSEC_SA_STAT_OTHER_DROPPED_PKTS = 10; + IPSEC_SA_STAT_UNSPECIFIED = 0; + IPSEC_SA_STAT_PROTECTED_OCTETS = 1; + IPSEC_SA_STAT_PROTECTED_PKTS = 2; + IPSEC_SA_STAT_GOOD_PKTS = 3; + IPSEC_SA_STAT_BAD_HEADER_PKTS_IN = 4; + IPSEC_SA_STAT_REPLAYED_PKTS_IN = 5; + IPSEC_SA_STAT_LATE_PKTS_IN = 6; + IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN = 7; + IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN = 8; + IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN = 9; + IPSEC_SA_STAT_OTHER_DROPPED_PKTS = 10; } enum IsolationGroupType { - ISOLATION_GROUP_TYPE_UNSPECIFIED = 0; - ISOLATION_GROUP_TYPE_PORT = 1; - ISOLATION_GROUP_TYPE_BRIDGE_PORT = 2; + ISOLATION_GROUP_TYPE_UNSPECIFIED = 0; + ISOLATION_GROUP_TYPE_PORT = 1; + ISOLATION_GROUP_TYPE_BRIDGE_PORT = 2; } enum L2mcEntryType { - L2MC_ENTRY_TYPE_UNSPECIFIED = 0; - L2MC_ENTRY_TYPE_SG = 1; - L2MC_ENTRY_TYPE_XG = 2; + L2MC_ENTRY_TYPE_UNSPECIFIED = 0; + L2MC_ENTRY_TYPE_SG = 1; + L2MC_ENTRY_TYPE_XG = 2; } enum LogLevel { - LOG_LEVEL_UNSPECIFIED = 0; - LOG_LEVEL_DEBUG = 1; - LOG_LEVEL_INFO = 2; - LOG_LEVEL_NOTICE = 3; - LOG_LEVEL_WARN = 4; - LOG_LEVEL_ERROR = 5; - LOG_LEVEL_CRITICAL = 6; + LOG_LEVEL_UNSPECIFIED = 0; + LOG_LEVEL_DEBUG = 1; + LOG_LEVEL_INFO = 2; + LOG_LEVEL_NOTICE = 3; + LOG_LEVEL_WARN = 4; + LOG_LEVEL_ERROR = 5; + LOG_LEVEL_CRITICAL = 6; } enum MacsecCipherSuite { - MACSEC_CIPHER_SUITE_UNSPECIFIED = 0; - MACSEC_CIPHER_SUITE_GCM_AES_128 = 1; - MACSEC_CIPHER_SUITE_GCM_AES_256 = 2; - MACSEC_CIPHER_SUITE_GCM_AES_XPN_128 = 3; - MACSEC_CIPHER_SUITE_GCM_AES_XPN_256 = 4; + MACSEC_CIPHER_SUITE_UNSPECIFIED = 0; + MACSEC_CIPHER_SUITE_GCM_AES_128 = 1; + MACSEC_CIPHER_SUITE_GCM_AES_256 = 2; + MACSEC_CIPHER_SUITE_GCM_AES_XPN_128 = 3; + MACSEC_CIPHER_SUITE_GCM_AES_XPN_256 = 4; } enum MacsecDirection { - MACSEC_DIRECTION_UNSPECIFIED = 0; - MACSEC_DIRECTION_EGRESS = 1; - MACSEC_DIRECTION_INGRESS = 2; + MACSEC_DIRECTION_UNSPECIFIED = 0; + MACSEC_DIRECTION_EGRESS = 1; + MACSEC_DIRECTION_INGRESS = 2; } enum MacsecFlowStat { - MACSEC_FLOW_STAT_UNSPECIFIED = 0; - MACSEC_FLOW_STAT_OTHER_ERR = 1; - MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED = 2; - MACSEC_FLOW_STAT_OCTETS_CONTROLLED = 3; - MACSEC_FLOW_STAT_OUT_OCTETS_COMMON = 4; - MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED = 5; - MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED = 6; - MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED = 7; - MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED = 8; - MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED = 9; - MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED = 10; - MACSEC_FLOW_STAT_CONTROL_PKTS = 11; - MACSEC_FLOW_STAT_PKTS_UNTAGGED = 12; - MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS = 13; - MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG = 14; - MACSEC_FLOW_STAT_IN_PKTS_NO_TAG = 15; - MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG = 16; - MACSEC_FLOW_STAT_IN_PKTS_NO_SCI = 17; - MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI = 18; - MACSEC_FLOW_STAT_IN_PKTS_OVERRUN = 19; + MACSEC_FLOW_STAT_UNSPECIFIED = 0; + MACSEC_FLOW_STAT_OTHER_ERR = 1; + MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED = 2; + MACSEC_FLOW_STAT_OCTETS_CONTROLLED = 3; + MACSEC_FLOW_STAT_OUT_OCTETS_COMMON = 4; + MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED = 5; + MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED = 6; + MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED = 7; + MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED = 8; + MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED = 9; + MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED = 10; + MACSEC_FLOW_STAT_CONTROL_PKTS = 11; + MACSEC_FLOW_STAT_PKTS_UNTAGGED = 12; + MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS = 13; + MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG = 14; + MACSEC_FLOW_STAT_IN_PKTS_NO_TAG = 15; + MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG = 16; + MACSEC_FLOW_STAT_IN_PKTS_NO_SCI = 17; + MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI = 18; + MACSEC_FLOW_STAT_IN_PKTS_OVERRUN = 19; } enum MacsecMaxSecureAssociationsPerSc { - MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_UNSPECIFIED = 0; - MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO = 1; - MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR = 2; + MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_UNSPECIFIED = 0; + MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO = 1; + MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR = 2; } enum MacsecPortStat { - MACSEC_PORT_STAT_UNSPECIFIED = 0; - MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS = 1; - MACSEC_PORT_STAT_CONTROL_PKTS = 2; - MACSEC_PORT_STAT_DATA_PKTS = 3; + MACSEC_PORT_STAT_UNSPECIFIED = 0; + MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS = 1; + MACSEC_PORT_STAT_CONTROL_PKTS = 2; + MACSEC_PORT_STAT_DATA_PKTS = 3; } enum MacsecSaStat { - MACSEC_SA_STAT_UNSPECIFIED = 0; - MACSEC_SA_STAT_OCTETS_ENCRYPTED = 1; - MACSEC_SA_STAT_OCTETS_PROTECTED = 2; - MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED = 3; - MACSEC_SA_STAT_OUT_PKTS_PROTECTED = 4; - MACSEC_SA_STAT_IN_PKTS_UNCHECKED = 5; - MACSEC_SA_STAT_IN_PKTS_DELAYED = 6; - MACSEC_SA_STAT_IN_PKTS_LATE = 7; - MACSEC_SA_STAT_IN_PKTS_INVALID = 8; - MACSEC_SA_STAT_IN_PKTS_NOT_VALID = 9; - MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA = 10; - MACSEC_SA_STAT_IN_PKTS_UNUSED_SA = 11; - MACSEC_SA_STAT_IN_PKTS_OK = 12; + MACSEC_SA_STAT_UNSPECIFIED = 0; + MACSEC_SA_STAT_OCTETS_ENCRYPTED = 1; + MACSEC_SA_STAT_OCTETS_PROTECTED = 2; + MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED = 3; + MACSEC_SA_STAT_OUT_PKTS_PROTECTED = 4; + MACSEC_SA_STAT_IN_PKTS_UNCHECKED = 5; + MACSEC_SA_STAT_IN_PKTS_DELAYED = 6; + MACSEC_SA_STAT_IN_PKTS_LATE = 7; + MACSEC_SA_STAT_IN_PKTS_INVALID = 8; + MACSEC_SA_STAT_IN_PKTS_NOT_VALID = 9; + MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA = 10; + MACSEC_SA_STAT_IN_PKTS_UNUSED_SA = 11; + MACSEC_SA_STAT_IN_PKTS_OK = 12; } enum MacsecScStat { - MACSEC_SC_STAT_UNSPECIFIED = 0; - MACSEC_SC_STAT_SA_NOT_IN_USE = 1; + MACSEC_SC_STAT_UNSPECIFIED = 0; + MACSEC_SC_STAT_SA_NOT_IN_USE = 1; } enum MeterType { - METER_TYPE_UNSPECIFIED = 0; - METER_TYPE_PACKETS = 1; - METER_TYPE_BYTES = 2; - METER_TYPE_CUSTOM_RANGE_BASE = 268435457; + METER_TYPE_UNSPECIFIED = 0; + METER_TYPE_PACKETS = 1; + METER_TYPE_BYTES = 2; + METER_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum MirrorSessionCongestionMode { - MIRROR_SESSION_CONGESTION_MODE_UNSPECIFIED = 0; - MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT = 1; - MIRROR_SESSION_CONGESTION_MODE_CORRELATED = 2; + MIRROR_SESSION_CONGESTION_MODE_UNSPECIFIED = 0; + MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT = 1; + MIRROR_SESSION_CONGESTION_MODE_CORRELATED = 2; } enum MirrorSessionType { - MIRROR_SESSION_TYPE_UNSPECIFIED = 0; - MIRROR_SESSION_TYPE_LOCAL = 1; - MIRROR_SESSION_TYPE_REMOTE = 2; - MIRROR_SESSION_TYPE_ENHANCED_REMOTE = 3; - MIRROR_SESSION_TYPE_SFLOW = 4; + MIRROR_SESSION_TYPE_UNSPECIFIED = 0; + MIRROR_SESSION_TYPE_LOCAL = 1; + MIRROR_SESSION_TYPE_REMOTE = 2; + MIRROR_SESSION_TYPE_ENHANCED_REMOTE = 3; + MIRROR_SESSION_TYPE_SFLOW = 4; } enum MySidEntryEndpointBehaviorFlavor { - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_UNSPECIFIED = 0; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE = 1; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP = 2; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP = 3; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD = 4; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP = 5; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP = 6; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD = 7; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD = 8; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_UNSPECIFIED = 0; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE = 1; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP = 2; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP = 3; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD = 4; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP = 5; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP = 6; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD = 7; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD = 8; } enum MySidEntryEndpointBehavior { - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UNSPECIFIED = 0; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E = 1; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X = 2; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T = 3; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6 = 4; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4 = 5; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6 = 6; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4 = 7; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46 = 8; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS = 9; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED = 10; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT = 11; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED = 12; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN = 13; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA = 14; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START = 268435457; - MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END = 268435458; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UNSPECIFIED = 0; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E = 1; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X = 2; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T = 3; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6 = 4; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4 = 5; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6 = 6; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4 = 7; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46 = 8; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS = 9; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED = 10; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT = 11; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED = 12; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN = 13; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA = 14; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START = 268435457; + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END = 268435458; } enum NatEvent { - NAT_EVENT_UNSPECIFIED = 0; - NAT_EVENT_NONE = 1; - NAT_EVENT_AGED = 2; + NAT_EVENT_UNSPECIFIED = 0; + NAT_EVENT_NONE = 1; + NAT_EVENT_AGED = 2; } enum NatType { - NAT_TYPE_UNSPECIFIED = 0; - NAT_TYPE_NONE = 1; - NAT_TYPE_SOURCE_NAT = 2; - NAT_TYPE_DESTINATION_NAT = 3; - NAT_TYPE_DOUBLE_NAT = 4; - NAT_TYPE_DESTINATION_NAT_POOL = 5; + NAT_TYPE_UNSPECIFIED = 0; + NAT_TYPE_NONE = 1; + NAT_TYPE_SOURCE_NAT = 2; + NAT_TYPE_DESTINATION_NAT = 3; + NAT_TYPE_DOUBLE_NAT = 4; + NAT_TYPE_DESTINATION_NAT_POOL = 5; } enum NativeHashField { - NATIVE_HASH_FIELD_UNSPECIFIED = 0; - NATIVE_HASH_FIELD_SRC_IP = 1; - NATIVE_HASH_FIELD_DST_IP = 2; - NATIVE_HASH_FIELD_INNER_SRC_IP = 3; - NATIVE_HASH_FIELD_INNER_DST_IP = 4; - NATIVE_HASH_FIELD_SRC_IPV4 = 26; - NATIVE_HASH_FIELD_DST_IPV4 = 27; - NATIVE_HASH_FIELD_SRC_IPV6 = 28; - NATIVE_HASH_FIELD_DST_IPV6 = 29; - NATIVE_HASH_FIELD_INNER_SRC_IPV4 = 30; - NATIVE_HASH_FIELD_INNER_DST_IPV4 = 31; - NATIVE_HASH_FIELD_INNER_SRC_IPV6 = 32; - NATIVE_HASH_FIELD_INNER_DST_IPV6 = 33; - NATIVE_HASH_FIELD_VLAN_ID = 5; - NATIVE_HASH_FIELD_IP_PROTOCOL = 6; - NATIVE_HASH_FIELD_ETHERTYPE = 7; - NATIVE_HASH_FIELD_L4_SRC_PORT = 8; - NATIVE_HASH_FIELD_L4_DST_PORT = 9; - NATIVE_HASH_FIELD_SRC_MAC = 10; - NATIVE_HASH_FIELD_DST_MAC = 11; - NATIVE_HASH_FIELD_IN_PORT = 12; - NATIVE_HASH_FIELD_INNER_IP_PROTOCOL = 13; - NATIVE_HASH_FIELD_INNER_ETHERTYPE = 14; - NATIVE_HASH_FIELD_INNER_L4_SRC_PORT = 15; - NATIVE_HASH_FIELD_INNER_L4_DST_PORT = 16; - NATIVE_HASH_FIELD_INNER_SRC_MAC = 17; - NATIVE_HASH_FIELD_INNER_DST_MAC = 18; - NATIVE_HASH_FIELD_MPLS_LABEL_ALL = 19; - NATIVE_HASH_FIELD_MPLS_LABEL_0 = 20; - NATIVE_HASH_FIELD_MPLS_LABEL_1 = 21; - NATIVE_HASH_FIELD_MPLS_LABEL_2 = 22; - NATIVE_HASH_FIELD_MPLS_LABEL_3 = 23; - NATIVE_HASH_FIELD_MPLS_LABEL_4 = 24; - NATIVE_HASH_FIELD_IPV6_FLOW_LABEL = 25; - NATIVE_HASH_FIELD_NONE = 34; + NATIVE_HASH_FIELD_UNSPECIFIED = 0; + NATIVE_HASH_FIELD_SRC_IP = 1; + NATIVE_HASH_FIELD_DST_IP = 2; + NATIVE_HASH_FIELD_INNER_SRC_IP = 3; + NATIVE_HASH_FIELD_INNER_DST_IP = 4; + NATIVE_HASH_FIELD_SRC_IPV4 = 26; + NATIVE_HASH_FIELD_DST_IPV4 = 27; + NATIVE_HASH_FIELD_SRC_IPV6 = 28; + NATIVE_HASH_FIELD_DST_IPV6 = 29; + NATIVE_HASH_FIELD_INNER_SRC_IPV4 = 30; + NATIVE_HASH_FIELD_INNER_DST_IPV4 = 31; + NATIVE_HASH_FIELD_INNER_SRC_IPV6 = 32; + NATIVE_HASH_FIELD_INNER_DST_IPV6 = 33; + NATIVE_HASH_FIELD_VLAN_ID = 5; + NATIVE_HASH_FIELD_IP_PROTOCOL = 6; + NATIVE_HASH_FIELD_ETHERTYPE = 7; + NATIVE_HASH_FIELD_L4_SRC_PORT = 8; + NATIVE_HASH_FIELD_L4_DST_PORT = 9; + NATIVE_HASH_FIELD_SRC_MAC = 10; + NATIVE_HASH_FIELD_DST_MAC = 11; + NATIVE_HASH_FIELD_IN_PORT = 12; + NATIVE_HASH_FIELD_INNER_IP_PROTOCOL = 13; + NATIVE_HASH_FIELD_INNER_ETHERTYPE = 14; + NATIVE_HASH_FIELD_INNER_L4_SRC_PORT = 15; + NATIVE_HASH_FIELD_INNER_L4_DST_PORT = 16; + NATIVE_HASH_FIELD_INNER_SRC_MAC = 17; + NATIVE_HASH_FIELD_INNER_DST_MAC = 18; + NATIVE_HASH_FIELD_MPLS_LABEL_ALL = 19; + NATIVE_HASH_FIELD_MPLS_LABEL_0 = 20; + NATIVE_HASH_FIELD_MPLS_LABEL_1 = 21; + NATIVE_HASH_FIELD_MPLS_LABEL_2 = 22; + NATIVE_HASH_FIELD_MPLS_LABEL_3 = 23; + NATIVE_HASH_FIELD_MPLS_LABEL_4 = 24; + NATIVE_HASH_FIELD_IPV6_FLOW_LABEL = 25; + NATIVE_HASH_FIELD_NONE = 34; } enum NextHopGroupMapType { - NEXT_HOP_GROUP_MAP_TYPE_UNSPECIFIED = 0; - NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX = 1; + NEXT_HOP_GROUP_MAP_TYPE_UNSPECIFIED = 0; + NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX = 1; } enum NextHopGroupMemberConfiguredRole { - NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_UNSPECIFIED = 0; - NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY = 1; - NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY = 2; + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_UNSPECIFIED = 0; + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY = 1; + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY = 2; } enum NextHopGroupMemberObservedRole { - NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_UNSPECIFIED = 0; - NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE = 1; - NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE = 2; + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_UNSPECIFIED = 0; + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE = 1; + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE = 2; } enum NextHopGroupType { - option allow_alias = true; - NEXT_HOP_GROUP_TYPE_UNSPECIFIED = 0; - NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP = 1; - NEXT_HOP_GROUP_TYPE_ECMP = 1; - NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP = 2; - NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP = 3; - NEXT_HOP_GROUP_TYPE_PROTECTION = 4; - NEXT_HOP_GROUP_TYPE_CLASS_BASED = 5; - NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS = 6; + option allow_alias = true; + NEXT_HOP_GROUP_TYPE_UNSPECIFIED = 0; + NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP = 1; + NEXT_HOP_GROUP_TYPE_ECMP = 1; + NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP = 2; + NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP = 3; + NEXT_HOP_GROUP_TYPE_PROTECTION = 4; + NEXT_HOP_GROUP_TYPE_CLASS_BASED = 5; + NEXT_HOP_GROUP_TYPE_HW_PROTECTION = 6; + NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS = 7; } enum NextHopType { - NEXT_HOP_TYPE_UNSPECIFIED = 0; - NEXT_HOP_TYPE_IP = 1; - NEXT_HOP_TYPE_MPLS = 2; - NEXT_HOP_TYPE_TUNNEL_ENCAP = 3; - NEXT_HOP_TYPE_SRV6_SIDLIST = 4; - NEXT_HOP_TYPE_IPMC = 5; + NEXT_HOP_TYPE_UNSPECIFIED = 0; + NEXT_HOP_TYPE_IP = 1; + NEXT_HOP_TYPE_MPLS = 2; + NEXT_HOP_TYPE_TUNNEL_ENCAP = 3; + NEXT_HOP_TYPE_SRV6_SIDLIST = 4; + NEXT_HOP_TYPE_IPMC = 5; } enum ObjectStage { - OBJECT_STAGE_UNSPECIFIED = 0; - OBJECT_STAGE_BOTH = 1; - OBJECT_STAGE_INGRESS = 2; - OBJECT_STAGE_EGRESS = 3; + OBJECT_STAGE_UNSPECIFIED = 0; + OBJECT_STAGE_BOTH = 1; + OBJECT_STAGE_INGRESS = 2; + OBJECT_STAGE_EGRESS = 3; } enum ObjectTypeExtensions { - option allow_alias = true; - OBJECT_TYPE_EXTENSIONS_UNSPECIFIED = 0; - OBJECT_TYPE_EXTENSIONS_RANGE_START = 112; - OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY = 112; - OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY = 113; - OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY = 114; - OBJECT_TYPE_DASH_ACL_GROUP = 115; - OBJECT_TYPE_DASH_ACL_RULE = 116; - OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY = 117; - OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY = 118; - OBJECT_TYPE_ENI = 119; - OBJECT_TYPE_INBOUND_ROUTING_ENTRY = 120; - OBJECT_TYPE_METER_BUCKET = 121; - OBJECT_TYPE_METER_POLICY = 122; - OBJECT_TYPE_METER_RULE = 123; - OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY = 124; - OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY = 125; - OBJECT_TYPE_VNET = 126; - OBJECT_TYPE_PA_VALIDATION_ENTRY = 127; - OBJECT_TYPE_VIP_ENTRY = 128; - OBJECT_TYPE_EXTENSIONS_RANGE_END = 129; + option allow_alias = true; + OBJECT_TYPE_EXTENSIONS_UNSPECIFIED = 0; + OBJECT_TYPE_EXTENSIONS_RANGE_START = 536870913; + OBJECT_TYPE_TABLE_BITMAP_CLASSIFICATION_ENTRY = 536870913; + OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY = 536870914; + OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY = 536870915; + OBJECT_TYPE_DASH_ACL_GROUP = 536870916; + OBJECT_TYPE_DASH_ACL_RULE = 536870917; + OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY = 536870918; + OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY = 536870919; + OBJECT_TYPE_ENI = 536870920; + OBJECT_TYPE_INBOUND_ROUTING_ENTRY = 536870921; + OBJECT_TYPE_METER_BUCKET_ENTRY = 536870922; + OBJECT_TYPE_METER_POLICY = 536870923; + OBJECT_TYPE_METER_RULE = 536870924; + OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY = 536870925; + OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY = 536870926; + OBJECT_TYPE_VNET = 536870927; + OBJECT_TYPE_PA_VALIDATION_ENTRY = 536870928; + OBJECT_TYPE_VIP_ENTRY = 536870929; + OBJECT_TYPE_HA_SET = 536870930; + OBJECT_TYPE_HA_SCOPE = 536870931; + OBJECT_TYPE_DASH_TUNNEL = 536870932; + OBJECT_TYPE_OUTBOUND_ROUTING_GROUP = 536870933; + OBJECT_TYPE_FLOW_TABLE = 536870934; + OBJECT_TYPE_FLOW_ENTRY = 536870935; + OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER = 536870936; + OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION = 536870937; + OBJECT_TYPE_DASH_APPLIANCE = 536870938; + OBJECT_TYPE_EXTENSIONS_RANGE_END = 536870939; } enum ObjectType { - OBJECT_TYPE_UNSPECIFIED = 0; - OBJECT_TYPE_NULL = 1; - OBJECT_TYPE_PORT = 2; - OBJECT_TYPE_LAG = 3; - OBJECT_TYPE_VIRTUAL_ROUTER = 4; - OBJECT_TYPE_NEXT_HOP = 5; - OBJECT_TYPE_NEXT_HOP_GROUP = 6; - OBJECT_TYPE_ROUTER_INTERFACE = 7; - OBJECT_TYPE_ACL_TABLE = 8; - OBJECT_TYPE_ACL_ENTRY = 9; - OBJECT_TYPE_ACL_COUNTER = 10; - OBJECT_TYPE_ACL_RANGE = 11; - OBJECT_TYPE_ACL_TABLE_GROUP = 12; - OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER = 13; - OBJECT_TYPE_HOSTIF = 14; - OBJECT_TYPE_MIRROR_SESSION = 15; - OBJECT_TYPE_SAMPLEPACKET = 16; - OBJECT_TYPE_STP = 17; - OBJECT_TYPE_HOSTIF_TRAP_GROUP = 18; - OBJECT_TYPE_POLICER = 19; - OBJECT_TYPE_WRED = 20; - OBJECT_TYPE_QOS_MAP = 21; - OBJECT_TYPE_QUEUE = 22; - OBJECT_TYPE_SCHEDULER = 23; - OBJECT_TYPE_SCHEDULER_GROUP = 24; - OBJECT_TYPE_BUFFER_POOL = 25; - OBJECT_TYPE_BUFFER_PROFILE = 26; - OBJECT_TYPE_INGRESS_PRIORITY_GROUP = 27; - OBJECT_TYPE_LAG_MEMBER = 28; - OBJECT_TYPE_HASH = 29; - OBJECT_TYPE_UDF = 30; - OBJECT_TYPE_UDF_MATCH = 31; - OBJECT_TYPE_UDF_GROUP = 32; - OBJECT_TYPE_FDB_ENTRY = 33; - OBJECT_TYPE_SWITCH = 34; - OBJECT_TYPE_HOSTIF_TRAP = 35; - OBJECT_TYPE_HOSTIF_TABLE_ENTRY = 36; - OBJECT_TYPE_NEIGHBOR_ENTRY = 37; - OBJECT_TYPE_ROUTE_ENTRY = 38; - OBJECT_TYPE_VLAN = 39; - OBJECT_TYPE_VLAN_MEMBER = 40; - OBJECT_TYPE_HOSTIF_PACKET = 41; - OBJECT_TYPE_TUNNEL_MAP = 42; - OBJECT_TYPE_TUNNEL = 43; - OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY = 44; - OBJECT_TYPE_FDB_FLUSH = 45; - OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER = 46; - OBJECT_TYPE_STP_PORT = 47; - OBJECT_TYPE_RPF_GROUP = 48; - OBJECT_TYPE_RPF_GROUP_MEMBER = 49; - OBJECT_TYPE_L2MC_GROUP = 50; - OBJECT_TYPE_L2MC_GROUP_MEMBER = 51; - OBJECT_TYPE_IPMC_GROUP = 52; - OBJECT_TYPE_IPMC_GROUP_MEMBER = 53; - OBJECT_TYPE_L2MC_ENTRY = 54; - OBJECT_TYPE_IPMC_ENTRY = 55; - OBJECT_TYPE_MCAST_FDB_ENTRY = 56; - OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP = 57; - OBJECT_TYPE_BRIDGE = 58; - OBJECT_TYPE_BRIDGE_PORT = 59; - OBJECT_TYPE_TUNNEL_MAP_ENTRY = 60; - OBJECT_TYPE_TAM = 61; - OBJECT_TYPE_SRV6_SIDLIST = 62; - OBJECT_TYPE_PORT_POOL = 63; - OBJECT_TYPE_INSEG_ENTRY = 64; - OBJECT_TYPE_DTEL = 65; - OBJECT_TYPE_DTEL_QUEUE_REPORT = 66; - OBJECT_TYPE_DTEL_INT_SESSION = 67; - OBJECT_TYPE_DTEL_REPORT_SESSION = 68; - OBJECT_TYPE_DTEL_EVENT = 69; - OBJECT_TYPE_BFD_SESSION = 70; - OBJECT_TYPE_ISOLATION_GROUP = 71; - OBJECT_TYPE_ISOLATION_GROUP_MEMBER = 72; - OBJECT_TYPE_TAM_MATH_FUNC = 73; - OBJECT_TYPE_TAM_REPORT = 74; - OBJECT_TYPE_TAM_EVENT_THRESHOLD = 75; - OBJECT_TYPE_TAM_TEL_TYPE = 76; - OBJECT_TYPE_TAM_TRANSPORT = 77; - OBJECT_TYPE_TAM_TELEMETRY = 78; - OBJECT_TYPE_TAM_COLLECTOR = 79; - OBJECT_TYPE_TAM_EVENT_ACTION = 80; - OBJECT_TYPE_TAM_EVENT = 81; - OBJECT_TYPE_NAT_ZONE_COUNTER = 82; - OBJECT_TYPE_NAT_ENTRY = 83; - OBJECT_TYPE_TAM_INT = 84; - OBJECT_TYPE_COUNTER = 85; - OBJECT_TYPE_DEBUG_COUNTER = 86; - OBJECT_TYPE_PORT_CONNECTOR = 87; - OBJECT_TYPE_PORT_SERDES = 88; - OBJECT_TYPE_MACSEC = 89; - OBJECT_TYPE_MACSEC_PORT = 90; - OBJECT_TYPE_MACSEC_FLOW = 91; - OBJECT_TYPE_MACSEC_SC = 92; - OBJECT_TYPE_MACSEC_SA = 93; - OBJECT_TYPE_SYSTEM_PORT = 94; - OBJECT_TYPE_FINE_GRAINED_HASH_FIELD = 95; - OBJECT_TYPE_SWITCH_TUNNEL = 96; - OBJECT_TYPE_MY_SID_ENTRY = 97; - OBJECT_TYPE_MY_MAC = 98; - OBJECT_TYPE_NEXT_HOP_GROUP_MAP = 99; - OBJECT_TYPE_IPSEC = 100; - OBJECT_TYPE_IPSEC_PORT = 101; - OBJECT_TYPE_IPSEC_SA = 102; - OBJECT_TYPE_GENERIC_PROGRAMMABLE = 103; - OBJECT_TYPE_ARS_PROFILE = 104; - OBJECT_TYPE_ARS = 105; - OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP = 106; - OBJECT_TYPE_TWAMP_SESSION = 107; - OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION = 108; - OBJECT_TYPE_POE_DEVICE = 109; - OBJECT_TYPE_POE_PSE = 110; - OBJECT_TYPE_POE_PORT = 111; - OBJECT_TYPE_MAX = 112; - OBJECT_TYPE_CUSTOM_RANGE_START = 257; - OBJECT_TYPE_CUSTOM_RANGE_END = 258; + OBJECT_TYPE_UNSPECIFIED = 0; + OBJECT_TYPE_NULL = 1; + OBJECT_TYPE_PORT = 2; + OBJECT_TYPE_LAG = 3; + OBJECT_TYPE_VIRTUAL_ROUTER = 4; + OBJECT_TYPE_NEXT_HOP = 5; + OBJECT_TYPE_NEXT_HOP_GROUP = 6; + OBJECT_TYPE_ROUTER_INTERFACE = 7; + OBJECT_TYPE_ACL_TABLE = 8; + OBJECT_TYPE_ACL_ENTRY = 9; + OBJECT_TYPE_ACL_COUNTER = 10; + OBJECT_TYPE_ACL_RANGE = 11; + OBJECT_TYPE_ACL_TABLE_GROUP = 12; + OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER = 13; + OBJECT_TYPE_HOSTIF = 14; + OBJECT_TYPE_MIRROR_SESSION = 15; + OBJECT_TYPE_SAMPLEPACKET = 16; + OBJECT_TYPE_STP = 17; + OBJECT_TYPE_HOSTIF_TRAP_GROUP = 18; + OBJECT_TYPE_POLICER = 19; + OBJECT_TYPE_WRED = 20; + OBJECT_TYPE_QOS_MAP = 21; + OBJECT_TYPE_QUEUE = 22; + OBJECT_TYPE_SCHEDULER = 23; + OBJECT_TYPE_SCHEDULER_GROUP = 24; + OBJECT_TYPE_BUFFER_POOL = 25; + OBJECT_TYPE_BUFFER_PROFILE = 26; + OBJECT_TYPE_INGRESS_PRIORITY_GROUP = 27; + OBJECT_TYPE_LAG_MEMBER = 28; + OBJECT_TYPE_HASH = 29; + OBJECT_TYPE_UDF = 30; + OBJECT_TYPE_UDF_MATCH = 31; + OBJECT_TYPE_UDF_GROUP = 32; + OBJECT_TYPE_FDB_ENTRY = 33; + OBJECT_TYPE_SWITCH = 34; + OBJECT_TYPE_HOSTIF_TRAP = 35; + OBJECT_TYPE_HOSTIF_TABLE_ENTRY = 36; + OBJECT_TYPE_NEIGHBOR_ENTRY = 37; + OBJECT_TYPE_ROUTE_ENTRY = 38; + OBJECT_TYPE_VLAN = 39; + OBJECT_TYPE_VLAN_MEMBER = 40; + OBJECT_TYPE_HOSTIF_PACKET = 41; + OBJECT_TYPE_TUNNEL_MAP = 42; + OBJECT_TYPE_TUNNEL = 43; + OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY = 44; + OBJECT_TYPE_FDB_FLUSH = 45; + OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER = 46; + OBJECT_TYPE_STP_PORT = 47; + OBJECT_TYPE_RPF_GROUP = 48; + OBJECT_TYPE_RPF_GROUP_MEMBER = 49; + OBJECT_TYPE_L2MC_GROUP = 50; + OBJECT_TYPE_L2MC_GROUP_MEMBER = 51; + OBJECT_TYPE_IPMC_GROUP = 52; + OBJECT_TYPE_IPMC_GROUP_MEMBER = 53; + OBJECT_TYPE_L2MC_ENTRY = 54; + OBJECT_TYPE_IPMC_ENTRY = 55; + OBJECT_TYPE_MCAST_FDB_ENTRY = 56; + OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP = 57; + OBJECT_TYPE_BRIDGE = 58; + OBJECT_TYPE_BRIDGE_PORT = 59; + OBJECT_TYPE_TUNNEL_MAP_ENTRY = 60; + OBJECT_TYPE_TAM = 61; + OBJECT_TYPE_SRV6_SIDLIST = 62; + OBJECT_TYPE_PORT_POOL = 63; + OBJECT_TYPE_INSEG_ENTRY = 64; + OBJECT_TYPE_DTEL = 65; + OBJECT_TYPE_DTEL_QUEUE_REPORT = 66; + OBJECT_TYPE_DTEL_INT_SESSION = 67; + OBJECT_TYPE_DTEL_REPORT_SESSION = 68; + OBJECT_TYPE_DTEL_EVENT = 69; + OBJECT_TYPE_BFD_SESSION = 70; + OBJECT_TYPE_ISOLATION_GROUP = 71; + OBJECT_TYPE_ISOLATION_GROUP_MEMBER = 72; + OBJECT_TYPE_TAM_MATH_FUNC = 73; + OBJECT_TYPE_TAM_REPORT = 74; + OBJECT_TYPE_TAM_EVENT_THRESHOLD = 75; + OBJECT_TYPE_TAM_TEL_TYPE = 76; + OBJECT_TYPE_TAM_TRANSPORT = 77; + OBJECT_TYPE_TAM_TELEMETRY = 78; + OBJECT_TYPE_TAM_COLLECTOR = 79; + OBJECT_TYPE_TAM_EVENT_ACTION = 80; + OBJECT_TYPE_TAM_EVENT = 81; + OBJECT_TYPE_NAT_ZONE_COUNTER = 82; + OBJECT_TYPE_NAT_ENTRY = 83; + OBJECT_TYPE_TAM_INT = 84; + OBJECT_TYPE_COUNTER = 85; + OBJECT_TYPE_DEBUG_COUNTER = 86; + OBJECT_TYPE_PORT_CONNECTOR = 87; + OBJECT_TYPE_PORT_SERDES = 88; + OBJECT_TYPE_MACSEC = 89; + OBJECT_TYPE_MACSEC_PORT = 90; + OBJECT_TYPE_MACSEC_FLOW = 91; + OBJECT_TYPE_MACSEC_SC = 92; + OBJECT_TYPE_MACSEC_SA = 93; + OBJECT_TYPE_SYSTEM_PORT = 94; + OBJECT_TYPE_FINE_GRAINED_HASH_FIELD = 95; + OBJECT_TYPE_SWITCH_TUNNEL = 96; + OBJECT_TYPE_MY_SID_ENTRY = 97; + OBJECT_TYPE_MY_MAC = 98; + OBJECT_TYPE_NEXT_HOP_GROUP_MAP = 99; + OBJECT_TYPE_IPSEC = 100; + OBJECT_TYPE_IPSEC_PORT = 101; + OBJECT_TYPE_IPSEC_SA = 102; + OBJECT_TYPE_GENERIC_PROGRAMMABLE = 103; + OBJECT_TYPE_ARS_PROFILE = 104; + OBJECT_TYPE_ARS = 105; + OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP = 106; + OBJECT_TYPE_TWAMP_SESSION = 107; + OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION = 108; + OBJECT_TYPE_POE_DEVICE = 109; + OBJECT_TYPE_POE_PSE = 110; + OBJECT_TYPE_POE_PORT = 111; + OBJECT_TYPE_ICMP_ECHO_SESSION = 112; + OBJECT_TYPE_MAX = 113; + OBJECT_TYPE_EXTENSIONS_RANGE_BASE = 536870913; } enum OutDropReason { - option allow_alias = true; - OUT_DROP_REASON_UNSPECIFIED = 0; - OUT_DROP_REASON_START = 1; - OUT_DROP_REASON_L2_ANY = 1; - OUT_DROP_REASON_EGRESS_VLAN_FILTER = 2; - OUT_DROP_REASON_L3_ANY = 3; - OUT_DROP_REASON_L3_EGRESS_LINK_DOWN = 4; - OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP = 5; - OUT_DROP_REASON_END = 6; - OUT_DROP_REASON_CUSTOM_RANGE_BASE = 268435457; - OUT_DROP_REASON_CUSTOM_RANGE_END = 268435458; + option allow_alias = true; + OUT_DROP_REASON_UNSPECIFIED = 0; + OUT_DROP_REASON_START = 1; + OUT_DROP_REASON_L2_ANY = 1; + OUT_DROP_REASON_EGRESS_VLAN_FILTER = 2; + OUT_DROP_REASON_L3_ANY = 3; + OUT_DROP_REASON_L3_EGRESS_LINK_DOWN = 4; + OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP = 5; + OUT_DROP_REASON_END = 6; + OUT_DROP_REASON_CUSTOM_RANGE_BASE = 268435457; + OUT_DROP_REASON_CUSTOM_RANGE_END = 268435458; } enum OutsegExpMode { - OUTSEG_EXP_MODE_UNSPECIFIED = 0; - OUTSEG_EXP_MODE_UNIFORM = 1; - OUTSEG_EXP_MODE_PIPE = 2; + OUTSEG_EXP_MODE_UNSPECIFIED = 0; + OUTSEG_EXP_MODE_UNIFORM = 1; + OUTSEG_EXP_MODE_PIPE = 2; } enum OutsegTtlMode { - OUTSEG_TTL_MODE_UNSPECIFIED = 0; - OUTSEG_TTL_MODE_UNIFORM = 1; - OUTSEG_TTL_MODE_PIPE = 2; + OUTSEG_TTL_MODE_UNSPECIFIED = 0; + OUTSEG_TTL_MODE_UNIFORM = 1; + OUTSEG_TTL_MODE_PIPE = 2; } enum OutsegType { - OUTSEG_TYPE_UNSPECIFIED = 0; - OUTSEG_TYPE_PUSH = 1; - OUTSEG_TYPE_SWAP = 2; + OUTSEG_TYPE_UNSPECIFIED = 0; + OUTSEG_TYPE_PUSH = 1; + OUTSEG_TYPE_SWAP = 2; } enum PacketAction { - PACKET_ACTION_UNSPECIFIED = 0; - PACKET_ACTION_DROP = 1; - PACKET_ACTION_FORWARD = 2; - PACKET_ACTION_COPY = 3; - PACKET_ACTION_COPY_CANCEL = 4; - PACKET_ACTION_TRAP = 5; - PACKET_ACTION_LOG = 6; - PACKET_ACTION_DENY = 7; - PACKET_ACTION_TRANSIT = 8; - PACKET_ACTION_DONOTDROP = 9; + PACKET_ACTION_UNSPECIFIED = 0; + PACKET_ACTION_DROP = 1; + PACKET_ACTION_FORWARD = 2; + PACKET_ACTION_COPY = 3; + PACKET_ACTION_COPY_CANCEL = 4; + PACKET_ACTION_TRAP = 5; + PACKET_ACTION_LOG = 6; + PACKET_ACTION_DENY = 7; + PACKET_ACTION_TRANSIT = 8; + PACKET_ACTION_DONOTDROP = 9; } enum PacketColor { - PACKET_COLOR_UNSPECIFIED = 0; - PACKET_COLOR_GREEN = 1; - PACKET_COLOR_YELLOW = 2; - PACKET_COLOR_RED = 3; + PACKET_COLOR_UNSPECIFIED = 0; + PACKET_COLOR_GREEN = 1; + PACKET_COLOR_YELLOW = 2; + PACKET_COLOR_RED = 3; } enum PacketVlan { - PACKET_VLAN_UNSPECIFIED = 0; - PACKET_VLAN_UNTAG = 1; - PACKET_VLAN_SINGLE_OUTER_TAG = 2; - PACKET_VLAN_DOUBLE_TAG = 3; + PACKET_VLAN_UNSPECIFIED = 0; + PACKET_VLAN_UNTAG = 1; + PACKET_VLAN_SINGLE_OUTER_TAG = 2; + PACKET_VLAN_DOUBLE_TAG = 3; } enum PoePortActiveChannelType { - POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED = 0; - POE_PORT_ACTIVE_CHANNEL_TYPE_A = 1; - POE_PORT_ACTIVE_CHANNEL_TYPE_B = 2; - POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B = 3; + POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED = 0; + POE_PORT_ACTIVE_CHANNEL_TYPE_A = 1; + POE_PORT_ACTIVE_CHANNEL_TYPE_B = 2; + POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B = 3; } enum PoePortClassMethodType { - POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED = 0; - POE_PORT_CLASS_METHOD_TYPE_REGULAR = 1; - POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS = 2; + POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED = 0; + POE_PORT_CLASS_METHOD_TYPE_REGULAR = 1; + POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS = 2; } enum PoePortSignatureType { - POE_PORT_SIGNATURE_TYPE_UNSPECIFIED = 0; - POE_PORT_SIGNATURE_TYPE_SINGLE = 1; - POE_PORT_SIGNATURE_TYPE_DUAL = 2; + POE_PORT_SIGNATURE_TYPE_UNSPECIFIED = 0; + POE_PORT_SIGNATURE_TYPE_SINGLE = 1; + POE_PORT_SIGNATURE_TYPE_DUAL = 2; } enum PolicerColorSource { - POLICER_COLOR_SOURCE_UNSPECIFIED = 0; - POLICER_COLOR_SOURCE_BLIND = 1; - POLICER_COLOR_SOURCE_AWARE = 2; - POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE = 268435457; + POLICER_COLOR_SOURCE_UNSPECIFIED = 0; + POLICER_COLOR_SOURCE_BLIND = 1; + POLICER_COLOR_SOURCE_AWARE = 2; + POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE = 268435457; } enum PolicerMode { - POLICER_MODE_UNSPECIFIED = 0; - POLICER_MODE_SR_TCM = 1; - POLICER_MODE_TR_TCM = 2; - POLICER_MODE_STORM_CONTROL = 3; - POLICER_MODE_CUSTOM_RANGE_BASE = 268435457; + POLICER_MODE_UNSPECIFIED = 0; + POLICER_MODE_SR_TCM = 1; + POLICER_MODE_TR_TCM = 2; + POLICER_MODE_STORM_CONTROL = 3; + POLICER_MODE_CUSTOM_RANGE_BASE = 268435457; } enum PolicerStat { - POLICER_STAT_UNSPECIFIED = 0; - POLICER_STAT_PACKETS = 1; - POLICER_STAT_ATTR_BYTES = 2; - POLICER_STAT_GREEN_PACKETS = 3; - POLICER_STAT_GREEN_BYTES = 4; - POLICER_STAT_YELLOW_PACKETS = 5; - POLICER_STAT_YELLOW_BYTES = 6; - POLICER_STAT_RED_PACKETS = 7; - POLICER_STAT_RED_BYTES = 8; - POLICER_STAT_CUSTOM_RANGE_BASE = 268435457; + POLICER_STAT_UNSPECIFIED = 0; + POLICER_STAT_PACKETS = 1; + POLICER_STAT_ATTR_BYTES = 2; + POLICER_STAT_GREEN_PACKETS = 3; + POLICER_STAT_GREEN_BYTES = 4; + POLICER_STAT_YELLOW_PACKETS = 5; + POLICER_STAT_YELLOW_BYTES = 6; + POLICER_STAT_RED_PACKETS = 7; + POLICER_STAT_RED_BYTES = 8; + POLICER_STAT_CUSTOM_RANGE_BASE = 268435457; } enum PortAttrExtensions { - PORT_ATTR_EXTENSIONS_UNSPECIFIED = 0; - PORT_ATTR_EXTENSIONS_RANGE_START = 179; - PORT_ATTR_EXTENSIONS_RANGE_END = 180; + PORT_ATTR_EXTENSIONS_UNSPECIFIED = 0; + PORT_ATTR_EXTENSIONS_RANGE_START = 536870913; + PORT_ATTR_EXTENSIONS_RANGE_END = 536870914; } enum PortAutoNegConfigMode { - PORT_AUTO_NEG_CONFIG_MODE_UNSPECIFIED = 0; - PORT_AUTO_NEG_CONFIG_MODE_DISABLED = 1; - PORT_AUTO_NEG_CONFIG_MODE_AUTO = 2; - PORT_AUTO_NEG_CONFIG_MODE_SLAVE = 3; - PORT_AUTO_NEG_CONFIG_MODE_MASTER = 4; + PORT_AUTO_NEG_CONFIG_MODE_UNSPECIFIED = 0; + PORT_AUTO_NEG_CONFIG_MODE_DISABLED = 1; + PORT_AUTO_NEG_CONFIG_MODE_AUTO = 2; + PORT_AUTO_NEG_CONFIG_MODE_SLAVE = 3; + PORT_AUTO_NEG_CONFIG_MODE_MASTER = 4; } enum PortBreakoutModeType { - PORT_BREAKOUT_MODE_TYPE_UNSPECIFIED = 0; - PORT_BREAKOUT_MODE_TYPE_1_LANE = 1; - PORT_BREAKOUT_MODE_TYPE_2_LANE = 2; - PORT_BREAKOUT_MODE_TYPE_4_LANE = 3; - PORT_BREAKOUT_MODE_TYPE_MAX = 4; + PORT_BREAKOUT_MODE_TYPE_UNSPECIFIED = 0; + PORT_BREAKOUT_MODE_TYPE_1_LANE = 1; + PORT_BREAKOUT_MODE_TYPE_2_LANE = 2; + PORT_BREAKOUT_MODE_TYPE_4_LANE = 3; + PORT_BREAKOUT_MODE_TYPE_8_LANE = 4; + PORT_BREAKOUT_MODE_TYPE_MAX = 5; } enum PortCablePairState { - PORT_CABLE_PAIR_STATE_UNSPECIFIED = 0; - PORT_CABLE_PAIR_STATE_OK = 1; - PORT_CABLE_PAIR_STATE_OPEN = 2; - PORT_CABLE_PAIR_STATE_SHORT = 3; - PORT_CABLE_PAIR_STATE_CROSSTALK = 4; - PORT_CABLE_PAIR_STATE_UNKNOWN = 5; + PORT_CABLE_PAIR_STATE_UNSPECIFIED = 0; + PORT_CABLE_PAIR_STATE_OK = 1; + PORT_CABLE_PAIR_STATE_OPEN = 2; + PORT_CABLE_PAIR_STATE_SHORT = 3; + PORT_CABLE_PAIR_STATE_CROSSTALK = 4; + PORT_CABLE_PAIR_STATE_UNKNOWN = 5; } enum PortCableType { - PORT_CABLE_TYPE_UNSPECIFIED = 0; - PORT_CABLE_TYPE_UNKNOWN = 1; - PORT_CABLE_TYPE_CAT5 = 2; - PORT_CABLE_TYPE_CAT5E = 3; - PORT_CABLE_TYPE_CAT6 = 4; - PORT_CABLE_TYPE_CAT6A = 5; - PORT_CABLE_TYPE_CAT7 = 6; + PORT_CABLE_TYPE_UNSPECIFIED = 0; + PORT_CABLE_TYPE_UNKNOWN = 1; + PORT_CABLE_TYPE_CAT5 = 2; + PORT_CABLE_TYPE_CAT5E = 3; + PORT_CABLE_TYPE_CAT6 = 4; + PORT_CABLE_TYPE_CAT6A = 5; + PORT_CABLE_TYPE_CAT7 = 6; } enum PortConnectorFailoverMode { - PORT_CONNECTOR_FAILOVER_MODE_UNSPECIFIED = 0; - PORT_CONNECTOR_FAILOVER_MODE_DISABLE = 1; - PORT_CONNECTOR_FAILOVER_MODE_PRIMARY = 2; - PORT_CONNECTOR_FAILOVER_MODE_SECONDARY = 3; + PORT_CONNECTOR_FAILOVER_MODE_UNSPECIFIED = 0; + PORT_CONNECTOR_FAILOVER_MODE_DISABLE = 1; + PORT_CONNECTOR_FAILOVER_MODE_PRIMARY = 2; + PORT_CONNECTOR_FAILOVER_MODE_SECONDARY = 3; } enum PortDatapathEnable { - PORT_DATAPATH_ENABLE_UNSPECIFIED = 0; - PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE = 1; - PORT_DATAPATH_ENABLE_PCS_IEEE_MODE = 2; + PORT_DATAPATH_ENABLE_UNSPECIFIED = 0; + PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE = 1; + PORT_DATAPATH_ENABLE_PCS_IEEE_MODE = 2; } enum PortDualMedia { - PORT_DUAL_MEDIA_UNSPECIFIED = 0; - PORT_DUAL_MEDIA_NONE = 1; - PORT_DUAL_MEDIA_COPPER_ONLY = 2; - PORT_DUAL_MEDIA_FIBER_ONLY = 3; - PORT_DUAL_MEDIA_COPPER_PREFERRED = 4; - PORT_DUAL_MEDIA_FIBER_PREFERRED = 5; + PORT_DUAL_MEDIA_UNSPECIFIED = 0; + PORT_DUAL_MEDIA_NONE = 1; + PORT_DUAL_MEDIA_COPPER_ONLY = 2; + PORT_DUAL_MEDIA_FIBER_ONLY = 3; + PORT_DUAL_MEDIA_COPPER_PREFERRED = 4; + PORT_DUAL_MEDIA_FIBER_PREFERRED = 5; } enum PortErrStatus { - PORT_ERR_STATUS_UNSPECIFIED = 0; - PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR = 1; - PORT_ERR_STATUS_DATA_UNIT_SIZE = 2; - PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR = 3; - PORT_ERR_STATUS_CODE_GROUP_ERROR = 4; - PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR = 5; - PORT_ERR_STATUS_NO_RX_REACHABILITY = 6; - PORT_ERR_STATUS_CRC_RATE = 7; - PORT_ERR_STATUS_REMOTE_FAULT_STATUS = 8; - PORT_ERR_STATUS_MAX = 9; + PORT_ERR_STATUS_UNSPECIFIED = 0; + PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR = 1; + PORT_ERR_STATUS_DATA_UNIT_SIZE = 2; + PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR = 3; + PORT_ERR_STATUS_CODE_GROUP_ERROR = 4; + PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR = 5; + PORT_ERR_STATUS_NO_RX_REACHABILITY = 6; + PORT_ERR_STATUS_CRC_RATE = 7; + PORT_ERR_STATUS_REMOTE_FAULT_STATUS = 8; + PORT_ERR_STATUS_MAX = 9; +} + +enum PortErrorStatus { + PORT_ERROR_STATUS_UNSPECIFIED = 0; + PORT_ERROR_STATUS_CLEAR = 1; + PORT_ERROR_STATUS_MAC_LOCAL_FAULT = 2; + PORT_ERROR_STATUS_MAC_REMOTE_FAULT = 3; + PORT_ERROR_STATUS_FEC_SYNC_LOSS = 5; + PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER = 9; + PORT_ERROR_STATUS_HIGH_SER = 17; + PORT_ERROR_STATUS_HIGH_BER = 33; + PORT_ERROR_STATUS_CRC_RATE = 65; + PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR = 129; + PORT_ERROR_STATUS_DATA_UNIT_SIZE = 257; + PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR = 513; + PORT_ERROR_STATUS_CODE_GROUP_ERROR = 1025; + PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR = 2049; + PORT_ERROR_STATUS_NO_RX_REACHABILITY = 4097; } enum PortFecModeExtended { - PORT_FEC_MODE_EXTENDED_UNSPECIFIED = 0; - PORT_FEC_MODE_EXTENDED_NONE = 1; - PORT_FEC_MODE_EXTENDED_RS528 = 2; - PORT_FEC_MODE_EXTENDED_RS544 = 3; - PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED = 4; - PORT_FEC_MODE_EXTENDED_FC = 5; + PORT_FEC_MODE_EXTENDED_UNSPECIFIED = 0; + PORT_FEC_MODE_EXTENDED_NONE = 1; + PORT_FEC_MODE_EXTENDED_RS528 = 2; + PORT_FEC_MODE_EXTENDED_RS544 = 3; + PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED = 4; + PORT_FEC_MODE_EXTENDED_FC = 5; } enum PortFecMode { - PORT_FEC_MODE_UNSPECIFIED = 0; - PORT_FEC_MODE_NONE = 1; - PORT_FEC_MODE_RS = 2; - PORT_FEC_MODE_FC = 3; + PORT_FEC_MODE_UNSPECIFIED = 0; + PORT_FEC_MODE_NONE = 1; + PORT_FEC_MODE_RS = 2; + PORT_FEC_MODE_FC = 3; } enum PortFlowControlMode { - PORT_FLOW_CONTROL_MODE_UNSPECIFIED = 0; - PORT_FLOW_CONTROL_MODE_DISABLE = 1; - PORT_FLOW_CONTROL_MODE_TX_ONLY = 2; - PORT_FLOW_CONTROL_MODE_RX_ONLY = 3; - PORT_FLOW_CONTROL_MODE_BOTH_ENABLE = 4; + PORT_FLOW_CONTROL_MODE_UNSPECIFIED = 0; + PORT_FLOW_CONTROL_MODE_DISABLE = 1; + PORT_FLOW_CONTROL_MODE_TX_ONLY = 2; + PORT_FLOW_CONTROL_MODE_RX_ONLY = 3; + PORT_FLOW_CONTROL_MODE_BOTH_ENABLE = 4; } enum PortHostTxReadyStatus { - PORT_HOST_TX_READY_STATUS_UNSPECIFIED = 0; - PORT_HOST_TX_READY_STATUS_NOT_READY = 1; - PORT_HOST_TX_READY_STATUS_READY = 2; + PORT_HOST_TX_READY_STATUS_UNSPECIFIED = 0; + PORT_HOST_TX_READY_STATUS_NOT_READY = 1; + PORT_HOST_TX_READY_STATUS_READY = 2; } enum PortInterfaceType { - PORT_INTERFACE_TYPE_UNSPECIFIED = 0; - PORT_INTERFACE_TYPE_NONE = 1; - PORT_INTERFACE_TYPE_CR = 2; - PORT_INTERFACE_TYPE_CR2 = 3; - PORT_INTERFACE_TYPE_CR4 = 4; - PORT_INTERFACE_TYPE_SR = 5; - PORT_INTERFACE_TYPE_SR2 = 6; - PORT_INTERFACE_TYPE_SR4 = 7; - PORT_INTERFACE_TYPE_LR = 8; - PORT_INTERFACE_TYPE_LR4 = 9; - PORT_INTERFACE_TYPE_KR = 10; - PORT_INTERFACE_TYPE_KR4 = 11; - PORT_INTERFACE_TYPE_CAUI = 12; - PORT_INTERFACE_TYPE_GMII = 13; - PORT_INTERFACE_TYPE_SFI = 14; - PORT_INTERFACE_TYPE_XLAUI = 15; - PORT_INTERFACE_TYPE_KR2 = 16; - PORT_INTERFACE_TYPE_CAUI4 = 17; - PORT_INTERFACE_TYPE_XAUI = 18; - PORT_INTERFACE_TYPE_XFI = 19; - PORT_INTERFACE_TYPE_XGMII = 20; - PORT_INTERFACE_TYPE_CR8 = 21; - PORT_INTERFACE_TYPE_KR8 = 22; - PORT_INTERFACE_TYPE_SR8 = 23; - PORT_INTERFACE_TYPE_LR8 = 24; - PORT_INTERFACE_TYPE_USXGMII = 25; - PORT_INTERFACE_TYPE_MAX = 26; + PORT_INTERFACE_TYPE_UNSPECIFIED = 0; + PORT_INTERFACE_TYPE_NONE = 1; + PORT_INTERFACE_TYPE_CR = 2; + PORT_INTERFACE_TYPE_CR2 = 3; + PORT_INTERFACE_TYPE_CR4 = 4; + PORT_INTERFACE_TYPE_SR = 5; + PORT_INTERFACE_TYPE_SR2 = 6; + PORT_INTERFACE_TYPE_SR4 = 7; + PORT_INTERFACE_TYPE_LR = 8; + PORT_INTERFACE_TYPE_LR4 = 9; + PORT_INTERFACE_TYPE_KR = 10; + PORT_INTERFACE_TYPE_KR4 = 11; + PORT_INTERFACE_TYPE_CAUI = 12; + PORT_INTERFACE_TYPE_GMII = 13; + PORT_INTERFACE_TYPE_SFI = 14; + PORT_INTERFACE_TYPE_XLAUI = 15; + PORT_INTERFACE_TYPE_KR2 = 16; + PORT_INTERFACE_TYPE_CAUI4 = 17; + PORT_INTERFACE_TYPE_XAUI = 18; + PORT_INTERFACE_TYPE_XFI = 19; + PORT_INTERFACE_TYPE_XGMII = 20; + PORT_INTERFACE_TYPE_CR8 = 21; + PORT_INTERFACE_TYPE_KR8 = 22; + PORT_INTERFACE_TYPE_SR8 = 23; + PORT_INTERFACE_TYPE_LR8 = 24; + PORT_INTERFACE_TYPE_USXGMII = 25; + PORT_INTERFACE_TYPE_MAX = 26; } enum PortInternalLoopbackMode { - PORT_INTERNAL_LOOPBACK_MODE_UNSPECIFIED = 0; - PORT_INTERNAL_LOOPBACK_MODE_NONE = 1; - PORT_INTERNAL_LOOPBACK_MODE_PHY = 2; - PORT_INTERNAL_LOOPBACK_MODE_MAC = 3; + PORT_INTERNAL_LOOPBACK_MODE_UNSPECIFIED = 0; + PORT_INTERNAL_LOOPBACK_MODE_NONE = 1; + PORT_INTERNAL_LOOPBACK_MODE_PHY = 2; + PORT_INTERNAL_LOOPBACK_MODE_MAC = 3; } enum PortLinkTrainingFailureStatus { - PORT_LINK_TRAINING_FAILURE_STATUS_UNSPECIFIED = 0; - PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR = 1; - PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR = 2; - PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD = 3; - PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT = 4; + PORT_LINK_TRAINING_FAILURE_STATUS_UNSPECIFIED = 0; + PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR = 1; + PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR = 2; + PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD = 3; + PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT = 4; } enum PortLinkTrainingRxStatus { - PORT_LINK_TRAINING_RX_STATUS_UNSPECIFIED = 0; - PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED = 1; - PORT_LINK_TRAINING_RX_STATUS_TRAINED = 2; + PORT_LINK_TRAINING_RX_STATUS_UNSPECIFIED = 0; + PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED = 1; + PORT_LINK_TRAINING_RX_STATUS_TRAINED = 2; } enum PortLoopbackMode { - PORT_LOOPBACK_MODE_UNSPECIFIED = 0; - PORT_LOOPBACK_MODE_NONE = 1; - PORT_LOOPBACK_MODE_PHY = 2; - PORT_LOOPBACK_MODE_MAC = 3; - PORT_LOOPBACK_MODE_PHY_REMOTE = 4; - PORT_LOOPBACK_MODE_MAC_REMOTE = 5; + PORT_LOOPBACK_MODE_UNSPECIFIED = 0; + PORT_LOOPBACK_MODE_NONE = 1; + PORT_LOOPBACK_MODE_PHY = 2; + PORT_LOOPBACK_MODE_MAC = 3; + PORT_LOOPBACK_MODE_PHY_REMOTE = 4; + PORT_LOOPBACK_MODE_MAC_REMOTE = 5; } enum PortMdixModeConfig { - PORT_MDIX_MODE_CONFIG_UNSPECIFIED = 0; - PORT_MDIX_MODE_CONFIG_AUTO = 1; - PORT_MDIX_MODE_CONFIG_STRAIGHT = 2; - PORT_MDIX_MODE_CONFIG_CROSSOVER = 3; + PORT_MDIX_MODE_CONFIG_UNSPECIFIED = 0; + PORT_MDIX_MODE_CONFIG_AUTO = 1; + PORT_MDIX_MODE_CONFIG_STRAIGHT = 2; + PORT_MDIX_MODE_CONFIG_CROSSOVER = 3; } enum PortMdixModeStatus { - PORT_MDIX_MODE_STATUS_UNSPECIFIED = 0; - PORT_MDIX_MODE_STATUS_STRAIGHT = 1; - PORT_MDIX_MODE_STATUS_CROSSOVER = 2; + PORT_MDIX_MODE_STATUS_UNSPECIFIED = 0; + PORT_MDIX_MODE_STATUS_STRAIGHT = 1; + PORT_MDIX_MODE_STATUS_CROSSOVER = 2; } enum PortMediaType { - PORT_MEDIA_TYPE_UNSPECIFIED = 0; - PORT_MEDIA_TYPE_NOT_PRESENT = 1; - PORT_MEDIA_TYPE_UNKNOWN = 2; - PORT_MEDIA_TYPE_FIBER = 3; - PORT_MEDIA_TYPE_COPPER = 4; - PORT_MEDIA_TYPE_BACKPLANE = 5; + PORT_MEDIA_TYPE_UNSPECIFIED = 0; + PORT_MEDIA_TYPE_NOT_PRESENT = 1; + PORT_MEDIA_TYPE_UNKNOWN = 2; + PORT_MEDIA_TYPE_FIBER = 3; + PORT_MEDIA_TYPE_COPPER = 4; + PORT_MEDIA_TYPE_BACKPLANE = 5; } enum PortModuleType { - PORT_MODULE_TYPE_UNSPECIFIED = 0; - PORT_MODULE_TYPE_1000BASE_X = 1; - PORT_MODULE_TYPE_100FX = 2; - PORT_MODULE_TYPE_SGMII_SLAVE = 3; + PORT_MODULE_TYPE_UNSPECIFIED = 0; + PORT_MODULE_TYPE_1000BASE_X = 1; + PORT_MODULE_TYPE_100FX = 2; + PORT_MODULE_TYPE_SGMII_SLAVE = 3; } enum PortOperStatus { - PORT_OPER_STATUS_UNSPECIFIED = 0; - PORT_OPER_STATUS_UNKNOWN = 1; - PORT_OPER_STATUS_UP = 2; - PORT_OPER_STATUS_DOWN = 3; - PORT_OPER_STATUS_TESTING = 4; - PORT_OPER_STATUS_NOT_PRESENT = 5; + PORT_OPER_STATUS_UNSPECIFIED = 0; + PORT_OPER_STATUS_UNKNOWN = 1; + PORT_OPER_STATUS_UP = 2; + PORT_OPER_STATUS_DOWN = 3; + PORT_OPER_STATUS_TESTING = 4; + PORT_OPER_STATUS_NOT_PRESENT = 5; } enum PortPathTracingTimestampType { - PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED = 0; - PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15 = 1; - PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19 = 2; - PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23 = 3; - PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27 = 4; + PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED = 0; + PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15 = 1; + PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19 = 2; + PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23 = 3; + PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27 = 4; } enum PortPoolStat { - PORT_POOL_STAT_UNSPECIFIED = 0; - PORT_POOL_STAT_IF_OCTETS = 1; - PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS = 2; - PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES = 3; - PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS = 4; - PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES = 5; - PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS = 6; - PORT_POOL_STAT_RED_WRED_DROPPED_BYTES = 7; - PORT_POOL_STAT_WRED_DROPPED_PACKETS = 8; - PORT_POOL_STAT_WRED_DROPPED_BYTES = 9; - PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 10; - PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES = 11; - PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 12; - PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 13; - PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS = 14; - PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES = 15; - PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS = 16; - PORT_POOL_STAT_WRED_ECN_MARKED_BYTES = 17; - PORT_POOL_STAT_CURR_OCCUPANCY_BYTES = 18; - PORT_POOL_STAT_WATERMARK_BYTES = 19; - PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES = 20; - PORT_POOL_STAT_SHARED_WATERMARK_BYTES = 21; - PORT_POOL_STAT_DROPPED_PKTS = 22; + PORT_POOL_STAT_UNSPECIFIED = 0; + PORT_POOL_STAT_IF_OCTETS = 1; + PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS = 2; + PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES = 3; + PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS = 4; + PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES = 5; + PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS = 6; + PORT_POOL_STAT_RED_WRED_DROPPED_BYTES = 7; + PORT_POOL_STAT_WRED_DROPPED_PACKETS = 8; + PORT_POOL_STAT_WRED_DROPPED_BYTES = 9; + PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 10; + PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES = 11; + PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 12; + PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 13; + PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS = 14; + PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES = 15; + PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS = 16; + PORT_POOL_STAT_WRED_ECN_MARKED_BYTES = 17; + PORT_POOL_STAT_CURR_OCCUPANCY_BYTES = 18; + PORT_POOL_STAT_WATERMARK_BYTES = 19; + PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES = 20; + PORT_POOL_STAT_SHARED_WATERMARK_BYTES = 21; + PORT_POOL_STAT_DROPPED_PKTS = 22; } enum PortPrbsConfig { - PORT_PRBS_CONFIG_UNSPECIFIED = 0; - PORT_PRBS_CONFIG_DISABLE = 1; - PORT_PRBS_CONFIG_ENABLE_TX_RX = 2; - PORT_PRBS_CONFIG_ENABLE_RX = 3; - PORT_PRBS_CONFIG_ENABLE_TX = 4; + PORT_PRBS_CONFIG_UNSPECIFIED = 0; + PORT_PRBS_CONFIG_DISABLE = 1; + PORT_PRBS_CONFIG_ENABLE_TX_RX = 2; + PORT_PRBS_CONFIG_ENABLE_RX = 3; + PORT_PRBS_CONFIG_ENABLE_TX = 4; } enum PortPrbsRxStatus { - PORT_PRBS_RX_STATUS_UNSPECIFIED = 0; - PORT_PRBS_RX_STATUS_OK = 1; - PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS = 2; - PORT_PRBS_RX_STATUS_NOT_LOCKED = 3; - PORT_PRBS_RX_STATUS_LOST_LOCK = 4; + PORT_PRBS_RX_STATUS_UNSPECIFIED = 0; + PORT_PRBS_RX_STATUS_OK = 1; + PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS = 2; + PORT_PRBS_RX_STATUS_NOT_LOCKED = 3; + PORT_PRBS_RX_STATUS_LOST_LOCK = 4; } enum PortPriorityFlowControlMode { - PORT_PRIORITY_FLOW_CONTROL_MODE_UNSPECIFIED = 0; - PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED = 1; - PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE = 2; + PORT_PRIORITY_FLOW_CONTROL_MODE_UNSPECIFIED = 0; + PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED = 1; + PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE = 2; } enum PortPtpMode { - PORT_PTP_MODE_UNSPECIFIED = 0; - PORT_PTP_MODE_NONE = 1; - PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP = 2; - PORT_PTP_MODE_TWO_STEP_TIMESTAMP = 3; + PORT_PTP_MODE_UNSPECIFIED = 0; + PORT_PTP_MODE_NONE = 1; + PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP = 2; + PORT_PTP_MODE_TWO_STEP_TIMESTAMP = 3; } enum PortStatExtensions { - option allow_alias = true; - PORT_STAT_EXTENSIONS_UNSPECIFIED = 0; - PORT_STAT_EXTENSIONS_RANGE_START = 12289; - PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES = 12289; - PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS = 12290; - PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES = 12291; - PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS = 12292; - PORT_STAT_EXTENSIONS_RANGE_END = 12293; + option allow_alias = true; + PORT_STAT_EXTENSIONS_UNSPECIFIED = 0; + PORT_STAT_EXTENSIONS_RANGE_START = 536870913; + PORT_STAT_LB_FAST_PATH_ICMP_IN_BYTES = 536870913; + PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS = 536870914; + PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES = 536870915; + PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS = 536870916; + PORT_STAT_VIP_MISS_DROP_PACKETS = 536870917; + PORT_STAT_ENI_MISS_DROP_PACKETS = 536870918; + PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES = 536870919; + PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS = 536870920; + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES = 536870921; + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS = 536870922; + PORT_STAT_EXTENSIONS_RANGE_END = 536870923; } enum PortStat { - option allow_alias = true; - PORT_STAT_UNSPECIFIED = 0; - PORT_STAT_START = 1; - PORT_STAT_IF_IN_OCTETS = 1; - PORT_STAT_IF_IN_UCAST_PKTS = 2; - PORT_STAT_IF_IN_NON_UCAST_PKTS = 3; - PORT_STAT_IF_IN_DISCARDS = 4; - PORT_STAT_IF_IN_ERRORS = 5; - PORT_STAT_IF_IN_UNKNOWN_PROTOS = 6; - PORT_STAT_IF_IN_BROADCAST_PKTS = 7; - PORT_STAT_IF_IN_MULTICAST_PKTS = 8; - PORT_STAT_IF_IN_VLAN_DISCARDS = 9; - PORT_STAT_IF_OUT_OCTETS = 10; - PORT_STAT_IF_OUT_UCAST_PKTS = 11; - PORT_STAT_IF_OUT_NON_UCAST_PKTS = 12; - PORT_STAT_IF_OUT_DISCARDS = 13; - PORT_STAT_IF_OUT_ERRORS = 14; - PORT_STAT_IF_OUT_QLEN = 15; - PORT_STAT_IF_OUT_BROADCAST_PKTS = 16; - PORT_STAT_IF_OUT_MULTICAST_PKTS = 17; - PORT_STAT_ETHER_STATS_DROP_EVENTS = 18; - PORT_STAT_ETHER_STATS_MULTICAST_PKTS = 19; - PORT_STAT_ETHER_STATS_BROADCAST_PKTS = 20; - PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS = 21; - PORT_STAT_ETHER_STATS_FRAGMENTS = 22; - PORT_STAT_ETHER_STATS_PKTS_64_OCTETS = 23; - PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS = 24; - PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS = 25; - PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS = 26; - PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS = 27; - PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS = 28; - PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS = 29; - PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS = 30; - PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS = 31; - PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS = 32; - PORT_STAT_ETHER_STATS_OVERSIZE_PKTS = 33; - PORT_STAT_ETHER_RX_OVERSIZE_PKTS = 34; - PORT_STAT_ETHER_TX_OVERSIZE_PKTS = 35; - PORT_STAT_ETHER_STATS_JABBERS = 36; - PORT_STAT_ETHER_STATS_OCTETS = 37; - PORT_STAT_ETHER_STATS_PKTS = 38; - PORT_STAT_ETHER_STATS_COLLISIONS = 39; - PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS = 40; - PORT_STAT_ETHER_STATS_TX_NO_ERRORS = 41; - PORT_STAT_ETHER_STATS_RX_NO_ERRORS = 42; - PORT_STAT_IP_IN_RECEIVES = 43; - PORT_STAT_IP_IN_OCTETS = 44; - PORT_STAT_IP_IN_UCAST_PKTS = 45; - PORT_STAT_IP_IN_NON_UCAST_PKTS = 46; - PORT_STAT_IP_IN_DISCARDS = 47; - PORT_STAT_IP_OUT_OCTETS = 48; - PORT_STAT_IP_OUT_UCAST_PKTS = 49; - PORT_STAT_IP_OUT_NON_UCAST_PKTS = 50; - PORT_STAT_IP_OUT_DISCARDS = 51; - PORT_STAT_IPV6_IN_RECEIVES = 52; - PORT_STAT_IPV6_IN_OCTETS = 53; - PORT_STAT_IPV6_IN_UCAST_PKTS = 54; - PORT_STAT_IPV6_IN_NON_UCAST_PKTS = 55; - PORT_STAT_IPV6_IN_MCAST_PKTS = 56; - PORT_STAT_IPV6_IN_DISCARDS = 57; - PORT_STAT_IPV6_OUT_OCTETS = 58; - PORT_STAT_IPV6_OUT_UCAST_PKTS = 59; - PORT_STAT_IPV6_OUT_NON_UCAST_PKTS = 60; - PORT_STAT_IPV6_OUT_MCAST_PKTS = 61; - PORT_STAT_IPV6_OUT_DISCARDS = 62; - PORT_STAT_GREEN_WRED_DROPPED_PACKETS = 63; - PORT_STAT_GREEN_WRED_DROPPED_BYTES = 64; - PORT_STAT_YELLOW_WRED_DROPPED_PACKETS = 65; - PORT_STAT_YELLOW_WRED_DROPPED_BYTES = 66; - PORT_STAT_RED_WRED_DROPPED_PACKETS = 67; - PORT_STAT_RED_WRED_DROPPED_BYTES = 68; - PORT_STAT_WRED_DROPPED_PACKETS = 69; - PORT_STAT_WRED_DROPPED_BYTES = 70; - PORT_STAT_ECN_MARKED_PACKETS = 71; - PORT_STAT_ETHER_IN_PKTS_64_OCTETS = 72; - PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS = 73; - PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS = 74; - PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS = 75; - PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS = 76; - PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS = 77; - PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS = 78; - PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS = 79; - PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS = 80; - PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS = 81; - PORT_STAT_ETHER_OUT_PKTS_64_OCTETS = 82; - PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS = 83; - PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS = 84; - PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS = 85; - PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS = 86; - PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS = 87; - PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS = 88; - PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS = 89; - PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS = 90; - PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS = 91; - PORT_STAT_IN_CURR_OCCUPANCY_BYTES = 92; - PORT_STAT_IN_WATERMARK_BYTES = 93; - PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES = 94; - PORT_STAT_IN_SHARED_WATERMARK_BYTES = 95; - PORT_STAT_OUT_CURR_OCCUPANCY_BYTES = 96; - PORT_STAT_OUT_WATERMARK_BYTES = 97; - PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES = 98; - PORT_STAT_OUT_SHARED_WATERMARK_BYTES = 99; - PORT_STAT_IN_DROPPED_PKTS = 100; - PORT_STAT_OUT_DROPPED_PKTS = 101; - PORT_STAT_PAUSE_RX_PKTS = 102; - PORT_STAT_PAUSE_TX_PKTS = 103; - PORT_STAT_PFC_0_RX_PKTS = 104; - PORT_STAT_PFC_0_TX_PKTS = 105; - PORT_STAT_PFC_1_RX_PKTS = 106; - PORT_STAT_PFC_1_TX_PKTS = 107; - PORT_STAT_PFC_2_RX_PKTS = 108; - PORT_STAT_PFC_2_TX_PKTS = 109; - PORT_STAT_PFC_3_RX_PKTS = 110; - PORT_STAT_PFC_3_TX_PKTS = 111; - PORT_STAT_PFC_4_RX_PKTS = 112; - PORT_STAT_PFC_4_TX_PKTS = 113; - PORT_STAT_PFC_5_RX_PKTS = 114; - PORT_STAT_PFC_5_TX_PKTS = 115; - PORT_STAT_PFC_6_RX_PKTS = 116; - PORT_STAT_PFC_6_TX_PKTS = 117; - PORT_STAT_PFC_7_RX_PKTS = 118; - PORT_STAT_PFC_7_TX_PKTS = 119; - PORT_STAT_PFC_0_RX_PAUSE_DURATION = 120; - PORT_STAT_PFC_0_TX_PAUSE_DURATION = 121; - PORT_STAT_PFC_1_RX_PAUSE_DURATION = 122; - PORT_STAT_PFC_1_TX_PAUSE_DURATION = 123; - PORT_STAT_PFC_2_RX_PAUSE_DURATION = 124; - PORT_STAT_PFC_2_TX_PAUSE_DURATION = 125; - PORT_STAT_PFC_3_RX_PAUSE_DURATION = 126; - PORT_STAT_PFC_3_TX_PAUSE_DURATION = 127; - PORT_STAT_PFC_4_RX_PAUSE_DURATION = 128; - PORT_STAT_PFC_4_TX_PAUSE_DURATION = 129; - PORT_STAT_PFC_5_RX_PAUSE_DURATION = 130; - PORT_STAT_PFC_5_TX_PAUSE_DURATION = 131; - PORT_STAT_PFC_6_RX_PAUSE_DURATION = 132; - PORT_STAT_PFC_6_TX_PAUSE_DURATION = 133; - PORT_STAT_PFC_7_RX_PAUSE_DURATION = 134; - PORT_STAT_PFC_7_TX_PAUSE_DURATION = 135; - PORT_STAT_PFC_0_RX_PAUSE_DURATION_US = 136; - PORT_STAT_PFC_0_TX_PAUSE_DURATION_US = 137; - PORT_STAT_PFC_1_RX_PAUSE_DURATION_US = 138; - PORT_STAT_PFC_1_TX_PAUSE_DURATION_US = 139; - PORT_STAT_PFC_2_RX_PAUSE_DURATION_US = 140; - PORT_STAT_PFC_2_TX_PAUSE_DURATION_US = 141; - PORT_STAT_PFC_3_RX_PAUSE_DURATION_US = 142; - PORT_STAT_PFC_3_TX_PAUSE_DURATION_US = 143; - PORT_STAT_PFC_4_RX_PAUSE_DURATION_US = 144; - PORT_STAT_PFC_4_TX_PAUSE_DURATION_US = 145; - PORT_STAT_PFC_5_RX_PAUSE_DURATION_US = 146; - PORT_STAT_PFC_5_TX_PAUSE_DURATION_US = 147; - PORT_STAT_PFC_6_RX_PAUSE_DURATION_US = 148; - PORT_STAT_PFC_6_TX_PAUSE_DURATION_US = 149; - PORT_STAT_PFC_7_RX_PAUSE_DURATION_US = 150; - PORT_STAT_PFC_7_TX_PAUSE_DURATION_US = 151; - PORT_STAT_PFC_0_ON2OFF_RX_PKTS = 152; - PORT_STAT_PFC_1_ON2OFF_RX_PKTS = 153; - PORT_STAT_PFC_2_ON2OFF_RX_PKTS = 154; - PORT_STAT_PFC_3_ON2OFF_RX_PKTS = 155; - PORT_STAT_PFC_4_ON2OFF_RX_PKTS = 156; - PORT_STAT_PFC_5_ON2OFF_RX_PKTS = 157; - PORT_STAT_PFC_6_ON2OFF_RX_PKTS = 158; - PORT_STAT_PFC_7_ON2OFF_RX_PKTS = 159; - PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS = 160; - PORT_STAT_DOT3_STATS_FCS_ERRORS = 161; - PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES = 162; - PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES = 163; - PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS = 164; - PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS = 165; - PORT_STAT_DOT3_STATS_LATE_COLLISIONS = 166; - PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS = 167; - PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS = 168; - PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS = 169; - PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS = 170; - PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS = 171; - PORT_STAT_DOT3_STATS_SYMBOL_ERRORS = 172; - PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES = 173; - PORT_STAT_EEE_TX_EVENT_COUNT = 174; - PORT_STAT_EEE_RX_EVENT_COUNT = 175; - PORT_STAT_EEE_TX_DURATION = 176; - PORT_STAT_EEE_RX_DURATION = 177; - PORT_STAT_PRBS_ERROR_COUNT = 178; - PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES = 179; - PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES = 180; - PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS = 181; - PORT_STAT_IF_IN_FABRIC_DATA_UNITS = 182; - PORT_STAT_IF_OUT_FABRIC_DATA_UNITS = 183; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0 = 184; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1 = 185; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2 = 186; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3 = 187; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4 = 188; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5 = 189; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6 = 190; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7 = 191; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8 = 192; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9 = 193; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10 = 194; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11 = 195; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12 = 196; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13 = 197; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14 = 198; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15 = 199; - PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16 = 200; - PORT_STAT_IF_IN_FEC_CORRECTED_BITS = 201; - PORT_STAT_IN_DROP_REASON_RANGE_BASE = 4097; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 4097; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 4098; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 4099; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 4100; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 4101; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 4102; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 4103; - PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 4104; - PORT_STAT_IN_DROP_REASON_RANGE_END = 8192; - PORT_STAT_OUT_DROP_REASON_RANGE_BASE = 8193; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 8193; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 8194; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 8195; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 8196; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 8197; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 8198; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 8199; - PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 8200; - PORT_STAT_OUT_DROP_REASON_RANGE_END = 12288; - PORT_STAT_END = 12289; + option allow_alias = true; + PORT_STAT_UNSPECIFIED = 0; + PORT_STAT_START = 1; + PORT_STAT_IF_IN_OCTETS = 1; + PORT_STAT_IF_IN_UCAST_PKTS = 2; + PORT_STAT_IF_IN_NON_UCAST_PKTS = 3; + PORT_STAT_IF_IN_DISCARDS = 4; + PORT_STAT_IF_IN_ERRORS = 5; + PORT_STAT_IF_IN_UNKNOWN_PROTOS = 6; + PORT_STAT_IF_IN_BROADCAST_PKTS = 7; + PORT_STAT_IF_IN_MULTICAST_PKTS = 8; + PORT_STAT_IF_IN_VLAN_DISCARDS = 9; + PORT_STAT_IF_OUT_OCTETS = 10; + PORT_STAT_IF_OUT_UCAST_PKTS = 11; + PORT_STAT_IF_OUT_NON_UCAST_PKTS = 12; + PORT_STAT_IF_OUT_DISCARDS = 13; + PORT_STAT_IF_OUT_ERRORS = 14; + PORT_STAT_IF_OUT_QLEN = 15; + PORT_STAT_IF_OUT_BROADCAST_PKTS = 16; + PORT_STAT_IF_OUT_MULTICAST_PKTS = 17; + PORT_STAT_ETHER_STATS_DROP_EVENTS = 18; + PORT_STAT_ETHER_STATS_MULTICAST_PKTS = 19; + PORT_STAT_ETHER_STATS_BROADCAST_PKTS = 20; + PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS = 21; + PORT_STAT_ETHER_STATS_FRAGMENTS = 22; + PORT_STAT_ETHER_STATS_PKTS_64_OCTETS = 23; + PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS = 24; + PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS = 25; + PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS = 26; + PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS = 27; + PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS = 28; + PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS = 29; + PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS = 30; + PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS = 31; + PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS = 32; + PORT_STAT_ETHER_STATS_OVERSIZE_PKTS = 33; + PORT_STAT_ETHER_RX_OVERSIZE_PKTS = 34; + PORT_STAT_ETHER_TX_OVERSIZE_PKTS = 35; + PORT_STAT_ETHER_STATS_JABBERS = 36; + PORT_STAT_ETHER_STATS_OCTETS = 37; + PORT_STAT_ETHER_STATS_PKTS = 38; + PORT_STAT_ETHER_STATS_COLLISIONS = 39; + PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS = 40; + PORT_STAT_ETHER_STATS_TX_NO_ERRORS = 41; + PORT_STAT_ETHER_STATS_RX_NO_ERRORS = 42; + PORT_STAT_IP_IN_RECEIVES = 43; + PORT_STAT_IP_IN_OCTETS = 44; + PORT_STAT_IP_IN_UCAST_PKTS = 45; + PORT_STAT_IP_IN_NON_UCAST_PKTS = 46; + PORT_STAT_IP_IN_DISCARDS = 47; + PORT_STAT_IP_OUT_OCTETS = 48; + PORT_STAT_IP_OUT_UCAST_PKTS = 49; + PORT_STAT_IP_OUT_NON_UCAST_PKTS = 50; + PORT_STAT_IP_OUT_DISCARDS = 51; + PORT_STAT_IPV6_IN_RECEIVES = 52; + PORT_STAT_IPV6_IN_OCTETS = 53; + PORT_STAT_IPV6_IN_UCAST_PKTS = 54; + PORT_STAT_IPV6_IN_NON_UCAST_PKTS = 55; + PORT_STAT_IPV6_IN_MCAST_PKTS = 56; + PORT_STAT_IPV6_IN_DISCARDS = 57; + PORT_STAT_IPV6_OUT_OCTETS = 58; + PORT_STAT_IPV6_OUT_UCAST_PKTS = 59; + PORT_STAT_IPV6_OUT_NON_UCAST_PKTS = 60; + PORT_STAT_IPV6_OUT_MCAST_PKTS = 61; + PORT_STAT_IPV6_OUT_DISCARDS = 62; + PORT_STAT_GREEN_WRED_DROPPED_PACKETS = 63; + PORT_STAT_GREEN_WRED_DROPPED_BYTES = 64; + PORT_STAT_YELLOW_WRED_DROPPED_PACKETS = 65; + PORT_STAT_YELLOW_WRED_DROPPED_BYTES = 66; + PORT_STAT_RED_WRED_DROPPED_PACKETS = 67; + PORT_STAT_RED_WRED_DROPPED_BYTES = 68; + PORT_STAT_WRED_DROPPED_PACKETS = 69; + PORT_STAT_WRED_DROPPED_BYTES = 70; + PORT_STAT_ECN_MARKED_PACKETS = 71; + PORT_STAT_ETHER_IN_PKTS_64_OCTETS = 72; + PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS = 73; + PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS = 74; + PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS = 75; + PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS = 76; + PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS = 77; + PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS = 78; + PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS = 79; + PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS = 80; + PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS = 81; + PORT_STAT_ETHER_OUT_PKTS_64_OCTETS = 82; + PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS = 83; + PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS = 84; + PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS = 85; + PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS = 86; + PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS = 87; + PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS = 88; + PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS = 89; + PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS = 90; + PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS = 91; + PORT_STAT_IN_CURR_OCCUPANCY_BYTES = 92; + PORT_STAT_IN_WATERMARK_BYTES = 93; + PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES = 94; + PORT_STAT_IN_SHARED_WATERMARK_BYTES = 95; + PORT_STAT_OUT_CURR_OCCUPANCY_BYTES = 96; + PORT_STAT_OUT_WATERMARK_BYTES = 97; + PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES = 98; + PORT_STAT_OUT_SHARED_WATERMARK_BYTES = 99; + PORT_STAT_IN_DROPPED_PKTS = 100; + PORT_STAT_OUT_DROPPED_PKTS = 101; + PORT_STAT_PAUSE_RX_PKTS = 102; + PORT_STAT_PAUSE_TX_PKTS = 103; + PORT_STAT_PFC_0_RX_PKTS = 104; + PORT_STAT_PFC_0_TX_PKTS = 105; + PORT_STAT_PFC_1_RX_PKTS = 106; + PORT_STAT_PFC_1_TX_PKTS = 107; + PORT_STAT_PFC_2_RX_PKTS = 108; + PORT_STAT_PFC_2_TX_PKTS = 109; + PORT_STAT_PFC_3_RX_PKTS = 110; + PORT_STAT_PFC_3_TX_PKTS = 111; + PORT_STAT_PFC_4_RX_PKTS = 112; + PORT_STAT_PFC_4_TX_PKTS = 113; + PORT_STAT_PFC_5_RX_PKTS = 114; + PORT_STAT_PFC_5_TX_PKTS = 115; + PORT_STAT_PFC_6_RX_PKTS = 116; + PORT_STAT_PFC_6_TX_PKTS = 117; + PORT_STAT_PFC_7_RX_PKTS = 118; + PORT_STAT_PFC_7_TX_PKTS = 119; + PORT_STAT_PFC_0_RX_PAUSE_DURATION = 120; + PORT_STAT_PFC_0_TX_PAUSE_DURATION = 121; + PORT_STAT_PFC_1_RX_PAUSE_DURATION = 122; + PORT_STAT_PFC_1_TX_PAUSE_DURATION = 123; + PORT_STAT_PFC_2_RX_PAUSE_DURATION = 124; + PORT_STAT_PFC_2_TX_PAUSE_DURATION = 125; + PORT_STAT_PFC_3_RX_PAUSE_DURATION = 126; + PORT_STAT_PFC_3_TX_PAUSE_DURATION = 127; + PORT_STAT_PFC_4_RX_PAUSE_DURATION = 128; + PORT_STAT_PFC_4_TX_PAUSE_DURATION = 129; + PORT_STAT_PFC_5_RX_PAUSE_DURATION = 130; + PORT_STAT_PFC_5_TX_PAUSE_DURATION = 131; + PORT_STAT_PFC_6_RX_PAUSE_DURATION = 132; + PORT_STAT_PFC_6_TX_PAUSE_DURATION = 133; + PORT_STAT_PFC_7_RX_PAUSE_DURATION = 134; + PORT_STAT_PFC_7_TX_PAUSE_DURATION = 135; + PORT_STAT_PFC_0_RX_PAUSE_DURATION_US = 136; + PORT_STAT_PFC_0_TX_PAUSE_DURATION_US = 137; + PORT_STAT_PFC_1_RX_PAUSE_DURATION_US = 138; + PORT_STAT_PFC_1_TX_PAUSE_DURATION_US = 139; + PORT_STAT_PFC_2_RX_PAUSE_DURATION_US = 140; + PORT_STAT_PFC_2_TX_PAUSE_DURATION_US = 141; + PORT_STAT_PFC_3_RX_PAUSE_DURATION_US = 142; + PORT_STAT_PFC_3_TX_PAUSE_DURATION_US = 143; + PORT_STAT_PFC_4_RX_PAUSE_DURATION_US = 144; + PORT_STAT_PFC_4_TX_PAUSE_DURATION_US = 145; + PORT_STAT_PFC_5_RX_PAUSE_DURATION_US = 146; + PORT_STAT_PFC_5_TX_PAUSE_DURATION_US = 147; + PORT_STAT_PFC_6_RX_PAUSE_DURATION_US = 148; + PORT_STAT_PFC_6_TX_PAUSE_DURATION_US = 149; + PORT_STAT_PFC_7_RX_PAUSE_DURATION_US = 150; + PORT_STAT_PFC_7_TX_PAUSE_DURATION_US = 151; + PORT_STAT_PFC_0_ON2OFF_RX_PKTS = 152; + PORT_STAT_PFC_1_ON2OFF_RX_PKTS = 153; + PORT_STAT_PFC_2_ON2OFF_RX_PKTS = 154; + PORT_STAT_PFC_3_ON2OFF_RX_PKTS = 155; + PORT_STAT_PFC_4_ON2OFF_RX_PKTS = 156; + PORT_STAT_PFC_5_ON2OFF_RX_PKTS = 157; + PORT_STAT_PFC_6_ON2OFF_RX_PKTS = 158; + PORT_STAT_PFC_7_ON2OFF_RX_PKTS = 159; + PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS = 160; + PORT_STAT_DOT3_STATS_FCS_ERRORS = 161; + PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES = 162; + PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES = 163; + PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS = 164; + PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS = 165; + PORT_STAT_DOT3_STATS_LATE_COLLISIONS = 166; + PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS = 167; + PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS = 168; + PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS = 169; + PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS = 170; + PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS = 171; + PORT_STAT_DOT3_STATS_SYMBOL_ERRORS = 172; + PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES = 173; + PORT_STAT_EEE_TX_EVENT_COUNT = 174; + PORT_STAT_EEE_RX_EVENT_COUNT = 175; + PORT_STAT_EEE_TX_DURATION = 176; + PORT_STAT_EEE_RX_DURATION = 177; + PORT_STAT_PRBS_ERROR_COUNT = 178; + PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES = 179; + PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES = 180; + PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS = 181; + PORT_STAT_IF_IN_FABRIC_DATA_UNITS = 182; + PORT_STAT_IF_OUT_FABRIC_DATA_UNITS = 183; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0 = 184; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1 = 185; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2 = 186; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3 = 187; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4 = 188; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5 = 189; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6 = 190; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7 = 191; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8 = 192; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9 = 193; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10 = 194; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11 = 195; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12 = 196; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13 = 197; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14 = 198; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15 = 199; + PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16 = 200; + PORT_STAT_IF_IN_FEC_CORRECTED_BITS = 201; + PORT_STAT_IN_DROP_REASON_RANGE_BASE = 4097; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 4097; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 4098; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 4099; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 4100; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 4101; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 4102; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 4103; + PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 4104; + PORT_STAT_IN_DROP_REASON_RANGE_END = 8192; + PORT_STAT_OUT_DROP_REASON_RANGE_BASE = 8193; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 8193; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 8194; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 8195; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 8196; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 8197; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 8198; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 8199; + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 8200; + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS = 8201; + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS = 8202; + PORT_STAT_OUT_DROP_REASON_RANGE_END = 12288; + PORT_STAT_END = 12289; + PORT_STAT_EXTENSIONS_RANGE_BASE = 536870913; } enum PortType { - PORT_TYPE_UNSPECIFIED = 0; - PORT_TYPE_LOGICAL = 1; - PORT_TYPE_CPU = 2; - PORT_TYPE_FABRIC = 3; - PORT_TYPE_RECYCLE = 4; + PORT_TYPE_UNSPECIFIED = 0; + PORT_TYPE_LOGICAL = 1; + PORT_TYPE_CPU = 2; + PORT_TYPE_FABRIC = 3; + PORT_TYPE_RECYCLE = 4; } enum QosMapType { - QOS_MAP_TYPE_UNSPECIFIED = 0; - QOS_MAP_TYPE_DOT1P_TO_TC = 1; - QOS_MAP_TYPE_DOT1P_TO_COLOR = 2; - QOS_MAP_TYPE_DSCP_TO_TC = 3; - QOS_MAP_TYPE_DSCP_TO_COLOR = 4; - QOS_MAP_TYPE_TC_TO_QUEUE = 5; - QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP = 6; - QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P = 7; - QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP = 8; - QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP = 9; - QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE = 10; - QOS_MAP_TYPE_MPLS_EXP_TO_TC = 11; - QOS_MAP_TYPE_MPLS_EXP_TO_COLOR = 12; - QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP = 13; - QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS = 14; - QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS = 15; - QOS_MAP_TYPE_CUSTOM_RANGE_BASE = 268435457; + QOS_MAP_TYPE_UNSPECIFIED = 0; + QOS_MAP_TYPE_DOT1P_TO_TC = 1; + QOS_MAP_TYPE_DOT1P_TO_COLOR = 2; + QOS_MAP_TYPE_DSCP_TO_TC = 3; + QOS_MAP_TYPE_DSCP_TO_COLOR = 4; + QOS_MAP_TYPE_TC_TO_QUEUE = 5; + QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP = 6; + QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P = 7; + QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP = 8; + QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP = 9; + QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE = 10; + QOS_MAP_TYPE_MPLS_EXP_TO_TC = 11; + QOS_MAP_TYPE_MPLS_EXP_TO_COLOR = 12; + QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP = 13; + QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS = 14; + QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS = 15; + QOS_MAP_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum QueuePfcContinuousDeadlockState { - QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_UNSPECIFIED = 0; - QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED = 1; - QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED = 2; - QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS = 3; + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_UNSPECIFIED = 0; + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED = 1; + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED = 2; + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS = 3; } enum QueuePfcDeadlockEventType { - QUEUE_PFC_DEADLOCK_EVENT_TYPE_UNSPECIFIED = 0; - QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED = 1; - QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED = 2; + QUEUE_PFC_DEADLOCK_EVENT_TYPE_UNSPECIFIED = 0; + QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED = 1; + QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED = 2; } enum QueueStat { - QUEUE_STAT_UNSPECIFIED = 0; - QUEUE_STAT_PACKETS = 1; - QUEUE_STAT_BYTES = 2; - QUEUE_STAT_DROPPED_PACKETS = 3; - QUEUE_STAT_DROPPED_BYTES = 4; - QUEUE_STAT_GREEN_PACKETS = 5; - QUEUE_STAT_GREEN_BYTES = 6; - QUEUE_STAT_GREEN_DROPPED_PACKETS = 7; - QUEUE_STAT_GREEN_DROPPED_BYTES = 8; - QUEUE_STAT_YELLOW_PACKETS = 9; - QUEUE_STAT_YELLOW_BYTES = 10; - QUEUE_STAT_YELLOW_DROPPED_PACKETS = 11; - QUEUE_STAT_YELLOW_DROPPED_BYTES = 12; - QUEUE_STAT_RED_PACKETS = 13; - QUEUE_STAT_RED_BYTES = 14; - QUEUE_STAT_RED_DROPPED_PACKETS = 15; - QUEUE_STAT_RED_DROPPED_BYTES = 16; - QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS = 17; - QUEUE_STAT_GREEN_WRED_DROPPED_BYTES = 18; - QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS = 19; - QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES = 20; - QUEUE_STAT_RED_WRED_DROPPED_PACKETS = 21; - QUEUE_STAT_RED_WRED_DROPPED_BYTES = 22; - QUEUE_STAT_WRED_DROPPED_PACKETS = 23; - QUEUE_STAT_WRED_DROPPED_BYTES = 24; - QUEUE_STAT_CURR_OCCUPANCY_BYTES = 25; - QUEUE_STAT_WATERMARK_BYTES = 26; - QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES = 27; - QUEUE_STAT_SHARED_WATERMARK_BYTES = 28; - QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 29; - QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES = 30; - QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 31; - QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 32; - QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS = 33; - QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES = 34; - QUEUE_STAT_WRED_ECN_MARKED_PACKETS = 35; - QUEUE_STAT_WRED_ECN_MARKED_BYTES = 36; - QUEUE_STAT_CURR_OCCUPANCY_LEVEL = 37; - QUEUE_STAT_WATERMARK_LEVEL = 38; - QUEUE_STAT_CREDIT_WD_DELETED_PACKETS = 39; - QUEUE_STAT_DELAY_WATERMARK_NS = 40; - QUEUE_STAT_CUSTOM_RANGE_BASE = 268435457; + QUEUE_STAT_UNSPECIFIED = 0; + QUEUE_STAT_PACKETS = 1; + QUEUE_STAT_BYTES = 2; + QUEUE_STAT_DROPPED_PACKETS = 3; + QUEUE_STAT_DROPPED_BYTES = 4; + QUEUE_STAT_GREEN_PACKETS = 5; + QUEUE_STAT_GREEN_BYTES = 6; + QUEUE_STAT_GREEN_DROPPED_PACKETS = 7; + QUEUE_STAT_GREEN_DROPPED_BYTES = 8; + QUEUE_STAT_YELLOW_PACKETS = 9; + QUEUE_STAT_YELLOW_BYTES = 10; + QUEUE_STAT_YELLOW_DROPPED_PACKETS = 11; + QUEUE_STAT_YELLOW_DROPPED_BYTES = 12; + QUEUE_STAT_RED_PACKETS = 13; + QUEUE_STAT_RED_BYTES = 14; + QUEUE_STAT_RED_DROPPED_PACKETS = 15; + QUEUE_STAT_RED_DROPPED_BYTES = 16; + QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS = 17; + QUEUE_STAT_GREEN_WRED_DROPPED_BYTES = 18; + QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS = 19; + QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES = 20; + QUEUE_STAT_RED_WRED_DROPPED_PACKETS = 21; + QUEUE_STAT_RED_WRED_DROPPED_BYTES = 22; + QUEUE_STAT_WRED_DROPPED_PACKETS = 23; + QUEUE_STAT_WRED_DROPPED_BYTES = 24; + QUEUE_STAT_CURR_OCCUPANCY_BYTES = 25; + QUEUE_STAT_WATERMARK_BYTES = 26; + QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES = 27; + QUEUE_STAT_SHARED_WATERMARK_BYTES = 28; + QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS = 29; + QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES = 30; + QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS = 31; + QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES = 32; + QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS = 33; + QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES = 34; + QUEUE_STAT_WRED_ECN_MARKED_PACKETS = 35; + QUEUE_STAT_WRED_ECN_MARKED_BYTES = 36; + QUEUE_STAT_CURR_OCCUPANCY_LEVEL = 37; + QUEUE_STAT_WATERMARK_LEVEL = 38; + QUEUE_STAT_CREDIT_WD_DELETED_PACKETS = 39; + QUEUE_STAT_DELAY_WATERMARK_NS = 40; + QUEUE_STAT_CUSTOM_RANGE_BASE = 268435457; } enum QueueType { - QUEUE_TYPE_UNSPECIFIED = 0; - QUEUE_TYPE_ALL = 1; - QUEUE_TYPE_UNICAST = 2; - QUEUE_TYPE_MULTICAST = 3; - QUEUE_TYPE_UNICAST_VOQ = 4; - QUEUE_TYPE_MULTICAST_VOQ = 5; - QUEUE_TYPE_FABRIC_TX = 6; - QUEUE_TYPE_CUSTOM_RANGE_BASE = 268435457; + QUEUE_TYPE_UNSPECIFIED = 0; + QUEUE_TYPE_ALL = 1; + QUEUE_TYPE_UNICAST = 2; + QUEUE_TYPE_MULTICAST = 3; + QUEUE_TYPE_UNICAST_VOQ = 4; + QUEUE_TYPE_MULTICAST_VOQ = 5; + QUEUE_TYPE_FABRIC_TX = 6; + QUEUE_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum RouterInterfaceStat { - ROUTER_INTERFACE_STAT_UNSPECIFIED = 0; - ROUTER_INTERFACE_STAT_IN_OCTETS = 1; - ROUTER_INTERFACE_STAT_IN_PACKETS = 2; - ROUTER_INTERFACE_STAT_OUT_OCTETS = 3; - ROUTER_INTERFACE_STAT_OUT_PACKETS = 4; - ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS = 5; - ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS = 6; - ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS = 7; - ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS = 8; + ROUTER_INTERFACE_STAT_UNSPECIFIED = 0; + ROUTER_INTERFACE_STAT_IN_OCTETS = 1; + ROUTER_INTERFACE_STAT_IN_PACKETS = 2; + ROUTER_INTERFACE_STAT_OUT_OCTETS = 3; + ROUTER_INTERFACE_STAT_OUT_PACKETS = 4; + ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS = 5; + ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS = 6; + ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS = 7; + ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS = 8; } enum RouterInterfaceType { - ROUTER_INTERFACE_TYPE_UNSPECIFIED = 0; - ROUTER_INTERFACE_TYPE_PORT = 1; - ROUTER_INTERFACE_TYPE_VLAN = 2; - ROUTER_INTERFACE_TYPE_LOOPBACK = 3; - ROUTER_INTERFACE_TYPE_MPLS_ROUTER = 4; - ROUTER_INTERFACE_TYPE_SUB_PORT = 5; - ROUTER_INTERFACE_TYPE_BRIDGE = 6; - ROUTER_INTERFACE_TYPE_QINQ_PORT = 7; + ROUTER_INTERFACE_TYPE_UNSPECIFIED = 0; + ROUTER_INTERFACE_TYPE_PORT = 1; + ROUTER_INTERFACE_TYPE_VLAN = 2; + ROUTER_INTERFACE_TYPE_LOOPBACK = 3; + ROUTER_INTERFACE_TYPE_MPLS_ROUTER = 4; + ROUTER_INTERFACE_TYPE_SUB_PORT = 5; + ROUTER_INTERFACE_TYPE_BRIDGE = 6; + ROUTER_INTERFACE_TYPE_QINQ_PORT = 7; } enum SamplepacketMode { - SAMPLEPACKET_MODE_UNSPECIFIED = 0; - SAMPLEPACKET_MODE_EXCLUSIVE = 1; - SAMPLEPACKET_MODE_SHARED = 2; + SAMPLEPACKET_MODE_UNSPECIFIED = 0; + SAMPLEPACKET_MODE_EXCLUSIVE = 1; + SAMPLEPACKET_MODE_SHARED = 2; } enum SamplepacketType { - SAMPLEPACKET_TYPE_UNSPECIFIED = 0; - SAMPLEPACKET_TYPE_SLOW_PATH = 1; - SAMPLEPACKET_TYPE_MIRROR_SESSION = 2; + SAMPLEPACKET_TYPE_UNSPECIFIED = 0; + SAMPLEPACKET_TYPE_SLOW_PATH = 1; + SAMPLEPACKET_TYPE_MIRROR_SESSION = 2; } enum SchedulingType { - SCHEDULING_TYPE_UNSPECIFIED = 0; - SCHEDULING_TYPE_STRICT = 1; - SCHEDULING_TYPE_WRR = 2; - SCHEDULING_TYPE_DWRR = 3; + SCHEDULING_TYPE_UNSPECIFIED = 0; + SCHEDULING_TYPE_STRICT = 1; + SCHEDULING_TYPE_WRR = 2; + SCHEDULING_TYPE_DWRR = 3; +} + +enum SerCorrectionType { + SER_CORRECTION_TYPE_UNSPECIFIED = 0; + SER_CORRECTION_TYPE_NO_ACTION = 1; + SER_CORRECTION_TYPE_FAIL_TO_CORRECT = 2; + SER_CORRECTION_TYPE_ENTRY_CLEAR = 3; + SER_CORRECTION_TYPE_SW_CACHE_RESTORE = 4; + SER_CORRECTION_TYPE_HW_CACHE_RESTORE = 5; + SER_CORRECTION_TYPE_SPECIAL = 6; +} + +enum SerLogType { + SER_LOG_TYPE_UNSPECIFIED = 0; + SER_LOG_TYPE_MEM = 2; + SER_LOG_TYPE_REG = 3; + SER_LOG_TYPE_MULTI = 5; + SER_LOG_TYPE_CORRECTED = 9; + SER_LOG_TYPE_ENTRY_INFO = 17; + SER_LOG_TYPE_CACHE = 33; +} + +enum SerType { + SER_TYPE_UNSPECIFIED = 0; + SER_TYPE_UNKNOWN = 1; + SER_TYPE_PARITY = 2; + SER_TYPE_ECC_SINGLE_BIT = 3; + SER_TYPE_ECC_DOUBLE_BIT = 4; } enum Srv6SidlistStat { - SRV6_SIDLIST_STAT_UNSPECIFIED = 0; - SRV6_SIDLIST_STAT_OUT_PACKETS = 1; - SRV6_SIDLIST_STAT_OUT_OCTETS = 2; + SRV6_SIDLIST_STAT_UNSPECIFIED = 0; + SRV6_SIDLIST_STAT_OUT_PACKETS = 1; + SRV6_SIDLIST_STAT_OUT_OCTETS = 2; } enum Srv6SidlistType { - SRV6_SIDLIST_TYPE_UNSPECIFIED = 0; - SRV6_SIDLIST_TYPE_INSERT = 1; - SRV6_SIDLIST_TYPE_INSERT_RED = 2; - SRV6_SIDLIST_TYPE_ENCAPS = 3; - SRV6_SIDLIST_TYPE_ENCAPS_RED = 4; - SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE = 268435457; + SRV6_SIDLIST_TYPE_UNSPECIFIED = 0; + SRV6_SIDLIST_TYPE_INSERT = 1; + SRV6_SIDLIST_TYPE_INSERT_RED = 2; + SRV6_SIDLIST_TYPE_ENCAPS = 3; + SRV6_SIDLIST_TYPE_ENCAPS_RED = 4; + SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE = 268435457; +} + +enum StatsCountMode { + STATS_COUNT_MODE_UNSPECIFIED = 0; + STATS_COUNT_MODE_PACKET_AND_BYTE = 1; + STATS_COUNT_MODE_PACKET = 2; + STATS_COUNT_MODE_BYTE = 3; + STATS_COUNT_MODE_NONE = 4; } enum StatsMode { - STATS_MODE_UNSPECIFIED = 0; - STATS_MODE_READ = 2; - STATS_MODE_READ_AND_CLEAR = 3; - STATS_MODE_BULK_READ = 5; - STATS_MODE_BULK_CLEAR = 9; - STATS_MODE_BULK_READ_AND_CLEAR = 17; + STATS_MODE_UNSPECIFIED = 0; + STATS_MODE_READ = 2; + STATS_MODE_READ_AND_CLEAR = 3; + STATS_MODE_BULK_READ = 5; + STATS_MODE_BULK_CLEAR = 9; + STATS_MODE_BULK_READ_AND_CLEAR = 17; } enum StpPortState { - STP_PORT_STATE_UNSPECIFIED = 0; - STP_PORT_STATE_LEARNING = 1; - STP_PORT_STATE_FORWARDING = 2; - STP_PORT_STATE_BLOCKING = 3; + STP_PORT_STATE_UNSPECIFIED = 0; + STP_PORT_STATE_LEARNING = 1; + STP_PORT_STATE_FORWARDING = 2; + STP_PORT_STATE_BLOCKING = 3; } enum SwitchAsicSdkHealthCategory { - SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED = 0; - SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW = 1; - SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW = 2; - SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW = 3; - SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW = 4; + SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED = 0; + SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW = 1; + SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW = 2; + SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW = 3; + SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW = 4; } enum SwitchAsicSdkHealthSeverity { - SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED = 0; - SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL = 1; - SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING = 2; - SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE = 3; + SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED = 0; + SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL = 1; + SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING = 2; + SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE = 3; } enum SwitchAttrExtensions { - SWITCH_ATTR_EXTENSIONS_UNSPECIFIED = 0; - SWITCH_ATTR_EXTENSIONS_RANGE_START = 233; - SWITCH_ATTR_EXTENSIONS_RANGE_END = 234; + option allow_alias = true; + SWITCH_ATTR_EXTENSIONS_UNSPECIFIED = 0; + SWITCH_ATTR_EXTENSIONS_RANGE_START = 536870913; + SWITCH_ATTR_DASH_CAPS_MAX_METER_BUCKET_COUNT_PER_ENI = 536870913; + SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL = 536870914; + SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED = 536870915; + SWITCH_ATTR_HA_SET_EVENT_NOTIFY = 536870916; + SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY = 536870917; + SWITCH_ATTR_EXTENSIONS_RANGE_END = 536870918; } enum SwitchFailoverConfigMode { - SWITCH_FAILOVER_CONFIG_MODE_UNSPECIFIED = 0; - SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS = 1; - SWITCH_FAILOVER_CONFIG_MODE_HITLESS = 2; + SWITCH_FAILOVER_CONFIG_MODE_UNSPECIFIED = 0; + SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS = 1; + SWITCH_FAILOVER_CONFIG_MODE_HITLESS = 2; } enum SwitchFirmwareLoadMethod { - SWITCH_FIRMWARE_LOAD_METHOD_UNSPECIFIED = 0; - SWITCH_FIRMWARE_LOAD_METHOD_NONE = 1; - SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL = 2; - SWITCH_FIRMWARE_LOAD_METHOD_EEPROM = 3; + SWITCH_FIRMWARE_LOAD_METHOD_UNSPECIFIED = 0; + SWITCH_FIRMWARE_LOAD_METHOD_NONE = 1; + SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL = 2; + SWITCH_FIRMWARE_LOAD_METHOD_EEPROM = 3; } enum SwitchFirmwareLoadType { - SWITCH_FIRMWARE_LOAD_TYPE_UNSPECIFIED = 0; - SWITCH_FIRMWARE_LOAD_TYPE_SKIP = 1; - SWITCH_FIRMWARE_LOAD_TYPE_FORCE = 2; - SWITCH_FIRMWARE_LOAD_TYPE_AUTO = 3; + SWITCH_FIRMWARE_LOAD_TYPE_UNSPECIFIED = 0; + SWITCH_FIRMWARE_LOAD_TYPE_SKIP = 1; + SWITCH_FIRMWARE_LOAD_TYPE_FORCE = 2; + SWITCH_FIRMWARE_LOAD_TYPE_AUTO = 3; } enum SwitchHardwareAccessBus { - SWITCH_HARDWARE_ACCESS_BUS_UNSPECIFIED = 0; - SWITCH_HARDWARE_ACCESS_BUS_MDIO = 1; - SWITCH_HARDWARE_ACCESS_BUS_I2C = 2; - SWITCH_HARDWARE_ACCESS_BUS_CPLD = 3; + SWITCH_HARDWARE_ACCESS_BUS_UNSPECIFIED = 0; + SWITCH_HARDWARE_ACCESS_BUS_MDIO = 1; + SWITCH_HARDWARE_ACCESS_BUS_I2C = 2; + SWITCH_HARDWARE_ACCESS_BUS_CPLD = 3; } enum SwitchHostifOperStatusUpdateMode { - SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED = 0; - SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION = 1; - SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER = 2; + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED = 0; + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION = 1; + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER = 2; } enum SwitchMcastSnoopingCapability { - SWITCH_MCAST_SNOOPING_CAPABILITY_UNSPECIFIED = 0; - SWITCH_MCAST_SNOOPING_CAPABILITY_NONE = 1; - SWITCH_MCAST_SNOOPING_CAPABILITY_XG = 2; - SWITCH_MCAST_SNOOPING_CAPABILITY_SG = 3; - SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG = 4; + SWITCH_MCAST_SNOOPING_CAPABILITY_UNSPECIFIED = 0; + SWITCH_MCAST_SNOOPING_CAPABILITY_NONE = 1; + SWITCH_MCAST_SNOOPING_CAPABILITY_XG = 2; + SWITCH_MCAST_SNOOPING_CAPABILITY_SG = 3; + SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG = 4; } enum SwitchOperStatus { - SWITCH_OPER_STATUS_UNSPECIFIED = 0; - SWITCH_OPER_STATUS_UNKNOWN = 1; - SWITCH_OPER_STATUS_UP = 2; - SWITCH_OPER_STATUS_DOWN = 3; - SWITCH_OPER_STATUS_FAILED = 4; + SWITCH_OPER_STATUS_UNSPECIFIED = 0; + SWITCH_OPER_STATUS_UNKNOWN = 1; + SWITCH_OPER_STATUS_UP = 2; + SWITCH_OPER_STATUS_DOWN = 3; + SWITCH_OPER_STATUS_FAILED = 4; } enum SwitchRestartType { - SWITCH_RESTART_TYPE_UNSPECIFIED = 0; - SWITCH_RESTART_TYPE_NONE = 1; - SWITCH_RESTART_TYPE_PLANNED = 2; - SWITCH_RESTART_TYPE_ANY = 3; + SWITCH_RESTART_TYPE_UNSPECIFIED = 0; + SWITCH_RESTART_TYPE_NONE = 1; + SWITCH_RESTART_TYPE_PLANNED = 2; + SWITCH_RESTART_TYPE_ANY = 3; } enum SwitchStat { - option allow_alias = true; - SWITCH_STAT_UNSPECIFIED = 0; - SWITCH_STAT_IN_DROP_REASON_RANGE_BASE = 4097; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 4097; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 4098; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 4099; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 4100; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 4101; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 4102; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 4103; - SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 4104; - SWITCH_STAT_IN_DROP_REASON_RANGE_END = 8192; - SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE = 8193; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 8193; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 8194; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 8195; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 8196; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 8197; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 8198; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 8199; - SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 8200; - SWITCH_STAT_OUT_DROP_REASON_RANGE_END = 12288; - SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE = 12289; - SWITCH_STAT_ECC_DROP = 12289; - SWITCH_STAT_REACHABILITY_DROP = 12290; - SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL = 12291; - SWITCH_STAT_GLOBAL_DROP = 12292; - SWITCH_STAT_PACKET_INTEGRITY_DROP = 12293; - SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END = 16384; + option allow_alias = true; + SWITCH_STAT_UNSPECIFIED = 0; + SWITCH_STAT_IN_DROP_REASON_RANGE_BASE = 4097; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 4097; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 4098; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 4099; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 4100; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 4101; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 4102; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 4103; + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 4104; + SWITCH_STAT_IN_DROP_REASON_RANGE_END = 8192; + SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE = 8193; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_0_DROPPED_PKTS = 8193; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS = 8194; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS = 8195; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS = 8196; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS = 8197; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS = 8198; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS = 8199; + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS = 8200; + SWITCH_STAT_OUT_DROP_REASON_RANGE_END = 12288; + SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE = 12289; + SWITCH_STAT_ECC_DROP = 12289; + SWITCH_STAT_REACHABILITY_DROP = 12290; + SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL = 12291; + SWITCH_STAT_GLOBAL_DROP = 12292; + SWITCH_STAT_PACKET_INTEGRITY_DROP = 12293; + SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END = 16384; } enum SwitchSwitchingMode { - SWITCH_SWITCHING_MODE_UNSPECIFIED = 0; - SWITCH_SWITCHING_MODE_CUT_THROUGH = 1; - SWITCH_SWITCHING_MODE_STORE_AND_FORWARD = 2; + SWITCH_SWITCHING_MODE_UNSPECIFIED = 0; + SWITCH_SWITCHING_MODE_CUT_THROUGH = 1; + SWITCH_SWITCHING_MODE_STORE_AND_FORWARD = 2; } enum SwitchType { - SWITCH_TYPE_UNSPECIFIED = 0; - SWITCH_TYPE_NPU = 1; - SWITCH_TYPE_PHY = 2; - SWITCH_TYPE_VOQ = 3; - SWITCH_TYPE_FABRIC = 4; - SWITCH_TYPE_POE = 5; + SWITCH_TYPE_UNSPECIFIED = 0; + SWITCH_TYPE_NPU = 1; + SWITCH_TYPE_PHY = 2; + SWITCH_TYPE_VOQ = 3; + SWITCH_TYPE_FABRIC = 4; + SWITCH_TYPE_POE = 5; } enum SystemPortType { - SYSTEM_PORT_TYPE_UNSPECIFIED = 0; - SYSTEM_PORT_TYPE_LOCAL = 1; - SYSTEM_PORT_TYPE_REMOTE = 2; + SYSTEM_PORT_TYPE_UNSPECIFIED = 0; + SYSTEM_PORT_TYPE_LOCAL = 1; + SYSTEM_PORT_TYPE_REMOTE = 2; } enum TableBitmapClassificationEntryAction { - TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_UNSPECIFIED = 0; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA = 1; - TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION = 2; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_UNSPECIFIED = 0; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA = 1; + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION = 2; } enum TableBitmapClassificationEntryStat { - TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_UNSPECIFIED = 0; - TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS = 1; - TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS = 2; + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_UNSPECIFIED = 0; + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS = 1; + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS = 2; } enum TableBitmapRouterEntryAction { - TABLE_BITMAP_ROUTER_ENTRY_ACTION_UNSPECIFIED = 0; - TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP = 1; - TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL = 2; - TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU = 3; - TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP = 4; - TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION = 5; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_UNSPECIFIED = 0; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP = 1; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL = 2; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU = 3; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP = 4; + TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION = 5; } enum TableBitmapRouterEntryStat { - TABLE_BITMAP_ROUTER_ENTRY_STAT_UNSPECIFIED = 0; - TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS = 1; - TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS = 2; + TABLE_BITMAP_ROUTER_ENTRY_STAT_UNSPECIFIED = 0; + TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS = 1; + TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS = 2; } enum TableMetaTunnelEntryAction { - TABLE_META_TUNNEL_ENTRY_ACTION_UNSPECIFIED = 0; - TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP = 1; - TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION = 2; + TABLE_META_TUNNEL_ENTRY_ACTION_UNSPECIFIED = 0; + TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP = 1; + TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION = 2; } enum TableMetaTunnelEntryStat { - TABLE_META_TUNNEL_ENTRY_STAT_UNSPECIFIED = 0; - TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS = 1; - TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS = 2; + TABLE_META_TUNNEL_ENTRY_STAT_UNSPECIFIED = 0; + TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS = 1; + TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS = 2; } enum TamBindPointType { - TAM_BIND_POINT_TYPE_UNSPECIFIED = 0; - TAM_BIND_POINT_TYPE_QUEUE = 1; - TAM_BIND_POINT_TYPE_PORT = 2; - TAM_BIND_POINT_TYPE_LAG = 3; - TAM_BIND_POINT_TYPE_VLAN = 4; - TAM_BIND_POINT_TYPE_SWITCH = 5; - TAM_BIND_POINT_TYPE_IPG = 6; - TAM_BIND_POINT_TYPE_BSP = 7; + TAM_BIND_POINT_TYPE_UNSPECIFIED = 0; + TAM_BIND_POINT_TYPE_QUEUE = 1; + TAM_BIND_POINT_TYPE_PORT = 2; + TAM_BIND_POINT_TYPE_LAG = 3; + TAM_BIND_POINT_TYPE_VLAN = 4; + TAM_BIND_POINT_TYPE_SWITCH = 5; + TAM_BIND_POINT_TYPE_IPG = 6; + TAM_BIND_POINT_TYPE_BSP = 7; } enum TamEventThresholdUnit { - TAM_EVENT_THRESHOLD_UNIT_UNSPECIFIED = 0; - TAM_EVENT_THRESHOLD_UNIT_NANOSEC = 1; - TAM_EVENT_THRESHOLD_UNIT_USEC = 2; - TAM_EVENT_THRESHOLD_UNIT_MSEC = 3; - TAM_EVENT_THRESHOLD_UNIT_PERCENT = 4; - TAM_EVENT_THRESHOLD_UNIT_BYTES = 5; - TAM_EVENT_THRESHOLD_UNIT_PACKETS = 6; - TAM_EVENT_THRESHOLD_UNIT_CELLS = 7; + TAM_EVENT_THRESHOLD_UNIT_UNSPECIFIED = 0; + TAM_EVENT_THRESHOLD_UNIT_NANOSEC = 1; + TAM_EVENT_THRESHOLD_UNIT_USEC = 2; + TAM_EVENT_THRESHOLD_UNIT_MSEC = 3; + TAM_EVENT_THRESHOLD_UNIT_PERCENT = 4; + TAM_EVENT_THRESHOLD_UNIT_BYTES = 5; + TAM_EVENT_THRESHOLD_UNIT_PACKETS = 6; + TAM_EVENT_THRESHOLD_UNIT_CELLS = 7; } enum TamEventType { - TAM_EVENT_TYPE_UNSPECIFIED = 0; - TAM_EVENT_TYPE_FLOW_STATE = 1; - TAM_EVENT_TYPE_FLOW_WATCHLIST = 2; - TAM_EVENT_TYPE_FLOW_TCPFLAG = 3; - TAM_EVENT_TYPE_QUEUE_THRESHOLD = 4; - TAM_EVENT_TYPE_QUEUE_TAIL_DROP = 5; - TAM_EVENT_TYPE_PACKET_DROP = 6; - TAM_EVENT_TYPE_RESOURCE_UTILIZATION = 7; - TAM_EVENT_TYPE_IPG_SHARED = 8; - TAM_EVENT_TYPE_IPG_XOFF_ROOM = 9; - TAM_EVENT_TYPE_BSP = 10; + TAM_EVENT_TYPE_UNSPECIFIED = 0; + TAM_EVENT_TYPE_FLOW_STATE = 1; + TAM_EVENT_TYPE_FLOW_WATCHLIST = 2; + TAM_EVENT_TYPE_FLOW_TCPFLAG = 3; + TAM_EVENT_TYPE_QUEUE_THRESHOLD = 4; + TAM_EVENT_TYPE_QUEUE_TAIL_DROP = 5; + TAM_EVENT_TYPE_PACKET_DROP = 6; + TAM_EVENT_TYPE_RESOURCE_UTILIZATION = 7; + TAM_EVENT_TYPE_IPG_SHARED = 8; + TAM_EVENT_TYPE_IPG_XOFF_ROOM = 9; + TAM_EVENT_TYPE_BSP = 10; } enum TamIntPresenceType { - TAM_INT_PRESENCE_TYPE_UNSPECIFIED = 0; - TAM_INT_PRESENCE_TYPE_UNDEFINED = 1; - TAM_INT_PRESENCE_TYPE_PB = 2; - TAM_INT_PRESENCE_TYPE_L3_PROTOCOL = 3; - TAM_INT_PRESENCE_TYPE_DSCP = 4; + TAM_INT_PRESENCE_TYPE_UNSPECIFIED = 0; + TAM_INT_PRESENCE_TYPE_UNDEFINED = 1; + TAM_INT_PRESENCE_TYPE_PB = 2; + TAM_INT_PRESENCE_TYPE_L3_PROTOCOL = 3; + TAM_INT_PRESENCE_TYPE_DSCP = 4; } enum TamIntType { - TAM_INT_TYPE_UNSPECIFIED = 0; - TAM_INT_TYPE_IOAM = 1; - TAM_INT_TYPE_IFA1 = 2; - TAM_INT_TYPE_IFA2 = 3; - TAM_INT_TYPE_P4_INT_1 = 4; - TAM_INT_TYPE_P4_INT_2 = 5; - TAM_INT_TYPE_DIRECT_EXPORT = 6; - TAM_INT_TYPE_IFA1_TAILSTAMP = 7; - TAM_INT_TYPE_PATH_TRACING = 8; + TAM_INT_TYPE_UNSPECIFIED = 0; + TAM_INT_TYPE_IOAM = 1; + TAM_INT_TYPE_IFA1 = 2; + TAM_INT_TYPE_IFA2 = 3; + TAM_INT_TYPE_P4_INT_1 = 4; + TAM_INT_TYPE_P4_INT_2 = 5; + TAM_INT_TYPE_DIRECT_EXPORT = 6; + TAM_INT_TYPE_IFA1_TAILSTAMP = 7; + TAM_INT_TYPE_PATH_TRACING = 8; } enum TamReportIntervalUnit { - TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED = 0; - TAM_REPORT_INTERVAL_UNIT_NANOSEC = 1; - TAM_REPORT_INTERVAL_UNIT_USEC = 2; - TAM_REPORT_INTERVAL_UNIT_MSEC = 3; + TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED = 0; + TAM_REPORT_INTERVAL_UNIT_NANOSEC = 1; + TAM_REPORT_INTERVAL_UNIT_USEC = 2; + TAM_REPORT_INTERVAL_UNIT_MSEC = 3; } enum TamReportMode { - TAM_REPORT_MODE_UNSPECIFIED = 0; - TAM_REPORT_MODE_ALL = 1; - TAM_REPORT_MODE_BULK = 2; + TAM_REPORT_MODE_UNSPECIFIED = 0; + TAM_REPORT_MODE_ALL = 1; + TAM_REPORT_MODE_BULK = 2; } enum TamReportType { - TAM_REPORT_TYPE_UNSPECIFIED = 0; - TAM_REPORT_TYPE_SFLOW = 1; - TAM_REPORT_TYPE_IPFIX = 2; - TAM_REPORT_TYPE_PROTO = 3; - TAM_REPORT_TYPE_THRIFT = 4; - TAM_REPORT_TYPE_JSON = 5; - TAM_REPORT_TYPE_P4_EXTN = 6; - TAM_REPORT_TYPE_HISTOGRAM = 7; - TAM_REPORT_TYPE_VENDOR_EXTN = 8; - TAM_REPORT_TYPE_GENETLINK = 9; - TAM_REPORT_TYPE_CUSTOM_RANGE_BASE = 268435457; + TAM_REPORT_TYPE_UNSPECIFIED = 0; + TAM_REPORT_TYPE_SFLOW = 1; + TAM_REPORT_TYPE_IPFIX = 2; + TAM_REPORT_TYPE_PROTO = 3; + TAM_REPORT_TYPE_THRIFT = 4; + TAM_REPORT_TYPE_JSON = 5; + TAM_REPORT_TYPE_P4_EXTN = 6; + TAM_REPORT_TYPE_HISTOGRAM = 7; + TAM_REPORT_TYPE_VENDOR_EXTN = 8; + TAM_REPORT_TYPE_GENETLINK = 9; + TAM_REPORT_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum TamReportingUnit { - TAM_REPORTING_UNIT_UNSPECIFIED = 0; - TAM_REPORTING_UNIT_SEC = 1; - TAM_REPORTING_UNIT_MINUTE = 2; - TAM_REPORTING_UNIT_HOUR = 3; - TAM_REPORTING_UNIT_DAY = 4; + TAM_REPORTING_UNIT_UNSPECIFIED = 0; + TAM_REPORTING_UNIT_SEC = 1; + TAM_REPORTING_UNIT_MINUTE = 2; + TAM_REPORTING_UNIT_HOUR = 3; + TAM_REPORTING_UNIT_DAY = 4; } enum TamTelMathFuncType { - TAM_TEL_MATH_FUNC_TYPE_UNSPECIFIED = 0; - TAM_TEL_MATH_FUNC_TYPE_NONE = 1; - TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN = 2; - TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN = 3; - TAM_TEL_MATH_FUNC_TYPE_AVERAGE = 4; - TAM_TEL_MATH_FUNC_TYPE_MODE = 5; - TAM_TEL_MATH_FUNC_TYPE_RATE = 6; + TAM_TEL_MATH_FUNC_TYPE_UNSPECIFIED = 0; + TAM_TEL_MATH_FUNC_TYPE_NONE = 1; + TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN = 2; + TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN = 3; + TAM_TEL_MATH_FUNC_TYPE_AVERAGE = 4; + TAM_TEL_MATH_FUNC_TYPE_MODE = 5; + TAM_TEL_MATH_FUNC_TYPE_RATE = 6; } enum TamTelemetryType { - TAM_TELEMETRY_TYPE_UNSPECIFIED = 0; - TAM_TELEMETRY_TYPE_NE = 1; - TAM_TELEMETRY_TYPE_SWITCH = 2; - TAM_TELEMETRY_TYPE_FABRIC = 3; - TAM_TELEMETRY_TYPE_FLOW = 4; - TAM_TELEMETRY_TYPE_INT = 5; - TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION = 6; + TAM_TELEMETRY_TYPE_UNSPECIFIED = 0; + TAM_TELEMETRY_TYPE_NE = 1; + TAM_TELEMETRY_TYPE_SWITCH = 2; + TAM_TELEMETRY_TYPE_FABRIC = 3; + TAM_TELEMETRY_TYPE_FLOW = 4; + TAM_TELEMETRY_TYPE_INT = 5; + TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION = 6; } enum TamTransportAuthType { - TAM_TRANSPORT_AUTH_TYPE_UNSPECIFIED = 0; - TAM_TRANSPORT_AUTH_TYPE_NONE = 1; - TAM_TRANSPORT_AUTH_TYPE_SSL = 2; - TAM_TRANSPORT_AUTH_TYPE_TLS = 3; + TAM_TRANSPORT_AUTH_TYPE_UNSPECIFIED = 0; + TAM_TRANSPORT_AUTH_TYPE_NONE = 1; + TAM_TRANSPORT_AUTH_TYPE_SSL = 2; + TAM_TRANSPORT_AUTH_TYPE_TLS = 3; } enum TamTransportType { - TAM_TRANSPORT_TYPE_UNSPECIFIED = 0; - TAM_TRANSPORT_TYPE_NONE = 1; - TAM_TRANSPORT_TYPE_TCP = 2; - TAM_TRANSPORT_TYPE_UDP = 3; - TAM_TRANSPORT_TYPE_GRPC = 4; - TAM_TRANSPORT_TYPE_MIRROR = 5; + TAM_TRANSPORT_TYPE_UNSPECIFIED = 0; + TAM_TRANSPORT_TYPE_NONE = 1; + TAM_TRANSPORT_TYPE_TCP = 2; + TAM_TRANSPORT_TYPE_UDP = 3; + TAM_TRANSPORT_TYPE_GRPC = 4; + TAM_TRANSPORT_TYPE_MIRROR = 5; } enum TlvType { - TLV_TYPE_UNSPECIFIED = 0; - TLV_TYPE_INGRESS = 1; - TLV_TYPE_EGRESS = 2; - TLV_TYPE_OPAQUE = 3; - TLV_TYPE_HMAC = 4; + TLV_TYPE_UNSPECIFIED = 0; + TLV_TYPE_INGRESS = 1; + TLV_TYPE_EGRESS = 2; + TLV_TYPE_OPAQUE = 3; + TLV_TYPE_HMAC = 4; } enum TunnelDecapEcnMode { - TUNNEL_DECAP_ECN_MODE_UNSPECIFIED = 0; - TUNNEL_DECAP_ECN_MODE_STANDARD = 1; - TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER = 2; - TUNNEL_DECAP_ECN_MODE_USER_DEFINED = 3; + TUNNEL_DECAP_ECN_MODE_UNSPECIFIED = 0; + TUNNEL_DECAP_ECN_MODE_STANDARD = 1; + TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER = 2; + TUNNEL_DECAP_ECN_MODE_USER_DEFINED = 3; } enum TunnelDscpMode { - TUNNEL_DSCP_MODE_UNSPECIFIED = 0; - TUNNEL_DSCP_MODE_UNIFORM_MODEL = 1; - TUNNEL_DSCP_MODE_PIPE_MODEL = 2; + TUNNEL_DSCP_MODE_UNSPECIFIED = 0; + TUNNEL_DSCP_MODE_UNIFORM_MODEL = 1; + TUNNEL_DSCP_MODE_PIPE_MODEL = 2; } enum TunnelEncapEcnMode { - TUNNEL_ENCAP_ECN_MODE_UNSPECIFIED = 0; - TUNNEL_ENCAP_ECN_MODE_STANDARD = 1; - TUNNEL_ENCAP_ECN_MODE_USER_DEFINED = 2; + TUNNEL_ENCAP_ECN_MODE_UNSPECIFIED = 0; + TUNNEL_ENCAP_ECN_MODE_STANDARD = 1; + TUNNEL_ENCAP_ECN_MODE_USER_DEFINED = 2; } enum TunnelMapType { - TUNNEL_MAP_TYPE_UNSPECIFIED = 0; - TUNNEL_MAP_TYPE_OECN_TO_UECN = 1; - TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN = 2; - TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID = 3; - TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI = 4; - TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF = 5; - TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI = 6; - TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID = 7; - TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI = 8; - TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID = 9; - TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID = 10; - TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF = 11; - TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID = 12; - TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID = 13; - TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID = 14; - TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE = 268435457; + TUNNEL_MAP_TYPE_UNSPECIFIED = 0; + TUNNEL_MAP_TYPE_OECN_TO_UECN = 1; + TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN = 2; + TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID = 3; + TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI = 4; + TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF = 5; + TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI = 6; + TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID = 7; + TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI = 8; + TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID = 9; + TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID = 10; + TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF = 11; + TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID = 12; + TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID = 13; + TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID = 14; + TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE = 268435457; } enum TunnelPeerMode { - TUNNEL_PEER_MODE_UNSPECIFIED = 0; - TUNNEL_PEER_MODE_P2P = 1; - TUNNEL_PEER_MODE_P2MP = 2; + TUNNEL_PEER_MODE_UNSPECIFIED = 0; + TUNNEL_PEER_MODE_P2P = 1; + TUNNEL_PEER_MODE_P2MP = 2; } enum TunnelStat { - TUNNEL_STAT_UNSPECIFIED = 0; - TUNNEL_STAT_IN_OCTETS = 1; - TUNNEL_STAT_IN_PACKETS = 2; - TUNNEL_STAT_OUT_OCTETS = 3; - TUNNEL_STAT_OUT_PACKETS = 4; + TUNNEL_STAT_UNSPECIFIED = 0; + TUNNEL_STAT_IN_OCTETS = 1; + TUNNEL_STAT_IN_PACKETS = 2; + TUNNEL_STAT_OUT_OCTETS = 3; + TUNNEL_STAT_OUT_PACKETS = 4; } enum TunnelTermTableEntryType { - TUNNEL_TERM_TABLE_ENTRY_TYPE_UNSPECIFIED = 0; - TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P = 1; - TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP = 2; - TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P = 3; - TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP = 4; + TUNNEL_TERM_TABLE_ENTRY_TYPE_UNSPECIFIED = 0; + TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P = 1; + TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP = 2; + TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P = 3; + TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP = 4; } enum TunnelTtlMode { - TUNNEL_TTL_MODE_UNSPECIFIED = 0; - TUNNEL_TTL_MODE_UNIFORM_MODEL = 1; - TUNNEL_TTL_MODE_PIPE_MODEL = 2; + TUNNEL_TTL_MODE_UNSPECIFIED = 0; + TUNNEL_TTL_MODE_UNIFORM_MODEL = 1; + TUNNEL_TTL_MODE_PIPE_MODEL = 2; } enum TunnelType { - TUNNEL_TYPE_UNSPECIFIED = 0; - TUNNEL_TYPE_IPINIP = 1; - TUNNEL_TYPE_IPINIP_GRE = 2; - TUNNEL_TYPE_VXLAN = 3; - TUNNEL_TYPE_MPLS = 4; - TUNNEL_TYPE_SRV6 = 5; - TUNNEL_TYPE_NVGRE = 6; - TUNNEL_TYPE_IPINIP_ESP = 7; - TUNNEL_TYPE_IPINIP_UDP_ESP = 8; - TUNNEL_TYPE_VXLAN_UDP_ESP = 9; + TUNNEL_TYPE_UNSPECIFIED = 0; + TUNNEL_TYPE_IPINIP = 1; + TUNNEL_TYPE_IPINIP_GRE = 2; + TUNNEL_TYPE_VXLAN = 3; + TUNNEL_TYPE_MPLS = 4; + TUNNEL_TYPE_SRV6 = 5; + TUNNEL_TYPE_NVGRE = 6; + TUNNEL_TYPE_IPINIP_ESP = 7; + TUNNEL_TYPE_IPINIP_UDP_ESP = 8; + TUNNEL_TYPE_VXLAN_UDP_ESP = 9; } enum TunnelVxlanUdpSportMode { - TUNNEL_VXLAN_UDP_SPORT_MODE_UNSPECIFIED = 0; - TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED = 1; - TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL = 2; + TUNNEL_VXLAN_UDP_SPORT_MODE_UNSPECIFIED = 0; + TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED = 1; + TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL = 2; } enum UdfBase { - UDF_BASE_UNSPECIFIED = 0; - UDF_BASE_L2 = 1; - UDF_BASE_L3 = 2; - UDF_BASE_L4 = 3; + UDF_BASE_UNSPECIFIED = 0; + UDF_BASE_L2 = 1; + UDF_BASE_L3 = 2; + UDF_BASE_L4 = 3; } enum UdfGroupType { - option allow_alias = true; - UDF_GROUP_TYPE_UNSPECIFIED = 0; - UDF_GROUP_TYPE_START = 1; - UDF_GROUP_TYPE_GENERIC = 1; - UDF_GROUP_TYPE_HASH = 2; - UDF_GROUP_TYPE_END = 3; + option allow_alias = true; + UDF_GROUP_TYPE_UNSPECIFIED = 0; + UDF_GROUP_TYPE_START = 1; + UDF_GROUP_TYPE_GENERIC = 1; + UDF_GROUP_TYPE_HASH = 2; + UDF_GROUP_TYPE_END = 3; } enum VlanFloodControlType { - VLAN_FLOOD_CONTROL_TYPE_UNSPECIFIED = 0; - VLAN_FLOOD_CONTROL_TYPE_ALL = 1; - VLAN_FLOOD_CONTROL_TYPE_NONE = 2; - VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP = 3; - VLAN_FLOOD_CONTROL_TYPE_COMBINED = 4; + VLAN_FLOOD_CONTROL_TYPE_UNSPECIFIED = 0; + VLAN_FLOOD_CONTROL_TYPE_ALL = 1; + VLAN_FLOOD_CONTROL_TYPE_NONE = 2; + VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP = 3; + VLAN_FLOOD_CONTROL_TYPE_COMBINED = 4; } enum VlanMcastLookupKeyType { - VLAN_MCAST_LOOKUP_KEY_TYPE_UNSPECIFIED = 0; - VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA = 1; - VLAN_MCAST_LOOKUP_KEY_TYPE_XG = 2; - VLAN_MCAST_LOOKUP_KEY_TYPE_SG = 3; - VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG = 4; + VLAN_MCAST_LOOKUP_KEY_TYPE_UNSPECIFIED = 0; + VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA = 1; + VLAN_MCAST_LOOKUP_KEY_TYPE_XG = 2; + VLAN_MCAST_LOOKUP_KEY_TYPE_SG = 3; + VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG = 4; } enum VlanStat { - VLAN_STAT_UNSPECIFIED = 0; - VLAN_STAT_IN_OCTETS = 1; - VLAN_STAT_IN_PACKETS = 2; - VLAN_STAT_IN_UCAST_PKTS = 3; - VLAN_STAT_IN_NON_UCAST_PKTS = 4; - VLAN_STAT_IN_DISCARDS = 5; - VLAN_STAT_IN_ERRORS = 6; - VLAN_STAT_IN_UNKNOWN_PROTOS = 7; - VLAN_STAT_OUT_OCTETS = 8; - VLAN_STAT_OUT_PACKETS = 9; - VLAN_STAT_OUT_UCAST_PKTS = 10; - VLAN_STAT_OUT_NON_UCAST_PKTS = 11; - VLAN_STAT_OUT_DISCARDS = 12; - VLAN_STAT_OUT_ERRORS = 13; - VLAN_STAT_OUT_QLEN = 14; + VLAN_STAT_UNSPECIFIED = 0; + VLAN_STAT_IN_OCTETS = 1; + VLAN_STAT_IN_PACKETS = 2; + VLAN_STAT_IN_UCAST_PKTS = 3; + VLAN_STAT_IN_NON_UCAST_PKTS = 4; + VLAN_STAT_IN_DISCARDS = 5; + VLAN_STAT_IN_ERRORS = 6; + VLAN_STAT_IN_UNKNOWN_PROTOS = 7; + VLAN_STAT_OUT_OCTETS = 8; + VLAN_STAT_OUT_PACKETS = 9; + VLAN_STAT_OUT_UCAST_PKTS = 10; + VLAN_STAT_OUT_NON_UCAST_PKTS = 11; + VLAN_STAT_OUT_DISCARDS = 12; + VLAN_STAT_OUT_ERRORS = 13; + VLAN_STAT_OUT_QLEN = 14; } enum VlanTaggingMode { - VLAN_TAGGING_MODE_UNSPECIFIED = 0; - VLAN_TAGGING_MODE_UNTAGGED = 1; - VLAN_TAGGING_MODE_TAGGED = 2; - VLAN_TAGGING_MODE_PRIORITY_TAGGED = 3; + VLAN_TAGGING_MODE_UNSPECIFIED = 0; + VLAN_TAGGING_MODE_UNTAGGED = 1; + VLAN_TAGGING_MODE_TAGGED = 2; + VLAN_TAGGING_MODE_PRIORITY_TAGGED = 3; } message AclCounterAttribute { - optional uint64 table_id = 1 [(attr_enum_value) = 1]; - optional bool enable_packet_count = 2 [(attr_enum_value) = 2]; - optional bool enable_byte_count = 3 [(attr_enum_value) = 3]; - optional uint64 packets = 4 [(attr_enum_value) = 4]; - optional uint64 bytes = 5 [(attr_enum_value) = 5]; - optional bytes label = 6 [(attr_enum_value) = 6]; + optional uint64 table_id = 1 [(attr_enum_value) = 1]; + optional bool enable_packet_count = 2 [(attr_enum_value) = 2]; + optional bool enable_byte_count = 3 [(attr_enum_value) = 3]; + optional uint64 packets = 4 [(attr_enum_value) = 4]; + optional uint64 bytes = 5 [(attr_enum_value) = 5]; + optional bytes label = 6 [(attr_enum_value) = 6]; } message AclEntryAttribute { - optional uint64 table_id = 1 [(attr_enum_value) = 1]; - optional uint32 priority = 2 [(attr_enum_value) = 2]; - optional bool admin_state = 3 [(attr_enum_value) = 3]; - optional AclFieldData field_src_ipv6 = 4 [(attr_enum_value) = 4]; - optional AclFieldData field_src_ipv6_word3 = 5 [(attr_enum_value) = 5]; - optional AclFieldData field_src_ipv6_word2 = 6 [(attr_enum_value) = 6]; - optional AclFieldData field_src_ipv6_word1 = 7 [(attr_enum_value) = 7]; - optional AclFieldData field_src_ipv6_word0 = 8 [(attr_enum_value) = 8]; - optional AclFieldData field_dst_ipv6 = 9 [(attr_enum_value) = 9]; - optional AclFieldData field_dst_ipv6_word3 = 10 [(attr_enum_value) = 10]; - optional AclFieldData field_dst_ipv6_word2 = 11 [(attr_enum_value) = 11]; - optional AclFieldData field_dst_ipv6_word1 = 12 [(attr_enum_value) = 12]; - optional AclFieldData field_dst_ipv6_word0 = 13 [(attr_enum_value) = 13]; - optional AclFieldData field_inner_src_ipv6 = 14 [(attr_enum_value) = 14]; - optional AclFieldData field_inner_dst_ipv6 = 15 [(attr_enum_value) = 15]; - optional AclFieldData field_src_mac = 16 [(attr_enum_value) = 16]; - optional AclFieldData field_dst_mac = 17 [(attr_enum_value) = 17]; - optional AclFieldData field_src_ip = 18 [(attr_enum_value) = 18]; - optional AclFieldData field_dst_ip = 19 [(attr_enum_value) = 19]; - optional AclFieldData field_inner_src_ip = 20 [(attr_enum_value) = 20]; - optional AclFieldData field_inner_dst_ip = 21 [(attr_enum_value) = 21]; - optional AclFieldData field_in_ports = 22 [(attr_enum_value) = 22]; - optional AclFieldData field_out_ports = 23 [(attr_enum_value) = 23]; - optional AclFieldData field_in_port = 24 [(attr_enum_value) = 24]; - optional AclFieldData field_out_port = 25 [(attr_enum_value) = 25]; - optional AclFieldData field_src_port = 26 [(attr_enum_value) = 26]; - optional AclFieldData field_outer_vlan_id = 27 [(attr_enum_value) = 27]; - optional AclFieldData field_outer_vlan_pri = 28 [(attr_enum_value) = 28]; - optional AclFieldData field_outer_vlan_cfi = 29 [(attr_enum_value) = 29]; - optional AclFieldData field_inner_vlan_id = 30 [(attr_enum_value) = 30]; - optional AclFieldData field_inner_vlan_pri = 31 [(attr_enum_value) = 31]; - optional AclFieldData field_inner_vlan_cfi = 32 [(attr_enum_value) = 32]; - optional AclFieldData field_l4_src_port = 33 [(attr_enum_value) = 33]; - optional AclFieldData field_l4_dst_port = 34 [(attr_enum_value) = 34]; - optional AclFieldData field_inner_l4_src_port = 35 [(attr_enum_value) = 35]; - optional AclFieldData field_inner_l4_dst_port = 36 [(attr_enum_value) = 36]; - optional AclFieldData field_ether_type = 37 [(attr_enum_value) = 37]; - optional AclFieldData field_inner_ether_type = 38 [(attr_enum_value) = 38]; - optional AclFieldData field_ip_protocol = 39 [(attr_enum_value) = 39]; - optional AclFieldData field_inner_ip_protocol = 40 [(attr_enum_value) = 40]; - optional AclFieldData field_ip_identification = 41 [(attr_enum_value) = 41]; - optional AclFieldData field_dscp = 42 [(attr_enum_value) = 42]; - optional AclFieldData field_ecn = 43 [(attr_enum_value) = 43]; - optional AclFieldData field_ttl = 44 [(attr_enum_value) = 44]; - optional AclFieldData field_tos = 45 [(attr_enum_value) = 45]; - optional AclFieldData field_ip_flags = 46 [(attr_enum_value) = 46]; - optional AclFieldData field_tcp_flags = 47 [(attr_enum_value) = 47]; - optional AclFieldData field_acl_ip_type = 48 [(attr_enum_value) = 48]; - optional AclFieldData field_acl_ip_frag = 49 [(attr_enum_value) = 49]; - optional AclFieldData field_ipv6_flow_label = 50 [(attr_enum_value) = 50]; - optional AclFieldData field_tc = 51 [(attr_enum_value) = 51]; - optional AclFieldData field_icmp_type = 52 [(attr_enum_value) = 52]; - optional AclFieldData field_icmp_code = 53 [(attr_enum_value) = 53]; - optional AclFieldData field_icmpv6_type = 54 [(attr_enum_value) = 54]; - optional AclFieldData field_icmpv6_code = 55 [(attr_enum_value) = 55]; - optional AclFieldData field_packet_vlan = 56 [(attr_enum_value) = 56]; - optional AclFieldData field_tunnel_vni = 57 [(attr_enum_value) = 57]; - optional AclFieldData field_has_vlan_tag = 58 [(attr_enum_value) = 58]; - optional AclFieldData field_macsec_sci = 59 [(attr_enum_value) = 59]; - optional AclFieldData field_mpls_label0_label = 60 [(attr_enum_value) = 60]; - optional AclFieldData field_mpls_label0_ttl = 61 [(attr_enum_value) = 61]; - optional AclFieldData field_mpls_label0_exp = 62 [(attr_enum_value) = 62]; - optional AclFieldData field_mpls_label0_bos = 63 [(attr_enum_value) = 63]; - optional AclFieldData field_mpls_label1_label = 64 [(attr_enum_value) = 64]; - optional AclFieldData field_mpls_label1_ttl = 65 [(attr_enum_value) = 65]; - optional AclFieldData field_mpls_label1_exp = 66 [(attr_enum_value) = 66]; - optional AclFieldData field_mpls_label1_bos = 67 [(attr_enum_value) = 67]; - optional AclFieldData field_mpls_label2_label = 68 [(attr_enum_value) = 68]; - optional AclFieldData field_mpls_label2_ttl = 69 [(attr_enum_value) = 69]; - optional AclFieldData field_mpls_label2_exp = 70 [(attr_enum_value) = 70]; - optional AclFieldData field_mpls_label2_bos = 71 [(attr_enum_value) = 71]; - optional AclFieldData field_mpls_label3_label = 72 [(attr_enum_value) = 72]; - optional AclFieldData field_mpls_label3_ttl = 73 [(attr_enum_value) = 73]; - optional AclFieldData field_mpls_label3_exp = 74 [(attr_enum_value) = 74]; - optional AclFieldData field_mpls_label3_bos = 75 [(attr_enum_value) = 75]; - optional AclFieldData field_mpls_label4_label = 76 [(attr_enum_value) = 76]; - optional AclFieldData field_mpls_label4_ttl = 77 [(attr_enum_value) = 77]; - optional AclFieldData field_mpls_label4_exp = 78 [(attr_enum_value) = 78]; - optional AclFieldData field_mpls_label4_bos = 79 [(attr_enum_value) = 79]; - optional AclFieldData field_fdb_dst_user_meta = 80 [(attr_enum_value) = 80]; - optional AclFieldData field_route_dst_user_meta = 81 [(attr_enum_value) = 81]; - optional AclFieldData field_neighbor_dst_user_meta = 82 [(attr_enum_value) = 82]; - optional AclFieldData field_port_user_meta = 83 [(attr_enum_value) = 83]; - optional AclFieldData field_vlan_user_meta = 84 [(attr_enum_value) = 84]; - optional AclFieldData field_acl_user_meta = 85 [(attr_enum_value) = 85]; - optional AclFieldData field_fdb_npu_meta_dst_hit = 86 [(attr_enum_value) = 86]; - optional AclFieldData field_neighbor_npu_meta_dst_hit = 87 [(attr_enum_value) = 87]; - optional AclFieldData field_route_npu_meta_dst_hit = 88 [(attr_enum_value) = 88]; - optional AclFieldData field_bth_opcode = 89 [(attr_enum_value) = 89]; - optional AclFieldData field_aeth_syndrome = 90 [(attr_enum_value) = 90]; - map user_defined_field_group_min = 91 [(attr_enum_value) = 91]; - optional AclFieldData field_acl_range_type = 92 [(attr_enum_value) = 92]; - optional AclFieldData field_ipv6_next_header = 93 [(attr_enum_value) = 93]; - optional AclFieldData field_gre_key = 94 [(attr_enum_value) = 94]; - optional AclFieldData field_tam_int_type = 95 [(attr_enum_value) = 95]; - optional AclFieldData field_inner_src_mac = 96 [(attr_enum_value) = 96]; - optional AclFieldData field_inner_dst_mac = 97 [(attr_enum_value) = 97]; - optional AclFieldData field_vrf_id = 98 [(attr_enum_value) = 98]; - optional AclFieldData field_ipmc_npu_meta_dst_hit = 99 [(attr_enum_value) = 99]; - optional AclFieldData field_tunnel_terminated = 100 [(attr_enum_value) = 100]; - optional AclActionData action_redirect = 101 [(attr_enum_value) = 101]; - optional AclActionData action_endpoint_ip = 102 [(attr_enum_value) = 102]; - optional AclActionData action_redirect_list = 103 [(attr_enum_value) = 103]; - optional AclActionData action_packet_action = 104 [(attr_enum_value) = 104]; - optional AclActionData action_flood = 105 [(attr_enum_value) = 105]; - optional AclActionData action_counter = 106 [(attr_enum_value) = 106]; - optional AclActionData action_mirror_ingress = 107 [(attr_enum_value) = 107]; - optional AclActionData action_mirror_egress = 108 [(attr_enum_value) = 108]; - optional AclActionData action_set_policer = 109 [(attr_enum_value) = 109]; - optional AclActionData action_decrement_ttl = 110 [(attr_enum_value) = 110]; - optional AclActionData action_set_tc = 111 [(attr_enum_value) = 111]; - optional AclActionData action_set_packet_color = 112 [(attr_enum_value) = 112]; - optional AclActionData action_set_inner_vlan_id = 113 [(attr_enum_value) = 113]; - optional AclActionData action_set_inner_vlan_pri = 114 [(attr_enum_value) = 114]; - optional AclActionData action_set_outer_vlan_id = 115 [(attr_enum_value) = 115]; - optional AclActionData action_set_outer_vlan_pri = 116 [(attr_enum_value) = 116]; - optional AclActionData action_add_vlan_id = 117 [(attr_enum_value) = 117]; - optional AclActionData action_add_vlan_pri = 118 [(attr_enum_value) = 118]; - optional AclActionData action_set_src_mac = 119 [(attr_enum_value) = 119]; - optional AclActionData action_set_dst_mac = 120 [(attr_enum_value) = 120]; - optional AclActionData action_set_src_ip = 121 [(attr_enum_value) = 121]; - optional AclActionData action_set_dst_ip = 122 [(attr_enum_value) = 122]; - optional AclActionData action_set_src_ipv6 = 123 [(attr_enum_value) = 123]; - optional AclActionData action_set_dst_ipv6 = 124 [(attr_enum_value) = 124]; - optional AclActionData action_set_dscp = 125 [(attr_enum_value) = 125]; - optional AclActionData action_set_ecn = 126 [(attr_enum_value) = 126]; - optional AclActionData action_set_l4_src_port = 127 [(attr_enum_value) = 127]; - optional AclActionData action_set_l4_dst_port = 128 [(attr_enum_value) = 128]; - optional AclActionData action_ingress_samplepacket_enable = 129 [(attr_enum_value) = 129]; - optional AclActionData action_egress_samplepacket_enable = 130 [(attr_enum_value) = 130]; - optional AclActionData action_set_acl_meta_data = 131 [(attr_enum_value) = 131]; - optional AclActionData action_egress_block_port_list = 132 [(attr_enum_value) = 132]; - optional AclActionData action_set_user_trap_id = 133 [(attr_enum_value) = 133]; - optional AclActionData action_set_do_not_learn = 134 [(attr_enum_value) = 134]; - optional AclActionData action_acl_dtel_flow_op = 135 [(attr_enum_value) = 135]; - optional AclActionData action_dtel_int_session = 136 [(attr_enum_value) = 136]; - optional AclActionData action_dtel_drop_report_enable = 137 [(attr_enum_value) = 137]; - optional AclActionData action_dtel_tail_drop_report_enable = 138 [(attr_enum_value) = 138]; - optional AclActionData action_dtel_flow_sample_percent = 139 [(attr_enum_value) = 139]; - optional AclActionData action_dtel_report_all_packets = 140 [(attr_enum_value) = 140]; - optional AclActionData action_no_nat = 141 [(attr_enum_value) = 141]; - optional AclActionData action_int_insert = 142 [(attr_enum_value) = 142]; - optional AclActionData action_int_delete = 143 [(attr_enum_value) = 143]; - optional AclActionData action_int_report_flow = 144 [(attr_enum_value) = 144]; - optional AclActionData action_int_report_drops = 145 [(attr_enum_value) = 145]; - optional AclActionData action_int_report_tail_drops = 146 [(attr_enum_value) = 146]; - optional AclActionData action_tam_int_object = 147 [(attr_enum_value) = 147]; - optional AclActionData action_set_isolation_group = 148 [(attr_enum_value) = 148]; - optional AclActionData action_macsec_flow = 149 [(attr_enum_value) = 149]; - optional AclActionData action_set_lag_hash_id = 150 [(attr_enum_value) = 150]; - optional AclActionData action_set_ecmp_hash_id = 151 [(attr_enum_value) = 151]; - optional AclActionData action_set_vrf = 152 [(attr_enum_value) = 152]; - optional AclActionData action_set_forwarding_class = 153 [(attr_enum_value) = 153]; - optional AclActionData action_set_ars_monitoring = 154 [(attr_enum_value) = 154]; - optional AclActionData action_set_ars_object = 155 [(attr_enum_value) = 155]; - optional AclActionData action_disable_ars_forwarding = 156 [(attr_enum_value) = 156]; - optional AclActionData action_chain_redirect = 157 [(attr_enum_value) = 157]; + optional uint64 table_id = 1 [(attr_enum_value) = 1]; + optional uint32 priority = 2 [(attr_enum_value) = 2]; + optional bool admin_state = 3 [(attr_enum_value) = 3]; + optional AclFieldData field_src_ipv6 = 4 [(attr_enum_value) = 4]; + optional AclFieldData field_src_ipv6_word3 = 5 [(attr_enum_value) = 5]; + optional AclFieldData field_src_ipv6_word2 = 6 [(attr_enum_value) = 6]; + optional AclFieldData field_src_ipv6_word1 = 7 [(attr_enum_value) = 7]; + optional AclFieldData field_src_ipv6_word0 = 8 [(attr_enum_value) = 8]; + optional AclFieldData field_dst_ipv6 = 9 [(attr_enum_value) = 9]; + optional AclFieldData field_dst_ipv6_word3 = 10 [(attr_enum_value) = 10]; + optional AclFieldData field_dst_ipv6_word2 = 11 [(attr_enum_value) = 11]; + optional AclFieldData field_dst_ipv6_word1 = 12 [(attr_enum_value) = 12]; + optional AclFieldData field_dst_ipv6_word0 = 13 [(attr_enum_value) = 13]; + optional AclFieldData field_inner_src_ipv6 = 14 [(attr_enum_value) = 14]; + optional AclFieldData field_inner_dst_ipv6 = 15 [(attr_enum_value) = 15]; + optional AclFieldData field_src_mac = 16 [(attr_enum_value) = 16]; + optional AclFieldData field_dst_mac = 17 [(attr_enum_value) = 17]; + optional AclFieldData field_src_ip = 18 [(attr_enum_value) = 18]; + optional AclFieldData field_dst_ip = 19 [(attr_enum_value) = 19]; + optional AclFieldData field_inner_src_ip = 20 [(attr_enum_value) = 20]; + optional AclFieldData field_inner_dst_ip = 21 [(attr_enum_value) = 21]; + optional AclFieldData field_in_ports = 22 [(attr_enum_value) = 22]; + optional AclFieldData field_out_ports = 23 [(attr_enum_value) = 23]; + optional AclFieldData field_in_port = 24 [(attr_enum_value) = 24]; + optional AclFieldData field_out_port = 25 [(attr_enum_value) = 25]; + optional AclFieldData field_src_port = 26 [(attr_enum_value) = 26]; + optional AclFieldData field_outer_vlan_id = 27 [(attr_enum_value) = 27]; + optional AclFieldData field_outer_vlan_pri = 28 [(attr_enum_value) = 28]; + optional AclFieldData field_outer_vlan_cfi = 29 [(attr_enum_value) = 29]; + optional AclFieldData field_inner_vlan_id = 30 [(attr_enum_value) = 30]; + optional AclFieldData field_inner_vlan_pri = 31 [(attr_enum_value) = 31]; + optional AclFieldData field_inner_vlan_cfi = 32 [(attr_enum_value) = 32]; + optional AclFieldData field_l4_src_port = 33 [(attr_enum_value) = 33]; + optional AclFieldData field_l4_dst_port = 34 [(attr_enum_value) = 34]; + optional AclFieldData field_inner_l4_src_port = 35 [(attr_enum_value) = 35]; + optional AclFieldData field_inner_l4_dst_port = 36 [(attr_enum_value) = 36]; + optional AclFieldData field_ether_type = 37 [(attr_enum_value) = 37]; + optional AclFieldData field_inner_ether_type = 38 [(attr_enum_value) = 38]; + optional AclFieldData field_ip_protocol = 39 [(attr_enum_value) = 39]; + optional AclFieldData field_inner_ip_protocol = 40 [(attr_enum_value) = 40]; + optional AclFieldData field_ip_identification = 41 [(attr_enum_value) = 41]; + optional AclFieldData field_dscp = 42 [(attr_enum_value) = 42]; + optional AclFieldData field_ecn = 43 [(attr_enum_value) = 43]; + optional AclFieldData field_ttl = 44 [(attr_enum_value) = 44]; + optional AclFieldData field_tos = 45 [(attr_enum_value) = 45]; + optional AclFieldData field_ip_flags = 46 [(attr_enum_value) = 46]; + optional AclFieldData field_tcp_flags = 47 [(attr_enum_value) = 47]; + optional AclFieldData field_acl_ip_type = 48 [(attr_enum_value) = 48]; + optional AclFieldData field_acl_ip_frag = 49 [(attr_enum_value) = 49]; + optional AclFieldData field_ipv6_flow_label = 50 [(attr_enum_value) = 50]; + optional AclFieldData field_tc = 51 [(attr_enum_value) = 51]; + optional AclFieldData field_icmp_type = 52 [(attr_enum_value) = 52]; + optional AclFieldData field_icmp_code = 53 [(attr_enum_value) = 53]; + optional AclFieldData field_icmpv6_type = 54 [(attr_enum_value) = 54]; + optional AclFieldData field_icmpv6_code = 55 [(attr_enum_value) = 55]; + optional AclFieldData field_packet_vlan = 56 [(attr_enum_value) = 56]; + optional AclFieldData field_tunnel_vni = 57 [(attr_enum_value) = 57]; + optional AclFieldData field_has_vlan_tag = 58 [(attr_enum_value) = 58]; + optional AclFieldData field_macsec_sci = 59 [(attr_enum_value) = 59]; + optional AclFieldData field_mpls_label0_label = 60 [(attr_enum_value) = 60]; + optional AclFieldData field_mpls_label0_ttl = 61 [(attr_enum_value) = 61]; + optional AclFieldData field_mpls_label0_exp = 62 [(attr_enum_value) = 62]; + optional AclFieldData field_mpls_label0_bos = 63 [(attr_enum_value) = 63]; + optional AclFieldData field_mpls_label1_label = 64 [(attr_enum_value) = 64]; + optional AclFieldData field_mpls_label1_ttl = 65 [(attr_enum_value) = 65]; + optional AclFieldData field_mpls_label1_exp = 66 [(attr_enum_value) = 66]; + optional AclFieldData field_mpls_label1_bos = 67 [(attr_enum_value) = 67]; + optional AclFieldData field_mpls_label2_label = 68 [(attr_enum_value) = 68]; + optional AclFieldData field_mpls_label2_ttl = 69 [(attr_enum_value) = 69]; + optional AclFieldData field_mpls_label2_exp = 70 [(attr_enum_value) = 70]; + optional AclFieldData field_mpls_label2_bos = 71 [(attr_enum_value) = 71]; + optional AclFieldData field_mpls_label3_label = 72 [(attr_enum_value) = 72]; + optional AclFieldData field_mpls_label3_ttl = 73 [(attr_enum_value) = 73]; + optional AclFieldData field_mpls_label3_exp = 74 [(attr_enum_value) = 74]; + optional AclFieldData field_mpls_label3_bos = 75 [(attr_enum_value) = 75]; + optional AclFieldData field_mpls_label4_label = 76 [(attr_enum_value) = 76]; + optional AclFieldData field_mpls_label4_ttl = 77 [(attr_enum_value) = 77]; + optional AclFieldData field_mpls_label4_exp = 78 [(attr_enum_value) = 78]; + optional AclFieldData field_mpls_label4_bos = 79 [(attr_enum_value) = 79]; + optional AclFieldData field_fdb_dst_user_meta = 80 [(attr_enum_value) = 80]; + optional AclFieldData field_route_dst_user_meta = 81 [(attr_enum_value) = 81]; + optional AclFieldData field_neighbor_dst_user_meta = 82 + [(attr_enum_value) = 82]; + optional AclFieldData field_port_user_meta = 83 [(attr_enum_value) = 83]; + optional AclFieldData field_vlan_user_meta = 84 [(attr_enum_value) = 84]; + optional AclFieldData field_acl_user_meta = 85 [(attr_enum_value) = 85]; + optional AclFieldData field_fdb_npu_meta_dst_hit = 86 + [(attr_enum_value) = 86]; + optional AclFieldData field_neighbor_npu_meta_dst_hit = 87 + [(attr_enum_value) = 87]; + optional AclFieldData field_route_npu_meta_dst_hit = 88 + [(attr_enum_value) = 88]; + optional AclFieldData field_bth_opcode = 89 [(attr_enum_value) = 89]; + optional AclFieldData field_aeth_syndrome = 90 [(attr_enum_value) = 90]; + map user_defined_field_group_min = 91 + [(attr_enum_value) = 91]; + optional AclFieldData field_acl_range_type = 92 [(attr_enum_value) = 92]; + optional AclFieldData field_ipv6_next_header = 93 [(attr_enum_value) = 93]; + optional AclFieldData field_gre_key = 94 [(attr_enum_value) = 94]; + optional AclFieldData field_tam_int_type = 95 [(attr_enum_value) = 95]; + optional AclFieldData field_inner_src_mac = 96 [(attr_enum_value) = 96]; + optional AclFieldData field_inner_dst_mac = 97 [(attr_enum_value) = 97]; + optional AclFieldData field_vrf_id = 98 [(attr_enum_value) = 98]; + optional AclFieldData field_ipmc_npu_meta_dst_hit = 99 + [(attr_enum_value) = 99]; + optional AclFieldData field_tunnel_terminated = 100 [(attr_enum_value) = 100]; + optional AclActionData action_redirect = 101 [(attr_enum_value) = 101]; + optional AclActionData action_endpoint_ip = 102 [(attr_enum_value) = 102]; + optional AclActionData action_redirect_list = 103 [(attr_enum_value) = 103]; + optional AclActionData action_packet_action = 104 [(attr_enum_value) = 104]; + optional AclActionData action_flood = 105 [(attr_enum_value) = 105]; + optional AclActionData action_counter = 106 [(attr_enum_value) = 106]; + optional AclActionData action_mirror_ingress = 107 [(attr_enum_value) = 107]; + optional AclActionData action_mirror_egress = 108 [(attr_enum_value) = 108]; + optional AclActionData action_set_policer = 109 [(attr_enum_value) = 109]; + optional AclActionData action_decrement_ttl = 110 [(attr_enum_value) = 110]; + optional AclActionData action_set_tc = 111 [(attr_enum_value) = 111]; + optional AclActionData action_set_packet_color = 112 + [(attr_enum_value) = 112]; + optional AclActionData action_set_inner_vlan_id = 113 + [(attr_enum_value) = 113]; + optional AclActionData action_set_inner_vlan_pri = 114 + [(attr_enum_value) = 114]; + optional AclActionData action_set_outer_vlan_id = 115 + [(attr_enum_value) = 115]; + optional AclActionData action_set_outer_vlan_pri = 116 + [(attr_enum_value) = 116]; + optional AclActionData action_add_vlan_id = 117 [(attr_enum_value) = 117]; + optional AclActionData action_add_vlan_pri = 118 [(attr_enum_value) = 118]; + optional AclActionData action_set_src_mac = 119 [(attr_enum_value) = 119]; + optional AclActionData action_set_dst_mac = 120 [(attr_enum_value) = 120]; + optional AclActionData action_set_src_ip = 121 [(attr_enum_value) = 121]; + optional AclActionData action_set_dst_ip = 122 [(attr_enum_value) = 122]; + optional AclActionData action_set_src_ipv6 = 123 [(attr_enum_value) = 123]; + optional AclActionData action_set_dst_ipv6 = 124 [(attr_enum_value) = 124]; + optional AclActionData action_set_dscp = 125 [(attr_enum_value) = 125]; + optional AclActionData action_set_ecn = 126 [(attr_enum_value) = 126]; + optional AclActionData action_set_l4_src_port = 127 [(attr_enum_value) = 127]; + optional AclActionData action_set_l4_dst_port = 128 [(attr_enum_value) = 128]; + optional AclActionData action_ingress_samplepacket_enable = 129 + [(attr_enum_value) = 129]; + optional AclActionData action_egress_samplepacket_enable = 130 + [(attr_enum_value) = 130]; + optional AclActionData action_set_acl_meta_data = 131 + [(attr_enum_value) = 131]; + optional AclActionData action_egress_block_port_list = 132 + [(attr_enum_value) = 132]; + optional AclActionData action_set_user_trap_id = 133 + [(attr_enum_value) = 133]; + optional AclActionData action_set_do_not_learn = 134 + [(attr_enum_value) = 134]; + optional AclActionData action_acl_dtel_flow_op = 135 + [(attr_enum_value) = 135]; + optional AclActionData action_dtel_int_session = 136 + [(attr_enum_value) = 136]; + optional AclActionData action_dtel_drop_report_enable = 137 + [(attr_enum_value) = 137]; + optional AclActionData action_dtel_tail_drop_report_enable = 138 + [(attr_enum_value) = 138]; + optional AclActionData action_dtel_flow_sample_percent = 139 + [(attr_enum_value) = 139]; + optional AclActionData action_dtel_report_all_packets = 140 + [(attr_enum_value) = 140]; + optional AclActionData action_no_nat = 141 [(attr_enum_value) = 141]; + optional AclActionData action_int_insert = 142 [(attr_enum_value) = 142]; + optional AclActionData action_int_delete = 143 [(attr_enum_value) = 143]; + optional AclActionData action_int_report_flow = 144 [(attr_enum_value) = 144]; + optional AclActionData action_int_report_drops = 145 + [(attr_enum_value) = 145]; + optional AclActionData action_int_report_tail_drops = 146 + [(attr_enum_value) = 146]; + optional AclActionData action_tam_int_object = 147 [(attr_enum_value) = 147]; + optional AclActionData action_set_isolation_group = 148 + [(attr_enum_value) = 148]; + optional AclActionData action_macsec_flow = 149 [(attr_enum_value) = 149]; + optional AclActionData action_set_lag_hash_id = 150 [(attr_enum_value) = 150]; + optional AclActionData action_set_ecmp_hash_id = 151 + [(attr_enum_value) = 151]; + optional AclActionData action_set_vrf = 152 [(attr_enum_value) = 152]; + optional AclActionData action_set_forwarding_class = 153 + [(attr_enum_value) = 153]; + optional AclActionData action_set_ars_monitoring = 154 + [(attr_enum_value) = 154]; + optional AclActionData action_set_ars_object = 155 [(attr_enum_value) = 155]; + optional AclActionData action_disable_ars_forwarding = 156 + [(attr_enum_value) = 156]; + optional AclActionData action_chain_redirect = 157 [(attr_enum_value) = 157]; } message AclRangeAttribute { - optional AclRangeType type = 1 [(attr_enum_value) = 1]; - optional Uint32Range limit = 2 [(attr_enum_value) = 2]; + optional AclRangeType type = 1 [(attr_enum_value) = 1]; + optional Uint32Range limit = 2 [(attr_enum_value) = 2]; } message AclTableAttribute { - optional AclStage acl_stage = 1 [(attr_enum_value) = 1]; - repeated AclBindPointType acl_bind_point_type_list = 2 [(attr_enum_value) = 2]; - optional uint32 size = 3 [(attr_enum_value) = 3]; - repeated AclActionType acl_action_type_list = 4 [(attr_enum_value) = 4]; - optional bool field_src_ipv6 = 5 [(attr_enum_value) = 5]; - optional bool field_src_ipv6_word3 = 6 [(attr_enum_value) = 6]; - optional bool field_src_ipv6_word2 = 7 [(attr_enum_value) = 7]; - optional bool field_src_ipv6_word1 = 8 [(attr_enum_value) = 8]; - optional bool field_src_ipv6_word0 = 9 [(attr_enum_value) = 9]; - optional bool field_dst_ipv6 = 10 [(attr_enum_value) = 10]; - optional bool field_dst_ipv6_word3 = 11 [(attr_enum_value) = 11]; - optional bool field_dst_ipv6_word2 = 12 [(attr_enum_value) = 12]; - optional bool field_dst_ipv6_word1 = 13 [(attr_enum_value) = 13]; - optional bool field_dst_ipv6_word0 = 14 [(attr_enum_value) = 14]; - optional bool field_inner_src_ipv6 = 15 [(attr_enum_value) = 15]; - optional bool field_inner_dst_ipv6 = 16 [(attr_enum_value) = 16]; - optional bool field_src_mac = 17 [(attr_enum_value) = 17]; - optional bool field_dst_mac = 18 [(attr_enum_value) = 18]; - optional bool field_src_ip = 19 [(attr_enum_value) = 19]; - optional bool field_dst_ip = 20 [(attr_enum_value) = 20]; - optional bool field_inner_src_ip = 21 [(attr_enum_value) = 21]; - optional bool field_inner_dst_ip = 22 [(attr_enum_value) = 22]; - optional bool field_in_ports = 23 [(attr_enum_value) = 23]; - optional bool field_out_ports = 24 [(attr_enum_value) = 24]; - optional bool field_in_port = 25 [(attr_enum_value) = 25]; - optional bool field_out_port = 26 [(attr_enum_value) = 26]; - optional bool field_src_port = 27 [(attr_enum_value) = 27]; - optional bool field_outer_vlan_id = 28 [(attr_enum_value) = 28]; - optional bool field_outer_vlan_pri = 29 [(attr_enum_value) = 29]; - optional bool field_outer_vlan_cfi = 30 [(attr_enum_value) = 30]; - optional bool field_inner_vlan_id = 31 [(attr_enum_value) = 31]; - optional bool field_inner_vlan_pri = 32 [(attr_enum_value) = 32]; - optional bool field_inner_vlan_cfi = 33 [(attr_enum_value) = 33]; - optional bool field_l4_src_port = 34 [(attr_enum_value) = 34]; - optional bool field_l4_dst_port = 35 [(attr_enum_value) = 35]; - optional bool field_inner_l4_src_port = 36 [(attr_enum_value) = 36]; - optional bool field_inner_l4_dst_port = 37 [(attr_enum_value) = 37]; - optional bool field_ether_type = 38 [(attr_enum_value) = 38]; - optional bool field_inner_ether_type = 39 [(attr_enum_value) = 39]; - optional bool field_ip_protocol = 40 [(attr_enum_value) = 40]; - optional bool field_inner_ip_protocol = 41 [(attr_enum_value) = 41]; - optional bool field_ip_identification = 42 [(attr_enum_value) = 42]; - optional bool field_dscp = 43 [(attr_enum_value) = 43]; - optional bool field_ecn = 44 [(attr_enum_value) = 44]; - optional bool field_ttl = 45 [(attr_enum_value) = 45]; - optional bool field_tos = 46 [(attr_enum_value) = 46]; - optional bool field_ip_flags = 47 [(attr_enum_value) = 47]; - optional bool field_tcp_flags = 48 [(attr_enum_value) = 48]; - optional bool field_acl_ip_type = 49 [(attr_enum_value) = 49]; - optional bool field_acl_ip_frag = 50 [(attr_enum_value) = 50]; - optional bool field_ipv6_flow_label = 51 [(attr_enum_value) = 51]; - optional bool field_tc = 52 [(attr_enum_value) = 52]; - optional bool field_icmp_type = 53 [(attr_enum_value) = 53]; - optional bool field_icmp_code = 54 [(attr_enum_value) = 54]; - optional bool field_icmpv6_type = 55 [(attr_enum_value) = 55]; - optional bool field_icmpv6_code = 56 [(attr_enum_value) = 56]; - optional bool field_packet_vlan = 57 [(attr_enum_value) = 57]; - optional bool field_tunnel_vni = 58 [(attr_enum_value) = 58]; - optional bool field_has_vlan_tag = 59 [(attr_enum_value) = 59]; - optional bool field_macsec_sci = 60 [(attr_enum_value) = 60]; - optional bool field_mpls_label0_label = 61 [(attr_enum_value) = 61]; - optional bool field_mpls_label0_ttl = 62 [(attr_enum_value) = 62]; - optional bool field_mpls_label0_exp = 63 [(attr_enum_value) = 63]; - optional bool field_mpls_label0_bos = 64 [(attr_enum_value) = 64]; - optional bool field_mpls_label1_label = 65 [(attr_enum_value) = 65]; - optional bool field_mpls_label1_ttl = 66 [(attr_enum_value) = 66]; - optional bool field_mpls_label1_exp = 67 [(attr_enum_value) = 67]; - optional bool field_mpls_label1_bos = 68 [(attr_enum_value) = 68]; - optional bool field_mpls_label2_label = 69 [(attr_enum_value) = 69]; - optional bool field_mpls_label2_ttl = 70 [(attr_enum_value) = 70]; - optional bool field_mpls_label2_exp = 71 [(attr_enum_value) = 71]; - optional bool field_mpls_label2_bos = 72 [(attr_enum_value) = 72]; - optional bool field_mpls_label3_label = 73 [(attr_enum_value) = 73]; - optional bool field_mpls_label3_ttl = 74 [(attr_enum_value) = 74]; - optional bool field_mpls_label3_exp = 75 [(attr_enum_value) = 75]; - optional bool field_mpls_label3_bos = 76 [(attr_enum_value) = 76]; - optional bool field_mpls_label4_label = 77 [(attr_enum_value) = 77]; - optional bool field_mpls_label4_ttl = 78 [(attr_enum_value) = 78]; - optional bool field_mpls_label4_exp = 79 [(attr_enum_value) = 79]; - optional bool field_mpls_label4_bos = 80 [(attr_enum_value) = 80]; - optional bool field_fdb_dst_user_meta = 81 [(attr_enum_value) = 81]; - optional bool field_route_dst_user_meta = 82 [(attr_enum_value) = 82]; - optional bool field_neighbor_dst_user_meta = 83 [(attr_enum_value) = 83]; - optional bool field_port_user_meta = 84 [(attr_enum_value) = 84]; - optional bool field_vlan_user_meta = 85 [(attr_enum_value) = 85]; - optional bool field_acl_user_meta = 86 [(attr_enum_value) = 86]; - optional bool field_fdb_npu_meta_dst_hit = 87 [(attr_enum_value) = 87]; - optional bool field_neighbor_npu_meta_dst_hit = 88 [(attr_enum_value) = 88]; - optional bool field_route_npu_meta_dst_hit = 89 [(attr_enum_value) = 89]; - optional bool field_bth_opcode = 90 [(attr_enum_value) = 90]; - optional bool field_aeth_syndrome = 91 [(attr_enum_value) = 91]; - map user_defined_field_group_min = 92 [(attr_enum_value) = 92]; - repeated AclRangeType field_acl_range_type = 93 [(attr_enum_value) = 93]; - optional bool field_ipv6_next_header = 94 [(attr_enum_value) = 94]; - optional bool field_gre_key = 95 [(attr_enum_value) = 95]; - optional bool field_tam_int_type = 96 [(attr_enum_value) = 96]; - optional bool field_inner_src_mac = 97 [(attr_enum_value) = 97]; - optional bool field_inner_dst_mac = 98 [(attr_enum_value) = 98]; - optional bool field_vrf_id = 99 [(attr_enum_value) = 99]; - optional bool field_ipmc_npu_meta_dst_hit = 100 [(attr_enum_value) = 100]; - optional bool field_tunnel_terminated = 101 [(attr_enum_value) = 101]; - repeated uint64 entry_list = 102 [(attr_enum_value) = 102]; - optional uint32 available_acl_entry = 103 [(attr_enum_value) = 103]; - optional uint32 available_acl_counter = 104 [(attr_enum_value) = 104]; - optional AclTableMatchType acl_table_match_type = 105 [(attr_enum_value) = 105]; - optional AclFieldData field_valid_bits_src_ipv6 = 106 [(attr_enum_value) = 106]; - optional AclFieldData field_valid_bits_dst_ipv6 = 107 [(attr_enum_value) = 107]; + optional AclStage acl_stage = 1 [(attr_enum_value) = 1]; + repeated AclBindPointType acl_bind_point_type_list = 2 + [(attr_enum_value) = 2]; + optional uint32 size = 3 [(attr_enum_value) = 3]; + repeated AclActionType acl_action_type_list = 4 [(attr_enum_value) = 4]; + optional bool field_src_ipv6 = 5 [(attr_enum_value) = 5]; + optional bool field_src_ipv6_word3 = 6 [(attr_enum_value) = 6]; + optional bool field_src_ipv6_word2 = 7 [(attr_enum_value) = 7]; + optional bool field_src_ipv6_word1 = 8 [(attr_enum_value) = 8]; + optional bool field_src_ipv6_word0 = 9 [(attr_enum_value) = 9]; + optional bool field_dst_ipv6 = 10 [(attr_enum_value) = 10]; + optional bool field_dst_ipv6_word3 = 11 [(attr_enum_value) = 11]; + optional bool field_dst_ipv6_word2 = 12 [(attr_enum_value) = 12]; + optional bool field_dst_ipv6_word1 = 13 [(attr_enum_value) = 13]; + optional bool field_dst_ipv6_word0 = 14 [(attr_enum_value) = 14]; + optional bool field_inner_src_ipv6 = 15 [(attr_enum_value) = 15]; + optional bool field_inner_dst_ipv6 = 16 [(attr_enum_value) = 16]; + optional bool field_src_mac = 17 [(attr_enum_value) = 17]; + optional bool field_dst_mac = 18 [(attr_enum_value) = 18]; + optional bool field_src_ip = 19 [(attr_enum_value) = 19]; + optional bool field_dst_ip = 20 [(attr_enum_value) = 20]; + optional bool field_inner_src_ip = 21 [(attr_enum_value) = 21]; + optional bool field_inner_dst_ip = 22 [(attr_enum_value) = 22]; + optional bool field_in_ports = 23 [(attr_enum_value) = 23]; + optional bool field_out_ports = 24 [(attr_enum_value) = 24]; + optional bool field_in_port = 25 [(attr_enum_value) = 25]; + optional bool field_out_port = 26 [(attr_enum_value) = 26]; + optional bool field_src_port = 27 [(attr_enum_value) = 27]; + optional bool field_outer_vlan_id = 28 [(attr_enum_value) = 28]; + optional bool field_outer_vlan_pri = 29 [(attr_enum_value) = 29]; + optional bool field_outer_vlan_cfi = 30 [(attr_enum_value) = 30]; + optional bool field_inner_vlan_id = 31 [(attr_enum_value) = 31]; + optional bool field_inner_vlan_pri = 32 [(attr_enum_value) = 32]; + optional bool field_inner_vlan_cfi = 33 [(attr_enum_value) = 33]; + optional bool field_l4_src_port = 34 [(attr_enum_value) = 34]; + optional bool field_l4_dst_port = 35 [(attr_enum_value) = 35]; + optional bool field_inner_l4_src_port = 36 [(attr_enum_value) = 36]; + optional bool field_inner_l4_dst_port = 37 [(attr_enum_value) = 37]; + optional bool field_ether_type = 38 [(attr_enum_value) = 38]; + optional bool field_inner_ether_type = 39 [(attr_enum_value) = 39]; + optional bool field_ip_protocol = 40 [(attr_enum_value) = 40]; + optional bool field_inner_ip_protocol = 41 [(attr_enum_value) = 41]; + optional bool field_ip_identification = 42 [(attr_enum_value) = 42]; + optional bool field_dscp = 43 [(attr_enum_value) = 43]; + optional bool field_ecn = 44 [(attr_enum_value) = 44]; + optional bool field_ttl = 45 [(attr_enum_value) = 45]; + optional bool field_tos = 46 [(attr_enum_value) = 46]; + optional bool field_ip_flags = 47 [(attr_enum_value) = 47]; + optional bool field_tcp_flags = 48 [(attr_enum_value) = 48]; + optional bool field_acl_ip_type = 49 [(attr_enum_value) = 49]; + optional bool field_acl_ip_frag = 50 [(attr_enum_value) = 50]; + optional bool field_ipv6_flow_label = 51 [(attr_enum_value) = 51]; + optional bool field_tc = 52 [(attr_enum_value) = 52]; + optional bool field_icmp_type = 53 [(attr_enum_value) = 53]; + optional bool field_icmp_code = 54 [(attr_enum_value) = 54]; + optional bool field_icmpv6_type = 55 [(attr_enum_value) = 55]; + optional bool field_icmpv6_code = 56 [(attr_enum_value) = 56]; + optional bool field_packet_vlan = 57 [(attr_enum_value) = 57]; + optional bool field_tunnel_vni = 58 [(attr_enum_value) = 58]; + optional bool field_has_vlan_tag = 59 [(attr_enum_value) = 59]; + optional bool field_macsec_sci = 60 [(attr_enum_value) = 60]; + optional bool field_mpls_label0_label = 61 [(attr_enum_value) = 61]; + optional bool field_mpls_label0_ttl = 62 [(attr_enum_value) = 62]; + optional bool field_mpls_label0_exp = 63 [(attr_enum_value) = 63]; + optional bool field_mpls_label0_bos = 64 [(attr_enum_value) = 64]; + optional bool field_mpls_label1_label = 65 [(attr_enum_value) = 65]; + optional bool field_mpls_label1_ttl = 66 [(attr_enum_value) = 66]; + optional bool field_mpls_label1_exp = 67 [(attr_enum_value) = 67]; + optional bool field_mpls_label1_bos = 68 [(attr_enum_value) = 68]; + optional bool field_mpls_label2_label = 69 [(attr_enum_value) = 69]; + optional bool field_mpls_label2_ttl = 70 [(attr_enum_value) = 70]; + optional bool field_mpls_label2_exp = 71 [(attr_enum_value) = 71]; + optional bool field_mpls_label2_bos = 72 [(attr_enum_value) = 72]; + optional bool field_mpls_label3_label = 73 [(attr_enum_value) = 73]; + optional bool field_mpls_label3_ttl = 74 [(attr_enum_value) = 74]; + optional bool field_mpls_label3_exp = 75 [(attr_enum_value) = 75]; + optional bool field_mpls_label3_bos = 76 [(attr_enum_value) = 76]; + optional bool field_mpls_label4_label = 77 [(attr_enum_value) = 77]; + optional bool field_mpls_label4_ttl = 78 [(attr_enum_value) = 78]; + optional bool field_mpls_label4_exp = 79 [(attr_enum_value) = 79]; + optional bool field_mpls_label4_bos = 80 [(attr_enum_value) = 80]; + optional bool field_fdb_dst_user_meta = 81 [(attr_enum_value) = 81]; + optional bool field_route_dst_user_meta = 82 [(attr_enum_value) = 82]; + optional bool field_neighbor_dst_user_meta = 83 [(attr_enum_value) = 83]; + optional bool field_port_user_meta = 84 [(attr_enum_value) = 84]; + optional bool field_vlan_user_meta = 85 [(attr_enum_value) = 85]; + optional bool field_acl_user_meta = 86 [(attr_enum_value) = 86]; + optional bool field_fdb_npu_meta_dst_hit = 87 [(attr_enum_value) = 87]; + optional bool field_neighbor_npu_meta_dst_hit = 88 [(attr_enum_value) = 88]; + optional bool field_route_npu_meta_dst_hit = 89 [(attr_enum_value) = 89]; + optional bool field_bth_opcode = 90 [(attr_enum_value) = 90]; + optional bool field_aeth_syndrome = 91 [(attr_enum_value) = 91]; + map user_defined_field_group_min = 92 + [(attr_enum_value) = 92]; + repeated AclRangeType field_acl_range_type = 93 [(attr_enum_value) = 93]; + optional bool field_ipv6_next_header = 94 [(attr_enum_value) = 94]; + optional bool field_gre_key = 95 [(attr_enum_value) = 95]; + optional bool field_tam_int_type = 96 [(attr_enum_value) = 96]; + optional bool field_inner_src_mac = 97 [(attr_enum_value) = 97]; + optional bool field_inner_dst_mac = 98 [(attr_enum_value) = 98]; + optional bool field_vrf_id = 99 [(attr_enum_value) = 99]; + optional bool field_ipmc_npu_meta_dst_hit = 100 [(attr_enum_value) = 100]; + optional bool field_tunnel_terminated = 101 [(attr_enum_value) = 101]; + repeated uint64 entry_list = 102 [(attr_enum_value) = 102]; + optional uint32 available_acl_entry = 103 [(attr_enum_value) = 103]; + optional uint32 available_acl_counter = 104 [(attr_enum_value) = 104]; + optional AclTableMatchType acl_table_match_type = 105 + [(attr_enum_value) = 105]; + optional AclFieldData field_valid_bits_src_ipv6 = 106 + [(attr_enum_value) = 106]; + optional AclFieldData field_valid_bits_dst_ipv6 = 107 + [(attr_enum_value) = 107]; } message AclTableChainGroupAttribute { - optional AclTableChainGroupType type = 1 [(attr_enum_value) = 1]; - optional AclTableChainGroupStage stage = 2 [(attr_enum_value) = 2]; + optional AclTableChainGroupType type = 1 [(attr_enum_value) = 1]; + optional AclTableChainGroupStage stage = 2 [(attr_enum_value) = 2]; } message AclTableGroupAttribute { - optional AclStage acl_stage = 1 [(attr_enum_value) = 1]; - repeated AclBindPointType acl_bind_point_type_list = 2 [(attr_enum_value) = 2]; - optional AclTableGroupType type = 3 [(attr_enum_value) = 3]; - repeated uint64 member_list = 4 [(attr_enum_value) = 4]; - repeated uint64 chain_group_list = 5 [(attr_enum_value) = 5]; + optional AclStage acl_stage = 1 [(attr_enum_value) = 1]; + repeated AclBindPointType acl_bind_point_type_list = 2 + [(attr_enum_value) = 2]; + optional AclTableGroupType type = 3 [(attr_enum_value) = 3]; + repeated uint64 member_list = 4 [(attr_enum_value) = 4]; + repeated uint64 chain_group_list = 5 [(attr_enum_value) = 5]; } message AclTableGroupMemberAttribute { - optional uint64 acl_table_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 acl_table_id = 2 [(attr_enum_value) = 2]; - optional uint32 priority = 3 [(attr_enum_value) = 3]; - optional uint64 acl_table_chain_group_id = 4 [(attr_enum_value) = 4]; + optional uint64 acl_table_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 acl_table_id = 2 [(attr_enum_value) = 2]; + optional uint32 priority = 3 [(attr_enum_value) = 3]; + optional uint64 acl_table_chain_group_id = 4 [(attr_enum_value) = 4]; } message BfdSessionAttribute { - optional BfdSessionType type = 1 [(attr_enum_value) = 1]; - optional bool hw_lookup_valid = 2 [(attr_enum_value) = 2]; - optional uint64 virtual_router = 3 [(attr_enum_value) = 3]; - optional uint64 port = 4 [(attr_enum_value) = 4]; - optional uint32 local_discriminator = 5 [(attr_enum_value) = 5]; - optional uint32 remote_discriminator = 6 [(attr_enum_value) = 6]; - optional uint32 udp_src_port = 7 [(attr_enum_value) = 7]; - optional uint32 tc = 8 [(attr_enum_value) = 8]; - optional uint32 vlan_tpid = 9 [(attr_enum_value) = 9]; - optional uint32 vlan_id = 10 [(attr_enum_value) = 10]; - optional uint32 vlan_pri = 11 [(attr_enum_value) = 11]; - optional uint32 vlan_cfi = 12 [(attr_enum_value) = 12]; - optional bool vlan_header_valid = 13 [(attr_enum_value) = 13]; - optional BfdEncapsulationType bfd_encapsulation_type = 14 [(attr_enum_value) = 14]; - optional uint32 iphdr_version = 15 [(attr_enum_value) = 15]; - optional uint32 tos = 16 [(attr_enum_value) = 16]; - optional uint32 ttl = 17 [(attr_enum_value) = 17]; - optional bytes src_ip_address = 18 [(attr_enum_value) = 18]; - optional bytes dst_ip_address = 19 [(attr_enum_value) = 19]; - optional uint32 tunnel_tos = 20 [(attr_enum_value) = 20]; - optional uint32 tunnel_ttl = 21 [(attr_enum_value) = 21]; - optional bytes tunnel_src_ip_address = 22 [(attr_enum_value) = 22]; - optional bytes tunnel_dst_ip_address = 23 [(attr_enum_value) = 23]; - optional bytes src_mac_address = 24 [(attr_enum_value) = 24]; - optional bytes dst_mac_address = 25 [(attr_enum_value) = 25]; - optional bool echo_enable = 26 [(attr_enum_value) = 26]; - optional bool multihop = 27 [(attr_enum_value) = 27]; - optional bool cbit = 28 [(attr_enum_value) = 28]; - optional uint32 min_tx = 29 [(attr_enum_value) = 29]; - optional uint32 min_rx = 30 [(attr_enum_value) = 30]; - optional uint32 multiplier = 31 [(attr_enum_value) = 31]; - optional uint32 remote_min_tx = 32 [(attr_enum_value) = 32]; - optional uint32 remote_min_rx = 33 [(attr_enum_value) = 33]; - optional BfdSessionState state = 34 [(attr_enum_value) = 34]; - optional BfdSessionOffloadType offload_type = 35 [(attr_enum_value) = 35]; - optional uint32 negotiated_tx = 36 [(attr_enum_value) = 36]; - optional uint32 negotiated_rx = 37 [(attr_enum_value) = 37]; - optional uint32 local_diag = 38 [(attr_enum_value) = 38]; - optional uint32 remote_diag = 39 [(attr_enum_value) = 39]; - optional uint32 remote_multiplier = 40 [(attr_enum_value) = 40]; - optional uint64 srv6_sidlist_id = 41 [(attr_enum_value) = 41]; + optional BfdSessionType type = 1 [(attr_enum_value) = 1]; + optional bool hw_lookup_valid = 2 [(attr_enum_value) = 2]; + optional uint64 virtual_router = 3 [(attr_enum_value) = 3]; + optional uint64 port = 4 [(attr_enum_value) = 4]; + optional uint32 local_discriminator = 5 [(attr_enum_value) = 5]; + optional uint32 remote_discriminator = 6 [(attr_enum_value) = 6]; + optional uint32 udp_src_port = 7 [(attr_enum_value) = 7]; + optional uint32 tc = 8 [(attr_enum_value) = 8]; + optional uint32 vlan_tpid = 9 [(attr_enum_value) = 9]; + optional uint32 vlan_id = 10 [(attr_enum_value) = 10]; + optional uint32 vlan_pri = 11 [(attr_enum_value) = 11]; + optional uint32 vlan_cfi = 12 [(attr_enum_value) = 12]; + optional bool vlan_header_valid = 13 [(attr_enum_value) = 13]; + optional BfdEncapsulationType bfd_encapsulation_type = 14 + [(attr_enum_value) = 14]; + optional uint32 iphdr_version = 15 [(attr_enum_value) = 15]; + optional uint32 tos = 16 [(attr_enum_value) = 16]; + optional uint32 ttl = 17 [(attr_enum_value) = 17]; + optional bytes src_ip_address = 18 [(attr_enum_value) = 18]; + optional bytes dst_ip_address = 19 [(attr_enum_value) = 19]; + optional uint32 tunnel_tos = 20 [(attr_enum_value) = 20]; + optional uint32 tunnel_ttl = 21 [(attr_enum_value) = 21]; + optional bytes tunnel_src_ip_address = 22 [(attr_enum_value) = 22]; + optional bytes tunnel_dst_ip_address = 23 [(attr_enum_value) = 23]; + optional bytes src_mac_address = 24 [(attr_enum_value) = 24]; + optional bytes dst_mac_address = 25 [(attr_enum_value) = 25]; + optional bool echo_enable = 26 [(attr_enum_value) = 26]; + optional bool multihop = 27 [(attr_enum_value) = 27]; + optional bool cbit = 28 [(attr_enum_value) = 28]; + optional uint32 min_tx = 29 [(attr_enum_value) = 29]; + optional uint32 min_rx = 30 [(attr_enum_value) = 30]; + optional uint32 multiplier = 31 [(attr_enum_value) = 31]; + optional uint32 remote_min_tx = 32 [(attr_enum_value) = 32]; + optional uint32 remote_min_rx = 33 [(attr_enum_value) = 33]; + optional BfdSessionState state = 34 [(attr_enum_value) = 34]; + optional BfdSessionOffloadType offload_type = 35 [(attr_enum_value) = 35]; + optional uint32 negotiated_tx = 36 [(attr_enum_value) = 36]; + optional uint32 negotiated_rx = 37 [(attr_enum_value) = 37]; + optional uint32 local_diag = 38 [(attr_enum_value) = 38]; + optional uint32 remote_diag = 39 [(attr_enum_value) = 39]; + optional uint32 remote_multiplier = 40 [(attr_enum_value) = 40]; + optional uint64 srv6_sidlist_id = 41 [(attr_enum_value) = 41]; + optional StatsCountMode stats_count_mode = 42 [(attr_enum_value) = 42]; + repeated uint64 selective_counter_list = 43 [(attr_enum_value) = 43]; } message BridgeAttribute { - optional BridgeType type = 1 [(attr_enum_value) = 1]; - repeated uint64 port_list = 2 [(attr_enum_value) = 2]; - optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; - optional bool learn_disable = 4 [(attr_enum_value) = 4]; - optional BridgeFloodControlType unknown_unicast_flood_control_type = 5 [(attr_enum_value) = 5]; - optional uint64 unknown_unicast_flood_group = 6 [(attr_enum_value) = 6]; - optional BridgeFloodControlType unknown_multicast_flood_control_type = 7 [(attr_enum_value) = 7]; - optional uint64 unknown_multicast_flood_group = 8 [(attr_enum_value) = 8]; - optional BridgeFloodControlType broadcast_flood_control_type = 9 [(attr_enum_value) = 9]; - optional uint64 broadcast_flood_group = 10 [(attr_enum_value) = 10]; + optional BridgeType type = 1 [(attr_enum_value) = 1]; + repeated uint64 port_list = 2 [(attr_enum_value) = 2]; + optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; + optional bool learn_disable = 4 [(attr_enum_value) = 4]; + optional BridgeFloodControlType unknown_unicast_flood_control_type = 5 + [(attr_enum_value) = 5]; + optional uint64 unknown_unicast_flood_group = 6 [(attr_enum_value) = 6]; + optional BridgeFloodControlType unknown_multicast_flood_control_type = 7 + [(attr_enum_value) = 7]; + optional uint64 unknown_multicast_flood_group = 8 [(attr_enum_value) = 8]; + optional BridgeFloodControlType broadcast_flood_control_type = 9 + [(attr_enum_value) = 9]; + optional uint64 broadcast_flood_group = 10 [(attr_enum_value) = 10]; + optional StatsCountMode stats_count_mode = 11 [(attr_enum_value) = 11]; + repeated uint64 selective_counter_list = 12 [(attr_enum_value) = 12]; } message BridgePortAttribute { - optional BridgePortType type = 1 [(attr_enum_value) = 1]; - optional uint64 port_id = 2 [(attr_enum_value) = 2]; - optional BridgePortTaggingMode tagging_mode = 3 [(attr_enum_value) = 3]; - optional uint32 vlan_id = 4 [(attr_enum_value) = 4]; - optional uint64 rif_id = 5 [(attr_enum_value) = 5]; - optional uint64 tunnel_id = 6 [(attr_enum_value) = 6]; - optional uint64 bridge_id = 7 [(attr_enum_value) = 7]; - optional BridgePortFdbLearningMode fdb_learning_mode = 8 [(attr_enum_value) = 8]; - optional uint32 max_learned_addresses = 9 [(attr_enum_value) = 9]; - optional PacketAction fdb_learning_limit_violation_packet_action = 10 [(attr_enum_value) = 10]; - optional bool admin_state = 11 [(attr_enum_value) = 11]; - optional bool ingress_filtering = 12 [(attr_enum_value) = 12]; - optional bool egress_filtering = 13 [(attr_enum_value) = 13]; - optional uint64 isolation_group = 14 [(attr_enum_value) = 14]; + optional BridgePortType type = 1 [(attr_enum_value) = 1]; + optional uint64 port_id = 2 [(attr_enum_value) = 2]; + optional BridgePortTaggingMode tagging_mode = 3 [(attr_enum_value) = 3]; + optional uint32 vlan_id = 4 [(attr_enum_value) = 4]; + optional uint64 rif_id = 5 [(attr_enum_value) = 5]; + optional uint64 tunnel_id = 6 [(attr_enum_value) = 6]; + optional uint64 bridge_id = 7 [(attr_enum_value) = 7]; + optional BridgePortFdbLearningMode fdb_learning_mode = 8 + [(attr_enum_value) = 8]; + optional uint32 max_learned_addresses = 9 [(attr_enum_value) = 9]; + optional PacketAction fdb_learning_limit_violation_packet_action = 10 + [(attr_enum_value) = 10]; + optional bool admin_state = 11 [(attr_enum_value) = 11]; + optional bool ingress_filtering = 12 [(attr_enum_value) = 12]; + optional bool egress_filtering = 13 [(attr_enum_value) = 13]; + optional uint64 isolation_group = 14 [(attr_enum_value) = 14]; + optional StatsCountMode stats_count_mode = 15 [(attr_enum_value) = 15]; + repeated uint64 selective_counter_list = 16 [(attr_enum_value) = 16]; } message BufferPoolAttribute { - optional uint64 shared_size = 1 [(attr_enum_value) = 1]; - optional BufferPoolType type = 2 [(attr_enum_value) = 2]; - optional uint64 size = 3 [(attr_enum_value) = 3]; - optional BufferPoolThresholdMode threshold_mode = 4 [(attr_enum_value) = 4]; - repeated uint64 tam = 5 [(attr_enum_value) = 5]; - optional uint64 xoff_size = 6 [(attr_enum_value) = 6]; - optional uint64 wred_profile_id = 7 [(attr_enum_value) = 7]; + optional uint64 shared_size = 1 [(attr_enum_value) = 1]; + optional BufferPoolType type = 2 [(attr_enum_value) = 2]; + optional uint64 size = 3 [(attr_enum_value) = 3]; + optional BufferPoolThresholdMode threshold_mode = 4 [(attr_enum_value) = 4]; + repeated uint64 tam = 5 [(attr_enum_value) = 5]; + optional uint64 xoff_size = 6 [(attr_enum_value) = 6]; + optional uint64 wred_profile_id = 7 [(attr_enum_value) = 7]; + optional StatsCountMode stats_count_mode = 8 [(attr_enum_value) = 8]; + repeated uint64 selective_counter_list = 9 [(attr_enum_value) = 9]; } message BufferProfileAttribute { - optional uint64 pool_id = 1 [(attr_enum_value) = 1]; - optional uint64 reserved_buffer_size = 2 [(attr_enum_value) = 2]; - optional BufferProfileThresholdMode threshold_mode = 3 [(attr_enum_value) = 3]; - optional int32 shared_dynamic_th = 4 [(attr_enum_value) = 4]; - optional uint64 shared_static_th = 5 [(attr_enum_value) = 5]; - optional uint64 xoff_th = 6 [(attr_enum_value) = 6]; - optional uint64 xon_th = 7 [(attr_enum_value) = 7]; - optional uint64 xon_offset_th = 8 [(attr_enum_value) = 8]; + optional uint64 pool_id = 1 [(attr_enum_value) = 1]; + optional uint64 reserved_buffer_size = 2 [(attr_enum_value) = 2]; + optional BufferProfileThresholdMode threshold_mode = 3 + [(attr_enum_value) = 3]; + optional int32 shared_dynamic_th = 4 [(attr_enum_value) = 4]; + optional uint64 shared_static_th = 5 [(attr_enum_value) = 5]; + optional uint64 xoff_th = 6 [(attr_enum_value) = 6]; + optional uint64 xon_th = 7 [(attr_enum_value) = 7]; + optional uint64 xon_offset_th = 8 [(attr_enum_value) = 8]; } message CounterAttribute { - optional CounterType type = 1 [(attr_enum_value) = 1]; - optional bytes label = 2 [(attr_enum_value) = 2]; + optional CounterType type = 1 [(attr_enum_value) = 1]; + optional bytes label = 2 [(attr_enum_value) = 2]; + optional bool enable_packet_count = 3 [(attr_enum_value) = 3]; + optional bool enable_byte_count = 4 [(attr_enum_value) = 4]; + optional ObjectType object_type = 5 [(attr_enum_value) = 5]; + repeated int32 stat_id_list = 6 [(attr_enum_value) = 6]; } message DebugCounterAttribute { - optional uint32 index = 1 [(attr_enum_value) = 1]; - optional DebugCounterType type = 2 [(attr_enum_value) = 2]; - optional DebugCounterBindMethod bind_method = 3 [(attr_enum_value) = 3]; - repeated InDropReason in_drop_reason_list = 4 [(attr_enum_value) = 4]; - repeated OutDropReason out_drop_reason_list = 5 [(attr_enum_value) = 5]; + optional uint32 index = 1 [(attr_enum_value) = 1]; + optional DebugCounterType type = 2 [(attr_enum_value) = 2]; + optional DebugCounterBindMethod bind_method = 3 [(attr_enum_value) = 3]; + repeated InDropReason in_drop_reason_list = 4 [(attr_enum_value) = 4]; + repeated OutDropReason out_drop_reason_list = 5 [(attr_enum_value) = 5]; } message DtelAttribute { - optional bool int_endpoint_enable = 1 [(attr_enum_value) = 1]; - optional bool int_transit_enable = 2 [(attr_enum_value) = 2]; - optional bool postcard_enable = 3 [(attr_enum_value) = 3]; - optional bool drop_report_enable = 4 [(attr_enum_value) = 4]; - optional bool queue_report_enable = 5 [(attr_enum_value) = 5]; - optional uint32 switch_id = 6 [(attr_enum_value) = 6]; - optional uint32 flow_state_clear_cycle = 7 [(attr_enum_value) = 7]; - optional uint32 latency_sensitivity = 8 [(attr_enum_value) = 8]; - repeated uint64 sink_port_list = 9 [(attr_enum_value) = 9]; - optional AclFieldData int_l4_dscp = 10 [(attr_enum_value) = 10]; + optional bool int_endpoint_enable = 1 [(attr_enum_value) = 1]; + optional bool int_transit_enable = 2 [(attr_enum_value) = 2]; + optional bool postcard_enable = 3 [(attr_enum_value) = 3]; + optional bool drop_report_enable = 4 [(attr_enum_value) = 4]; + optional bool queue_report_enable = 5 [(attr_enum_value) = 5]; + optional uint32 switch_id = 6 [(attr_enum_value) = 6]; + optional uint32 flow_state_clear_cycle = 7 [(attr_enum_value) = 7]; + optional uint32 latency_sensitivity = 8 [(attr_enum_value) = 8]; + repeated uint64 sink_port_list = 9 [(attr_enum_value) = 9]; + optional AclFieldData int_l4_dscp = 10 [(attr_enum_value) = 10]; } message DtelEventAttribute { - optional DtelEventType type = 1 [(attr_enum_value) = 1]; - optional uint64 report_session = 2 [(attr_enum_value) = 2]; - optional uint32 dscp_value = 3 [(attr_enum_value) = 3]; + optional DtelEventType type = 1 [(attr_enum_value) = 1]; + optional uint64 report_session = 2 [(attr_enum_value) = 2]; + optional uint32 dscp_value = 3 [(attr_enum_value) = 3]; } message DtelIntSessionAttribute { - optional uint32 max_hop_count = 1 [(attr_enum_value) = 1]; - optional bool collect_switch_id = 2 [(attr_enum_value) = 2]; - optional bool collect_switch_ports = 3 [(attr_enum_value) = 3]; - optional bool collect_ingress_timestamp = 4 [(attr_enum_value) = 4]; - optional bool collect_egress_timestamp = 5 [(attr_enum_value) = 5]; - optional bool collect_queue_info = 6 [(attr_enum_value) = 6]; + optional uint32 max_hop_count = 1 [(attr_enum_value) = 1]; + optional bool collect_switch_id = 2 [(attr_enum_value) = 2]; + optional bool collect_switch_ports = 3 [(attr_enum_value) = 3]; + optional bool collect_ingress_timestamp = 4 [(attr_enum_value) = 4]; + optional bool collect_egress_timestamp = 5 [(attr_enum_value) = 5]; + optional bool collect_queue_info = 6 [(attr_enum_value) = 6]; } message DtelQueueReportAttribute { - optional uint64 queue_id = 1 [(attr_enum_value) = 1]; - optional uint32 depth_threshold = 2 [(attr_enum_value) = 2]; - optional uint32 latency_threshold = 3 [(attr_enum_value) = 3]; - optional uint32 breach_quota = 4 [(attr_enum_value) = 4]; - optional bool tail_drop = 5 [(attr_enum_value) = 5]; + optional uint64 queue_id = 1 [(attr_enum_value) = 1]; + optional uint32 depth_threshold = 2 [(attr_enum_value) = 2]; + optional uint32 latency_threshold = 3 [(attr_enum_value) = 3]; + optional uint32 breach_quota = 4 [(attr_enum_value) = 4]; + optional bool tail_drop = 5 [(attr_enum_value) = 5]; } message DtelReportSessionAttribute { - optional bytes src_ip = 1 [(attr_enum_value) = 1]; - repeated bytes dst_ip_list = 2 [(attr_enum_value) = 2]; - optional uint64 virtual_router_id = 3 [(attr_enum_value) = 3]; - optional uint32 truncate_size = 4 [(attr_enum_value) = 4]; - optional uint32 udp_dst_port = 5 [(attr_enum_value) = 5]; + optional bytes src_ip = 1 [(attr_enum_value) = 1]; + repeated bytes dst_ip_list = 2 [(attr_enum_value) = 2]; + optional uint64 virtual_router_id = 3 [(attr_enum_value) = 3]; + optional uint32 truncate_size = 4 [(attr_enum_value) = 4]; + optional uint32 udp_dst_port = 5 [(attr_enum_value) = 5]; } message FdbEntryAttribute { - optional FdbEntryType type = 1 [(attr_enum_value) = 1]; - optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; - optional uint64 user_trap_id = 3 [(attr_enum_value) = 3]; - optional uint64 bridge_port_id = 4 [(attr_enum_value) = 4]; - optional uint32 meta_data = 5 [(attr_enum_value) = 5]; - optional bytes endpoint_ip = 6 [(attr_enum_value) = 6]; - optional uint64 counter_id = 7 [(attr_enum_value) = 7]; - optional bool allow_mac_move = 8 [(attr_enum_value) = 8]; + optional FdbEntryType type = 1 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 3 [(attr_enum_value) = 3]; + optional uint64 bridge_port_id = 4 [(attr_enum_value) = 4]; + optional uint32 meta_data = 5 [(attr_enum_value) = 5]; + optional bytes endpoint_ip = 6 [(attr_enum_value) = 6]; + optional uint64 counter_id = 7 [(attr_enum_value) = 7]; + optional bool allow_mac_move = 8 [(attr_enum_value) = 8]; } message FdbFlushAttribute { - optional uint64 bridge_port_id = 1 [(attr_enum_value) = 1]; - optional uint64 bv_id = 2 [(attr_enum_value) = 2]; - optional FdbFlushEntryType entry_type = 3 [(attr_enum_value) = 3]; + optional uint64 bridge_port_id = 1 [(attr_enum_value) = 1]; + optional uint64 bv_id = 2 [(attr_enum_value) = 2]; + optional FdbFlushEntryType entry_type = 3 [(attr_enum_value) = 3]; } message FineGrainedHashFieldAttribute { - optional NativeHashField native_hash_field = 1 [(attr_enum_value) = 1]; - optional bytes ipv4_mask = 2 [(attr_enum_value) = 2]; - optional bytes ipv6_mask = 3 [(attr_enum_value) = 3]; - optional uint32 sequence_id = 4 [(attr_enum_value) = 4]; + optional NativeHashField native_hash_field = 1 [(attr_enum_value) = 1]; + optional bytes ipv4_mask = 2 [(attr_enum_value) = 2]; + optional bytes ipv6_mask = 3 [(attr_enum_value) = 3]; + optional uint32 sequence_id = 4 [(attr_enum_value) = 4]; } message GenericProgrammableAttribute { - repeated int32 object_name = 1 [(attr_enum_value) = 1]; - optional bytes entry = 2 [(attr_enum_value) = 2]; - optional uint64 counter_id = 3 [(attr_enum_value) = 3]; + repeated int32 object_name = 1 [(attr_enum_value) = 1]; + optional bytes entry = 2 [(attr_enum_value) = 2]; + optional uint64 counter_id = 3 [(attr_enum_value) = 3]; } message HashAttribute { - repeated NativeHashField native_hash_field_list = 1 [(attr_enum_value) = 1]; - repeated uint64 udf_group_list = 2 [(attr_enum_value) = 2]; - repeated uint64 fine_grained_hash_field_list = 3 [(attr_enum_value) = 3]; + repeated NativeHashField native_hash_field_list = 1 [(attr_enum_value) = 1]; + repeated uint64 udf_group_list = 2 [(attr_enum_value) = 2]; + repeated uint64 fine_grained_hash_field_list = 3 [(attr_enum_value) = 3]; } message HostifAttribute { - optional HostifType type = 1 [(attr_enum_value) = 1]; - optional uint64 obj_id = 2 [(attr_enum_value) = 2]; - optional bytes name = 3 [(attr_enum_value) = 3]; - optional bool oper_status = 4 [(attr_enum_value) = 4]; - optional uint32 queue = 5 [(attr_enum_value) = 5]; - optional HostifVlanTag vlan_tag = 6 [(attr_enum_value) = 6]; - optional bytes genetlink_mcgrp_name = 7 [(attr_enum_value) = 7]; + optional HostifType type = 1 [(attr_enum_value) = 1]; + optional uint64 obj_id = 2 [(attr_enum_value) = 2]; + optional bytes name = 3 [(attr_enum_value) = 3]; + optional bool oper_status = 4 [(attr_enum_value) = 4]; + optional uint32 queue = 5 [(attr_enum_value) = 5]; + optional HostifVlanTag vlan_tag = 6 [(attr_enum_value) = 6]; + optional bytes genetlink_mcgrp_name = 7 [(attr_enum_value) = 7]; } message HostifPacketAttribute { - optional uint64 hostif_trap_id = 1 [(attr_enum_value) = 1]; - optional uint64 ingress_port = 2 [(attr_enum_value) = 2]; - optional uint64 ingress_lag = 3 [(attr_enum_value) = 3]; - optional HostifTxType hostif_tx_type = 4 [(attr_enum_value) = 4]; - optional uint64 egress_port_or_lag = 5 [(attr_enum_value) = 5]; - optional uint64 bridge_id = 6 [(attr_enum_value) = 6]; - optional google.protobuf.Timestamp timestamp = 7 [(attr_enum_value) = 7]; - optional uint32 egress_queue_index = 8 [(attr_enum_value) = 8]; - optional bool zero_copy_tx = 9 [(attr_enum_value) = 9]; + optional uint64 hostif_trap_id = 1 [(attr_enum_value) = 1]; + optional uint64 ingress_port = 2 [(attr_enum_value) = 2]; + optional uint64 ingress_lag = 3 [(attr_enum_value) = 3]; + optional HostifTxType hostif_tx_type = 4 [(attr_enum_value) = 4]; + optional uint64 egress_port_or_lag = 5 [(attr_enum_value) = 5]; + optional uint64 bridge_id = 6 [(attr_enum_value) = 6]; + optional google.protobuf.Timestamp timestamp = 7 [(attr_enum_value) = 7]; + optional uint32 egress_queue_index = 8 [(attr_enum_value) = 8]; + optional bool zero_copy_tx = 9 [(attr_enum_value) = 9]; } message HostifTableEntryAttribute { - optional HostifTableEntryType type = 1 [(attr_enum_value) = 1]; - optional uint64 obj_id = 2 [(attr_enum_value) = 2]; - optional uint64 trap_id = 3 [(attr_enum_value) = 3]; - optional HostifTableEntryChannelType channel_type = 4 [(attr_enum_value) = 4]; - optional uint64 host_if = 5 [(attr_enum_value) = 5]; + optional HostifTableEntryType type = 1 [(attr_enum_value) = 1]; + optional uint64 obj_id = 2 [(attr_enum_value) = 2]; + optional uint64 trap_id = 3 [(attr_enum_value) = 3]; + optional HostifTableEntryChannelType channel_type = 4 [(attr_enum_value) = 4]; + optional uint64 host_if = 5 [(attr_enum_value) = 5]; } message HostifTrapAttribute { - optional HostifTrapType trap_type = 1 [(attr_enum_value) = 1]; - optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; - optional uint32 trap_priority = 3 [(attr_enum_value) = 3]; - repeated uint64 exclude_port_list = 4 [(attr_enum_value) = 4]; - optional uint64 trap_group = 5 [(attr_enum_value) = 5]; - repeated uint64 mirror_session = 6 [(attr_enum_value) = 6]; - optional uint64 counter_id = 7 [(attr_enum_value) = 7]; + optional HostifTrapType trap_type = 1 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 3 [(attr_enum_value) = 3]; + repeated uint64 exclude_port_list = 4 [(attr_enum_value) = 4]; + optional uint64 trap_group = 5 [(attr_enum_value) = 5]; + repeated uint64 mirror_session = 6 [(attr_enum_value) = 6]; + optional uint64 counter_id = 7 [(attr_enum_value) = 7]; } message HostifTrapGroupAttribute { - optional bool admin_state = 1 [(attr_enum_value) = 1]; - optional uint32 queue = 2 [(attr_enum_value) = 2]; - optional uint64 policer = 3 [(attr_enum_value) = 3]; - optional ObjectStage object_stage = 4 [(attr_enum_value) = 4]; + optional bool admin_state = 1 [(attr_enum_value) = 1]; + optional uint32 queue = 2 [(attr_enum_value) = 2]; + optional uint64 policer = 3 [(attr_enum_value) = 3]; + optional ObjectStage object_stage = 4 [(attr_enum_value) = 4]; } message HostifUserDefinedTrapAttribute { - optional HostifUserDefinedTrapType type = 1 [(attr_enum_value) = 1]; - optional uint32 trap_priority = 2 [(attr_enum_value) = 2]; - optional uint64 trap_group = 3 [(attr_enum_value) = 3]; + optional HostifUserDefinedTrapType type = 1 [(attr_enum_value) = 1]; + optional uint32 trap_priority = 2 [(attr_enum_value) = 2]; + optional uint64 trap_group = 3 [(attr_enum_value) = 3]; +} + +message IcmpEchoSessionAttribute { + optional bool hw_lookup_valid = 1 [(attr_enum_value) = 1]; + optional uint64 virtual_router = 2 [(attr_enum_value) = 2]; + optional uint64 port = 3 [(attr_enum_value) = 3]; + optional uint64 rx_port = 4 [(attr_enum_value) = 4]; + optional uint64 guid = 5 [(attr_enum_value) = 5]; + optional uint32 cookie = 6 [(attr_enum_value) = 6]; + optional uint32 iphdr_version = 7 [(attr_enum_value) = 7]; + optional uint32 tos = 8 [(attr_enum_value) = 8]; + optional uint32 ttl = 9 [(attr_enum_value) = 9]; + optional bytes src_ip_address = 10 [(attr_enum_value) = 10]; + optional bytes dst_ip_address = 11 [(attr_enum_value) = 11]; + optional bytes src_mac_address = 12 [(attr_enum_value) = 12]; + optional bytes dst_mac_address = 13 [(attr_enum_value) = 13]; + optional uint32 tx_interval = 14 [(attr_enum_value) = 14]; + optional uint32 rx_interval = 15 [(attr_enum_value) = 15]; + optional bool set_next_hop_group_switchover = 16 [(attr_enum_value) = 16]; + optional IcmpEchoSessionState state = 17 [(attr_enum_value) = 17]; + optional StatsCountMode stats_count_mode = 18 [(attr_enum_value) = 18]; + repeated uint64 selective_counter_list = 19 [(attr_enum_value) = 19]; } message IngressPriorityGroupAttribute { - optional uint64 buffer_profile = 1 [(attr_enum_value) = 1]; - optional uint64 port = 2 [(attr_enum_value) = 2]; - repeated uint64 tam = 3 [(attr_enum_value) = 3]; - optional uint32 index = 4 [(attr_enum_value) = 4]; + optional uint64 buffer_profile = 1 [(attr_enum_value) = 1]; + optional uint64 port = 2 [(attr_enum_value) = 2]; + repeated uint64 tam = 3 [(attr_enum_value) = 3]; + optional uint32 index = 4 [(attr_enum_value) = 4]; + optional StatsCountMode stats_count_mode = 5 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 6 [(attr_enum_value) = 6]; } message InsegEntryAttribute { - optional uint32 num_of_pop = 1 [(attr_enum_value) = 1]; - optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; - optional uint32 trap_priority = 3 [(attr_enum_value) = 3]; - optional uint64 next_hop_id = 4 [(attr_enum_value) = 4]; - optional InsegEntryPscType psc_type = 5 [(attr_enum_value) = 5]; - optional uint32 qos_tc = 6 [(attr_enum_value) = 6]; - optional uint64 mpls_exp_to_tc_map = 7 [(attr_enum_value) = 7]; - optional uint64 mpls_exp_to_color_map = 8 [(attr_enum_value) = 8]; - optional InsegEntryPopTtlMode pop_ttl_mode = 9 [(attr_enum_value) = 9]; - optional InsegEntryPopQosMode pop_qos_mode = 10 [(attr_enum_value) = 10]; - optional uint64 counter_id = 11 [(attr_enum_value) = 11]; + optional uint32 num_of_pop = 1 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 3 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 4 [(attr_enum_value) = 4]; + optional InsegEntryPscType psc_type = 5 [(attr_enum_value) = 5]; + optional uint32 qos_tc = 6 [(attr_enum_value) = 6]; + optional uint64 mpls_exp_to_tc_map = 7 [(attr_enum_value) = 7]; + optional uint64 mpls_exp_to_color_map = 8 [(attr_enum_value) = 8]; + optional InsegEntryPopTtlMode pop_ttl_mode = 9 [(attr_enum_value) = 9]; + optional InsegEntryPopQosMode pop_qos_mode = 10 [(attr_enum_value) = 10]; + optional uint64 counter_id = 11 [(attr_enum_value) = 11]; } message IpmcEntryAttribute { - optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; - optional uint64 output_group_id = 2 [(attr_enum_value) = 2]; - optional uint64 rpf_group_id = 3 [(attr_enum_value) = 3]; - optional uint64 counter_id = 4 [(attr_enum_value) = 4]; + optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 2 [(attr_enum_value) = 2]; + optional uint64 rpf_group_id = 3 [(attr_enum_value) = 3]; + optional uint64 counter_id = 4 [(attr_enum_value) = 4]; } message IpmcGroupAttribute { - optional uint32 ipmc_output_count = 1 [(attr_enum_value) = 1]; - repeated uint64 ipmc_member_list = 2 [(attr_enum_value) = 2]; + optional uint32 ipmc_output_count = 1 [(attr_enum_value) = 1]; + repeated uint64 ipmc_member_list = 2 [(attr_enum_value) = 2]; } message IpmcGroupMemberAttribute { - optional uint64 ipmc_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 ipmc_output_id = 2 [(attr_enum_value) = 2]; + optional uint64 ipmc_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 ipmc_output_id = 2 [(attr_enum_value) = 2]; } message IpsecAttribute { - optional bool term_remote_ip_match_supported = 1 [(attr_enum_value) = 1]; - optional bool switching_mode_cut_through_supported = 2 [(attr_enum_value) = 2]; - optional bool switching_mode_store_and_forward_supported = 3 [(attr_enum_value) = 3]; - optional bool stats_mode_read_supported = 4 [(attr_enum_value) = 4]; - optional bool stats_mode_read_clear_supported = 5 [(attr_enum_value) = 5]; - optional bool sn_32bit_supported = 6 [(attr_enum_value) = 6]; - optional bool esn_64bit_supported = 7 [(attr_enum_value) = 7]; - repeated IpsecCipher supported_cipher_list = 8 [(attr_enum_value) = 8]; - optional uint32 system_side_mtu = 9 [(attr_enum_value) = 9]; - optional bool warm_boot_supported = 10 [(attr_enum_value) = 10]; - optional bool warm_boot_enable = 11 [(attr_enum_value) = 11]; - optional bool external_sa_index_enable = 12 [(attr_enum_value) = 12]; - optional uint32 ctag_tpid = 13 [(attr_enum_value) = 13]; - optional uint32 stag_tpid = 14 [(attr_enum_value) = 14]; - optional uint32 max_vlan_tags_parsed = 15 [(attr_enum_value) = 15]; - optional uint64 octet_count_high_watermark = 16 [(attr_enum_value) = 16]; - optional uint64 octet_count_low_watermark = 17 [(attr_enum_value) = 17]; - optional StatsMode stats_mode = 18 [(attr_enum_value) = 18]; - optional uint32 available_ipsec_sa = 19 [(attr_enum_value) = 19]; - repeated uint64 sa_list = 20 [(attr_enum_value) = 20]; + optional bool term_remote_ip_match_supported = 1 [(attr_enum_value) = 1]; + optional bool switching_mode_cut_through_supported = 2 + [(attr_enum_value) = 2]; + optional bool switching_mode_store_and_forward_supported = 3 + [(attr_enum_value) = 3]; + optional bool stats_mode_read_supported = 4 [(attr_enum_value) = 4]; + optional bool stats_mode_read_clear_supported = 5 [(attr_enum_value) = 5]; + optional bool sn_32bit_supported = 6 [(attr_enum_value) = 6]; + optional bool esn_64bit_supported = 7 [(attr_enum_value) = 7]; + repeated IpsecCipher supported_cipher_list = 8 [(attr_enum_value) = 8]; + optional uint32 system_side_mtu = 9 [(attr_enum_value) = 9]; + optional bool warm_boot_supported = 10 [(attr_enum_value) = 10]; + optional bool warm_boot_enable = 11 [(attr_enum_value) = 11]; + optional bool external_sa_index_enable = 12 [(attr_enum_value) = 12]; + optional uint32 ctag_tpid = 13 [(attr_enum_value) = 13]; + optional uint32 stag_tpid = 14 [(attr_enum_value) = 14]; + optional uint32 max_vlan_tags_parsed = 15 [(attr_enum_value) = 15]; + optional uint64 octet_count_high_watermark = 16 [(attr_enum_value) = 16]; + optional uint64 octet_count_low_watermark = 17 [(attr_enum_value) = 17]; + optional StatsMode stats_mode = 18 [(attr_enum_value) = 18]; + optional uint32 available_ipsec_sa = 19 [(attr_enum_value) = 19]; + repeated uint64 sa_list = 20 [(attr_enum_value) = 20]; } message IpsecPortAttribute { - optional uint64 port_id = 1 [(attr_enum_value) = 1]; - optional bool ctag_enable = 2 [(attr_enum_value) = 2]; - optional bool stag_enable = 3 [(attr_enum_value) = 3]; - optional uint32 native_vlan_id = 4 [(attr_enum_value) = 4]; - optional bool vrf_from_packet_vlan_enable = 5 [(attr_enum_value) = 5]; - optional SwitchSwitchingMode switch_switching_mode = 6 [(attr_enum_value) = 6]; + optional uint64 port_id = 1 [(attr_enum_value) = 1]; + optional bool ctag_enable = 2 [(attr_enum_value) = 2]; + optional bool stag_enable = 3 [(attr_enum_value) = 3]; + optional uint32 native_vlan_id = 4 [(attr_enum_value) = 4]; + optional bool vrf_from_packet_vlan_enable = 5 [(attr_enum_value) = 5]; + optional SwitchSwitchingMode switch_switching_mode = 6 + [(attr_enum_value) = 6]; + optional StatsCountMode stats_count_mode = 7 [(attr_enum_value) = 7]; + repeated uint64 selective_counter_list = 8 [(attr_enum_value) = 8]; } message IpsecSaAttribute { - optional IpsecDirection ipsec_direction = 1 [(attr_enum_value) = 1]; - optional uint64 ipsec_id = 2 [(attr_enum_value) = 2]; - optional IpsecSaOctetCountStatus octet_count_status = 3 [(attr_enum_value) = 3]; - optional uint32 external_sa_index = 4 [(attr_enum_value) = 4]; - optional uint32 sa_index = 5 [(attr_enum_value) = 5]; - repeated uint64 ipsec_port_list = 6 [(attr_enum_value) = 6]; - optional uint32 ipsec_spi = 7 [(attr_enum_value) = 7]; - optional bool ipsec_esn_enable = 8 [(attr_enum_value) = 8]; - optional IpsecCipher ipsec_cipher = 9 [(attr_enum_value) = 9]; - optional bytes encrypt_key = 10 [(attr_enum_value) = 10]; - optional uint32 salt = 11 [(attr_enum_value) = 11]; - optional bytes auth_key = 12 [(attr_enum_value) = 12]; - optional bool ipsec_replay_protection_enable = 13 [(attr_enum_value) = 13]; - optional uint32 ipsec_replay_protection_window = 14 [(attr_enum_value) = 14]; - optional bytes term_dst_ip = 15 [(attr_enum_value) = 15]; - optional bool term_vlan_id_enable = 16 [(attr_enum_value) = 16]; - optional uint32 term_vlan_id = 17 [(attr_enum_value) = 17]; - optional bool term_src_ip_enable = 18 [(attr_enum_value) = 18]; - optional bytes term_src_ip = 19 [(attr_enum_value) = 19]; - optional uint64 egress_esn = 20 [(attr_enum_value) = 20]; - optional uint64 minimum_ingress_esn = 21 [(attr_enum_value) = 21]; + optional IpsecDirection ipsec_direction = 1 [(attr_enum_value) = 1]; + optional uint64 ipsec_id = 2 [(attr_enum_value) = 2]; + optional IpsecSaOctetCountStatus octet_count_status = 3 + [(attr_enum_value) = 3]; + optional uint32 external_sa_index = 4 [(attr_enum_value) = 4]; + optional uint32 sa_index = 5 [(attr_enum_value) = 5]; + repeated uint64 ipsec_port_list = 6 [(attr_enum_value) = 6]; + optional uint32 ipsec_spi = 7 [(attr_enum_value) = 7]; + optional bool ipsec_esn_enable = 8 [(attr_enum_value) = 8]; + optional IpsecCipher ipsec_cipher = 9 [(attr_enum_value) = 9]; + optional bytes encrypt_key = 10 [(attr_enum_value) = 10]; + optional uint32 salt = 11 [(attr_enum_value) = 11]; + optional bytes auth_key = 12 [(attr_enum_value) = 12]; + optional bool ipsec_replay_protection_enable = 13 [(attr_enum_value) = 13]; + optional uint32 ipsec_replay_protection_window = 14 [(attr_enum_value) = 14]; + optional bytes term_dst_ip = 15 [(attr_enum_value) = 15]; + optional bool term_vlan_id_enable = 16 [(attr_enum_value) = 16]; + optional uint32 term_vlan_id = 17 [(attr_enum_value) = 17]; + optional bool term_src_ip_enable = 18 [(attr_enum_value) = 18]; + optional bytes term_src_ip = 19 [(attr_enum_value) = 19]; + optional uint64 egress_esn = 20 [(attr_enum_value) = 20]; + optional uint64 minimum_ingress_esn = 21 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 22 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 23 [(attr_enum_value) = 23]; } message IsolationGroupAttribute { - optional IsolationGroupType type = 1 [(attr_enum_value) = 1]; - repeated uint64 isolation_member_list = 2 [(attr_enum_value) = 2]; + optional IsolationGroupType type = 1 [(attr_enum_value) = 1]; + repeated uint64 isolation_member_list = 2 [(attr_enum_value) = 2]; } message IsolationGroupMemberAttribute { - optional uint64 isolation_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 isolation_object = 2 [(attr_enum_value) = 2]; + optional uint64 isolation_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 isolation_object = 2 [(attr_enum_value) = 2]; } message L2mcEntryAttribute { - optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; - optional uint64 output_group_id = 2 [(attr_enum_value) = 2]; + optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 2 [(attr_enum_value) = 2]; } message L2mcGroupAttribute { - optional uint32 l2mc_output_count = 1 [(attr_enum_value) = 1]; - repeated uint64 l2mc_member_list = 2 [(attr_enum_value) = 2]; + optional uint32 l2mc_output_count = 1 [(attr_enum_value) = 1]; + repeated uint64 l2mc_member_list = 2 [(attr_enum_value) = 2]; } message L2mcGroupMemberAttribute { - optional uint64 l2mc_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 l2mc_output_id = 2 [(attr_enum_value) = 2]; - optional bytes l2mc_endpoint_ip = 3 [(attr_enum_value) = 3]; + optional uint64 l2mc_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 l2mc_output_id = 2 [(attr_enum_value) = 2]; + optional bytes l2mc_endpoint_ip = 3 [(attr_enum_value) = 3]; } message LagAttribute { - repeated uint64 port_list = 1 [(attr_enum_value) = 1]; - optional uint64 ingress_acl = 2 [(attr_enum_value) = 2]; - optional uint64 egress_acl = 3 [(attr_enum_value) = 3]; - optional uint32 port_vlan_id = 4 [(attr_enum_value) = 4]; - optional uint32 default_vlan_priority = 5 [(attr_enum_value) = 5]; - optional bool drop_untagged = 6 [(attr_enum_value) = 6]; - optional bool drop_tagged = 7 [(attr_enum_value) = 7]; - optional uint32 tpid = 8 [(attr_enum_value) = 8]; - optional uint32 system_port_aggregate_id = 9 [(attr_enum_value) = 9]; - optional bytes label = 10 [(attr_enum_value) = 10]; - optional uint64 ars_object_id = 11 [(attr_enum_value) = 11]; - optional uint32 ars_packet_drops = 12 [(attr_enum_value) = 12]; - optional uint32 ars_port_reassignments = 13 [(attr_enum_value) = 13]; + repeated uint64 port_list = 1 [(attr_enum_value) = 1]; + optional uint64 ingress_acl = 2 [(attr_enum_value) = 2]; + optional uint64 egress_acl = 3 [(attr_enum_value) = 3]; + optional uint32 port_vlan_id = 4 [(attr_enum_value) = 4]; + optional uint32 default_vlan_priority = 5 [(attr_enum_value) = 5]; + optional bool drop_untagged = 6 [(attr_enum_value) = 6]; + optional bool drop_tagged = 7 [(attr_enum_value) = 7]; + optional uint32 tpid = 8 [(attr_enum_value) = 8]; + optional uint32 system_port_aggregate_id = 9 [(attr_enum_value) = 9]; + optional bytes label = 10 [(attr_enum_value) = 10]; + optional uint64 ars_object_id = 11 [(attr_enum_value) = 11]; + optional uint32 ars_packet_drops = 12 [(attr_enum_value) = 12]; + optional uint32 ars_port_reassignments = 13 [(attr_enum_value) = 13]; } message LagMemberAttribute { - optional uint64 lag_id = 1 [(attr_enum_value) = 1]; - optional uint64 port_id = 2 [(attr_enum_value) = 2]; - optional bool egress_disable = 3 [(attr_enum_value) = 3]; - optional bool ingress_disable = 4 [(attr_enum_value) = 4]; + optional uint64 lag_id = 1 [(attr_enum_value) = 1]; + optional uint64 port_id = 2 [(attr_enum_value) = 2]; + optional bool egress_disable = 3 [(attr_enum_value) = 3]; + optional bool ingress_disable = 4 [(attr_enum_value) = 4]; } message MacsecAttribute { - optional MacsecDirection direction = 1 [(attr_enum_value) = 1]; - optional bool switching_mode_cut_through_supported = 2 [(attr_enum_value) = 2]; - optional bool switching_mode_store_and_forward_supported = 3 [(attr_enum_value) = 3]; - optional bool stats_mode_read_supported = 4 [(attr_enum_value) = 4]; - optional bool stats_mode_read_clear_supported = 5 [(attr_enum_value) = 5]; - optional bool sci_in_ingress_macsec_acl = 6 [(attr_enum_value) = 6]; - repeated MacsecCipherSuite supported_cipher_suite_list = 7 [(attr_enum_value) = 7]; - optional bool pn_32bit_supported = 8 [(attr_enum_value) = 8]; - optional bool xpn_64bit_supported = 9 [(attr_enum_value) = 9]; - optional bool gcm_aes128_supported = 10 [(attr_enum_value) = 10]; - optional bool gcm_aes256_supported = 11 [(attr_enum_value) = 11]; - repeated uint32 sectag_offsets_supported = 12 [(attr_enum_value) = 12]; - optional uint32 system_side_mtu = 13 [(attr_enum_value) = 13]; - optional bool warm_boot_supported = 14 [(attr_enum_value) = 14]; - optional bool warm_boot_enable = 15 [(attr_enum_value) = 15]; - optional uint32 ctag_tpid = 16 [(attr_enum_value) = 16]; - optional uint32 stag_tpid = 17 [(attr_enum_value) = 17]; - optional uint32 max_vlan_tags_parsed = 18 [(attr_enum_value) = 18]; - optional StatsMode stats_mode = 19 [(attr_enum_value) = 19]; - optional bool physical_bypass_enable = 20 [(attr_enum_value) = 20]; - repeated uint64 supported_port_list = 21 [(attr_enum_value) = 21]; - optional uint32 available_macsec_flow = 22 [(attr_enum_value) = 22]; - repeated uint64 flow_list = 23 [(attr_enum_value) = 23]; - optional uint32 available_macsec_sc = 24 [(attr_enum_value) = 24]; - optional uint32 available_macsec_sa = 25 [(attr_enum_value) = 25]; - optional MacsecMaxSecureAssociationsPerSc max_secure_associations_per_sc = 26 [(attr_enum_value) = 26]; + optional MacsecDirection direction = 1 [(attr_enum_value) = 1]; + optional bool switching_mode_cut_through_supported = 2 + [(attr_enum_value) = 2]; + optional bool switching_mode_store_and_forward_supported = 3 + [(attr_enum_value) = 3]; + optional bool stats_mode_read_supported = 4 [(attr_enum_value) = 4]; + optional bool stats_mode_read_clear_supported = 5 [(attr_enum_value) = 5]; + optional bool sci_in_ingress_macsec_acl = 6 [(attr_enum_value) = 6]; + repeated MacsecCipherSuite supported_cipher_suite_list = 7 + [(attr_enum_value) = 7]; + optional bool pn_32bit_supported = 8 [(attr_enum_value) = 8]; + optional bool xpn_64bit_supported = 9 [(attr_enum_value) = 9]; + optional bool gcm_aes128_supported = 10 [(attr_enum_value) = 10]; + optional bool gcm_aes256_supported = 11 [(attr_enum_value) = 11]; + repeated uint32 sectag_offsets_supported = 12 [(attr_enum_value) = 12]; + optional uint32 system_side_mtu = 13 [(attr_enum_value) = 13]; + optional bool warm_boot_supported = 14 [(attr_enum_value) = 14]; + optional bool warm_boot_enable = 15 [(attr_enum_value) = 15]; + optional uint32 ctag_tpid = 16 [(attr_enum_value) = 16]; + optional uint32 stag_tpid = 17 [(attr_enum_value) = 17]; + optional uint32 max_vlan_tags_parsed = 18 [(attr_enum_value) = 18]; + optional StatsMode stats_mode = 19 [(attr_enum_value) = 19]; + optional bool physical_bypass_enable = 20 [(attr_enum_value) = 20]; + repeated uint64 supported_port_list = 21 [(attr_enum_value) = 21]; + optional uint32 available_macsec_flow = 22 [(attr_enum_value) = 22]; + repeated uint64 flow_list = 23 [(attr_enum_value) = 23]; + optional uint32 available_macsec_sc = 24 [(attr_enum_value) = 24]; + optional uint32 available_macsec_sa = 25 [(attr_enum_value) = 25]; + optional MacsecMaxSecureAssociationsPerSc max_secure_associations_per_sc = 26 + [(attr_enum_value) = 26]; } message MacsecFlowAttribute { - optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; - repeated uint64 acl_entry_list = 2 [(attr_enum_value) = 2]; - repeated uint64 sc_list = 3 [(attr_enum_value) = 3]; + optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; + repeated uint64 acl_entry_list = 2 [(attr_enum_value) = 2]; + repeated uint64 sc_list = 3 [(attr_enum_value) = 3]; + optional StatsCountMode stats_count_mode = 4 [(attr_enum_value) = 4]; + repeated uint64 selective_counter_list = 5 [(attr_enum_value) = 5]; } message MacsecPortAttribute { - optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; - optional uint64 port_id = 2 [(attr_enum_value) = 2]; - optional bool ctag_enable = 3 [(attr_enum_value) = 3]; - optional bool stag_enable = 4 [(attr_enum_value) = 4]; - optional SwitchSwitchingMode switch_switching_mode = 5 [(attr_enum_value) = 5]; + optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; + optional uint64 port_id = 2 [(attr_enum_value) = 2]; + optional bool ctag_enable = 3 [(attr_enum_value) = 3]; + optional bool stag_enable = 4 [(attr_enum_value) = 4]; + optional SwitchSwitchingMode switch_switching_mode = 5 + [(attr_enum_value) = 5]; + optional StatsCountMode stats_count_mode = 6 [(attr_enum_value) = 6]; + repeated uint64 selective_counter_list = 7 [(attr_enum_value) = 7]; } message MacsecSaAttribute { - optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; - optional uint64 sc_id = 2 [(attr_enum_value) = 2]; - optional uint32 an = 3 [(attr_enum_value) = 3]; - optional bytes sak = 4 [(attr_enum_value) = 4]; - optional bytes salt = 5 [(attr_enum_value) = 5]; - optional bytes auth_key = 6 [(attr_enum_value) = 6]; - optional uint64 configured_egress_xpn = 7 [(attr_enum_value) = 7]; - optional uint64 current_xpn = 8 [(attr_enum_value) = 8]; - optional uint64 minimum_ingress_xpn = 9 [(attr_enum_value) = 9]; - optional uint32 macsec_ssci = 10 [(attr_enum_value) = 10]; + optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; + optional uint64 sc_id = 2 [(attr_enum_value) = 2]; + optional uint32 an = 3 [(attr_enum_value) = 3]; + optional bytes sak = 4 [(attr_enum_value) = 4]; + optional bytes salt = 5 [(attr_enum_value) = 5]; + optional bytes auth_key = 6 [(attr_enum_value) = 6]; + optional uint64 configured_egress_xpn = 7 [(attr_enum_value) = 7]; + optional uint64 current_xpn = 8 [(attr_enum_value) = 8]; + optional uint64 minimum_ingress_xpn = 9 [(attr_enum_value) = 9]; + optional uint32 macsec_ssci = 10 [(attr_enum_value) = 10]; } message MacsecScAttribute { - optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; - optional uint64 flow_id = 2 [(attr_enum_value) = 2]; - optional uint64 macsec_sci = 3 [(attr_enum_value) = 3]; - optional bool macsec_explicit_sci_enable = 4 [(attr_enum_value) = 4]; - optional uint32 macsec_sectag_offset = 5 [(attr_enum_value) = 5]; - optional uint64 active_egress_sa_id = 6 [(attr_enum_value) = 6]; - optional bool macsec_replay_protection_enable = 7 [(attr_enum_value) = 7]; - optional uint32 macsec_replay_protection_window = 8 [(attr_enum_value) = 8]; - repeated uint64 sa_list = 9 [(attr_enum_value) = 9]; - optional MacsecCipherSuite macsec_cipher_suite = 10 [(attr_enum_value) = 10]; - optional bool encryption_enable = 11 [(attr_enum_value) = 11]; + optional MacsecDirection macsec_direction = 1 [(attr_enum_value) = 1]; + optional uint64 flow_id = 2 [(attr_enum_value) = 2]; + optional uint64 macsec_sci = 3 [(attr_enum_value) = 3]; + optional bool macsec_explicit_sci_enable = 4 [(attr_enum_value) = 4]; + optional uint32 macsec_sectag_offset = 5 [(attr_enum_value) = 5]; + optional uint64 active_egress_sa_id = 6 [(attr_enum_value) = 6]; + optional bool macsec_replay_protection_enable = 7 [(attr_enum_value) = 7]; + optional uint32 macsec_replay_protection_window = 8 [(attr_enum_value) = 8]; + repeated uint64 sa_list = 9 [(attr_enum_value) = 9]; + optional MacsecCipherSuite macsec_cipher_suite = 10 [(attr_enum_value) = 10]; + optional bool encryption_enable = 11 [(attr_enum_value) = 11]; } message McastFdbEntryAttribute { - optional uint64 group_id = 1 [(attr_enum_value) = 1]; - optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; - optional uint32 meta_data = 3 [(attr_enum_value) = 3]; + optional uint64 group_id = 1 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint32 meta_data = 3 [(attr_enum_value) = 3]; } message MirrorSessionAttribute { - optional MirrorSessionType type = 1 [(attr_enum_value) = 1]; - optional uint64 monitor_port = 2 [(attr_enum_value) = 2]; - optional uint32 truncate_size = 3 [(attr_enum_value) = 3]; - optional uint32 sample_rate = 4 [(attr_enum_value) = 4]; - optional MirrorSessionCongestionMode congestion_mode = 5 [(attr_enum_value) = 5]; - optional uint32 tc = 6 [(attr_enum_value) = 6]; - optional uint32 vlan_tpid = 7 [(attr_enum_value) = 7]; - optional uint32 vlan_id = 8 [(attr_enum_value) = 8]; - optional uint32 vlan_pri = 9 [(attr_enum_value) = 9]; - optional uint32 vlan_cfi = 10 [(attr_enum_value) = 10]; - optional bool vlan_header_valid = 11 [(attr_enum_value) = 11]; - optional ErspanEncapsulationType erspan_encapsulation_type = 12 [(attr_enum_value) = 12]; - optional uint32 iphdr_version = 13 [(attr_enum_value) = 13]; - optional uint32 tos = 14 [(attr_enum_value) = 14]; - optional uint32 ttl = 15 [(attr_enum_value) = 15]; - optional bytes src_ip_address = 16 [(attr_enum_value) = 16]; - optional bytes dst_ip_address = 17 [(attr_enum_value) = 17]; - optional bytes src_mac_address = 18 [(attr_enum_value) = 18]; - optional bytes dst_mac_address = 19 [(attr_enum_value) = 19]; - optional uint32 gre_protocol_type = 20 [(attr_enum_value) = 20]; - optional bool monitor_portlist_valid = 21 [(attr_enum_value) = 21]; - repeated uint64 monitor_portlist = 22 [(attr_enum_value) = 22]; - optional uint64 policer = 23 [(attr_enum_value) = 23]; - optional uint32 udp_src_port = 24 [(attr_enum_value) = 24]; - optional uint32 udp_dst_port = 25 [(attr_enum_value) = 25]; - optional uint64 counter_id = 26 [(attr_enum_value) = 26]; + optional MirrorSessionType type = 1 [(attr_enum_value) = 1]; + optional uint64 monitor_port = 2 [(attr_enum_value) = 2]; + optional uint32 truncate_size = 3 [(attr_enum_value) = 3]; + optional uint32 sample_rate = 4 [(attr_enum_value) = 4]; + optional MirrorSessionCongestionMode congestion_mode = 5 + [(attr_enum_value) = 5]; + optional uint32 tc = 6 [(attr_enum_value) = 6]; + optional uint32 vlan_tpid = 7 [(attr_enum_value) = 7]; + optional uint32 vlan_id = 8 [(attr_enum_value) = 8]; + optional uint32 vlan_pri = 9 [(attr_enum_value) = 9]; + optional uint32 vlan_cfi = 10 [(attr_enum_value) = 10]; + optional bool vlan_header_valid = 11 [(attr_enum_value) = 11]; + optional ErspanEncapsulationType erspan_encapsulation_type = 12 + [(attr_enum_value) = 12]; + optional uint32 iphdr_version = 13 [(attr_enum_value) = 13]; + optional uint32 tos = 14 [(attr_enum_value) = 14]; + optional uint32 ttl = 15 [(attr_enum_value) = 15]; + optional bytes src_ip_address = 16 [(attr_enum_value) = 16]; + optional bytes dst_ip_address = 17 [(attr_enum_value) = 17]; + optional bytes src_mac_address = 18 [(attr_enum_value) = 18]; + optional bytes dst_mac_address = 19 [(attr_enum_value) = 19]; + optional uint32 gre_protocol_type = 20 [(attr_enum_value) = 20]; + optional bool monitor_portlist_valid = 21 [(attr_enum_value) = 21]; + repeated uint64 monitor_portlist = 22 [(attr_enum_value) = 22]; + optional uint64 policer = 23 [(attr_enum_value) = 23]; + optional uint32 udp_src_port = 24 [(attr_enum_value) = 24]; + optional uint32 udp_dst_port = 25 [(attr_enum_value) = 25]; + optional uint64 counter_id = 26 [(attr_enum_value) = 26]; } message MyMacAttribute { - optional uint32 priority = 1 [(attr_enum_value) = 1]; - optional uint64 port_id = 2 [(attr_enum_value) = 2]; - optional uint32 vlan_id = 3 [(attr_enum_value) = 3]; - optional bytes mac_address = 4 [(attr_enum_value) = 4]; - optional bytes mac_address_mask = 5 [(attr_enum_value) = 5]; + optional uint32 priority = 1 [(attr_enum_value) = 1]; + optional uint64 port_id = 2 [(attr_enum_value) = 2]; + optional uint32 vlan_id = 3 [(attr_enum_value) = 3]; + optional bytes mac_address = 4 [(attr_enum_value) = 4]; + optional bytes mac_address_mask = 5 [(attr_enum_value) = 5]; } message MySidEntryAttribute { - optional MySidEntryEndpointBehavior endpoint_behavior = 1 [(attr_enum_value) = 1]; - optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 2 [(attr_enum_value) = 2]; - optional PacketAction packet_action = 3 [(attr_enum_value) = 3]; - optional uint32 trap_priority = 4 [(attr_enum_value) = 4]; - optional uint64 next_hop_id = 5 [(attr_enum_value) = 5]; - optional uint64 tunnel_id = 6 [(attr_enum_value) = 6]; - optional uint64 vrf = 7 [(attr_enum_value) = 7]; - optional uint64 counter_id = 8 [(attr_enum_value) = 8]; + optional MySidEntryEndpointBehavior endpoint_behavior = 1 + [(attr_enum_value) = 1]; + optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 2 + [(attr_enum_value) = 2]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 3]; + optional uint32 trap_priority = 4 [(attr_enum_value) = 4]; + optional uint64 next_hop_id = 5 [(attr_enum_value) = 5]; + optional uint64 tunnel_id = 6 [(attr_enum_value) = 6]; + optional uint64 vrf = 7 [(attr_enum_value) = 7]; + optional uint64 counter_id = 8 [(attr_enum_value) = 8]; } message NatEntryAttribute { - optional NatType nat_type = 1 [(attr_enum_value) = 1]; - optional bytes src_ip = 2 [(attr_enum_value) = 2]; - optional bytes src_ip_mask = 3 [(attr_enum_value) = 3]; - optional uint64 vr_id = 4 [(attr_enum_value) = 4]; - optional bytes dst_ip = 5 [(attr_enum_value) = 5]; - optional bytes dst_ip_mask = 6 [(attr_enum_value) = 6]; - optional uint32 l4_src_port = 7 [(attr_enum_value) = 7]; - optional uint32 l4_dst_port = 8 [(attr_enum_value) = 8]; - optional bool enable_packet_count = 9 [(attr_enum_value) = 9]; - optional uint64 packet_count = 10 [(attr_enum_value) = 10]; - optional bool enable_byte_count = 11 [(attr_enum_value) = 11]; - optional uint64 byte_count = 12 [(attr_enum_value) = 12]; - optional bool hit_bit_cor = 13 [(attr_enum_value) = 13]; - optional bool hit_bit = 14 [(attr_enum_value) = 14]; - optional uint32 aging_time = 15 [(attr_enum_value) = 15]; + optional NatType nat_type = 1 [(attr_enum_value) = 1]; + optional bytes src_ip = 2 [(attr_enum_value) = 2]; + optional bytes src_ip_mask = 3 [(attr_enum_value) = 3]; + optional uint64 vr_id = 4 [(attr_enum_value) = 4]; + optional bytes dst_ip = 5 [(attr_enum_value) = 5]; + optional bytes dst_ip_mask = 6 [(attr_enum_value) = 6]; + optional uint32 l4_src_port = 7 [(attr_enum_value) = 7]; + optional uint32 l4_dst_port = 8 [(attr_enum_value) = 8]; + optional bool enable_packet_count = 9 [(attr_enum_value) = 9]; + optional uint64 packet_count = 10 [(attr_enum_value) = 10]; + optional bool enable_byte_count = 11 [(attr_enum_value) = 11]; + optional uint64 byte_count = 12 [(attr_enum_value) = 12]; + optional bool hit_bit_cor = 13 [(attr_enum_value) = 13]; + optional bool hit_bit = 14 [(attr_enum_value) = 14]; + optional uint32 aging_time = 15 [(attr_enum_value) = 15]; } message NatZoneCounterAttribute { - optional NatType nat_type = 1 [(attr_enum_value) = 1]; - optional uint32 zone_id = 2 [(attr_enum_value) = 2]; - optional bool enable_discard = 3 [(attr_enum_value) = 3]; - optional uint64 discard_packet_count = 4 [(attr_enum_value) = 4]; - optional bool enable_translation_needed = 5 [(attr_enum_value) = 5]; - optional uint64 translation_needed_packet_count = 6 [(attr_enum_value) = 6]; - optional bool enable_translations = 7 [(attr_enum_value) = 7]; - optional uint64 translations_packet_count = 8 [(attr_enum_value) = 8]; + optional NatType nat_type = 1 [(attr_enum_value) = 1]; + optional uint32 zone_id = 2 [(attr_enum_value) = 2]; + optional bool enable_discard = 3 [(attr_enum_value) = 3]; + optional uint64 discard_packet_count = 4 [(attr_enum_value) = 4]; + optional bool enable_translation_needed = 5 [(attr_enum_value) = 5]; + optional uint64 translation_needed_packet_count = 6 [(attr_enum_value) = 6]; + optional bool enable_translations = 7 [(attr_enum_value) = 7]; + optional uint64 translations_packet_count = 8 [(attr_enum_value) = 8]; } message NeighborEntryAttribute { - optional bytes dst_mac_address = 1 [(attr_enum_value) = 1]; - optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; - optional uint64 user_trap_id = 3 [(attr_enum_value) = 3]; - optional bool no_host_route = 4 [(attr_enum_value) = 4]; - optional uint32 meta_data = 5 [(attr_enum_value) = 5]; - optional uint64 counter_id = 6 [(attr_enum_value) = 6]; - optional uint32 encap_index = 7 [(attr_enum_value) = 7]; - optional bool encap_impose_index = 8 [(attr_enum_value) = 8]; - optional bool is_local = 9 [(attr_enum_value) = 9]; - optional IpAddrFamily ip_addr_family = 10 [(attr_enum_value) = 10]; + optional bytes dst_mac_address = 1 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 3 [(attr_enum_value) = 3]; + optional bool no_host_route = 4 [(attr_enum_value) = 4]; + optional uint32 meta_data = 5 [(attr_enum_value) = 5]; + optional uint64 counter_id = 6 [(attr_enum_value) = 6]; + optional uint32 encap_index = 7 [(attr_enum_value) = 7]; + optional bool encap_impose_index = 8 [(attr_enum_value) = 8]; + optional bool is_local = 9 [(attr_enum_value) = 9]; + optional IpAddrFamily ip_addr_family = 10 [(attr_enum_value) = 10]; } message NextHopAttribute { - optional NextHopType type = 1 [(attr_enum_value) = 1]; - optional bytes ip = 2 [(attr_enum_value) = 2]; - optional uint64 router_interface_id = 3 [(attr_enum_value) = 3]; - optional uint64 tunnel_id = 4 [(attr_enum_value) = 4]; - optional uint32 tunnel_vni = 5 [(attr_enum_value) = 5]; - optional bytes tunnel_mac = 6 [(attr_enum_value) = 6]; - optional uint64 srv6_sidlist_id = 7 [(attr_enum_value) = 7]; - repeated uint32 labelstack = 8 [(attr_enum_value) = 8]; - optional uint64 counter_id = 9 [(attr_enum_value) = 9]; - optional bool disable_decrement_ttl = 10 [(attr_enum_value) = 10]; - optional OutsegType outseg_type = 11 [(attr_enum_value) = 11]; - optional OutsegTtlMode outseg_ttl_mode = 12 [(attr_enum_value) = 12]; - optional uint32 outseg_ttl_value = 13 [(attr_enum_value) = 13]; - optional OutsegExpMode outseg_exp_mode = 14 [(attr_enum_value) = 14]; - optional uint32 outseg_exp_value = 15 [(attr_enum_value) = 15]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 16 [(attr_enum_value) = 16]; - optional bool disable_src_mac_rewrite = 17 [(attr_enum_value) = 17]; - optional bool disable_dst_mac_rewrite = 18 [(attr_enum_value) = 18]; - optional bool disable_vlan_rewrite = 19 [(attr_enum_value) = 19]; + optional NextHopType type = 1 [(attr_enum_value) = 1]; + optional bytes ip = 2 [(attr_enum_value) = 2]; + optional uint64 router_interface_id = 3 [(attr_enum_value) = 3]; + optional uint64 tunnel_id = 4 [(attr_enum_value) = 4]; + optional uint32 tunnel_vni = 5 [(attr_enum_value) = 5]; + optional bytes tunnel_mac = 6 [(attr_enum_value) = 6]; + optional uint64 srv6_sidlist_id = 7 [(attr_enum_value) = 7]; + repeated uint32 labelstack = 8 [(attr_enum_value) = 8]; + optional uint64 counter_id = 9 [(attr_enum_value) = 9]; + optional bool disable_decrement_ttl = 10 [(attr_enum_value) = 10]; + optional OutsegType outseg_type = 11 [(attr_enum_value) = 11]; + optional OutsegTtlMode outseg_ttl_mode = 12 [(attr_enum_value) = 12]; + optional uint32 outseg_ttl_value = 13 [(attr_enum_value) = 13]; + optional OutsegExpMode outseg_exp_mode = 14 [(attr_enum_value) = 14]; + optional uint32 outseg_exp_value = 15 [(attr_enum_value) = 15]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 16 + [(attr_enum_value) = 16]; + optional bool disable_src_mac_rewrite = 17 [(attr_enum_value) = 17]; + optional bool disable_dst_mac_rewrite = 18 [(attr_enum_value) = 18]; + optional bool disable_vlan_rewrite = 19 [(attr_enum_value) = 19]; } message NextHopGroupAttribute { - optional uint32 next_hop_count = 1 [(attr_enum_value) = 1]; - repeated uint64 next_hop_member_list = 2 [(attr_enum_value) = 2]; - optional NextHopGroupType type = 3 [(attr_enum_value) = 3]; - optional bool set_switchover = 4 [(attr_enum_value) = 4]; - optional uint64 counter_id = 5 [(attr_enum_value) = 5]; - optional uint32 configured_size = 6 [(attr_enum_value) = 6]; - optional uint32 real_size = 7 [(attr_enum_value) = 7]; - optional uint64 selection_map = 8 [(attr_enum_value) = 8]; - optional bool hierarchical_nexthop = 9 [(attr_enum_value) = 9]; - optional uint64 ars_object_id = 10 [(attr_enum_value) = 10]; - optional uint32 ars_packet_drops = 11 [(attr_enum_value) = 11]; - optional uint32 ars_next_hop_reassignments = 12 [(attr_enum_value) = 12]; - optional uint32 ars_port_reassignments = 13 [(attr_enum_value) = 13]; - repeated uint64 next_hop_list = 14 [(attr_enum_value) = 14]; - repeated uint32 next_hop_member_weight_list = 15 [(attr_enum_value) = 15]; - repeated uint64 next_hop_member_counter_list = 16 [(attr_enum_value) = 16]; + optional uint32 next_hop_count = 1 [(attr_enum_value) = 1]; + repeated uint64 next_hop_member_list = 2 [(attr_enum_value) = 2]; + optional NextHopGroupType type = 3 [(attr_enum_value) = 3]; + optional bool set_switchover = 4 [(attr_enum_value) = 4]; + optional uint64 counter_id = 5 [(attr_enum_value) = 5]; + optional uint32 configured_size = 6 [(attr_enum_value) = 6]; + optional uint32 real_size = 7 [(attr_enum_value) = 7]; + optional uint64 selection_map = 8 [(attr_enum_value) = 8]; + optional bool hierarchical_nexthop = 9 [(attr_enum_value) = 9]; + optional uint64 ars_object_id = 10 [(attr_enum_value) = 10]; + optional uint32 ars_packet_drops = 11 [(attr_enum_value) = 11]; + optional uint32 ars_next_hop_reassignments = 12 [(attr_enum_value) = 12]; + optional uint32 ars_port_reassignments = 13 [(attr_enum_value) = 13]; + repeated uint64 next_hop_list = 14 [(attr_enum_value) = 14]; + repeated uint32 next_hop_member_weight_list = 15 [(attr_enum_value) = 15]; + repeated uint64 next_hop_member_counter_list = 16 [(attr_enum_value) = 16]; } message NextHopGroupMapAttribute { - optional NextHopGroupMapType type = 1 [(attr_enum_value) = 1]; - repeated UintMap map_to_value_list = 2 [(attr_enum_value) = 2]; + optional NextHopGroupMapType type = 1 [(attr_enum_value) = 1]; + repeated UintMap map_to_value_list = 2 [(attr_enum_value) = 2]; } message NextHopGroupMemberAttribute { - optional uint64 next_hop_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 next_hop_id = 2 [(attr_enum_value) = 2]; - optional uint32 weight = 3 [(attr_enum_value) = 3]; - optional NextHopGroupMemberConfiguredRole configured_role = 4 [(attr_enum_value) = 4]; - optional NextHopGroupMemberObservedRole observed_role = 5 [(attr_enum_value) = 5]; - optional uint64 monitored_object = 6 [(attr_enum_value) = 6]; - optional uint32 index = 7 [(attr_enum_value) = 7]; - optional uint32 sequence_id = 8 [(attr_enum_value) = 8]; - optional uint64 counter_id = 9 [(attr_enum_value) = 9]; - optional bool ars_alternate_path = 10 [(attr_enum_value) = 10]; + optional uint64 next_hop_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 next_hop_id = 2 [(attr_enum_value) = 2]; + optional uint32 weight = 3 [(attr_enum_value) = 3]; + optional NextHopGroupMemberConfiguredRole configured_role = 4 + [(attr_enum_value) = 4]; + optional NextHopGroupMemberObservedRole observed_role = 5 + [(attr_enum_value) = 5]; + optional uint64 monitored_object = 6 [(attr_enum_value) = 6]; + optional uint32 index = 7 [(attr_enum_value) = 7]; + optional uint32 sequence_id = 8 [(attr_enum_value) = 8]; + optional uint64 counter_id = 9 [(attr_enum_value) = 9]; + optional bool ars_alternate_path = 10 [(attr_enum_value) = 10]; } message PolicerAttribute { - optional MeterType meter_type = 1 [(attr_enum_value) = 1]; - optional PolicerMode mode = 2 [(attr_enum_value) = 2]; - optional PolicerColorSource color_source = 3 [(attr_enum_value) = 3]; - optional uint64 cbs = 4 [(attr_enum_value) = 4]; - optional uint64 cir = 5 [(attr_enum_value) = 5]; - optional uint64 pbs = 6 [(attr_enum_value) = 6]; - optional uint64 pir = 7 [(attr_enum_value) = 7]; - optional PacketAction green_packet_action = 8 [(attr_enum_value) = 8]; - optional PacketAction yellow_packet_action = 9 [(attr_enum_value) = 9]; - optional PacketAction red_packet_action = 10 [(attr_enum_value) = 10]; - repeated PacketAction enable_counter_packet_action_list = 11 [(attr_enum_value) = 11]; - optional ObjectStage object_stage = 12 [(attr_enum_value) = 12]; + optional MeterType meter_type = 1 [(attr_enum_value) = 1]; + optional PolicerMode mode = 2 [(attr_enum_value) = 2]; + optional PolicerColorSource color_source = 3 [(attr_enum_value) = 3]; + optional uint64 cbs = 4 [(attr_enum_value) = 4]; + optional uint64 cir = 5 [(attr_enum_value) = 5]; + optional uint64 pbs = 6 [(attr_enum_value) = 6]; + optional uint64 pir = 7 [(attr_enum_value) = 7]; + optional PacketAction green_packet_action = 8 [(attr_enum_value) = 8]; + optional PacketAction yellow_packet_action = 9 [(attr_enum_value) = 9]; + optional PacketAction red_packet_action = 10 [(attr_enum_value) = 10]; + repeated PacketAction enable_counter_packet_action_list = 11 + [(attr_enum_value) = 11]; + optional ObjectStage object_stage = 12 [(attr_enum_value) = 12]; + optional StatsCountMode stats_count_mode = 13 [(attr_enum_value) = 13]; + repeated uint64 selective_counter_list = 14 [(attr_enum_value) = 14]; } message PortAttribute { - optional PortType type = 1 [(attr_enum_value) = 1]; - optional PortOperStatus oper_status = 2 [(attr_enum_value) = 2]; - repeated PortBreakoutModeType supported_breakout_mode_type = 3 [(attr_enum_value) = 3]; - optional PortBreakoutModeType current_breakout_mode_type = 4 [(attr_enum_value) = 4]; - optional uint32 qos_number_of_queues = 5 [(attr_enum_value) = 5]; - repeated uint64 qos_queue_list = 6 [(attr_enum_value) = 6]; - optional uint32 qos_number_of_scheduler_groups = 7 [(attr_enum_value) = 7]; - repeated uint64 qos_scheduler_group_list = 8 [(attr_enum_value) = 8]; - optional uint32 qos_maximum_headroom_size = 9 [(attr_enum_value) = 9]; - repeated uint32 supported_speed = 10 [(attr_enum_value) = 10]; - repeated PortFecMode supported_fec_mode = 11 [(attr_enum_value) = 11]; - repeated PortFecModeExtended supported_fec_mode_extended = 12 [(attr_enum_value) = 12]; - repeated uint32 supported_half_duplex_speed = 13 [(attr_enum_value) = 13]; - optional bool supported_auto_neg_mode = 14 [(attr_enum_value) = 14]; - optional PortFlowControlMode supported_flow_control_mode = 15 [(attr_enum_value) = 15]; - optional bool supported_asymmetric_pause_mode = 16 [(attr_enum_value) = 16]; - optional PortMediaType supported_media_type = 17 [(attr_enum_value) = 17]; - repeated uint32 remote_advertised_speed = 18 [(attr_enum_value) = 18]; - repeated PortFecMode remote_advertised_fec_mode = 19 [(attr_enum_value) = 19]; - repeated PortFecModeExtended remote_advertised_fec_mode_extended = 20 [(attr_enum_value) = 20]; - repeated uint32 remote_advertised_half_duplex_speed = 21 [(attr_enum_value) = 21]; - optional bool remote_advertised_auto_neg_mode = 22 [(attr_enum_value) = 22]; - optional PortFlowControlMode remote_advertised_flow_control_mode = 23 [(attr_enum_value) = 23]; - optional bool remote_advertised_asymmetric_pause_mode = 24 [(attr_enum_value) = 24]; - optional PortMediaType remote_advertised_media_type = 25 [(attr_enum_value) = 25]; - optional uint32 remote_advertised_oui_code = 26 [(attr_enum_value) = 26]; - optional uint32 number_of_ingress_priority_groups = 27 [(attr_enum_value) = 27]; - repeated uint64 ingress_priority_group_list = 28 [(attr_enum_value) = 28]; - repeated PortEyeValues eye_values = 29 [(attr_enum_value) = 29]; - optional uint32 oper_speed = 30 [(attr_enum_value) = 30]; - repeated uint32 hw_lane_list = 31 [(attr_enum_value) = 31]; - optional uint32 speed = 32 [(attr_enum_value) = 32]; - optional bool full_duplex_mode = 33 [(attr_enum_value) = 33]; - optional bool auto_neg_mode = 34 [(attr_enum_value) = 34]; - optional bool admin_state = 35 [(attr_enum_value) = 35]; - optional PortMediaType media_type = 36 [(attr_enum_value) = 36]; - repeated uint32 advertised_speed = 37 [(attr_enum_value) = 37]; - repeated PortFecMode advertised_fec_mode = 38 [(attr_enum_value) = 38]; - repeated PortFecModeExtended advertised_fec_mode_extended = 39 [(attr_enum_value) = 39]; - repeated uint32 advertised_half_duplex_speed = 40 [(attr_enum_value) = 40]; - optional bool advertised_auto_neg_mode = 41 [(attr_enum_value) = 41]; - optional PortFlowControlMode advertised_flow_control_mode = 42 [(attr_enum_value) = 42]; - optional bool advertised_asymmetric_pause_mode = 43 [(attr_enum_value) = 43]; - optional PortMediaType advertised_media_type = 44 [(attr_enum_value) = 44]; - optional uint32 advertised_oui_code = 45 [(attr_enum_value) = 45]; - optional uint32 port_vlan_id = 46 [(attr_enum_value) = 46]; - optional uint32 default_vlan_priority = 47 [(attr_enum_value) = 47]; - optional bool drop_untagged = 48 [(attr_enum_value) = 48]; - optional bool drop_tagged = 49 [(attr_enum_value) = 49]; - optional PortInternalLoopbackMode internal_loopback_mode = 50 [(attr_enum_value) = 50]; - optional bool use_extended_fec = 51 [(attr_enum_value) = 51]; - optional PortFecMode fec_mode = 52 [(attr_enum_value) = 52]; - optional PortFecModeExtended fec_mode_extended = 53 [(attr_enum_value) = 53]; - optional bool update_dscp = 54 [(attr_enum_value) = 54]; - optional uint32 mtu = 55 [(attr_enum_value) = 55]; - optional uint64 flood_storm_control_policer_id = 56 [(attr_enum_value) = 56]; - optional uint64 broadcast_storm_control_policer_id = 57 [(attr_enum_value) = 57]; - optional uint64 multicast_storm_control_policer_id = 58 [(attr_enum_value) = 58]; - optional PortFlowControlMode global_flow_control_mode = 59 [(attr_enum_value) = 59]; - optional uint64 ingress_acl = 60 [(attr_enum_value) = 60]; - optional uint64 egress_acl = 61 [(attr_enum_value) = 61]; - optional uint64 ingress_macsec_acl = 62 [(attr_enum_value) = 62]; - optional uint64 egress_macsec_acl = 63 [(attr_enum_value) = 63]; - repeated uint64 macsec_port_list = 64 [(attr_enum_value) = 64]; - repeated uint64 ingress_mirror_session = 65 [(attr_enum_value) = 65]; - repeated uint64 egress_mirror_session = 66 [(attr_enum_value) = 66]; - optional uint64 ingress_samplepacket_enable = 67 [(attr_enum_value) = 67]; - optional uint64 egress_samplepacket_enable = 68 [(attr_enum_value) = 68]; - repeated uint64 ingress_sample_mirror_session = 69 [(attr_enum_value) = 69]; - repeated uint64 egress_sample_mirror_session = 70 [(attr_enum_value) = 70]; - optional uint64 policer_id = 71 [(attr_enum_value) = 71]; - optional uint32 qos_default_tc = 72 [(attr_enum_value) = 72]; - optional uint64 qos_dot1p_to_tc_map = 73 [(attr_enum_value) = 73]; - optional uint64 qos_dot1p_to_color_map = 74 [(attr_enum_value) = 74]; - optional uint64 qos_dscp_to_tc_map = 75 [(attr_enum_value) = 75]; - optional uint64 qos_dscp_to_color_map = 76 [(attr_enum_value) = 76]; - optional uint64 qos_tc_to_queue_map = 77 [(attr_enum_value) = 77]; - optional uint64 qos_tc_and_color_to_dot1p_map = 78 [(attr_enum_value) = 78]; - optional uint64 qos_tc_and_color_to_dscp_map = 79 [(attr_enum_value) = 79]; - optional uint64 qos_tc_to_priority_group_map = 80 [(attr_enum_value) = 80]; - optional uint64 qos_pfc_priority_to_priority_group_map = 81 [(attr_enum_value) = 81]; - optional uint64 qos_pfc_priority_to_queue_map = 82 [(attr_enum_value) = 82]; - optional uint64 qos_scheduler_profile_id = 83 [(attr_enum_value) = 83]; - repeated uint64 qos_ingress_buffer_profile_list = 84 [(attr_enum_value) = 84]; - repeated uint64 qos_egress_buffer_profile_list = 85 [(attr_enum_value) = 85]; - optional PortPriorityFlowControlMode priority_flow_control_mode = 86 [(attr_enum_value) = 86]; - optional uint32 priority_flow_control = 87 [(attr_enum_value) = 87]; - optional uint32 priority_flow_control_rx = 88 [(attr_enum_value) = 88]; - optional uint32 priority_flow_control_tx = 89 [(attr_enum_value) = 89]; - optional uint32 meta_data = 90 [(attr_enum_value) = 90]; - repeated uint64 egress_block_port_list = 91 [(attr_enum_value) = 91]; - optional uint64 hw_profile_id = 92 [(attr_enum_value) = 92]; - optional bool eee_enable = 93 [(attr_enum_value) = 93]; - optional uint32 eee_idle_time = 94 [(attr_enum_value) = 94]; - optional uint32 eee_wake_time = 95 [(attr_enum_value) = 95]; - repeated uint64 port_pool_list = 96 [(attr_enum_value) = 96]; - optional uint64 isolation_group = 97 [(attr_enum_value) = 97]; - optional bool pkt_tx_enable = 98 [(attr_enum_value) = 98]; - repeated uint64 tam_object = 99 [(attr_enum_value) = 99]; - repeated uint32 serdes_preemphasis = 100 [(attr_enum_value) = 100]; - repeated uint32 serdes_idriver = 101 [(attr_enum_value) = 101]; - repeated uint32 serdes_ipredriver = 102 [(attr_enum_value) = 102]; - optional bool link_training_enable = 103 [(attr_enum_value) = 103]; - optional PortPtpMode ptp_mode = 104 [(attr_enum_value) = 104]; - optional PortInterfaceType interface_type = 105 [(attr_enum_value) = 105]; - repeated PortInterfaceType advertised_interface_type = 106 [(attr_enum_value) = 106]; - optional uint64 reference_clock = 107 [(attr_enum_value) = 107]; - optional uint32 prbs_polynomial = 108 [(attr_enum_value) = 108]; - optional uint64 port_serdes_id = 109 [(attr_enum_value) = 109]; - optional PortLinkTrainingFailureStatus link_training_failure_status = 110 [(attr_enum_value) = 110]; - optional PortLinkTrainingRxStatus link_training_rx_status = 111 [(attr_enum_value) = 111]; - optional PortPrbsConfig prbs_config = 112 [(attr_enum_value) = 112]; - optional bool prbs_lock_status = 113 [(attr_enum_value) = 113]; - optional bool prbs_lock_loss_status = 114 [(attr_enum_value) = 114]; - optional PortPrbsRxStatus prbs_rx_status = 115 [(attr_enum_value) = 115]; - optional PRBS_RXState prbs_rx_state = 116 [(attr_enum_value) = 116]; - optional bool auto_neg_status = 117 [(attr_enum_value) = 117]; - optional bool disable_decrement_ttl = 118 [(attr_enum_value) = 118]; - optional uint64 qos_mpls_exp_to_tc_map = 119 [(attr_enum_value) = 119]; - optional uint64 qos_mpls_exp_to_color_map = 120 [(attr_enum_value) = 120]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 121 [(attr_enum_value) = 121]; - optional uint32 tpid = 122 [(attr_enum_value) = 122]; - repeated PortErrStatus err_status_list = 123 [(attr_enum_value) = 123]; - optional bool fabric_attached = 124 [(attr_enum_value) = 124]; - optional SwitchType fabric_attached_switch_type = 125 [(attr_enum_value) = 125]; - optional uint32 fabric_attached_switch_id = 126 [(attr_enum_value) = 126]; - optional uint32 fabric_attached_port_index = 127 [(attr_enum_value) = 127]; - optional FabricPortReachability fabric_reachability = 128 [(attr_enum_value) = 128]; - optional uint64 system_port = 129 [(attr_enum_value) = 129]; - optional bool auto_neg_fec_mode_override = 130 [(attr_enum_value) = 130]; - optional PortLoopbackMode loopback_mode = 131 [(attr_enum_value) = 131]; - optional PortMdixModeStatus mdix_mode_status = 132 [(attr_enum_value) = 132]; - optional PortMdixModeConfig mdix_mode_config = 133 [(attr_enum_value) = 133]; - optional PortAutoNegConfigMode auto_neg_config_mode = 134 [(attr_enum_value) = 134]; - optional bool _1000x_sgmii_slave_autodetect = 135 [(attr_enum_value) = 135]; - optional PortModuleType module_type = 136 [(attr_enum_value) = 136]; - optional PortDualMedia dual_media = 137 [(attr_enum_value) = 137]; - optional PortFecModeExtended auto_neg_fec_mode_extended = 138 [(attr_enum_value) = 138]; - optional uint32 ipg = 139 [(attr_enum_value) = 139]; - optional bool global_flow_control_forward = 140 [(attr_enum_value) = 140]; - optional bool priority_flow_control_forward = 141 [(attr_enum_value) = 141]; - optional uint64 qos_dscp_to_forwarding_class_map = 142 [(attr_enum_value) = 142]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 143 [(attr_enum_value) = 143]; - optional uint64 ipsec_port = 144 [(attr_enum_value) = 144]; - optional Uint32Range pfc_tc_dld_interval_range = 145 [(attr_enum_value) = 145]; - repeated UintMap pfc_tc_dld_interval = 146 [(attr_enum_value) = 146]; - optional Uint32Range pfc_tc_dlr_interval_range = 147 [(attr_enum_value) = 147]; - repeated UintMap pfc_tc_dlr_interval = 148 [(attr_enum_value) = 148]; - optional bool supported_link_training_mode = 149 [(attr_enum_value) = 149]; - repeated PortLaneLatchStatus rx_signal_detect = 150 [(attr_enum_value) = 150]; - repeated PortLaneLatchStatus rx_lock_status = 151 [(attr_enum_value) = 151]; - optional LatchStatus pcs_rx_link_status = 152 [(attr_enum_value) = 152]; - repeated PortLaneLatchStatus fec_alignment_lock = 153 [(attr_enum_value) = 153]; - optional bool fabric_isolate = 154 [(attr_enum_value) = 154]; - optional uint32 max_fec_symbol_errors_detectable = 155 [(attr_enum_value) = 155]; - optional bool ars_enable = 156 [(attr_enum_value) = 156]; - optional uint32 ars_port_load_scaling_factor = 157 [(attr_enum_value) = 157]; - optional bool ars_port_load_past_enable = 158 [(attr_enum_value) = 158]; - optional bool ars_port_load_future_enable = 159 [(attr_enum_value) = 159]; - optional bool ars_alternate_path = 160 [(attr_enum_value) = 160]; - repeated int32 json_formatted_debug_data = 161 [(attr_enum_value) = 161]; - optional HashAlgorithm ecmp_hash_algorithm = 162 [(attr_enum_value) = 162]; - optional uint32 ecmp_hash_seed = 163 [(attr_enum_value) = 163]; - optional uint32 ecmp_hash_offset = 164 [(attr_enum_value) = 164]; - optional PortFecMode oper_port_fec_mode = 165 [(attr_enum_value) = 165]; - optional bool host_tx_signal_enable = 166 [(attr_enum_value) = 166]; - optional PortHostTxReadyStatus host_tx_ready_status = 167 [(attr_enum_value) = 167]; - optional uint32 path_tracing_intf = 168 [(attr_enum_value) = 168]; - optional PortPathTracingTimestampType path_tracing_timestamp_type = 169 [(attr_enum_value) = 169]; - optional bytes rx_frequency_offset_ppm = 170 [(attr_enum_value) = 170]; - optional bytes rx_snr = 171 [(attr_enum_value) = 171]; - optional PortDatapathEnable datapath_enable = 172 [(attr_enum_value) = 172]; - repeated PortCablePairState cable_pair_state = 173 [(attr_enum_value) = 173]; - repeated int32 cable_pair_length = 174 [(attr_enum_value) = 174]; - optional PortCableType cable_type = 175 [(attr_enum_value) = 175]; - optional uint32 ars_port_load_past_weight = 176 [(attr_enum_value) = 176]; - optional uint32 ars_port_load_future_weight = 177 [(attr_enum_value) = 177]; - optional uint64 poe_port_id = 178 [(attr_enum_value) = 178]; + optional PortType type = 1 [(attr_enum_value) = 1]; + optional PortOperStatus oper_status = 2 [(attr_enum_value) = 2]; + repeated PortBreakoutModeType supported_breakout_mode_type = 3 + [(attr_enum_value) = 3]; + optional PortBreakoutModeType current_breakout_mode_type = 4 + [(attr_enum_value) = 4]; + optional uint32 qos_number_of_queues = 5 [(attr_enum_value) = 5]; + repeated uint64 qos_queue_list = 6 [(attr_enum_value) = 6]; + optional uint32 qos_number_of_scheduler_groups = 7 [(attr_enum_value) = 7]; + repeated uint64 qos_scheduler_group_list = 8 [(attr_enum_value) = 8]; + optional uint32 qos_maximum_headroom_size = 9 [(attr_enum_value) = 9]; + repeated uint32 supported_speed = 10 [(attr_enum_value) = 10]; + repeated PortFecMode supported_fec_mode = 11 [(attr_enum_value) = 11]; + repeated PortFecModeExtended supported_fec_mode_extended = 12 + [(attr_enum_value) = 12]; + repeated uint32 supported_half_duplex_speed = 13 [(attr_enum_value) = 13]; + optional bool supported_auto_neg_mode = 14 [(attr_enum_value) = 14]; + optional PortFlowControlMode supported_flow_control_mode = 15 + [(attr_enum_value) = 15]; + optional bool supported_asymmetric_pause_mode = 16 [(attr_enum_value) = 16]; + optional PortMediaType supported_media_type = 17 [(attr_enum_value) = 17]; + repeated uint32 remote_advertised_speed = 18 [(attr_enum_value) = 18]; + repeated PortFecMode remote_advertised_fec_mode = 19 [(attr_enum_value) = 19]; + repeated PortFecModeExtended remote_advertised_fec_mode_extended = 20 + [(attr_enum_value) = 20]; + repeated uint32 remote_advertised_half_duplex_speed = 21 + [(attr_enum_value) = 21]; + optional bool remote_advertised_auto_neg_mode = 22 [(attr_enum_value) = 22]; + optional PortFlowControlMode remote_advertised_flow_control_mode = 23 + [(attr_enum_value) = 23]; + optional bool remote_advertised_asymmetric_pause_mode = 24 + [(attr_enum_value) = 24]; + optional PortMediaType remote_advertised_media_type = 25 + [(attr_enum_value) = 25]; + optional uint32 remote_advertised_oui_code = 26 [(attr_enum_value) = 26]; + optional uint32 number_of_ingress_priority_groups = 27 + [(attr_enum_value) = 27]; + repeated uint64 ingress_priority_group_list = 28 [(attr_enum_value) = 28]; + repeated PortEyeValues eye_values = 29 [(attr_enum_value) = 29]; + optional uint32 oper_speed = 30 [(attr_enum_value) = 30]; + repeated uint32 hw_lane_list = 31 [(attr_enum_value) = 31]; + optional uint32 speed = 32 [(attr_enum_value) = 32]; + optional bool full_duplex_mode = 33 [(attr_enum_value) = 33]; + optional bool auto_neg_mode = 34 [(attr_enum_value) = 34]; + optional bool admin_state = 35 [(attr_enum_value) = 35]; + optional PortMediaType media_type = 36 [(attr_enum_value) = 36]; + repeated uint32 advertised_speed = 37 [(attr_enum_value) = 37]; + repeated PortFecMode advertised_fec_mode = 38 [(attr_enum_value) = 38]; + repeated PortFecModeExtended advertised_fec_mode_extended = 39 + [(attr_enum_value) = 39]; + repeated uint32 advertised_half_duplex_speed = 40 [(attr_enum_value) = 40]; + optional bool advertised_auto_neg_mode = 41 [(attr_enum_value) = 41]; + optional PortFlowControlMode advertised_flow_control_mode = 42 + [(attr_enum_value) = 42]; + optional bool advertised_asymmetric_pause_mode = 43 [(attr_enum_value) = 43]; + optional PortMediaType advertised_media_type = 44 [(attr_enum_value) = 44]; + optional uint32 advertised_oui_code = 45 [(attr_enum_value) = 45]; + optional uint32 port_vlan_id = 46 [(attr_enum_value) = 46]; + optional uint32 default_vlan_priority = 47 [(attr_enum_value) = 47]; + optional bool drop_untagged = 48 [(attr_enum_value) = 48]; + optional bool drop_tagged = 49 [(attr_enum_value) = 49]; + optional PortInternalLoopbackMode internal_loopback_mode = 50 + [(attr_enum_value) = 50]; + optional bool use_extended_fec = 51 [(attr_enum_value) = 51]; + optional PortFecMode fec_mode = 52 [(attr_enum_value) = 52]; + optional PortFecModeExtended fec_mode_extended = 53 [(attr_enum_value) = 53]; + optional bool update_dscp = 54 [(attr_enum_value) = 54]; + optional uint32 mtu = 55 [(attr_enum_value) = 55]; + optional uint64 flood_storm_control_policer_id = 56 [(attr_enum_value) = 56]; + optional uint64 broadcast_storm_control_policer_id = 57 + [(attr_enum_value) = 57]; + optional uint64 multicast_storm_control_policer_id = 58 + [(attr_enum_value) = 58]; + optional PortFlowControlMode global_flow_control_mode = 59 + [(attr_enum_value) = 59]; + optional uint64 ingress_acl = 60 [(attr_enum_value) = 60]; + optional uint64 egress_acl = 61 [(attr_enum_value) = 61]; + optional uint64 ingress_macsec_acl = 62 [(attr_enum_value) = 62]; + optional uint64 egress_macsec_acl = 63 [(attr_enum_value) = 63]; + repeated uint64 macsec_port_list = 64 [(attr_enum_value) = 64]; + repeated uint64 ingress_mirror_session = 65 [(attr_enum_value) = 65]; + repeated uint64 egress_mirror_session = 66 [(attr_enum_value) = 66]; + optional uint64 ingress_samplepacket_enable = 67 [(attr_enum_value) = 67]; + optional uint64 egress_samplepacket_enable = 68 [(attr_enum_value) = 68]; + repeated uint64 ingress_sample_mirror_session = 69 [(attr_enum_value) = 69]; + repeated uint64 egress_sample_mirror_session = 70 [(attr_enum_value) = 70]; + optional uint64 policer_id = 71 [(attr_enum_value) = 71]; + optional uint32 qos_default_tc = 72 [(attr_enum_value) = 72]; + optional uint64 qos_dot1p_to_tc_map = 73 [(attr_enum_value) = 73]; + optional uint64 qos_dot1p_to_color_map = 74 [(attr_enum_value) = 74]; + optional uint64 qos_dscp_to_tc_map = 75 [(attr_enum_value) = 75]; + optional uint64 qos_dscp_to_color_map = 76 [(attr_enum_value) = 76]; + optional uint64 qos_tc_to_queue_map = 77 [(attr_enum_value) = 77]; + optional uint64 qos_tc_and_color_to_dot1p_map = 78 [(attr_enum_value) = 78]; + optional uint64 qos_tc_and_color_to_dscp_map = 79 [(attr_enum_value) = 79]; + optional uint64 qos_tc_to_priority_group_map = 80 [(attr_enum_value) = 80]; + optional uint64 qos_pfc_priority_to_priority_group_map = 81 + [(attr_enum_value) = 81]; + optional uint64 qos_pfc_priority_to_queue_map = 82 [(attr_enum_value) = 82]; + optional uint64 qos_scheduler_profile_id = 83 [(attr_enum_value) = 83]; + repeated uint64 qos_ingress_buffer_profile_list = 84 [(attr_enum_value) = 84]; + repeated uint64 qos_egress_buffer_profile_list = 85 [(attr_enum_value) = 85]; + optional PortPriorityFlowControlMode priority_flow_control_mode = 86 + [(attr_enum_value) = 86]; + optional uint32 priority_flow_control = 87 [(attr_enum_value) = 87]; + optional uint32 priority_flow_control_rx = 88 [(attr_enum_value) = 88]; + optional uint32 priority_flow_control_tx = 89 [(attr_enum_value) = 89]; + optional uint32 meta_data = 90 [(attr_enum_value) = 90]; + repeated uint64 egress_block_port_list = 91 [(attr_enum_value) = 91]; + optional uint64 hw_profile_id = 92 [(attr_enum_value) = 92]; + optional bool eee_enable = 93 [(attr_enum_value) = 93]; + optional uint32 eee_idle_time = 94 [(attr_enum_value) = 94]; + optional uint32 eee_wake_time = 95 [(attr_enum_value) = 95]; + repeated uint64 port_pool_list = 96 [(attr_enum_value) = 96]; + optional uint64 isolation_group = 97 [(attr_enum_value) = 97]; + optional bool pkt_tx_enable = 98 [(attr_enum_value) = 98]; + repeated uint64 tam_object = 99 [(attr_enum_value) = 99]; + repeated uint32 serdes_preemphasis = 100 [(attr_enum_value) = 100]; + repeated uint32 serdes_idriver = 101 [(attr_enum_value) = 101]; + repeated uint32 serdes_ipredriver = 102 [(attr_enum_value) = 102]; + optional bool link_training_enable = 103 [(attr_enum_value) = 103]; + optional PortPtpMode ptp_mode = 104 [(attr_enum_value) = 104]; + optional PortInterfaceType interface_type = 105 [(attr_enum_value) = 105]; + repeated PortInterfaceType advertised_interface_type = 106 + [(attr_enum_value) = 106]; + optional uint64 reference_clock = 107 [(attr_enum_value) = 107]; + optional uint32 prbs_polynomial = 108 [(attr_enum_value) = 108]; + optional uint64 port_serdes_id = 109 [(attr_enum_value) = 109]; + optional PortLinkTrainingFailureStatus link_training_failure_status = 110 + [(attr_enum_value) = 110]; + optional PortLinkTrainingRxStatus link_training_rx_status = 111 + [(attr_enum_value) = 111]; + optional PortPrbsConfig prbs_config = 112 [(attr_enum_value) = 112]; + optional bool prbs_lock_status = 113 [(attr_enum_value) = 113]; + optional bool prbs_lock_loss_status = 114 [(attr_enum_value) = 114]; + optional PortPrbsRxStatus prbs_rx_status = 115 [(attr_enum_value) = 115]; + optional PRBS_RXState prbs_rx_state = 116 [(attr_enum_value) = 116]; + optional bool auto_neg_status = 117 [(attr_enum_value) = 117]; + optional bool disable_decrement_ttl = 118 [(attr_enum_value) = 118]; + optional uint64 qos_mpls_exp_to_tc_map = 119 [(attr_enum_value) = 119]; + optional uint64 qos_mpls_exp_to_color_map = 120 [(attr_enum_value) = 120]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 121 + [(attr_enum_value) = 121]; + optional uint32 tpid = 122 [(attr_enum_value) = 122]; + repeated PortErrStatus err_status_list = 123 [(attr_enum_value) = 123]; + optional bool fabric_attached = 124 [(attr_enum_value) = 124]; + optional SwitchType fabric_attached_switch_type = 125 + [(attr_enum_value) = 125]; + optional uint32 fabric_attached_switch_id = 126 [(attr_enum_value) = 126]; + optional uint32 fabric_attached_port_index = 127 [(attr_enum_value) = 127]; + optional FabricPortReachability fabric_reachability = 128 + [(attr_enum_value) = 128]; + optional uint64 system_port = 129 [(attr_enum_value) = 129]; + optional bool auto_neg_fec_mode_override = 130 [(attr_enum_value) = 130]; + optional PortLoopbackMode loopback_mode = 131 [(attr_enum_value) = 131]; + optional PortMdixModeStatus mdix_mode_status = 132 [(attr_enum_value) = 132]; + optional PortMdixModeConfig mdix_mode_config = 133 [(attr_enum_value) = 133]; + optional PortAutoNegConfigMode auto_neg_config_mode = 134 + [(attr_enum_value) = 134]; + optional bool _1000x_sgmii_slave_autodetect = 135 [(attr_enum_value) = 135]; + optional PortModuleType module_type = 136 [(attr_enum_value) = 136]; + optional PortDualMedia dual_media = 137 [(attr_enum_value) = 137]; + optional PortFecModeExtended auto_neg_fec_mode_extended = 138 + [(attr_enum_value) = 138]; + optional uint32 ipg = 139 [(attr_enum_value) = 139]; + optional bool global_flow_control_forward = 140 [(attr_enum_value) = 140]; + optional bool priority_flow_control_forward = 141 [(attr_enum_value) = 141]; + optional uint64 qos_dscp_to_forwarding_class_map = 142 + [(attr_enum_value) = 142]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 143 + [(attr_enum_value) = 143]; + optional uint64 ipsec_port = 144 [(attr_enum_value) = 144]; + optional Uint32Range pfc_tc_dld_interval_range = 145 + [(attr_enum_value) = 145]; + repeated UintMap pfc_tc_dld_interval = 146 [(attr_enum_value) = 146]; + optional Uint32Range pfc_tc_dlr_interval_range = 147 + [(attr_enum_value) = 147]; + repeated UintMap pfc_tc_dlr_interval = 148 [(attr_enum_value) = 148]; + optional bool supported_link_training_mode = 149 [(attr_enum_value) = 149]; + repeated PortLaneLatchStatus rx_signal_detect = 150 [(attr_enum_value) = 150]; + repeated PortLaneLatchStatus rx_lock_status = 151 [(attr_enum_value) = 151]; + optional LatchStatus pcs_rx_link_status = 152 [(attr_enum_value) = 152]; + repeated PortLaneLatchStatus fec_alignment_lock = 153 + [(attr_enum_value) = 153]; + optional bool fabric_isolate = 154 [(attr_enum_value) = 154]; + optional uint32 max_fec_symbol_errors_detectable = 155 + [(attr_enum_value) = 155]; + optional bool ars_enable = 156 [(attr_enum_value) = 156]; + optional uint32 ars_port_load_scaling_factor = 157 [(attr_enum_value) = 157]; + optional bool ars_port_load_past_enable = 158 [(attr_enum_value) = 158]; + optional bool ars_port_load_future_enable = 159 [(attr_enum_value) = 159]; + optional bool ars_alternate_path = 160 [(attr_enum_value) = 160]; + repeated int32 json_formatted_debug_data = 161 [(attr_enum_value) = 161]; + optional HashAlgorithm ecmp_hash_algorithm = 162 [(attr_enum_value) = 162]; + optional uint32 ecmp_hash_seed = 163 [(attr_enum_value) = 163]; + optional uint32 ecmp_hash_offset = 164 [(attr_enum_value) = 164]; + optional PortFecMode oper_port_fec_mode = 165 [(attr_enum_value) = 165]; + optional bool host_tx_signal_enable = 166 [(attr_enum_value) = 166]; + optional PortHostTxReadyStatus host_tx_ready_status = 167 + [(attr_enum_value) = 167]; + optional uint32 path_tracing_intf = 168 [(attr_enum_value) = 168]; + optional PortPathTracingTimestampType path_tracing_timestamp_type = 169 + [(attr_enum_value) = 169]; + optional bytes rx_frequency_offset_ppm = 170 [(attr_enum_value) = 170]; + optional bytes rx_snr = 171 [(attr_enum_value) = 171]; + optional PortDatapathEnable datapath_enable = 172 [(attr_enum_value) = 172]; + repeated PortCablePairState cable_pair_state = 173 [(attr_enum_value) = 173]; + repeated int32 cable_pair_length = 174 [(attr_enum_value) = 174]; + optional PortCableType cable_type = 175 [(attr_enum_value) = 175]; + optional uint32 ars_port_load_past_weight = 176 [(attr_enum_value) = 176]; + optional uint32 ars_port_load_future_weight = 177 [(attr_enum_value) = 177]; + optional uint64 poe_port_id = 178 [(attr_enum_value) = 178]; + optional uint32 json_formatted_debug_data_sz = 179 [(attr_enum_value) = 179]; + optional bool unreliable_los = 180 [(attr_enum_value) = 180]; + optional PortErrorStatus error_status = 181 [(attr_enum_value) = 181]; + optional StatsCountMode stats_count_mode = 182 [(attr_enum_value) = 182]; + repeated uint64 selective_counter_list = 183 [(attr_enum_value) = 183]; } message PortConnectorAttribute { - optional uint64 system_side_port_id = 1 [(attr_enum_value) = 1]; - optional uint64 line_side_port_id = 2 [(attr_enum_value) = 2]; - optional uint64 system_side_failover_port_id = 3 [(attr_enum_value) = 3]; - optional uint64 line_side_failover_port_id = 4 [(attr_enum_value) = 4]; - optional PortConnectorFailoverMode failover_mode = 5 [(attr_enum_value) = 5]; + optional uint64 system_side_port_id = 1 [(attr_enum_value) = 1]; + optional uint64 line_side_port_id = 2 [(attr_enum_value) = 2]; + optional uint64 system_side_failover_port_id = 3 [(attr_enum_value) = 3]; + optional uint64 line_side_failover_port_id = 4 [(attr_enum_value) = 4]; + optional PortConnectorFailoverMode failover_mode = 5 [(attr_enum_value) = 5]; } message PortPoolAttribute { - optional uint64 port_id = 1 [(attr_enum_value) = 1]; - optional uint64 buffer_pool_id = 2 [(attr_enum_value) = 2]; - optional uint64 qos_wred_profile_id = 3 [(attr_enum_value) = 3]; + optional uint64 port_id = 1 [(attr_enum_value) = 1]; + optional uint64 buffer_pool_id = 2 [(attr_enum_value) = 2]; + optional uint64 qos_wred_profile_id = 3 [(attr_enum_value) = 3]; } message PortSerdesAttribute { - optional uint64 port_id = 1 [(attr_enum_value) = 1]; - repeated int32 preemphasis = 2 [(attr_enum_value) = 2]; - repeated int32 idriver = 3 [(attr_enum_value) = 3]; - repeated int32 ipredriver = 4 [(attr_enum_value) = 4]; - repeated int32 tx_fir_pre1 = 5 [(attr_enum_value) = 5]; - repeated int32 tx_fir_pre2 = 6 [(attr_enum_value) = 6]; - repeated int32 tx_fir_pre3 = 7 [(attr_enum_value) = 7]; - repeated int32 tx_fir_main = 8 [(attr_enum_value) = 8]; - repeated int32 tx_fir_post1 = 9 [(attr_enum_value) = 9]; - repeated int32 tx_fir_post2 = 10 [(attr_enum_value) = 10]; - repeated int32 tx_fir_post3 = 11 [(attr_enum_value) = 11]; - repeated int32 tx_fir_attn = 12 [(attr_enum_value) = 12]; - repeated int32 tx_pam4_ratio = 13 [(attr_enum_value) = 13]; - repeated int32 tx_out_common_mode = 14 [(attr_enum_value) = 14]; - repeated int32 tx_pmos_common_mode = 15 [(attr_enum_value) = 15]; - repeated int32 tx_nmos_common_mode = 16 [(attr_enum_value) = 16]; - repeated int32 tx_pmos_vltg_reg = 17 [(attr_enum_value) = 17]; - repeated int32 tx_nmos_vltg_reg = 18 [(attr_enum_value) = 18]; - repeated int32 tx_precoding = 19 [(attr_enum_value) = 19]; - repeated int32 rx_precoding = 20 [(attr_enum_value) = 20]; + optional uint64 port_id = 1 [(attr_enum_value) = 1]; + repeated int32 preemphasis = 2 [(attr_enum_value) = 2]; + repeated int32 idriver = 3 [(attr_enum_value) = 3]; + repeated int32 ipredriver = 4 [(attr_enum_value) = 4]; + repeated int32 tx_fir_pre1 = 5 [(attr_enum_value) = 5]; + repeated int32 tx_fir_pre2 = 6 [(attr_enum_value) = 6]; + repeated int32 tx_fir_pre3 = 7 [(attr_enum_value) = 7]; + repeated int32 tx_fir_main = 8 [(attr_enum_value) = 8]; + repeated int32 tx_fir_post1 = 9 [(attr_enum_value) = 9]; + repeated int32 tx_fir_post2 = 10 [(attr_enum_value) = 10]; + repeated int32 tx_fir_post3 = 11 [(attr_enum_value) = 11]; + repeated int32 tx_fir_attn = 12 [(attr_enum_value) = 12]; + repeated int32 tx_pam4_ratio = 13 [(attr_enum_value) = 13]; + repeated int32 tx_out_common_mode = 14 [(attr_enum_value) = 14]; + repeated int32 tx_pmos_common_mode = 15 [(attr_enum_value) = 15]; + repeated int32 tx_nmos_common_mode = 16 [(attr_enum_value) = 16]; + repeated int32 tx_pmos_vltg_reg = 17 [(attr_enum_value) = 17]; + repeated int32 tx_nmos_vltg_reg = 18 [(attr_enum_value) = 18]; + repeated int32 tx_precoding = 19 [(attr_enum_value) = 19]; + repeated int32 rx_precoding = 20 [(attr_enum_value) = 20]; } message QosMapAttribute { - optional QosMapType type = 1 [(attr_enum_value) = 1]; - repeated QOSMap map_to_value_list = 2 [(attr_enum_value) = 2]; + optional QosMapType type = 1 [(attr_enum_value) = 1]; + repeated QOSMap map_to_value_list = 2 [(attr_enum_value) = 2]; } message QueueAttribute { - optional QueueType type = 1 [(attr_enum_value) = 1]; - optional uint64 port = 2 [(attr_enum_value) = 2]; - optional uint32 index = 3 [(attr_enum_value) = 3]; - optional uint64 parent_scheduler_node = 4 [(attr_enum_value) = 4]; - optional uint64 wred_profile_id = 5 [(attr_enum_value) = 5]; - optional uint64 buffer_profile_id = 6 [(attr_enum_value) = 6]; - optional uint64 scheduler_profile_id = 7 [(attr_enum_value) = 7]; - optional bool pause_status = 8 [(attr_enum_value) = 8]; - optional bool enable_pfc_dldr = 9 [(attr_enum_value) = 9]; - optional bool pfc_dlr_init = 10 [(attr_enum_value) = 10]; - repeated uint64 tam_object = 11 [(attr_enum_value) = 11]; - optional PacketAction pfc_dlr_packet_action = 12 [(attr_enum_value) = 12]; - optional QueuePfcContinuousDeadlockState pfc_continuous_deadlock_state = 13 [(attr_enum_value) = 13]; + optional QueueType type = 1 [(attr_enum_value) = 1]; + optional uint64 port = 2 [(attr_enum_value) = 2]; + optional uint32 index = 3 [(attr_enum_value) = 3]; + optional uint64 parent_scheduler_node = 4 [(attr_enum_value) = 4]; + optional uint64 wred_profile_id = 5 [(attr_enum_value) = 5]; + optional uint64 buffer_profile_id = 6 [(attr_enum_value) = 6]; + optional uint64 scheduler_profile_id = 7 [(attr_enum_value) = 7]; + optional bool pause_status = 8 [(attr_enum_value) = 8]; + optional bool enable_pfc_dldr = 9 [(attr_enum_value) = 9]; + optional bool pfc_dlr_init = 10 [(attr_enum_value) = 10]; + repeated uint64 tam_object = 11 [(attr_enum_value) = 11]; + optional PacketAction pfc_dlr_packet_action = 12 [(attr_enum_value) = 12]; + optional QueuePfcContinuousDeadlockState pfc_continuous_deadlock_state = 13 + [(attr_enum_value) = 13]; + optional StatsCountMode stats_count_mode = 14 [(attr_enum_value) = 14]; + repeated uint64 selective_counter_list = 15 [(attr_enum_value) = 15]; } message RouterInterfaceAttribute { - optional uint64 virtual_router_id = 1 [(attr_enum_value) = 1]; - optional RouterInterfaceType type = 2 [(attr_enum_value) = 2]; - optional uint64 port_id = 3 [(attr_enum_value) = 3]; - optional uint64 vlan_id = 4 [(attr_enum_value) = 4]; - optional uint32 outer_vlan_id = 5 [(attr_enum_value) = 5]; - optional uint32 inner_vlan_id = 6 [(attr_enum_value) = 6]; - optional uint64 bridge_id = 7 [(attr_enum_value) = 7]; - optional bytes src_mac_address = 8 [(attr_enum_value) = 8]; - optional bool admin_v4_state = 9 [(attr_enum_value) = 9]; - optional bool admin_v6_state = 10 [(attr_enum_value) = 10]; - optional uint32 mtu = 11 [(attr_enum_value) = 11]; - optional uint64 ingress_acl = 12 [(attr_enum_value) = 12]; - optional uint64 egress_acl = 13 [(attr_enum_value) = 13]; - optional PacketAction neighbor_miss_packet_action = 14 [(attr_enum_value) = 14]; - optional bool v4_mcast_enable = 15 [(attr_enum_value) = 15]; - optional bool v6_mcast_enable = 16 [(attr_enum_value) = 16]; - optional PacketAction loopback_packet_action = 17 [(attr_enum_value) = 17]; - optional bool is_virtual = 18 [(attr_enum_value) = 18]; - optional uint32 nat_zone_id = 19 [(attr_enum_value) = 19]; - optional bool disable_decrement_ttl = 20 [(attr_enum_value) = 20]; - optional bool admin_mpls_state = 21 [(attr_enum_value) = 21]; - optional bytes label = 22 [(attr_enum_value) = 22]; + optional uint64 virtual_router_id = 1 [(attr_enum_value) = 1]; + optional RouterInterfaceType type = 2 [(attr_enum_value) = 2]; + optional uint64 port_id = 3 [(attr_enum_value) = 3]; + optional uint64 vlan_id = 4 [(attr_enum_value) = 4]; + optional uint32 outer_vlan_id = 5 [(attr_enum_value) = 5]; + optional uint32 inner_vlan_id = 6 [(attr_enum_value) = 6]; + optional uint64 bridge_id = 7 [(attr_enum_value) = 7]; + optional bytes src_mac_address = 8 [(attr_enum_value) = 8]; + optional bool admin_v4_state = 9 [(attr_enum_value) = 9]; + optional bool admin_v6_state = 10 [(attr_enum_value) = 10]; + optional uint32 mtu = 11 [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 12 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 13 [(attr_enum_value) = 13]; + optional PacketAction neighbor_miss_packet_action = 14 + [(attr_enum_value) = 14]; + optional bool v4_mcast_enable = 15 [(attr_enum_value) = 15]; + optional bool v6_mcast_enable = 16 [(attr_enum_value) = 16]; + optional PacketAction loopback_packet_action = 17 [(attr_enum_value) = 17]; + optional bool is_virtual = 18 [(attr_enum_value) = 18]; + optional uint32 nat_zone_id = 19 [(attr_enum_value) = 19]; + optional bool disable_decrement_ttl = 20 [(attr_enum_value) = 20]; + optional bool admin_mpls_state = 21 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 22 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 23 [(attr_enum_value) = 23]; + optional bytes label = 24 [(attr_enum_value) = 24]; } message RouteEntryAttribute { - optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; - optional uint64 user_trap_id = 2 [(attr_enum_value) = 2]; - optional uint64 next_hop_id = 3 [(attr_enum_value) = 3]; - optional uint32 meta_data = 4 [(attr_enum_value) = 4]; - optional IpAddrFamily ip_addr_family = 5 [(attr_enum_value) = 5]; - optional uint64 counter_id = 6 [(attr_enum_value) = 6]; - optional uint32 prefix_agg_id = 7 [(attr_enum_value) = 7]; + optional PacketAction packet_action = 1 [(attr_enum_value) = 1]; + optional uint64 user_trap_id = 2 [(attr_enum_value) = 2]; + optional uint64 next_hop_id = 3 [(attr_enum_value) = 3]; + optional uint32 meta_data = 4 [(attr_enum_value) = 4]; + optional IpAddrFamily ip_addr_family = 5 [(attr_enum_value) = 5]; + optional uint64 counter_id = 6 [(attr_enum_value) = 6]; + optional uint32 prefix_agg_id = 7 [(attr_enum_value) = 7]; } message RpfGroupAttribute { - optional uint32 rpf_interface_count = 1 [(attr_enum_value) = 1]; - repeated uint64 rpf_member_list = 2 [(attr_enum_value) = 2]; + optional uint32 rpf_interface_count = 1 [(attr_enum_value) = 1]; + repeated uint64 rpf_member_list = 2 [(attr_enum_value) = 2]; } message RpfGroupMemberAttribute { - optional uint64 rpf_group_id = 1 [(attr_enum_value) = 1]; - optional uint64 rpf_interface_id = 2 [(attr_enum_value) = 2]; + optional uint64 rpf_group_id = 1 [(attr_enum_value) = 1]; + optional uint64 rpf_interface_id = 2 [(attr_enum_value) = 2]; } message SamplepacketAttribute { - optional uint32 sample_rate = 1 [(attr_enum_value) = 1]; - optional SamplepacketType type = 2 [(attr_enum_value) = 2]; - optional SamplepacketMode mode = 3 [(attr_enum_value) = 3]; + optional uint32 sample_rate = 1 [(attr_enum_value) = 1]; + optional SamplepacketType type = 2 [(attr_enum_value) = 2]; + optional SamplepacketMode mode = 3 [(attr_enum_value) = 3]; + optional bool truncate_enable = 4 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 5 [(attr_enum_value) = 5]; } message SchedulerAttribute { - optional SchedulingType scheduling_type = 1 [(attr_enum_value) = 1]; - optional uint32 scheduling_weight = 2 [(attr_enum_value) = 2]; - optional MeterType meter_type = 3 [(attr_enum_value) = 3]; - optional uint64 min_bandwidth_rate = 4 [(attr_enum_value) = 4]; - optional uint64 min_bandwidth_burst_rate = 5 [(attr_enum_value) = 5]; - optional uint64 max_bandwidth_rate = 6 [(attr_enum_value) = 6]; - optional uint64 max_bandwidth_burst_rate = 7 [(attr_enum_value) = 7]; + optional SchedulingType scheduling_type = 1 [(attr_enum_value) = 1]; + optional uint32 scheduling_weight = 2 [(attr_enum_value) = 2]; + optional MeterType meter_type = 3 [(attr_enum_value) = 3]; + optional uint64 min_bandwidth_rate = 4 [(attr_enum_value) = 4]; + optional uint64 min_bandwidth_burst_rate = 5 [(attr_enum_value) = 5]; + optional uint64 max_bandwidth_rate = 6 [(attr_enum_value) = 6]; + optional uint64 max_bandwidth_burst_rate = 7 [(attr_enum_value) = 7]; } message SchedulerGroupAttribute { - optional uint32 child_count = 1 [(attr_enum_value) = 1]; - repeated uint64 child_list = 2 [(attr_enum_value) = 2]; - optional uint64 port_id = 3 [(attr_enum_value) = 3]; - optional uint32 level = 4 [(attr_enum_value) = 4]; - optional uint32 max_childs = 5 [(attr_enum_value) = 5]; - optional uint64 scheduler_profile_id = 6 [(attr_enum_value) = 6]; - optional uint64 parent_node = 7 [(attr_enum_value) = 7]; + optional uint32 child_count = 1 [(attr_enum_value) = 1]; + repeated uint64 child_list = 2 [(attr_enum_value) = 2]; + optional uint64 port_id = 3 [(attr_enum_value) = 3]; + optional uint32 level = 4 [(attr_enum_value) = 4]; + optional uint32 max_childs = 5 [(attr_enum_value) = 5]; + optional uint64 scheduler_profile_id = 6 [(attr_enum_value) = 6]; + optional uint64 parent_node = 7 [(attr_enum_value) = 7]; } message Srv6SidlistAttribute { - optional Srv6SidlistType type = 1 [(attr_enum_value) = 1]; - repeated TLVEntry tlv_list = 2 [(attr_enum_value) = 2]; - repeated bytes segment_list = 3 [(attr_enum_value) = 3]; - optional uint64 next_hop_id = 4 [(attr_enum_value) = 4]; + optional Srv6SidlistType type = 1 [(attr_enum_value) = 1]; + repeated TLVEntry tlv_list = 2 [(attr_enum_value) = 2]; + repeated bytes segment_list = 3 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 4 [(attr_enum_value) = 4]; + optional StatsCountMode stats_count_mode = 5 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 6 [(attr_enum_value) = 6]; } message StpAttribute { - repeated uint32 vlan_list = 1 [(attr_enum_value) = 1]; - optional uint64 bridge_id = 2 [(attr_enum_value) = 2]; - repeated uint64 port_list = 3 [(attr_enum_value) = 3]; + repeated uint32 vlan_list = 1 [(attr_enum_value) = 1]; + optional uint64 bridge_id = 2 [(attr_enum_value) = 2]; + repeated uint64 port_list = 3 [(attr_enum_value) = 3]; } message StpPortAttribute { - optional uint64 stp = 1 [(attr_enum_value) = 1]; - optional uint64 bridge_port = 2 [(attr_enum_value) = 2]; - optional StpPortState state = 3 [(attr_enum_value) = 3]; + optional uint64 stp = 1 [(attr_enum_value) = 1]; + optional uint64 bridge_port = 2 [(attr_enum_value) = 2]; + optional StpPortState state = 3 [(attr_enum_value) = 3]; } message SwitchAttribute { - optional uint32 number_of_active_ports = 1 [(attr_enum_value) = 1]; - optional uint32 max_number_of_supported_ports = 2 [(attr_enum_value) = 2]; - repeated uint64 port_list = 3 [(attr_enum_value) = 3]; - optional uint32 port_max_mtu = 4 [(attr_enum_value) = 4]; - optional uint64 cpu_port = 5 [(attr_enum_value) = 5]; - optional uint32 max_virtual_routers = 6 [(attr_enum_value) = 6]; - optional uint32 fdb_table_size = 7 [(attr_enum_value) = 7]; - optional uint32 l3_neighbor_table_size = 8 [(attr_enum_value) = 8]; - optional uint32 l3_route_table_size = 9 [(attr_enum_value) = 9]; - optional uint32 lag_members = 10 [(attr_enum_value) = 10]; - optional uint32 number_of_lags = 11 [(attr_enum_value) = 11]; - optional uint32 ecmp_members = 12 [(attr_enum_value) = 12]; - optional uint32 number_of_ecmp_groups = 13 [(attr_enum_value) = 13]; - optional uint32 number_of_unicast_queues = 14 [(attr_enum_value) = 14]; - optional uint32 number_of_multicast_queues = 15 [(attr_enum_value) = 15]; - optional uint32 number_of_queues = 16 [(attr_enum_value) = 16]; - optional uint32 number_of_cpu_queues = 17 [(attr_enum_value) = 17]; - optional bool on_link_route_supported = 18 [(attr_enum_value) = 18]; - optional SwitchOperStatus oper_status = 19 [(attr_enum_value) = 19]; - optional uint32 max_number_of_temp_sensors = 20 [(attr_enum_value) = 20]; - repeated int32 temp_list = 21 [(attr_enum_value) = 21]; - optional uint32 max_temp = 22 [(attr_enum_value) = 22]; - optional uint32 average_temp = 23 [(attr_enum_value) = 23]; - optional uint32 acl_table_minimum_priority = 24 [(attr_enum_value) = 24]; - optional uint32 acl_table_maximum_priority = 25 [(attr_enum_value) = 25]; - optional uint32 acl_entry_minimum_priority = 26 [(attr_enum_value) = 26]; - optional uint32 acl_entry_maximum_priority = 27 [(attr_enum_value) = 27]; - optional uint32 acl_table_group_minimum_priority = 28 [(attr_enum_value) = 28]; - optional uint32 acl_table_group_maximum_priority = 29 [(attr_enum_value) = 29]; - optional Uint32Range fdb_dst_user_meta_data_range = 30 [(attr_enum_value) = 30]; - optional Uint32Range route_dst_user_meta_data_range = 31 [(attr_enum_value) = 31]; - optional Uint32Range neighbor_dst_user_meta_data_range = 32 [(attr_enum_value) = 32]; - optional Uint32Range port_user_meta_data_range = 33 [(attr_enum_value) = 33]; - optional Uint32Range vlan_user_meta_data_range = 34 [(attr_enum_value) = 34]; - optional Uint32Range acl_user_meta_data_range = 35 [(attr_enum_value) = 35]; - optional Uint32Range acl_user_trap_id_range = 36 [(attr_enum_value) = 36]; - optional uint64 default_vlan_id = 37 [(attr_enum_value) = 37]; - optional uint64 default_stp_inst_id = 38 [(attr_enum_value) = 38]; - optional uint32 max_stp_instance = 39 [(attr_enum_value) = 39]; - optional uint64 default_virtual_router_id = 40 [(attr_enum_value) = 40]; - optional uint64 default_override_virtual_router_id = 41 [(attr_enum_value) = 41]; - optional uint64 default_1q_bridge_id = 42 [(attr_enum_value) = 42]; - optional uint64 ingress_acl = 43 [(attr_enum_value) = 43]; - optional uint64 egress_acl = 44 [(attr_enum_value) = 44]; - optional uint32 qos_max_number_of_traffic_classes = 45 [(attr_enum_value) = 45]; - optional uint32 qos_max_number_of_scheduler_group_hierarchy_levels = 46 [(attr_enum_value) = 46]; - repeated uint32 qos_max_number_of_scheduler_groups_per_hierarchy_level = 47 [(attr_enum_value) = 47]; - optional uint32 qos_max_number_of_childs_per_scheduler_group = 48 [(attr_enum_value) = 48]; - optional uint64 total_buffer_size = 49 [(attr_enum_value) = 49]; - optional uint32 ingress_buffer_pool_num = 50 [(attr_enum_value) = 50]; - optional uint32 egress_buffer_pool_num = 51 [(attr_enum_value) = 51]; - optional uint32 available_ipv4_route_entry = 52 [(attr_enum_value) = 52]; - optional uint32 available_ipv6_route_entry = 53 [(attr_enum_value) = 53]; - optional uint32 available_ipv4_nexthop_entry = 54 [(attr_enum_value) = 54]; - optional uint32 available_ipv6_nexthop_entry = 55 [(attr_enum_value) = 55]; - optional uint32 available_ipv4_neighbor_entry = 56 [(attr_enum_value) = 56]; - optional uint32 available_ipv6_neighbor_entry = 57 [(attr_enum_value) = 57]; - optional uint32 available_next_hop_group_entry = 58 [(attr_enum_value) = 58]; - optional uint32 available_next_hop_group_member_entry = 59 [(attr_enum_value) = 59]; - optional uint32 available_fdb_entry = 60 [(attr_enum_value) = 60]; - optional uint32 available_l2mc_entry = 61 [(attr_enum_value) = 61]; - optional uint32 available_ipmc_entry = 62 [(attr_enum_value) = 62]; - optional uint32 available_snat_entry = 63 [(attr_enum_value) = 63]; - optional uint32 available_dnat_entry = 64 [(attr_enum_value) = 64]; - optional uint32 available_double_nat_entry = 65 [(attr_enum_value) = 65]; - repeated ACLResource available_acl_table = 66 [(attr_enum_value) = 66]; - repeated ACLResource available_acl_table_group = 67 [(attr_enum_value) = 67]; - optional uint32 available_my_sid_entry = 68 [(attr_enum_value) = 68]; - optional uint64 default_trap_group = 69 [(attr_enum_value) = 69]; - optional uint64 ecmp_hash = 70 [(attr_enum_value) = 70]; - optional uint64 lag_hash = 71 [(attr_enum_value) = 71]; - optional bool restart_warm = 72 [(attr_enum_value) = 72]; - optional bool warm_recover = 73 [(attr_enum_value) = 73]; - optional SwitchRestartType restart_type = 74 [(attr_enum_value) = 74]; - optional uint32 min_planned_restart_interval = 75 [(attr_enum_value) = 75]; - optional uint64 nv_storage_size = 76 [(attr_enum_value) = 76]; - optional uint32 max_acl_action_count = 77 [(attr_enum_value) = 77]; - optional uint32 max_acl_range_count = 78 [(attr_enum_value) = 78]; - optional ACLCapability acl_capability = 79 [(attr_enum_value) = 79]; - optional SwitchMcastSnoopingCapability mcast_snooping_capability = 80 [(attr_enum_value) = 80]; - optional SwitchSwitchingMode switching_mode = 81 [(attr_enum_value) = 81]; - optional bool bcast_cpu_flood_enable = 82 [(attr_enum_value) = 82]; - optional bool mcast_cpu_flood_enable = 83 [(attr_enum_value) = 83]; - optional bytes src_mac_address = 84 [(attr_enum_value) = 84]; - optional uint32 max_learned_addresses = 85 [(attr_enum_value) = 85]; - optional uint32 fdb_aging_time = 86 [(attr_enum_value) = 86]; - optional PacketAction fdb_unicast_miss_packet_action = 87 [(attr_enum_value) = 87]; - optional PacketAction fdb_broadcast_miss_packet_action = 88 [(attr_enum_value) = 88]; - optional PacketAction fdb_multicast_miss_packet_action = 89 [(attr_enum_value) = 89]; - optional HashAlgorithm ecmp_default_hash_algorithm = 90 [(attr_enum_value) = 90]; - optional uint32 ecmp_default_hash_seed = 91 [(attr_enum_value) = 91]; - optional uint32 ecmp_default_hash_offset = 92 [(attr_enum_value) = 92]; - optional bool ecmp_default_symmetric_hash = 93 [(attr_enum_value) = 93]; - optional uint64 ecmp_hash_ipv4 = 94 [(attr_enum_value) = 94]; - optional uint64 ecmp_hash_ipv4_in_ipv4 = 95 [(attr_enum_value) = 95]; - optional uint64 ecmp_hash_ipv6 = 96 [(attr_enum_value) = 96]; - optional HashAlgorithm lag_default_hash_algorithm = 97 [(attr_enum_value) = 97]; - optional uint32 lag_default_hash_seed = 98 [(attr_enum_value) = 98]; - optional uint32 lag_default_hash_offset = 99 [(attr_enum_value) = 99]; - optional bool lag_default_symmetric_hash = 100 [(attr_enum_value) = 100]; - optional uint64 lag_hash_ipv4 = 101 [(attr_enum_value) = 101]; - optional uint64 lag_hash_ipv4_in_ipv4 = 102 [(attr_enum_value) = 102]; - optional uint64 lag_hash_ipv6 = 103 [(attr_enum_value) = 103]; - optional uint32 counter_refresh_interval = 104 [(attr_enum_value) = 104]; - optional uint32 qos_default_tc = 105 [(attr_enum_value) = 105]; - optional uint64 qos_dot1p_to_tc_map = 106 [(attr_enum_value) = 106]; - optional uint64 qos_dot1p_to_color_map = 107 [(attr_enum_value) = 107]; - optional uint64 qos_dscp_to_tc_map = 108 [(attr_enum_value) = 108]; - optional uint64 qos_dscp_to_color_map = 109 [(attr_enum_value) = 109]; - optional uint64 qos_tc_to_queue_map = 110 [(attr_enum_value) = 110]; - optional uint64 qos_tc_and_color_to_dot1p_map = 111 [(attr_enum_value) = 111]; - optional uint64 qos_tc_and_color_to_dscp_map = 112 [(attr_enum_value) = 112]; - optional bool switch_shell_enable = 113 [(attr_enum_value) = 113]; - optional uint32 switch_profile_id = 114 [(attr_enum_value) = 114]; - repeated int32 switch_hardware_info = 115 [(attr_enum_value) = 115]; - repeated int32 firmware_path_name = 116 [(attr_enum_value) = 116]; - optional bool init_switch = 117 [(attr_enum_value) = 117]; - optional bool fast_api_enable = 118 [(attr_enum_value) = 123]; - optional uint32 mirror_tc = 119 [(attr_enum_value) = 124]; - optional ACLCapability acl_stage_ingress = 120 [(attr_enum_value) = 125]; - optional ACLCapability acl_stage_egress = 121 [(attr_enum_value) = 126]; - optional uint32 srv6_max_sid_depth = 122 [(attr_enum_value) = 127]; - repeated TlvType srv6_tlv_type = 123 [(attr_enum_value) = 128]; - optional uint32 qos_num_lossless_queues = 124 [(attr_enum_value) = 129]; - optional PacketAction pfc_dlr_packet_action = 125 [(attr_enum_value) = 131]; - optional Uint32Range pfc_tc_dld_interval_range = 126 [(attr_enum_value) = 132]; - repeated UintMap pfc_tc_dld_interval = 127 [(attr_enum_value) = 133]; - optional Uint32Range pfc_tc_dlr_interval_range = 128 [(attr_enum_value) = 134]; - repeated UintMap pfc_tc_dlr_interval = 129 [(attr_enum_value) = 135]; - repeated ObjectType supported_protected_object_type = 130 [(attr_enum_value) = 136]; - optional uint32 tpid_outer_vlan = 131 [(attr_enum_value) = 137]; - optional uint32 tpid_inner_vlan = 132 [(attr_enum_value) = 138]; - optional bool crc_check_enable = 133 [(attr_enum_value) = 139]; - optional bool crc_recalculation_enable = 134 [(attr_enum_value) = 140]; - optional uint32 number_of_bfd_session = 135 [(attr_enum_value) = 142]; - optional uint32 max_bfd_session = 136 [(attr_enum_value) = 143]; - repeated BfdSessionOffloadType supported_ipv4_bfd_session_offload_type = 137 [(attr_enum_value) = 144]; - repeated BfdSessionOffloadType supported_ipv6_bfd_session_offload_type = 138 [(attr_enum_value) = 145]; - optional uint32 min_bfd_rx = 139 [(attr_enum_value) = 146]; - optional uint32 min_bfd_tx = 140 [(attr_enum_value) = 147]; - optional bool ecn_ect_threshold_enable = 141 [(attr_enum_value) = 148]; - optional bytes vxlan_default_router_mac = 142 [(attr_enum_value) = 149]; - optional uint32 vxlan_default_port = 143 [(attr_enum_value) = 150]; - optional uint32 max_mirror_session = 144 [(attr_enum_value) = 151]; - optional uint32 max_sampled_mirror_session = 145 [(attr_enum_value) = 152]; - repeated StatsMode supported_extended_stats_mode = 146 [(attr_enum_value) = 153]; - optional bool uninit_data_plane_on_removal = 147 [(attr_enum_value) = 154]; - repeated uint64 tam_object_id = 148 [(attr_enum_value) = 155]; - repeated ObjectType supported_object_type_list = 149 [(attr_enum_value) = 157]; - optional bool pre_shutdown = 150 [(attr_enum_value) = 158]; - optional uint64 nat_zone_counter_object_id = 151 [(attr_enum_value) = 159]; - optional bool nat_enable = 152 [(attr_enum_value) = 160]; - optional SwitchHardwareAccessBus hardware_access_bus = 153 [(attr_enum_value) = 161]; - optional uint64 platfrom_context = 154 [(attr_enum_value) = 162]; - optional bool firmware_download_broadcast = 155 [(attr_enum_value) = 165]; - optional SwitchFirmwareLoadMethod firmware_load_method = 156 [(attr_enum_value) = 166]; - optional SwitchFirmwareLoadType firmware_load_type = 157 [(attr_enum_value) = 167]; - optional bool firmware_download_execute = 158 [(attr_enum_value) = 168]; - optional bool firmware_broadcast_stop = 159 [(attr_enum_value) = 169]; - optional bool firmware_verify_and_init_switch = 160 [(attr_enum_value) = 170]; - optional bool firmware_status = 161 [(attr_enum_value) = 171]; - optional uint32 firmware_major_version = 162 [(attr_enum_value) = 172]; - optional uint32 firmware_minor_version = 163 [(attr_enum_value) = 173]; - repeated uint64 port_connector_list = 164 [(attr_enum_value) = 174]; - optional bool propogate_port_state_from_line_to_system_port_support = 165 [(attr_enum_value) = 175]; - optional SwitchType type = 166 [(attr_enum_value) = 176]; - repeated uint64 macsec_object_list = 167 [(attr_enum_value) = 177]; - optional uint64 qos_mpls_exp_to_tc_map = 168 [(attr_enum_value) = 178]; - optional uint64 qos_mpls_exp_to_color_map = 169 [(attr_enum_value) = 179]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 170 [(attr_enum_value) = 180]; - optional uint32 switch_id = 171 [(attr_enum_value) = 181]; - optional uint32 max_system_cores = 172 [(attr_enum_value) = 182]; - repeated SystemPortConfig system_port_config_list = 173 [(attr_enum_value) = 183]; - optional uint32 number_of_system_ports = 174 [(attr_enum_value) = 184]; - repeated uint64 system_port_list = 175 [(attr_enum_value) = 185]; - optional uint32 number_of_fabric_ports = 176 [(attr_enum_value) = 186]; - repeated uint64 fabric_port_list = 177 [(attr_enum_value) = 187]; - optional uint32 packet_dma_memory_pool_size = 178 [(attr_enum_value) = 188]; - optional SwitchFailoverConfigMode failover_config_mode = 179 [(attr_enum_value) = 189]; - optional bool supported_failover_mode = 180 [(attr_enum_value) = 190]; - repeated uint64 tunnel_objects_list = 181 [(attr_enum_value) = 191]; - optional uint32 packet_available_dma_memory_pool_size = 182 [(attr_enum_value) = 192]; - optional uint64 pre_ingress_acl = 183 [(attr_enum_value) = 193]; - optional uint32 available_snapt_entry = 184 [(attr_enum_value) = 194]; - optional uint32 available_dnapt_entry = 185 [(attr_enum_value) = 195]; - optional uint32 available_double_napt_entry = 186 [(attr_enum_value) = 196]; - repeated uint32 slave_mdio_addr_list = 187 [(attr_enum_value) = 197]; - optional uint32 my_mac_table_minimum_priority = 188 [(attr_enum_value) = 198]; - optional uint32 my_mac_table_maximum_priority = 189 [(attr_enum_value) = 199]; - repeated uint64 my_mac_list = 190 [(attr_enum_value) = 200]; - optional uint32 installed_my_mac_entries = 191 [(attr_enum_value) = 201]; - optional uint32 available_my_mac_entries = 192 [(attr_enum_value) = 202]; - optional uint32 max_number_of_forwarding_classes = 193 [(attr_enum_value) = 203]; - optional uint64 qos_dscp_to_forwarding_class_map = 194 [(attr_enum_value) = 204]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 195 [(attr_enum_value) = 205]; - optional uint64 ipsec_object_id = 196 [(attr_enum_value) = 206]; - optional uint32 ipsec_sa_tag_tpid = 197 [(attr_enum_value) = 207]; - optional uint32 max_ecmp_member_count = 198 [(attr_enum_value) = 210]; - optional uint32 ecmp_member_count = 199 [(attr_enum_value) = 211]; - optional uint64 ars_profile = 200 [(attr_enum_value) = 212]; - optional ACLCapability acl_stage_post_ingress = 201 [(attr_enum_value) = 213]; - optional bool credit_wd = 202 [(attr_enum_value) = 214]; - optional uint32 credit_wd_timer = 203 [(attr_enum_value) = 215]; - optional bool switch_isolate = 204 [(attr_enum_value) = 216]; - optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 205 [(attr_enum_value) = 217]; - repeated SwitchAsicSdkHealthCategory reg_fatal_switch_asic_sdk_health_category = 206 [(attr_enum_value) = 219]; - repeated SwitchAsicSdkHealthCategory reg_warning_switch_asic_sdk_health_category = 207 [(attr_enum_value) = 220]; - repeated SwitchAsicSdkHealthCategory reg_notice_switch_asic_sdk_health_category = 208 [(attr_enum_value) = 221]; - optional bytes acl_chain_list = 209 [(attr_enum_value) = 222]; - optional uint32 tunnel_term_table_entry_minimum_priority = 210 [(attr_enum_value) = 224]; - optional uint32 tunnel_term_table_entry_maximum_priority = 211 [(attr_enum_value) = 225]; - optional uint32 available_twamp_session = 212 [(attr_enum_value) = 227]; - optional uint32 max_twamp_session = 213 [(attr_enum_value) = 228]; - optional uint32 available_ip_next_hop_group_member_entry = 214 [(attr_enum_value) = 229]; - optional uint32 available_system_voqs = 215 [(attr_enum_value) = 230]; - optional ACLCapability acl_stage_pre_ingress = 216 [(attr_enum_value) = 231]; - repeated uint64 poe_device_list = 217 [(attr_enum_value) = 232]; + optional uint32 number_of_active_ports = 1 [(attr_enum_value) = 1]; + optional uint32 max_number_of_supported_ports = 2 [(attr_enum_value) = 2]; + repeated uint64 port_list = 3 [(attr_enum_value) = 3]; + optional uint32 port_max_mtu = 4 [(attr_enum_value) = 4]; + optional uint64 cpu_port = 5 [(attr_enum_value) = 5]; + optional uint32 max_virtual_routers = 6 [(attr_enum_value) = 6]; + optional uint32 fdb_table_size = 7 [(attr_enum_value) = 7]; + optional uint32 l3_neighbor_table_size = 8 [(attr_enum_value) = 8]; + optional uint32 l3_route_table_size = 9 [(attr_enum_value) = 9]; + optional uint32 lag_members = 10 [(attr_enum_value) = 10]; + optional uint32 number_of_lags = 11 [(attr_enum_value) = 11]; + optional uint32 ecmp_members = 12 [(attr_enum_value) = 12]; + optional uint32 number_of_ecmp_groups = 13 [(attr_enum_value) = 13]; + optional uint32 number_of_unicast_queues = 14 [(attr_enum_value) = 14]; + optional uint32 number_of_multicast_queues = 15 [(attr_enum_value) = 15]; + optional uint32 number_of_queues = 16 [(attr_enum_value) = 16]; + optional uint32 number_of_cpu_queues = 17 [(attr_enum_value) = 17]; + optional bool on_link_route_supported = 18 [(attr_enum_value) = 18]; + optional SwitchOperStatus oper_status = 19 [(attr_enum_value) = 19]; + optional uint32 max_number_of_temp_sensors = 20 [(attr_enum_value) = 20]; + repeated int32 temp_list = 21 [(attr_enum_value) = 21]; + optional uint32 max_temp = 22 [(attr_enum_value) = 22]; + optional uint32 average_temp = 23 [(attr_enum_value) = 23]; + optional uint32 acl_table_minimum_priority = 24 [(attr_enum_value) = 24]; + optional uint32 acl_table_maximum_priority = 25 [(attr_enum_value) = 25]; + optional uint32 acl_entry_minimum_priority = 26 [(attr_enum_value) = 26]; + optional uint32 acl_entry_maximum_priority = 27 [(attr_enum_value) = 27]; + optional uint32 acl_table_group_minimum_priority = 28 + [(attr_enum_value) = 28]; + optional uint32 acl_table_group_maximum_priority = 29 + [(attr_enum_value) = 29]; + optional Uint32Range fdb_dst_user_meta_data_range = 30 + [(attr_enum_value) = 30]; + optional Uint32Range route_dst_user_meta_data_range = 31 + [(attr_enum_value) = 31]; + optional Uint32Range neighbor_dst_user_meta_data_range = 32 + [(attr_enum_value) = 32]; + optional Uint32Range port_user_meta_data_range = 33 [(attr_enum_value) = 33]; + optional Uint32Range vlan_user_meta_data_range = 34 [(attr_enum_value) = 34]; + optional Uint32Range acl_user_meta_data_range = 35 [(attr_enum_value) = 35]; + optional Uint32Range acl_user_trap_id_range = 36 [(attr_enum_value) = 36]; + optional uint64 default_vlan_id = 37 [(attr_enum_value) = 37]; + optional uint64 default_stp_inst_id = 38 [(attr_enum_value) = 38]; + optional uint32 max_stp_instance = 39 [(attr_enum_value) = 39]; + optional uint64 default_virtual_router_id = 40 [(attr_enum_value) = 40]; + optional uint64 default_override_virtual_router_id = 41 + [(attr_enum_value) = 41]; + optional uint64 default_1q_bridge_id = 42 [(attr_enum_value) = 42]; + optional uint64 ingress_acl = 43 [(attr_enum_value) = 43]; + optional uint64 egress_acl = 44 [(attr_enum_value) = 44]; + optional uint32 qos_max_number_of_traffic_classes = 45 + [(attr_enum_value) = 45]; + optional uint32 qos_max_number_of_scheduler_group_hierarchy_levels = 46 + [(attr_enum_value) = 46]; + repeated uint32 qos_max_number_of_scheduler_groups_per_hierarchy_level = 47 + [(attr_enum_value) = 47]; + optional uint32 qos_max_number_of_childs_per_scheduler_group = 48 + [(attr_enum_value) = 48]; + optional uint64 total_buffer_size = 49 [(attr_enum_value) = 49]; + optional uint32 ingress_buffer_pool_num = 50 [(attr_enum_value) = 50]; + optional uint32 egress_buffer_pool_num = 51 [(attr_enum_value) = 51]; + optional uint32 available_ipv4_route_entry = 52 [(attr_enum_value) = 52]; + optional uint32 available_ipv6_route_entry = 53 [(attr_enum_value) = 53]; + optional uint32 available_ipv4_nexthop_entry = 54 [(attr_enum_value) = 54]; + optional uint32 available_ipv6_nexthop_entry = 55 [(attr_enum_value) = 55]; + optional uint32 available_ipv4_neighbor_entry = 56 [(attr_enum_value) = 56]; + optional uint32 available_ipv6_neighbor_entry = 57 [(attr_enum_value) = 57]; + optional uint32 available_next_hop_group_entry = 58 [(attr_enum_value) = 58]; + optional uint32 available_next_hop_group_member_entry = 59 + [(attr_enum_value) = 59]; + optional uint32 available_fdb_entry = 60 [(attr_enum_value) = 60]; + optional uint32 available_l2mc_entry = 61 [(attr_enum_value) = 61]; + optional uint32 available_ipmc_entry = 62 [(attr_enum_value) = 62]; + optional uint32 available_snat_entry = 63 [(attr_enum_value) = 63]; + optional uint32 available_dnat_entry = 64 [(attr_enum_value) = 64]; + optional uint32 available_double_nat_entry = 65 [(attr_enum_value) = 65]; + repeated ACLResource available_acl_table = 66 [(attr_enum_value) = 66]; + repeated ACLResource available_acl_table_group = 67 [(attr_enum_value) = 67]; + optional uint32 available_my_sid_entry = 68 [(attr_enum_value) = 68]; + optional uint64 default_trap_group = 69 [(attr_enum_value) = 69]; + optional uint64 ecmp_hash = 70 [(attr_enum_value) = 70]; + optional uint64 lag_hash = 71 [(attr_enum_value) = 71]; + optional bool restart_warm = 72 [(attr_enum_value) = 72]; + optional bool warm_recover = 73 [(attr_enum_value) = 73]; + optional SwitchRestartType restart_type = 74 [(attr_enum_value) = 74]; + optional uint32 min_planned_restart_interval = 75 [(attr_enum_value) = 75]; + optional uint64 nv_storage_size = 76 [(attr_enum_value) = 76]; + optional uint32 max_acl_action_count = 77 [(attr_enum_value) = 77]; + optional uint32 max_acl_range_count = 78 [(attr_enum_value) = 78]; + optional ACLCapability acl_capability = 79 [(attr_enum_value) = 79]; + optional SwitchMcastSnoopingCapability mcast_snooping_capability = 80 + [(attr_enum_value) = 80]; + optional SwitchSwitchingMode switching_mode = 81 [(attr_enum_value) = 81]; + optional bool bcast_cpu_flood_enable = 82 [(attr_enum_value) = 82]; + optional bool mcast_cpu_flood_enable = 83 [(attr_enum_value) = 83]; + optional bytes src_mac_address = 84 [(attr_enum_value) = 84]; + optional uint32 max_learned_addresses = 85 [(attr_enum_value) = 85]; + optional uint32 fdb_aging_time = 86 [(attr_enum_value) = 86]; + optional PacketAction fdb_unicast_miss_packet_action = 87 + [(attr_enum_value) = 87]; + optional PacketAction fdb_broadcast_miss_packet_action = 88 + [(attr_enum_value) = 88]; + optional PacketAction fdb_multicast_miss_packet_action = 89 + [(attr_enum_value) = 89]; + optional HashAlgorithm ecmp_default_hash_algorithm = 90 + [(attr_enum_value) = 90]; + optional uint32 ecmp_default_hash_seed = 91 [(attr_enum_value) = 91]; + optional uint32 ecmp_default_hash_offset = 92 [(attr_enum_value) = 92]; + optional bool ecmp_default_symmetric_hash = 93 [(attr_enum_value) = 93]; + optional uint64 ecmp_hash_ipv4 = 94 [(attr_enum_value) = 94]; + optional uint64 ecmp_hash_ipv4_in_ipv4 = 95 [(attr_enum_value) = 95]; + optional uint64 ecmp_hash_ipv6 = 96 [(attr_enum_value) = 96]; + optional HashAlgorithm lag_default_hash_algorithm = 97 + [(attr_enum_value) = 97]; + optional uint32 lag_default_hash_seed = 98 [(attr_enum_value) = 98]; + optional uint32 lag_default_hash_offset = 99 [(attr_enum_value) = 99]; + optional bool lag_default_symmetric_hash = 100 [(attr_enum_value) = 100]; + optional uint64 lag_hash_ipv4 = 101 [(attr_enum_value) = 101]; + optional uint64 lag_hash_ipv4_in_ipv4 = 102 [(attr_enum_value) = 102]; + optional uint64 lag_hash_ipv6 = 103 [(attr_enum_value) = 103]; + optional uint32 counter_refresh_interval = 104 [(attr_enum_value) = 104]; + optional uint32 qos_default_tc = 105 [(attr_enum_value) = 105]; + optional uint64 qos_dot1p_to_tc_map = 106 [(attr_enum_value) = 106]; + optional uint64 qos_dot1p_to_color_map = 107 [(attr_enum_value) = 107]; + optional uint64 qos_dscp_to_tc_map = 108 [(attr_enum_value) = 108]; + optional uint64 qos_dscp_to_color_map = 109 [(attr_enum_value) = 109]; + optional uint64 qos_tc_to_queue_map = 110 [(attr_enum_value) = 110]; + optional uint64 qos_tc_and_color_to_dot1p_map = 111 [(attr_enum_value) = 111]; + optional uint64 qos_tc_and_color_to_dscp_map = 112 [(attr_enum_value) = 112]; + optional bool switch_shell_enable = 113 [(attr_enum_value) = 113]; + optional uint32 switch_profile_id = 114 [(attr_enum_value) = 114]; + repeated int32 switch_hardware_info = 115 [(attr_enum_value) = 115]; + repeated int32 firmware_path_name = 116 [(attr_enum_value) = 116]; + optional bool init_switch = 117 [(attr_enum_value) = 117]; + optional bool fast_api_enable = 118 [(attr_enum_value) = 123]; + optional uint32 mirror_tc = 119 [(attr_enum_value) = 124]; + optional ACLCapability acl_stage_ingress = 120 [(attr_enum_value) = 125]; + optional ACLCapability acl_stage_egress = 121 [(attr_enum_value) = 126]; + optional uint32 srv6_max_sid_depth = 122 [(attr_enum_value) = 127]; + repeated TlvType srv6_tlv_type = 123 [(attr_enum_value) = 128]; + optional uint32 qos_num_lossless_queues = 124 [(attr_enum_value) = 129]; + optional PacketAction pfc_dlr_packet_action = 125 [(attr_enum_value) = 131]; + optional Uint32Range pfc_tc_dld_interval_range = 126 + [(attr_enum_value) = 132]; + repeated UintMap pfc_tc_dld_interval = 127 [(attr_enum_value) = 133]; + optional Uint32Range pfc_tc_dlr_interval_range = 128 + [(attr_enum_value) = 134]; + repeated UintMap pfc_tc_dlr_interval = 129 [(attr_enum_value) = 135]; + repeated ObjectType supported_protected_object_type = 130 + [(attr_enum_value) = 136]; + optional uint32 tpid_outer_vlan = 131 [(attr_enum_value) = 137]; + optional uint32 tpid_inner_vlan = 132 [(attr_enum_value) = 138]; + optional bool crc_check_enable = 133 [(attr_enum_value) = 139]; + optional bool crc_recalculation_enable = 134 [(attr_enum_value) = 140]; + optional uint32 number_of_bfd_session = 135 [(attr_enum_value) = 142]; + optional uint32 max_bfd_session = 136 [(attr_enum_value) = 143]; + repeated BfdSessionOffloadType supported_ipv4_bfd_session_offload_type = 137 + [(attr_enum_value) = 144]; + repeated BfdSessionOffloadType supported_ipv6_bfd_session_offload_type = 138 + [(attr_enum_value) = 145]; + optional uint32 min_bfd_rx = 139 [(attr_enum_value) = 146]; + optional uint32 min_bfd_tx = 140 [(attr_enum_value) = 147]; + optional bool ecn_ect_threshold_enable = 141 [(attr_enum_value) = 148]; + optional bytes vxlan_default_router_mac = 142 [(attr_enum_value) = 149]; + optional uint32 vxlan_default_port = 143 [(attr_enum_value) = 150]; + optional uint32 max_mirror_session = 144 [(attr_enum_value) = 151]; + optional uint32 max_sampled_mirror_session = 145 [(attr_enum_value) = 152]; + repeated StatsMode supported_extended_stats_mode = 146 + [(attr_enum_value) = 153]; + optional bool uninit_data_plane_on_removal = 147 [(attr_enum_value) = 154]; + repeated uint64 tam_object_id = 148 [(attr_enum_value) = 155]; + repeated ObjectType supported_object_type_list = 149 + [(attr_enum_value) = 157]; + optional bool pre_shutdown = 150 [(attr_enum_value) = 158]; + optional uint64 nat_zone_counter_object_id = 151 [(attr_enum_value) = 159]; + optional bool nat_enable = 152 [(attr_enum_value) = 160]; + optional SwitchHardwareAccessBus hardware_access_bus = 153 + [(attr_enum_value) = 161]; + optional uint64 platfrom_context = 154 [(attr_enum_value) = 162]; + optional bool firmware_download_broadcast = 155 [(attr_enum_value) = 165]; + optional SwitchFirmwareLoadMethod firmware_load_method = 156 + [(attr_enum_value) = 166]; + optional SwitchFirmwareLoadType firmware_load_type = 157 + [(attr_enum_value) = 167]; + optional bool firmware_download_execute = 158 [(attr_enum_value) = 168]; + optional bool firmware_broadcast_stop = 159 [(attr_enum_value) = 169]; + optional bool firmware_verify_and_init_switch = 160 [(attr_enum_value) = 170]; + optional bool firmware_status = 161 [(attr_enum_value) = 171]; + optional uint32 firmware_major_version = 162 [(attr_enum_value) = 172]; + optional uint32 firmware_minor_version = 163 [(attr_enum_value) = 173]; + repeated uint64 port_connector_list = 164 [(attr_enum_value) = 174]; + optional bool propogate_port_state_from_line_to_system_port_support = 165 + [(attr_enum_value) = 175]; + optional SwitchType type = 166 [(attr_enum_value) = 176]; + repeated uint64 macsec_object_list = 167 [(attr_enum_value) = 177]; + optional uint64 qos_mpls_exp_to_tc_map = 168 [(attr_enum_value) = 178]; + optional uint64 qos_mpls_exp_to_color_map = 169 [(attr_enum_value) = 179]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 170 + [(attr_enum_value) = 180]; + optional uint32 switch_id = 171 [(attr_enum_value) = 181]; + optional uint32 max_system_cores = 172 [(attr_enum_value) = 182]; + repeated SystemPortConfig system_port_config_list = 173 + [(attr_enum_value) = 183]; + optional uint32 number_of_system_ports = 174 [(attr_enum_value) = 184]; + repeated uint64 system_port_list = 175 [(attr_enum_value) = 185]; + optional uint32 number_of_fabric_ports = 176 [(attr_enum_value) = 186]; + repeated uint64 fabric_port_list = 177 [(attr_enum_value) = 187]; + optional uint32 packet_dma_memory_pool_size = 178 [(attr_enum_value) = 188]; + optional SwitchFailoverConfigMode failover_config_mode = 179 + [(attr_enum_value) = 189]; + optional bool supported_failover_mode = 180 [(attr_enum_value) = 190]; + repeated uint64 tunnel_objects_list = 181 [(attr_enum_value) = 191]; + optional uint32 packet_available_dma_memory_pool_size = 182 + [(attr_enum_value) = 192]; + optional uint64 pre_ingress_acl = 183 [(attr_enum_value) = 193]; + optional uint32 available_snapt_entry = 184 [(attr_enum_value) = 194]; + optional uint32 available_dnapt_entry = 185 [(attr_enum_value) = 195]; + optional uint32 available_double_napt_entry = 186 [(attr_enum_value) = 196]; + repeated uint32 slave_mdio_addr_list = 187 [(attr_enum_value) = 197]; + optional uint32 my_mac_table_minimum_priority = 188 [(attr_enum_value) = 198]; + optional uint32 my_mac_table_maximum_priority = 189 [(attr_enum_value) = 199]; + repeated uint64 my_mac_list = 190 [(attr_enum_value) = 200]; + optional uint32 installed_my_mac_entries = 191 [(attr_enum_value) = 201]; + optional uint32 available_my_mac_entries = 192 [(attr_enum_value) = 202]; + optional uint32 max_number_of_forwarding_classes = 193 + [(attr_enum_value) = 203]; + optional uint64 qos_dscp_to_forwarding_class_map = 194 + [(attr_enum_value) = 204]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 195 + [(attr_enum_value) = 205]; + optional uint64 ipsec_object_id = 196 [(attr_enum_value) = 206]; + optional uint32 ipsec_sa_tag_tpid = 197 [(attr_enum_value) = 207]; + optional uint32 max_ecmp_member_count = 198 [(attr_enum_value) = 210]; + optional uint32 ecmp_member_count = 199 [(attr_enum_value) = 211]; + optional uint64 ars_profile = 200 [(attr_enum_value) = 212]; + optional ACLCapability acl_stage_post_ingress = 201 [(attr_enum_value) = 213]; + optional bool credit_wd = 202 [(attr_enum_value) = 214]; + optional uint32 credit_wd_timer = 203 [(attr_enum_value) = 215]; + optional bool switch_isolate = 204 [(attr_enum_value) = 216]; + optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 205 + [(attr_enum_value) = 217]; + repeated SwitchAsicSdkHealthCategory + reg_fatal_switch_asic_sdk_health_category = 206 [(attr_enum_value) = 219]; + repeated SwitchAsicSdkHealthCategory + reg_warning_switch_asic_sdk_health_category = 207 + [(attr_enum_value) = 220]; + repeated SwitchAsicSdkHealthCategory + reg_notice_switch_asic_sdk_health_category = 208 + [(attr_enum_value) = 221]; + optional bytes acl_chain_list = 209 [(attr_enum_value) = 222]; + optional uint32 tunnel_term_table_entry_minimum_priority = 210 + [(attr_enum_value) = 224]; + optional uint32 tunnel_term_table_entry_maximum_priority = 211 + [(attr_enum_value) = 225]; + optional uint32 available_twamp_session = 212 [(attr_enum_value) = 227]; + optional uint32 max_twamp_session = 213 [(attr_enum_value) = 228]; + optional uint32 available_ip_next_hop_group_member_entry = 214 + [(attr_enum_value) = 229]; + optional uint32 available_system_voqs = 215 [(attr_enum_value) = 230]; + optional ACLCapability acl_stage_pre_ingress = 216 [(attr_enum_value) = 231]; + repeated uint64 poe_device_list = 217 [(attr_enum_value) = 232]; + optional uint32 available_icmp_echo_session = 218 [(attr_enum_value) = 234]; + optional uint32 max_icmp_echo_session = 219 [(attr_enum_value) = 235]; + optional StatsCountMode stats_count_mode = 220 [(attr_enum_value) = 236]; + repeated uint64 selective_counter_list = 221 [(attr_enum_value) = 237]; } message SwitchTunnelAttribute { - optional TunnelType tunnel_type = 1 [(attr_enum_value) = 1]; - optional PacketAction loopback_packet_action = 2 [(attr_enum_value) = 2]; - optional TunnelEncapEcnMode tunnel_encap_ecn_mode = 3 [(attr_enum_value) = 3]; - repeated uint64 encap_mappers = 4 [(attr_enum_value) = 4]; - optional TunnelDecapEcnMode tunnel_decap_ecn_mode = 5 [(attr_enum_value) = 5]; - repeated uint64 decap_mappers = 6 [(attr_enum_value) = 6]; - optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 7 [(attr_enum_value) = 7]; - optional uint32 vxlan_udp_sport = 8 [(attr_enum_value) = 8]; - optional uint32 vxlan_udp_sport_mask = 9 [(attr_enum_value) = 9]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 10 [(attr_enum_value) = 10]; - optional uint64 encap_qos_tc_to_queue_map = 11 [(attr_enum_value) = 11]; - optional uint64 decap_qos_dscp_to_tc_map = 12 [(attr_enum_value) = 12]; - optional uint64 decap_qos_tc_to_priority_group_map = 13 [(attr_enum_value) = 13]; + optional TunnelType tunnel_type = 1 [(attr_enum_value) = 1]; + optional PacketAction loopback_packet_action = 2 [(attr_enum_value) = 2]; + optional TunnelEncapEcnMode tunnel_encap_ecn_mode = 3 [(attr_enum_value) = 3]; + repeated uint64 encap_mappers = 4 [(attr_enum_value) = 4]; + optional TunnelDecapEcnMode tunnel_decap_ecn_mode = 5 [(attr_enum_value) = 5]; + repeated uint64 decap_mappers = 6 [(attr_enum_value) = 6]; + optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 7 + [(attr_enum_value) = 7]; + optional uint32 vxlan_udp_sport = 8 [(attr_enum_value) = 8]; + optional uint32 vxlan_udp_sport_mask = 9 [(attr_enum_value) = 9]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 10 + [(attr_enum_value) = 10]; + optional uint64 encap_qos_tc_to_queue_map = 11 [(attr_enum_value) = 11]; + optional uint64 decap_qos_dscp_to_tc_map = 12 [(attr_enum_value) = 12]; + optional uint64 decap_qos_tc_to_priority_group_map = 13 + [(attr_enum_value) = 13]; } message SystemPortAttribute { - optional SystemPortType type = 1 [(attr_enum_value) = 1]; - optional uint32 qos_number_of_voqs = 2 [(attr_enum_value) = 2]; - repeated uint64 qos_voq_list = 3 [(attr_enum_value) = 3]; - optional uint64 port = 4 [(attr_enum_value) = 4]; - optional bool admin_state = 5 [(attr_enum_value) = 5]; - optional SystemPortConfig config_info = 6 [(attr_enum_value) = 6]; - optional uint64 qos_tc_to_queue_map = 7 [(attr_enum_value) = 7]; + optional SystemPortType type = 1 [(attr_enum_value) = 1]; + optional uint32 qos_number_of_voqs = 2 [(attr_enum_value) = 2]; + repeated uint64 qos_voq_list = 3 [(attr_enum_value) = 3]; + optional uint64 port = 4 [(attr_enum_value) = 4]; + optional bool admin_state = 5 [(attr_enum_value) = 5]; + optional SystemPortConfig config_info = 6 [(attr_enum_value) = 6]; + optional uint64 qos_tc_to_queue_map = 7 [(attr_enum_value) = 7]; } message TableBitmapClassificationEntryAttribute { - optional TableBitmapClassificationEntryAction action = 1 [(attr_enum_value) = 1]; - optional uint64 router_interface_key = 2 [(attr_enum_value) = 2]; - optional bool is_default = 3 [(attr_enum_value) = 3]; - optional uint32 in_rif_metadata = 4 [(attr_enum_value) = 4]; + optional TableBitmapClassificationEntryAction action = 1 + [(attr_enum_value) = 1]; + optional uint64 router_interface_key = 2 [(attr_enum_value) = 2]; + optional bool is_default = 3 [(attr_enum_value) = 3]; + optional uint32 in_rif_metadata = 4 [(attr_enum_value) = 4]; } message TableBitmapRouterEntryAttribute { - optional TableBitmapRouterEntryAction action = 1 [(attr_enum_value) = 1]; - optional uint32 priority = 2 [(attr_enum_value) = 2]; - optional uint32 in_rif_metadata_key = 3 [(attr_enum_value) = 3]; - optional uint32 in_rif_metadata_mask = 4 [(attr_enum_value) = 4]; - optional IpPrefix dst_ip_key = 5 [(attr_enum_value) = 5]; - optional uint32 tunnel_index = 6 [(attr_enum_value) = 6]; - optional uint64 next_hop = 7 [(attr_enum_value) = 7]; - optional uint64 router_interface = 8 [(attr_enum_value) = 8]; - optional uint64 trap_id = 9 [(attr_enum_value) = 9]; + optional TableBitmapRouterEntryAction action = 1 [(attr_enum_value) = 1]; + optional uint32 priority = 2 [(attr_enum_value) = 2]; + optional uint32 in_rif_metadata_key = 3 [(attr_enum_value) = 3]; + optional uint32 in_rif_metadata_mask = 4 [(attr_enum_value) = 4]; + optional IpPrefix dst_ip_key = 5 [(attr_enum_value) = 5]; + optional uint32 tunnel_index = 6 [(attr_enum_value) = 6]; + optional uint64 next_hop = 7 [(attr_enum_value) = 7]; + optional uint64 router_interface = 8 [(attr_enum_value) = 8]; + optional uint64 trap_id = 9 [(attr_enum_value) = 9]; } message TableMetaTunnelEntryAttribute { - optional TableMetaTunnelEntryAction action = 1 [(attr_enum_value) = 1]; - optional uint32 metadata_key = 2 [(attr_enum_value) = 2]; - optional bool is_default = 3 [(attr_enum_value) = 3]; - optional uint64 tunnel_id = 4 [(attr_enum_value) = 4]; - optional bytes underlay_dip = 5 [(attr_enum_value) = 5]; + optional TableMetaTunnelEntryAction action = 1 [(attr_enum_value) = 1]; + optional uint32 metadata_key = 2 [(attr_enum_value) = 2]; + optional bool is_default = 3 [(attr_enum_value) = 3]; + optional uint64 tunnel_id = 4 [(attr_enum_value) = 4]; + optional bytes underlay_dip = 5 [(attr_enum_value) = 5]; } message TamAttribute { - repeated uint64 telemetry_objects_list = 1 [(attr_enum_value) = 1]; - repeated uint64 event_objects_list = 2 [(attr_enum_value) = 2]; - repeated uint64 int_objects_list = 3 [(attr_enum_value) = 3]; - repeated TamBindPointType tam_bind_point_type_list = 4 [(attr_enum_value) = 4]; + repeated uint64 telemetry_objects_list = 1 [(attr_enum_value) = 1]; + repeated uint64 event_objects_list = 2 [(attr_enum_value) = 2]; + repeated uint64 int_objects_list = 3 [(attr_enum_value) = 3]; + repeated TamBindPointType tam_bind_point_type_list = 4 + [(attr_enum_value) = 4]; } message TamCollectorAttribute { - optional bytes src_ip = 1 [(attr_enum_value) = 1]; - optional bytes dst_ip = 2 [(attr_enum_value) = 2]; - optional bool localhost = 3 [(attr_enum_value) = 3]; - optional uint64 virtual_router_id = 4 [(attr_enum_value) = 4]; - optional uint32 truncate_size = 5 [(attr_enum_value) = 5]; - optional uint64 transport = 6 [(attr_enum_value) = 6]; - optional uint32 dscp_value = 7 [(attr_enum_value) = 7]; - optional uint64 hostif_trap = 8 [(attr_enum_value) = 8]; + optional bytes src_ip = 1 [(attr_enum_value) = 1]; + optional bytes dst_ip = 2 [(attr_enum_value) = 2]; + optional bool localhost = 3 [(attr_enum_value) = 3]; + optional uint64 virtual_router_id = 4 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 5 [(attr_enum_value) = 5]; + optional uint64 transport = 6 [(attr_enum_value) = 6]; + optional uint32 dscp_value = 7 [(attr_enum_value) = 7]; + optional uint64 hostif_trap = 8 [(attr_enum_value) = 8]; } message TamCounterSubscriptionAttribute { - optional uint64 tel_type = 1 [(attr_enum_value) = 1]; - optional uint64 object_id = 2 [(attr_enum_value) = 2]; - optional uint32 stat_id = 3 [(attr_enum_value) = 3]; - optional uint64 label = 4 [(attr_enum_value) = 4]; + optional uint64 tel_type = 1 [(attr_enum_value) = 1]; + optional uint64 object_id = 2 [(attr_enum_value) = 2]; + optional uint32 stat_id = 3 [(attr_enum_value) = 3]; + optional uint64 label = 4 [(attr_enum_value) = 4]; } message TamEventAttribute { - optional TamEventType type = 1 [(attr_enum_value) = 1]; - repeated uint64 action_list = 2 [(attr_enum_value) = 2]; - repeated uint64 collector_list = 3 [(attr_enum_value) = 3]; - optional uint64 threshold = 4 [(attr_enum_value) = 4]; - optional uint32 dscp_value = 5 [(attr_enum_value) = 5]; + optional TamEventType type = 1 [(attr_enum_value) = 1]; + repeated uint64 action_list = 2 [(attr_enum_value) = 2]; + repeated uint64 collector_list = 3 [(attr_enum_value) = 3]; + optional uint64 threshold = 4 [(attr_enum_value) = 4]; + optional uint32 dscp_value = 5 [(attr_enum_value) = 5]; } message TamEventActionAttribute { - optional uint64 report_type = 1 [(attr_enum_value) = 1]; - optional uint32 qos_action_type = 2 [(attr_enum_value) = 2]; + optional uint64 report_type = 1 [(attr_enum_value) = 1]; + optional uint32 qos_action_type = 2 [(attr_enum_value) = 2]; } message TamEventThresholdAttribute { - optional uint32 high_watermark = 1 [(attr_enum_value) = 1]; - optional uint32 low_watermark = 2 [(attr_enum_value) = 2]; - optional uint32 latency = 3 [(attr_enum_value) = 3]; - optional uint32 rate = 4 [(attr_enum_value) = 4]; - optional uint32 abs_value = 5 [(attr_enum_value) = 5]; - optional TamEventThresholdUnit unit = 6 [(attr_enum_value) = 6]; + optional uint32 high_watermark = 1 [(attr_enum_value) = 1]; + optional uint32 low_watermark = 2 [(attr_enum_value) = 2]; + optional uint32 latency = 3 [(attr_enum_value) = 3]; + optional uint32 rate = 4 [(attr_enum_value) = 4]; + optional uint32 abs_value = 5 [(attr_enum_value) = 5]; + optional TamEventThresholdUnit unit = 6 [(attr_enum_value) = 6]; } message TamIntAttribute { - optional TamIntType type = 1 [(attr_enum_value) = 1]; - optional uint32 device_id = 2 [(attr_enum_value) = 2]; - optional uint32 ioam_trace_type = 3 [(attr_enum_value) = 3]; - optional TamIntPresenceType int_presence_type = 4 [(attr_enum_value) = 4]; - optional uint32 int_presence_pb1 = 5 [(attr_enum_value) = 5]; - optional uint32 int_presence_pb2 = 6 [(attr_enum_value) = 6]; - optional uint32 int_presence_dscp_value = 7 [(attr_enum_value) = 7]; - optional bool inline = 8 [(attr_enum_value) = 8]; - optional uint32 int_presence_l3_protocol = 9 [(attr_enum_value) = 9]; - optional uint32 trace_vector = 10 [(attr_enum_value) = 10]; - optional uint32 action_vector = 11 [(attr_enum_value) = 11]; - optional uint32 p4_int_instruction_bitmap = 12 [(attr_enum_value) = 12]; - optional bool metadata_fragment_enable = 13 [(attr_enum_value) = 13]; - optional bool metadata_checksum_enable = 14 [(attr_enum_value) = 14]; - optional bool report_all_packets = 15 [(attr_enum_value) = 15]; - optional uint32 flow_liveness_period = 16 [(attr_enum_value) = 16]; - optional uint32 latency_sensitivity = 17 [(attr_enum_value) = 17]; - optional uint64 acl_group = 18 [(attr_enum_value) = 18]; - optional uint32 max_hop_count = 19 [(attr_enum_value) = 19]; - optional uint32 max_length = 20 [(attr_enum_value) = 20]; - optional uint32 name_space_id = 21 [(attr_enum_value) = 21]; - optional bool name_space_id_global = 22 [(attr_enum_value) = 22]; - optional uint64 ingress_samplepacket_enable = 23 [(attr_enum_value) = 23]; - repeated uint64 collector_list = 24 [(attr_enum_value) = 24]; - optional uint64 math_func = 25 [(attr_enum_value) = 25]; - optional uint64 report_id = 26 [(attr_enum_value) = 26]; + optional TamIntType type = 1 [(attr_enum_value) = 1]; + optional uint32 device_id = 2 [(attr_enum_value) = 2]; + optional uint32 ioam_trace_type = 3 [(attr_enum_value) = 3]; + optional TamIntPresenceType int_presence_type = 4 [(attr_enum_value) = 4]; + optional uint32 int_presence_pb1 = 5 [(attr_enum_value) = 5]; + optional uint32 int_presence_pb2 = 6 [(attr_enum_value) = 6]; + optional uint32 int_presence_dscp_value = 7 [(attr_enum_value) = 7]; + optional bool inline = 8 [(attr_enum_value) = 8]; + optional uint32 int_presence_l3_protocol = 9 [(attr_enum_value) = 9]; + optional uint32 trace_vector = 10 [(attr_enum_value) = 10]; + optional uint32 action_vector = 11 [(attr_enum_value) = 11]; + optional uint32 p4_int_instruction_bitmap = 12 [(attr_enum_value) = 12]; + optional bool metadata_fragment_enable = 13 [(attr_enum_value) = 13]; + optional bool metadata_checksum_enable = 14 [(attr_enum_value) = 14]; + optional bool report_all_packets = 15 [(attr_enum_value) = 15]; + optional uint32 flow_liveness_period = 16 [(attr_enum_value) = 16]; + optional uint32 latency_sensitivity = 17 [(attr_enum_value) = 17]; + optional uint64 acl_group = 18 [(attr_enum_value) = 18]; + optional uint32 max_hop_count = 19 [(attr_enum_value) = 19]; + optional uint32 max_length = 20 [(attr_enum_value) = 20]; + optional uint32 name_space_id = 21 [(attr_enum_value) = 21]; + optional bool name_space_id_global = 22 [(attr_enum_value) = 22]; + optional uint64 ingress_samplepacket_enable = 23 [(attr_enum_value) = 23]; + repeated uint64 collector_list = 24 [(attr_enum_value) = 24]; + optional uint64 math_func = 25 [(attr_enum_value) = 25]; + optional uint64 report_id = 26 [(attr_enum_value) = 26]; } message TamMathFuncAttribute { - optional TamTelMathFuncType tam_tel_math_func_type = 1 [(attr_enum_value) = 1]; + optional TamTelMathFuncType tam_tel_math_func_type = 1 + [(attr_enum_value) = 1]; } message TamReportAttribute { - optional TamReportType type = 1 [(attr_enum_value) = 1]; - optional uint32 histogram_number_of_bins = 2 [(attr_enum_value) = 2]; - repeated uint32 histogram_bin_boundary = 3 [(attr_enum_value) = 3]; - optional uint32 quota = 4 [(attr_enum_value) = 4]; - optional TamReportMode report_mode = 5 [(attr_enum_value) = 5]; - optional uint32 report_interval = 6 [(attr_enum_value) = 6]; - optional uint32 enterprise_number = 7 [(attr_enum_value) = 7]; - optional uint32 template_report_interval = 8 [(attr_enum_value) = 8]; - optional TamReportIntervalUnit report_interval_unit = 9 [(attr_enum_value) = 9]; + optional TamReportType type = 1 [(attr_enum_value) = 1]; + optional uint32 histogram_number_of_bins = 2 [(attr_enum_value) = 2]; + repeated uint32 histogram_bin_boundary = 3 [(attr_enum_value) = 3]; + optional uint32 quota = 4 [(attr_enum_value) = 4]; + optional TamReportMode report_mode = 5 [(attr_enum_value) = 5]; + optional uint32 report_interval = 6 [(attr_enum_value) = 6]; + optional uint32 enterprise_number = 7 [(attr_enum_value) = 7]; + optional uint32 template_report_interval = 8 [(attr_enum_value) = 8]; + optional TamReportIntervalUnit report_interval_unit = 9 + [(attr_enum_value) = 9]; } message TamTelemetryAttribute { - repeated uint64 tam_type_list = 1 [(attr_enum_value) = 1]; - repeated uint64 collector_list = 2 [(attr_enum_value) = 2]; - optional TamReportingUnit tam_reporting_unit = 3 [(attr_enum_value) = 3]; - optional uint32 reporting_interval = 4 [(attr_enum_value) = 4]; + repeated uint64 tam_type_list = 1 [(attr_enum_value) = 1]; + repeated uint64 collector_list = 2 [(attr_enum_value) = 2]; + optional TamReportingUnit tam_reporting_unit = 3 [(attr_enum_value) = 3]; + optional uint32 reporting_interval = 4 [(attr_enum_value) = 4]; } message TamTelTypeAttribute { - optional TamTelemetryType tam_telemetry_type = 1 [(attr_enum_value) = 1]; - optional uint32 int_switch_identifier = 2 [(attr_enum_value) = 2]; - optional bool switch_enable_port_stats = 3 [(attr_enum_value) = 3]; - optional bool switch_enable_port_stats_ingress = 4 [(attr_enum_value) = 4]; - optional bool switch_enable_port_stats_egress = 5 [(attr_enum_value) = 5]; - optional bool switch_enable_virtual_queue_stats = 6 [(attr_enum_value) = 6]; - optional bool switch_enable_output_queue_stats = 7 [(attr_enum_value) = 7]; - optional bool switch_enable_mmu_stats = 8 [(attr_enum_value) = 8]; - optional bool switch_enable_fabric_stats = 9 [(attr_enum_value) = 9]; - optional bool switch_enable_filter_stats = 10 [(attr_enum_value) = 10]; - optional bool switch_enable_resource_utilization_stats = 11 [(attr_enum_value) = 11]; - optional bool fabric_q = 12 [(attr_enum_value) = 12]; - optional bool ne_enable = 13 [(attr_enum_value) = 13]; - optional uint32 dscp_value = 14 [(attr_enum_value) = 14]; - optional uint64 math_func = 15 [(attr_enum_value) = 15]; - optional uint64 report_id = 16 [(attr_enum_value) = 16]; - repeated uint64 counter_subscription_list = 17 [(attr_enum_value) = 17]; + optional TamTelemetryType tam_telemetry_type = 1 [(attr_enum_value) = 1]; + optional uint32 int_switch_identifier = 2 [(attr_enum_value) = 2]; + optional bool switch_enable_port_stats = 3 [(attr_enum_value) = 3]; + optional bool switch_enable_port_stats_ingress = 4 [(attr_enum_value) = 4]; + optional bool switch_enable_port_stats_egress = 5 [(attr_enum_value) = 5]; + optional bool switch_enable_virtual_queue_stats = 6 [(attr_enum_value) = 6]; + optional bool switch_enable_output_queue_stats = 7 [(attr_enum_value) = 7]; + optional bool switch_enable_mmu_stats = 8 [(attr_enum_value) = 8]; + optional bool switch_enable_fabric_stats = 9 [(attr_enum_value) = 9]; + optional bool switch_enable_filter_stats = 10 [(attr_enum_value) = 10]; + optional bool switch_enable_resource_utilization_stats = 11 + [(attr_enum_value) = 11]; + optional bool fabric_q = 12 [(attr_enum_value) = 12]; + optional bool ne_enable = 13 [(attr_enum_value) = 13]; + optional uint32 dscp_value = 14 [(attr_enum_value) = 14]; + optional uint64 math_func = 15 [(attr_enum_value) = 15]; + optional uint64 report_id = 16 [(attr_enum_value) = 16]; + repeated uint64 counter_subscription_list = 17 [(attr_enum_value) = 17]; } message TamTransportAttribute { - optional TamTransportType transport_type = 1 [(attr_enum_value) = 1]; - optional uint32 src_port = 2 [(attr_enum_value) = 2]; - optional uint32 dst_port = 3 [(attr_enum_value) = 3]; - optional TamTransportAuthType transport_auth_type = 4 [(attr_enum_value) = 4]; - optional uint32 mtu = 5 [(attr_enum_value) = 5]; + optional TamTransportType transport_type = 1 [(attr_enum_value) = 1]; + optional uint32 src_port = 2 [(attr_enum_value) = 2]; + optional uint32 dst_port = 3 [(attr_enum_value) = 3]; + optional TamTransportAuthType transport_auth_type = 4 [(attr_enum_value) = 4]; + optional uint32 mtu = 5 [(attr_enum_value) = 5]; } message TunnelAttribute { - optional TunnelType type = 1 [(attr_enum_value) = 1]; - optional uint64 underlay_interface = 2 [(attr_enum_value) = 2]; - optional uint64 overlay_interface = 3 [(attr_enum_value) = 3]; - optional TunnelPeerMode peer_mode = 4 [(attr_enum_value) = 4]; - optional bytes encap_src_ip = 5 [(attr_enum_value) = 5]; - optional bytes encap_dst_ip = 6 [(attr_enum_value) = 6]; - optional TunnelTtlMode encap_ttl_mode = 7 [(attr_enum_value) = 7]; - optional uint32 encap_ttl_val = 8 [(attr_enum_value) = 8]; - optional TunnelDscpMode encap_dscp_mode = 9 [(attr_enum_value) = 9]; - optional uint32 encap_dscp_val = 10 [(attr_enum_value) = 10]; - optional bool encap_gre_key_valid = 11 [(attr_enum_value) = 11]; - optional uint32 encap_gre_key = 12 [(attr_enum_value) = 12]; - optional TunnelEncapEcnMode encap_ecn_mode = 13 [(attr_enum_value) = 13]; - repeated uint64 encap_mappers = 14 [(attr_enum_value) = 14]; - optional TunnelDecapEcnMode decap_ecn_mode = 15 [(attr_enum_value) = 15]; - repeated uint64 decap_mappers = 16 [(attr_enum_value) = 16]; - optional TunnelTtlMode decap_ttl_mode = 17 [(attr_enum_value) = 17]; - optional TunnelDscpMode decap_dscp_mode = 18 [(attr_enum_value) = 18]; - repeated uint64 term_table_entry_list = 19 [(attr_enum_value) = 19]; - optional PacketAction loopback_packet_action = 20 [(attr_enum_value) = 20]; - optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 21 [(attr_enum_value) = 21]; - optional uint32 vxlan_udp_sport = 22 [(attr_enum_value) = 22]; - optional uint32 vxlan_udp_sport_mask = 23 [(attr_enum_value) = 23]; - optional uint32 sa_index = 24 [(attr_enum_value) = 24]; - repeated uint64 ipsec_sa_port_list = 25 [(attr_enum_value) = 25]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 26 [(attr_enum_value) = 26]; - optional uint64 encap_qos_tc_to_queue_map = 27 [(attr_enum_value) = 27]; - optional uint64 decap_qos_dscp_to_tc_map = 28 [(attr_enum_value) = 28]; - optional uint64 decap_qos_tc_to_priority_group_map = 29 [(attr_enum_value) = 29]; - optional bool vxlan_udp_sport_security = 30 [(attr_enum_value) = 30]; + optional TunnelType type = 1 [(attr_enum_value) = 1]; + optional uint64 underlay_interface = 2 [(attr_enum_value) = 2]; + optional uint64 overlay_interface = 3 [(attr_enum_value) = 3]; + optional TunnelPeerMode peer_mode = 4 [(attr_enum_value) = 4]; + optional bytes encap_src_ip = 5 [(attr_enum_value) = 5]; + optional bytes encap_dst_ip = 6 [(attr_enum_value) = 6]; + optional TunnelTtlMode encap_ttl_mode = 7 [(attr_enum_value) = 7]; + optional uint32 encap_ttl_val = 8 [(attr_enum_value) = 8]; + optional TunnelDscpMode encap_dscp_mode = 9 [(attr_enum_value) = 9]; + optional uint32 encap_dscp_val = 10 [(attr_enum_value) = 10]; + optional bool encap_gre_key_valid = 11 [(attr_enum_value) = 11]; + optional uint32 encap_gre_key = 12 [(attr_enum_value) = 12]; + optional TunnelEncapEcnMode encap_ecn_mode = 13 [(attr_enum_value) = 13]; + repeated uint64 encap_mappers = 14 [(attr_enum_value) = 14]; + optional TunnelDecapEcnMode decap_ecn_mode = 15 [(attr_enum_value) = 15]; + repeated uint64 decap_mappers = 16 [(attr_enum_value) = 16]; + optional TunnelTtlMode decap_ttl_mode = 17 [(attr_enum_value) = 17]; + optional TunnelDscpMode decap_dscp_mode = 18 [(attr_enum_value) = 18]; + repeated uint64 term_table_entry_list = 19 [(attr_enum_value) = 19]; + optional PacketAction loopback_packet_action = 20 [(attr_enum_value) = 20]; + optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 21 + [(attr_enum_value) = 21]; + optional uint32 vxlan_udp_sport = 22 [(attr_enum_value) = 22]; + optional uint32 vxlan_udp_sport_mask = 23 [(attr_enum_value) = 23]; + optional uint32 sa_index = 24 [(attr_enum_value) = 24]; + repeated uint64 ipsec_sa_port_list = 25 [(attr_enum_value) = 25]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 26 + [(attr_enum_value) = 26]; + optional uint64 encap_qos_tc_to_queue_map = 27 [(attr_enum_value) = 27]; + optional uint64 decap_qos_dscp_to_tc_map = 28 [(attr_enum_value) = 28]; + optional uint64 decap_qos_tc_to_priority_group_map = 29 + [(attr_enum_value) = 29]; + optional bool vxlan_udp_sport_security = 30 [(attr_enum_value) = 30]; + optional StatsCountMode stats_count_mode = 31 [(attr_enum_value) = 31]; + repeated uint64 selective_counter_list = 32 [(attr_enum_value) = 32]; } message TunnelMapAttribute { - optional TunnelMapType type = 1 [(attr_enum_value) = 1]; - repeated uint64 entry_list = 2 [(attr_enum_value) = 2]; + optional TunnelMapType type = 1 [(attr_enum_value) = 1]; + repeated uint64 entry_list = 2 [(attr_enum_value) = 2]; } message TunnelMapEntryAttribute { - optional TunnelMapType tunnel_map_type = 1 [(attr_enum_value) = 1]; - optional uint64 tunnel_map = 2 [(attr_enum_value) = 2]; - optional uint32 oecn_key = 3 [(attr_enum_value) = 3]; - optional uint32 oecn_value = 4 [(attr_enum_value) = 4]; - optional uint32 uecn_key = 5 [(attr_enum_value) = 5]; - optional uint32 uecn_value = 6 [(attr_enum_value) = 6]; - optional uint32 vlan_id_key = 7 [(attr_enum_value) = 7]; - optional uint32 vlan_id_value = 8 [(attr_enum_value) = 8]; - optional uint32 vni_id_key = 9 [(attr_enum_value) = 9]; - optional uint32 vni_id_value = 10 [(attr_enum_value) = 10]; - optional uint64 bridge_id_key = 11 [(attr_enum_value) = 11]; - optional uint64 bridge_id_value = 12 [(attr_enum_value) = 12]; - optional uint64 virtual_router_id_key = 13 [(attr_enum_value) = 13]; - optional uint64 virtual_router_id_value = 14 [(attr_enum_value) = 14]; - optional uint32 vsid_id_key = 15 [(attr_enum_value) = 15]; - optional uint32 vsid_id_value = 16 [(attr_enum_value) = 16]; - optional uint32 prefix_agg_id_key = 17 [(attr_enum_value) = 17]; - optional bytes srv6_vpn_sid_value = 18 [(attr_enum_value) = 18]; + optional TunnelMapType tunnel_map_type = 1 [(attr_enum_value) = 1]; + optional uint64 tunnel_map = 2 [(attr_enum_value) = 2]; + optional uint32 oecn_key = 3 [(attr_enum_value) = 3]; + optional uint32 oecn_value = 4 [(attr_enum_value) = 4]; + optional uint32 uecn_key = 5 [(attr_enum_value) = 5]; + optional uint32 uecn_value = 6 [(attr_enum_value) = 6]; + optional uint32 vlan_id_key = 7 [(attr_enum_value) = 7]; + optional uint32 vlan_id_value = 8 [(attr_enum_value) = 8]; + optional uint32 vni_id_key = 9 [(attr_enum_value) = 9]; + optional uint32 vni_id_value = 10 [(attr_enum_value) = 10]; + optional uint64 bridge_id_key = 11 [(attr_enum_value) = 11]; + optional uint64 bridge_id_value = 12 [(attr_enum_value) = 12]; + optional uint64 virtual_router_id_key = 13 [(attr_enum_value) = 13]; + optional uint64 virtual_router_id_value = 14 [(attr_enum_value) = 14]; + optional uint32 vsid_id_key = 15 [(attr_enum_value) = 15]; + optional uint32 vsid_id_value = 16 [(attr_enum_value) = 16]; + optional uint32 prefix_agg_id_key = 17 [(attr_enum_value) = 17]; + optional bytes srv6_vpn_sid_value = 18 [(attr_enum_value) = 18]; } message TunnelTermTableEntryAttribute { - optional uint64 vr_id = 1 [(attr_enum_value) = 1]; - optional TunnelTermTableEntryType type = 2 [(attr_enum_value) = 2]; - optional bytes dst_ip = 3 [(attr_enum_value) = 3]; - optional bytes dst_ip_mask = 4 [(attr_enum_value) = 4]; - optional bytes src_ip = 5 [(attr_enum_value) = 5]; - optional bytes src_ip_mask = 6 [(attr_enum_value) = 6]; - optional TunnelType tunnel_type = 7 [(attr_enum_value) = 7]; - optional uint64 action_tunnel_id = 8 [(attr_enum_value) = 8]; - optional IpAddrFamily ip_addr_family = 9 [(attr_enum_value) = 9]; - optional bool ipsec_verified = 10 [(attr_enum_value) = 10]; - optional uint32 priority = 11 [(attr_enum_value) = 11]; + optional uint64 vr_id = 1 [(attr_enum_value) = 1]; + optional TunnelTermTableEntryType type = 2 [(attr_enum_value) = 2]; + optional bytes dst_ip = 3 [(attr_enum_value) = 3]; + optional bytes dst_ip_mask = 4 [(attr_enum_value) = 4]; + optional bytes src_ip = 5 [(attr_enum_value) = 5]; + optional bytes src_ip_mask = 6 [(attr_enum_value) = 6]; + optional TunnelType tunnel_type = 7 [(attr_enum_value) = 7]; + optional uint64 action_tunnel_id = 8 [(attr_enum_value) = 8]; + optional IpAddrFamily ip_addr_family = 9 [(attr_enum_value) = 9]; + optional bool ipsec_verified = 10 [(attr_enum_value) = 10]; + optional uint32 priority = 11 [(attr_enum_value) = 11]; } message UdfAttribute { - optional uint64 match_id = 1 [(attr_enum_value) = 1]; - optional uint64 group_id = 2 [(attr_enum_value) = 2]; - optional UdfBase base = 3 [(attr_enum_value) = 3]; - optional uint32 offset = 4 [(attr_enum_value) = 4]; - repeated uint32 hash_mask = 5 [(attr_enum_value) = 5]; + optional uint64 match_id = 1 [(attr_enum_value) = 1]; + optional uint64 group_id = 2 [(attr_enum_value) = 2]; + optional UdfBase base = 3 [(attr_enum_value) = 3]; + optional uint32 offset = 4 [(attr_enum_value) = 4]; + repeated uint32 hash_mask = 5 [(attr_enum_value) = 5]; } message UdfGroupAttribute { - repeated uint64 udf_list = 1 [(attr_enum_value) = 1]; - optional UdfGroupType type = 2 [(attr_enum_value) = 2]; - optional uint32 length = 3 [(attr_enum_value) = 3]; + repeated uint64 udf_list = 1 [(attr_enum_value) = 1]; + optional UdfGroupType type = 2 [(attr_enum_value) = 2]; + optional uint32 length = 3 [(attr_enum_value) = 3]; } message UdfMatchAttribute { - optional AclFieldData l2_type = 1 [(attr_enum_value) = 1]; - optional AclFieldData l3_type = 2 [(attr_enum_value) = 2]; - optional AclFieldData gre_type = 3 [(attr_enum_value) = 3]; - optional uint32 priority = 4 [(attr_enum_value) = 4]; - optional AclFieldData l4_dst_port_type = 5 [(attr_enum_value) = 5]; + optional AclFieldData l2_type = 1 [(attr_enum_value) = 1]; + optional AclFieldData l3_type = 2 [(attr_enum_value) = 2]; + optional AclFieldData gre_type = 3 [(attr_enum_value) = 3]; + optional uint32 priority = 4 [(attr_enum_value) = 4]; + optional AclFieldData l4_dst_port_type = 5 [(attr_enum_value) = 5]; } message VirtualRouterAttribute { - optional bool admin_v4_state = 1 [(attr_enum_value) = 1]; - optional bool admin_v6_state = 2 [(attr_enum_value) = 2]; - optional bytes src_mac_address = 3 [(attr_enum_value) = 3]; - optional PacketAction violation_ttl1_packet_action = 4 [(attr_enum_value) = 4]; - optional PacketAction violation_ip_options_packet_action = 5 [(attr_enum_value) = 5]; - optional PacketAction unknown_l3_multicast_packet_action = 6 [(attr_enum_value) = 6]; - optional bytes label = 7 [(attr_enum_value) = 7]; + optional bool admin_v4_state = 1 [(attr_enum_value) = 1]; + optional bool admin_v6_state = 2 [(attr_enum_value) = 2]; + optional bytes src_mac_address = 3 [(attr_enum_value) = 3]; + optional PacketAction violation_ttl1_packet_action = 4 + [(attr_enum_value) = 4]; + optional PacketAction violation_ip_options_packet_action = 5 + [(attr_enum_value) = 5]; + optional PacketAction unknown_l3_multicast_packet_action = 6 + [(attr_enum_value) = 6]; + optional bytes label = 7 [(attr_enum_value) = 7]; } message VlanAttribute { - optional uint32 vlan_id = 1 [(attr_enum_value) = 1]; - repeated uint64 member_list = 2 [(attr_enum_value) = 2]; - optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; - optional uint64 stp_instance = 4 [(attr_enum_value) = 4]; - optional bool learn_disable = 5 [(attr_enum_value) = 5]; - optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 6 [(attr_enum_value) = 6]; - optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 7 [(attr_enum_value) = 7]; - optional uint64 unknown_non_ip_mcast_output_group_id = 8 [(attr_enum_value) = 8]; - optional uint64 unknown_ipv4_mcast_output_group_id = 9 [(attr_enum_value) = 9]; - optional uint64 unknown_ipv6_mcast_output_group_id = 10 [(attr_enum_value) = 10]; - optional uint64 unknown_linklocal_mcast_output_group_id = 11 [(attr_enum_value) = 11]; - optional uint64 ingress_acl = 12 [(attr_enum_value) = 12]; - optional uint64 egress_acl = 13 [(attr_enum_value) = 13]; - optional uint32 meta_data = 14 [(attr_enum_value) = 14]; - optional VlanFloodControlType unknown_unicast_flood_control_type = 15 [(attr_enum_value) = 15]; - optional uint64 unknown_unicast_flood_group = 16 [(attr_enum_value) = 16]; - optional VlanFloodControlType unknown_multicast_flood_control_type = 17 [(attr_enum_value) = 17]; - optional uint64 unknown_multicast_flood_group = 18 [(attr_enum_value) = 18]; - optional VlanFloodControlType broadcast_flood_control_type = 19 [(attr_enum_value) = 19]; - optional uint64 broadcast_flood_group = 20 [(attr_enum_value) = 20]; - optional bool custom_igmp_snooping_enable = 21 [(attr_enum_value) = 21]; - repeated uint64 tam_object = 22 [(attr_enum_value) = 22]; + optional uint32 vlan_id = 1 [(attr_enum_value) = 1]; + repeated uint64 member_list = 2 [(attr_enum_value) = 2]; + optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; + optional uint64 stp_instance = 4 [(attr_enum_value) = 4]; + optional bool learn_disable = 5 [(attr_enum_value) = 5]; + optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 6 + [(attr_enum_value) = 6]; + optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 7 + [(attr_enum_value) = 7]; + optional uint64 unknown_non_ip_mcast_output_group_id = 8 + [(attr_enum_value) = 8]; + optional uint64 unknown_ipv4_mcast_output_group_id = 9 + [(attr_enum_value) = 9]; + optional uint64 unknown_ipv6_mcast_output_group_id = 10 + [(attr_enum_value) = 10]; + optional uint64 unknown_linklocal_mcast_output_group_id = 11 + [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 12 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 13 [(attr_enum_value) = 13]; + optional uint32 meta_data = 14 [(attr_enum_value) = 14]; + optional VlanFloodControlType unknown_unicast_flood_control_type = 15 + [(attr_enum_value) = 15]; + optional uint64 unknown_unicast_flood_group = 16 [(attr_enum_value) = 16]; + optional VlanFloodControlType unknown_multicast_flood_control_type = 17 + [(attr_enum_value) = 17]; + optional uint64 unknown_multicast_flood_group = 18 [(attr_enum_value) = 18]; + optional VlanFloodControlType broadcast_flood_control_type = 19 + [(attr_enum_value) = 19]; + optional uint64 broadcast_flood_group = 20 [(attr_enum_value) = 20]; + optional bool custom_igmp_snooping_enable = 21 [(attr_enum_value) = 21]; + repeated uint64 tam_object = 22 [(attr_enum_value) = 22]; + optional StatsCountMode stats_count_mode = 23 [(attr_enum_value) = 23]; + repeated uint64 selective_counter_list = 24 [(attr_enum_value) = 24]; } message VlanMemberAttribute { - optional uint64 vlan_id = 1 [(attr_enum_value) = 1]; - optional uint64 bridge_port_id = 2 [(attr_enum_value) = 2]; - optional VlanTaggingMode vlan_tagging_mode = 3 [(attr_enum_value) = 3]; + optional uint64 vlan_id = 1 [(attr_enum_value) = 1]; + optional uint64 bridge_port_id = 2 [(attr_enum_value) = 2]; + optional VlanTaggingMode vlan_tagging_mode = 3 [(attr_enum_value) = 3]; } message WredAttribute { - optional bool green_enable = 1 [(attr_enum_value) = 1]; - optional uint32 green_min_threshold = 2 [(attr_enum_value) = 2]; - optional uint32 green_max_threshold = 3 [(attr_enum_value) = 3]; - optional uint32 green_drop_probability = 4 [(attr_enum_value) = 4]; - optional bool yellow_enable = 5 [(attr_enum_value) = 5]; - optional uint32 yellow_min_threshold = 6 [(attr_enum_value) = 6]; - optional uint32 yellow_max_threshold = 7 [(attr_enum_value) = 7]; - optional uint32 yellow_drop_probability = 8 [(attr_enum_value) = 8]; - optional bool red_enable = 9 [(attr_enum_value) = 9]; - optional uint32 red_min_threshold = 10 [(attr_enum_value) = 10]; - optional uint32 red_max_threshold = 11 [(attr_enum_value) = 11]; - optional uint32 red_drop_probability = 12 [(attr_enum_value) = 12]; - optional uint32 weight = 13 [(attr_enum_value) = 13]; - optional EcnMarkMode ecn_mark_mode = 14 [(attr_enum_value) = 14]; - optional uint32 ecn_green_min_threshold = 15 [(attr_enum_value) = 15]; - optional uint32 ecn_green_max_threshold = 16 [(attr_enum_value) = 16]; - optional uint32 ecn_green_mark_probability = 17 [(attr_enum_value) = 17]; - optional uint32 ecn_yellow_min_threshold = 18 [(attr_enum_value) = 18]; - optional uint32 ecn_yellow_max_threshold = 19 [(attr_enum_value) = 19]; - optional uint32 ecn_yellow_mark_probability = 20 [(attr_enum_value) = 20]; - optional uint32 ecn_red_min_threshold = 21 [(attr_enum_value) = 21]; - optional uint32 ecn_red_max_threshold = 22 [(attr_enum_value) = 22]; - optional uint32 ecn_red_mark_probability = 23 [(attr_enum_value) = 23]; - optional uint32 ecn_color_unaware_min_threshold = 24 [(attr_enum_value) = 24]; - optional uint32 ecn_color_unaware_max_threshold = 25 [(attr_enum_value) = 25]; - optional uint32 ecn_color_unaware_mark_probability = 26 [(attr_enum_value) = 26]; - optional uint64 green_min_threshold_64 = 27 [(attr_enum_value) = 27]; - optional uint64 green_max_threshold_64 = 28 [(attr_enum_value) = 28]; - optional uint64 yellow_min_threshold_64 = 29 [(attr_enum_value) = 29]; - optional uint64 yellow_max_threshold_64 = 30 [(attr_enum_value) = 30]; - optional uint64 red_min_threshold_64 = 31 [(attr_enum_value) = 31]; - optional uint64 red_max_threshold_64 = 32 [(attr_enum_value) = 32]; - optional uint64 ecn_green_min_threshold_64 = 33 [(attr_enum_value) = 33]; - optional uint64 ecn_green_max_threshold_64 = 34 [(attr_enum_value) = 34]; - optional uint64 ecn_yellow_min_threshold_64 = 35 [(attr_enum_value) = 35]; - optional uint64 ecn_yellow_max_threshold_64 = 36 [(attr_enum_value) = 36]; - optional uint64 ecn_red_min_threshold_64 = 37 [(attr_enum_value) = 37]; - optional uint64 ecn_red_max_threshold_64 = 38 [(attr_enum_value) = 38]; - optional uint64 ecn_color_unaware_min_threshold_64 = 39 [(attr_enum_value) = 39]; - optional uint64 ecn_color_unaware_max_threshold_64 = 40 [(attr_enum_value) = 40]; + optional bool green_enable = 1 [(attr_enum_value) = 1]; + optional uint32 green_min_threshold = 2 [(attr_enum_value) = 2]; + optional uint32 green_max_threshold = 3 [(attr_enum_value) = 3]; + optional uint32 green_drop_probability = 4 [(attr_enum_value) = 4]; + optional bool yellow_enable = 5 [(attr_enum_value) = 5]; + optional uint32 yellow_min_threshold = 6 [(attr_enum_value) = 6]; + optional uint32 yellow_max_threshold = 7 [(attr_enum_value) = 7]; + optional uint32 yellow_drop_probability = 8 [(attr_enum_value) = 8]; + optional bool red_enable = 9 [(attr_enum_value) = 9]; + optional uint32 red_min_threshold = 10 [(attr_enum_value) = 10]; + optional uint32 red_max_threshold = 11 [(attr_enum_value) = 11]; + optional uint32 red_drop_probability = 12 [(attr_enum_value) = 12]; + optional uint32 weight = 13 [(attr_enum_value) = 13]; + optional EcnMarkMode ecn_mark_mode = 14 [(attr_enum_value) = 14]; + optional uint32 ecn_green_min_threshold = 15 [(attr_enum_value) = 15]; + optional uint32 ecn_green_max_threshold = 16 [(attr_enum_value) = 16]; + optional uint32 ecn_green_mark_probability = 17 [(attr_enum_value) = 17]; + optional uint32 ecn_yellow_min_threshold = 18 [(attr_enum_value) = 18]; + optional uint32 ecn_yellow_max_threshold = 19 [(attr_enum_value) = 19]; + optional uint32 ecn_yellow_mark_probability = 20 [(attr_enum_value) = 20]; + optional uint32 ecn_red_min_threshold = 21 [(attr_enum_value) = 21]; + optional uint32 ecn_red_max_threshold = 22 [(attr_enum_value) = 22]; + optional uint32 ecn_red_mark_probability = 23 [(attr_enum_value) = 23]; + optional uint32 ecn_color_unaware_min_threshold = 24 [(attr_enum_value) = 24]; + optional uint32 ecn_color_unaware_max_threshold = 25 [(attr_enum_value) = 25]; + optional uint32 ecn_color_unaware_mark_probability = 26 + [(attr_enum_value) = 26]; + optional uint64 green_min_threshold_64 = 27 [(attr_enum_value) = 27]; + optional uint64 green_max_threshold_64 = 28 [(attr_enum_value) = 28]; + optional uint64 yellow_min_threshold_64 = 29 [(attr_enum_value) = 29]; + optional uint64 yellow_max_threshold_64 = 30 [(attr_enum_value) = 30]; + optional uint64 red_min_threshold_64 = 31 [(attr_enum_value) = 31]; + optional uint64 red_max_threshold_64 = 32 [(attr_enum_value) = 32]; + optional uint64 ecn_green_min_threshold_64 = 33 [(attr_enum_value) = 33]; + optional uint64 ecn_green_max_threshold_64 = 34 [(attr_enum_value) = 34]; + optional uint64 ecn_yellow_min_threshold_64 = 35 [(attr_enum_value) = 35]; + optional uint64 ecn_yellow_max_threshold_64 = 36 [(attr_enum_value) = 36]; + optional uint64 ecn_red_min_threshold_64 = 37 [(attr_enum_value) = 37]; + optional uint64 ecn_red_max_threshold_64 = 38 [(attr_enum_value) = 38]; + optional uint64 ecn_color_unaware_min_threshold_64 = 39 + [(attr_enum_value) = 39]; + optional uint64 ecn_color_unaware_max_threshold_64 = 40 + [(attr_enum_value) = 40]; } diff --git a/dataplane/proto/sai/counter.pb.go b/dataplane/proto/sai/counter.pb.go index 3543b60a0..1ba1c0e66 100644 --- a/dataplane/proto/sai/counter.pb.go +++ b/dataplane/proto/sai/counter.pb.go @@ -24,9 +24,13 @@ const ( type CounterAttr int32 const ( - CounterAttr_COUNTER_ATTR_UNSPECIFIED CounterAttr = 0 - CounterAttr_COUNTER_ATTR_TYPE CounterAttr = 1 - CounterAttr_COUNTER_ATTR_LABEL CounterAttr = 2 + CounterAttr_COUNTER_ATTR_UNSPECIFIED CounterAttr = 0 + CounterAttr_COUNTER_ATTR_TYPE CounterAttr = 1 + CounterAttr_COUNTER_ATTR_LABEL CounterAttr = 2 + CounterAttr_COUNTER_ATTR_ENABLE_PACKET_COUNT CounterAttr = 3 + CounterAttr_COUNTER_ATTR_ENABLE_BYTE_COUNT CounterAttr = 4 + CounterAttr_COUNTER_ATTR_OBJECT_TYPE CounterAttr = 5 + CounterAttr_COUNTER_ATTR_STAT_ID_LIST CounterAttr = 6 ) // Enum value maps for CounterAttr. @@ -35,11 +39,19 @@ var ( 0: "COUNTER_ATTR_UNSPECIFIED", 1: "COUNTER_ATTR_TYPE", 2: "COUNTER_ATTR_LABEL", + 3: "COUNTER_ATTR_ENABLE_PACKET_COUNT", + 4: "COUNTER_ATTR_ENABLE_BYTE_COUNT", + 5: "COUNTER_ATTR_OBJECT_TYPE", + 6: "COUNTER_ATTR_STAT_ID_LIST", } CounterAttr_value = map[string]int32{ - "COUNTER_ATTR_UNSPECIFIED": 0, - "COUNTER_ATTR_TYPE": 1, - "COUNTER_ATTR_LABEL": 2, + "COUNTER_ATTR_UNSPECIFIED": 0, + "COUNTER_ATTR_TYPE": 1, + "COUNTER_ATTR_LABEL": 2, + "COUNTER_ATTR_ENABLE_PACKET_COUNT": 3, + "COUNTER_ATTR_ENABLE_BYTE_COUNT": 4, + "COUNTER_ATTR_OBJECT_TYPE": 5, + "COUNTER_ATTR_STAT_ID_LIST": 6, } ) @@ -71,12 +83,16 @@ func (CounterAttr) EnumDescriptor() ([]byte, []int) { } type CreateCounterRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - Type *CounterType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.CounterType,oneof" json:"type,omitempty"` - Label []byte `protobuf:"bytes,3,opt,name=label,proto3,oneof" json:"label,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + Type *CounterType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.CounterType,oneof" json:"type,omitempty"` + Label []byte `protobuf:"bytes,3,opt,name=label,proto3,oneof" json:"label,omitempty"` + EnablePacketCount *bool `protobuf:"varint,4,opt,name=enable_packet_count,json=enablePacketCount,proto3,oneof" json:"enable_packet_count,omitempty"` + EnableByteCount *bool `protobuf:"varint,5,opt,name=enable_byte_count,json=enableByteCount,proto3,oneof" json:"enable_byte_count,omitempty"` + ObjectType *ObjectType `protobuf:"varint,6,opt,name=object_type,json=objectType,proto3,enum=lemming.dataplane.sai.ObjectType,oneof" json:"object_type,omitempty"` + StatIdList []int32 `protobuf:"varint,7,rep,packed,name=stat_id_list,json=statIdList,proto3" json:"stat_id_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateCounterRequest) Reset() { @@ -130,6 +146,34 @@ func (x *CreateCounterRequest) GetLabel() []byte { return nil } +func (x *CreateCounterRequest) GetEnablePacketCount() bool { + if x != nil && x.EnablePacketCount != nil { + return *x.EnablePacketCount + } + return false +} + +func (x *CreateCounterRequest) GetEnableByteCount() bool { + if x != nil && x.EnableByteCount != nil { + return *x.EnableByteCount + } + return false +} + +func (x *CreateCounterRequest) GetObjectType() ObjectType { + if x != nil && x.ObjectType != nil { + return *x.ObjectType + } + return ObjectType_OBJECT_TYPE_UNSPECIFIED +} + +func (x *CreateCounterRequest) GetStatIdList() []int32 { + if x != nil { + return x.StatIdList + } + return nil +} + type CreateCounterResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -258,6 +302,7 @@ type SetCounterAttributeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` Label []byte `protobuf:"bytes,2,opt,name=label,proto3,oneof" json:"label,omitempty"` + StatIdList []int32 `protobuf:"varint,3,rep,packed,name=stat_id_list,json=statIdList,proto3" json:"stat_id_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -306,6 +351,13 @@ func (x *SetCounterAttributeRequest) GetLabel() []byte { return nil } +func (x *SetCounterAttributeRequest) GetStatIdList() []int32 { + if x != nil { + return x.StatIdList + } + return nil +} + type SetCounterAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -542,7 +594,7 @@ var file_dataplane_proto_sai_counter_proto_rawDesc = string([]byte{ 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x01, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe0, 0x03, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x43, 0x0a, @@ -552,93 +604,124 @@ var file_dataplane_proto_sai_counter_proto_rawDesc = string([]byte{ 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x55, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x22, 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, + 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x11, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, + 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0a, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0c, + 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, + 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x55, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, - 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x61, 0x74, - 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x5a, 0x0a, 0x0b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, - 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x02, 0x32, 0xd9, 0x04, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, + 0x01, 0x12, 0x28, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, + 0x0a, 0x73, 0x74, 0x61, 0x74, 0x49, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, + 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, + 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0xe1, 0x01, 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, + 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x42, 0x59, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x5f, + 0x49, 0x44, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, 0x32, 0xd9, 0x04, 0x0a, 0x07, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, - 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, }) var ( @@ -668,29 +751,31 @@ var file_dataplane_proto_sai_counter_proto_goTypes = []any{ (*GetCounterStatsRequest)(nil), // 9: lemming.dataplane.sai.GetCounterStatsRequest (*GetCounterStatsResponse)(nil), // 10: lemming.dataplane.sai.GetCounterStatsResponse (CounterType)(0), // 11: lemming.dataplane.sai.CounterType - (*CounterAttribute)(nil), // 12: lemming.dataplane.sai.CounterAttribute - (CounterStat)(0), // 13: lemming.dataplane.sai.CounterStat + (ObjectType)(0), // 12: lemming.dataplane.sai.ObjectType + (*CounterAttribute)(nil), // 13: lemming.dataplane.sai.CounterAttribute + (CounterStat)(0), // 14: lemming.dataplane.sai.CounterStat } var file_dataplane_proto_sai_counter_proto_depIdxs = []int32{ 11, // 0: lemming.dataplane.sai.CreateCounterRequest.type:type_name -> lemming.dataplane.sai.CounterType - 0, // 1: lemming.dataplane.sai.GetCounterAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.CounterAttr - 12, // 2: lemming.dataplane.sai.GetCounterAttributeResponse.attr:type_name -> lemming.dataplane.sai.CounterAttribute - 13, // 3: lemming.dataplane.sai.GetCounterStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.CounterStat - 1, // 4: lemming.dataplane.sai.Counter.CreateCounter:input_type -> lemming.dataplane.sai.CreateCounterRequest - 3, // 5: lemming.dataplane.sai.Counter.RemoveCounter:input_type -> lemming.dataplane.sai.RemoveCounterRequest - 5, // 6: lemming.dataplane.sai.Counter.SetCounterAttribute:input_type -> lemming.dataplane.sai.SetCounterAttributeRequest - 7, // 7: lemming.dataplane.sai.Counter.GetCounterAttribute:input_type -> lemming.dataplane.sai.GetCounterAttributeRequest - 9, // 8: lemming.dataplane.sai.Counter.GetCounterStats:input_type -> lemming.dataplane.sai.GetCounterStatsRequest - 2, // 9: lemming.dataplane.sai.Counter.CreateCounter:output_type -> lemming.dataplane.sai.CreateCounterResponse - 4, // 10: lemming.dataplane.sai.Counter.RemoveCounter:output_type -> lemming.dataplane.sai.RemoveCounterResponse - 6, // 11: lemming.dataplane.sai.Counter.SetCounterAttribute:output_type -> lemming.dataplane.sai.SetCounterAttributeResponse - 8, // 12: lemming.dataplane.sai.Counter.GetCounterAttribute:output_type -> lemming.dataplane.sai.GetCounterAttributeResponse - 10, // 13: lemming.dataplane.sai.Counter.GetCounterStats:output_type -> lemming.dataplane.sai.GetCounterStatsResponse - 9, // [9:14] is the sub-list for method output_type - 4, // [4:9] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 12, // 1: lemming.dataplane.sai.CreateCounterRequest.object_type:type_name -> lemming.dataplane.sai.ObjectType + 0, // 2: lemming.dataplane.sai.GetCounterAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.CounterAttr + 13, // 3: lemming.dataplane.sai.GetCounterAttributeResponse.attr:type_name -> lemming.dataplane.sai.CounterAttribute + 14, // 4: lemming.dataplane.sai.GetCounterStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.CounterStat + 1, // 5: lemming.dataplane.sai.Counter.CreateCounter:input_type -> lemming.dataplane.sai.CreateCounterRequest + 3, // 6: lemming.dataplane.sai.Counter.RemoveCounter:input_type -> lemming.dataplane.sai.RemoveCounterRequest + 5, // 7: lemming.dataplane.sai.Counter.SetCounterAttribute:input_type -> lemming.dataplane.sai.SetCounterAttributeRequest + 7, // 8: lemming.dataplane.sai.Counter.GetCounterAttribute:input_type -> lemming.dataplane.sai.GetCounterAttributeRequest + 9, // 9: lemming.dataplane.sai.Counter.GetCounterStats:input_type -> lemming.dataplane.sai.GetCounterStatsRequest + 2, // 10: lemming.dataplane.sai.Counter.CreateCounter:output_type -> lemming.dataplane.sai.CreateCounterResponse + 4, // 11: lemming.dataplane.sai.Counter.RemoveCounter:output_type -> lemming.dataplane.sai.RemoveCounterResponse + 6, // 12: lemming.dataplane.sai.Counter.SetCounterAttribute:output_type -> lemming.dataplane.sai.SetCounterAttributeResponse + 8, // 13: lemming.dataplane.sai.Counter.GetCounterAttribute:output_type -> lemming.dataplane.sai.GetCounterAttributeResponse + 10, // 14: lemming.dataplane.sai.Counter.GetCounterStats:output_type -> lemming.dataplane.sai.GetCounterStatsResponse + 10, // [10:15] is the sub-list for method output_type + 5, // [5:10] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_counter_proto_init() } diff --git a/dataplane/proto/sai/counter.proto b/dataplane/proto/sai/counter.proto index 2ec3253df..43f7a564e 100644 --- a/dataplane/proto/sai/counter.proto +++ b/dataplane/proto/sai/counter.proto @@ -7,62 +7,70 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum CounterAttr { - COUNTER_ATTR_UNSPECIFIED = 0; - COUNTER_ATTR_TYPE = 1; - COUNTER_ATTR_LABEL = 2; + COUNTER_ATTR_UNSPECIFIED = 0; + COUNTER_ATTR_TYPE = 1; + COUNTER_ATTR_LABEL = 2; + COUNTER_ATTR_ENABLE_PACKET_COUNT = 3; + COUNTER_ATTR_ENABLE_BYTE_COUNT = 4; + COUNTER_ATTR_OBJECT_TYPE = 5; + COUNTER_ATTR_STAT_ID_LIST = 6; } message CreateCounterRequest { - option (sai_type) = OBJECT_TYPE_COUNTER; - uint64 switch = 1; - optional CounterType type = 2[(attr_enum_value) = 1]; - optional bytes label = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_COUNTER; + uint64 switch = 1; + optional CounterType type = 2 [(attr_enum_value) = 1]; + optional bytes label = 3 [(attr_enum_value) = 2]; + optional bool enable_packet_count = 4 [(attr_enum_value) = 3]; + optional bool enable_byte_count = 5 [(attr_enum_value) = 4]; + optional ObjectType object_type = 6 [(attr_enum_value) = 5]; + repeated int32 stat_id_list = 7 [(attr_enum_value) = 6]; } message CreateCounterResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveCounterRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveCounterResponse { -} +message RemoveCounterResponse {} message SetCounterAttributeRequest { - uint64 oid = 1; - optional bytes label = 2[(attr_enum_value) = 2]; + uint64 oid = 1; + optional bytes label = 2 [(attr_enum_value) = 2]; + repeated int32 stat_id_list = 3 [(attr_enum_value) = 6]; } -message SetCounterAttributeResponse { -} +message SetCounterAttributeResponse {} message GetCounterAttributeRequest { - uint64 oid = 1; - repeated CounterAttr attr_type = 2; + uint64 oid = 1; + repeated CounterAttr attr_type = 2; } message GetCounterAttributeResponse { - CounterAttribute attr = 1; + CounterAttribute attr = 1; } message GetCounterStatsRequest { - uint64 oid = 1; - repeated CounterStat counter_ids = 2; + uint64 oid = 1; + repeated CounterStat counter_ids = 2; } message GetCounterStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Counter { - rpc CreateCounter (CreateCounterRequest) returns (CreateCounterResponse) {} - rpc RemoveCounter (RemoveCounterRequest) returns (RemoveCounterResponse) {} - rpc SetCounterAttribute (SetCounterAttributeRequest) returns (SetCounterAttributeResponse) {} - rpc GetCounterAttribute (GetCounterAttributeRequest) returns (GetCounterAttributeResponse) {} - rpc GetCounterStats (GetCounterStatsRequest) returns (GetCounterStatsResponse) {} + rpc CreateCounter(CreateCounterRequest) returns (CreateCounterResponse) {} + rpc RemoveCounter(RemoveCounterRequest) returns (RemoveCounterResponse) {} + rpc SetCounterAttribute(SetCounterAttributeRequest) + returns (SetCounterAttributeResponse) {} + rpc GetCounterAttribute(GetCounterAttributeRequest) + returns (GetCounterAttributeResponse) {} + rpc GetCounterStats(GetCounterStatsRequest) + returns (GetCounterStatsResponse) {} } diff --git a/dataplane/proto/sai/dash_acl.proto b/dataplane/proto/sai/dash_acl.proto index 8bb14e900..e81499a68 100644 --- a/dataplane/proto/sai/dash_acl.proto +++ b/dataplane/proto/sai/dash_acl.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashAcl { -} +service DashAcl {} diff --git a/dataplane/proto/sai/dash_appliance.pb.go b/dataplane/proto/sai/dash_appliance.pb.go new file mode 100755 index 000000000..bd81f4067 --- /dev/null +++ b/dataplane/proto/sai/dash_appliance.pb.go @@ -0,0 +1,71 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_appliance.proto + +package sai + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_dataplane_proto_sai_dash_appliance_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_appliance_proto_rawDesc = string([]byte{ + 0x0a, 0x28, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x32, 0x0f, 0x0a, 0x0d, 0x44, 0x61, 0x73, 0x68, 0x41, 0x70, 0x70, 0x6c, 0x69, + 0x61, 0x6e, 0x63, 0x65, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, +}) + +var file_dataplane_proto_sai_dash_appliance_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_appliance_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_dataplane_proto_sai_dash_appliance_proto_init() } +func file_dataplane_proto_sai_dash_appliance_proto_init() { + if File_dataplane_proto_sai_dash_appliance_proto != nil { + return + } + file_dataplane_proto_sai_common_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_dash_appliance_proto_rawDesc), len(file_dataplane_proto_sai_dash_appliance_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_appliance_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_appliance_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_appliance_proto = out.File + file_dataplane_proto_sai_dash_appliance_proto_goTypes = nil + file_dataplane_proto_sai_dash_appliance_proto_depIdxs = nil +} diff --git a/dataplane/proto/sai/dash_appliance.proto b/dataplane/proto/sai/dash_appliance.proto new file mode 100644 index 000000000..bc63bf7f4 --- /dev/null +++ b/dataplane/proto/sai/dash_appliance.proto @@ -0,0 +1,10 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + +service DashAppliance {} diff --git a/dataplane/proto/sai/dash_appliance_grpc.pb.go b/dataplane/proto/sai/dash_appliance_grpc.pb.go new file mode 100755 index 000000000..2aa7f14e7 --- /dev/null +++ b/dataplane/proto/sai/dash_appliance_grpc.pb.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.3 +// source: dataplane/proto/sai/dash_appliance.proto + +package sai + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +// DashApplianceClient is the client API for DashAppliance service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DashApplianceClient interface { +} + +type dashApplianceClient struct { + cc grpc.ClientConnInterface +} + +func NewDashApplianceClient(cc grpc.ClientConnInterface) DashApplianceClient { + return &dashApplianceClient{cc} +} + +// DashApplianceServer is the server API for DashAppliance service. +// All implementations should embed UnimplementedDashApplianceServer +// for forward compatibility. +type DashApplianceServer interface { +} + +// UnimplementedDashApplianceServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedDashApplianceServer struct{} + +func (UnimplementedDashApplianceServer) testEmbeddedByValue() {} + +// UnsafeDashApplianceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DashApplianceServer will +// result in compilation errors. +type UnsafeDashApplianceServer interface { + mustEmbedUnimplementedDashApplianceServer() +} + +func RegisterDashApplianceServer(s grpc.ServiceRegistrar, srv DashApplianceServer) { + // If the following call pancis, it indicates UnimplementedDashApplianceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&DashAppliance_ServiceDesc, srv) +} + +// DashAppliance_ServiceDesc is the grpc.ServiceDesc for DashAppliance service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DashAppliance_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashAppliance", + HandlerType: (*DashApplianceServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_appliance.proto", +} diff --git a/dataplane/proto/sai/dash_direction_lookup.proto b/dataplane/proto/sai/dash_direction_lookup.proto index c4dfbba85..e8eeb0e8b 100644 --- a/dataplane/proto/sai/dash_direction_lookup.proto +++ b/dataplane/proto/sai/dash_direction_lookup.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashDirectionLookup { -} +service DashDirectionLookup {} diff --git a/dataplane/proto/sai/dash_eni.proto b/dataplane/proto/sai/dash_eni.proto index 4c205f23f..d050a294c 100644 --- a/dataplane/proto/sai/dash_eni.proto +++ b/dataplane/proto/sai/dash_eni.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashEni { -} +service DashEni {} diff --git a/dataplane/proto/sai/dash_flow.pb.go b/dataplane/proto/sai/dash_flow.pb.go new file mode 100755 index 000000000..abd38d74d --- /dev/null +++ b/dataplane/proto/sai/dash_flow.pb.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_flow.proto + +package sai + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_dataplane_proto_sai_dash_flow_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_flow_proto_rawDesc = string([]byte{ + 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, + 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x0a, + 0x0a, 0x08, 0x44, 0x61, 0x73, 0x68, 0x46, 0x6c, 0x6f, 0x77, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var file_dataplane_proto_sai_dash_flow_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_flow_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_dataplane_proto_sai_dash_flow_proto_init() } +func file_dataplane_proto_sai_dash_flow_proto_init() { + if File_dataplane_proto_sai_dash_flow_proto != nil { + return + } + file_dataplane_proto_sai_common_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_dash_flow_proto_rawDesc), len(file_dataplane_proto_sai_dash_flow_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_flow_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_flow_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_flow_proto = out.File + file_dataplane_proto_sai_dash_flow_proto_goTypes = nil + file_dataplane_proto_sai_dash_flow_proto_depIdxs = nil +} diff --git a/dataplane/proto/sai/dash_flow.proto b/dataplane/proto/sai/dash_flow.proto new file mode 100644 index 000000000..cab36f65c --- /dev/null +++ b/dataplane/proto/sai/dash_flow.proto @@ -0,0 +1,10 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + +service DashFlow {} diff --git a/dataplane/proto/sai/dash_flow_grpc.pb.go b/dataplane/proto/sai/dash_flow_grpc.pb.go new file mode 100755 index 000000000..66cc662fb --- /dev/null +++ b/dataplane/proto/sai/dash_flow_grpc.pb.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.3 +// source: dataplane/proto/sai/dash_flow.proto + +package sai + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +// DashFlowClient is the client API for DashFlow service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DashFlowClient interface { +} + +type dashFlowClient struct { + cc grpc.ClientConnInterface +} + +func NewDashFlowClient(cc grpc.ClientConnInterface) DashFlowClient { + return &dashFlowClient{cc} +} + +// DashFlowServer is the server API for DashFlow service. +// All implementations should embed UnimplementedDashFlowServer +// for forward compatibility. +type DashFlowServer interface { +} + +// UnimplementedDashFlowServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedDashFlowServer struct{} + +func (UnimplementedDashFlowServer) testEmbeddedByValue() {} + +// UnsafeDashFlowServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DashFlowServer will +// result in compilation errors. +type UnsafeDashFlowServer interface { + mustEmbedUnimplementedDashFlowServer() +} + +func RegisterDashFlowServer(s grpc.ServiceRegistrar, srv DashFlowServer) { + // If the following call pancis, it indicates UnimplementedDashFlowServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&DashFlow_ServiceDesc, srv) +} + +// DashFlow_ServiceDesc is the grpc.ServiceDesc for DashFlow service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DashFlow_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashFlow", + HandlerType: (*DashFlowServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_flow.proto", +} diff --git a/dataplane/proto/sai/dash_ha.pb.go b/dataplane/proto/sai/dash_ha.pb.go new file mode 100755 index 000000000..268973b6c --- /dev/null +++ b/dataplane/proto/sai/dash_ha.pb.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_ha.proto + +package sai + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_dataplane_proto_sai_dash_ha_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_ha_proto_rawDesc = string([]byte{ + 0x0a, 0x21, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x5f, 0x68, 0x61, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x08, 0x0a, 0x06, + 0x44, 0x61, 0x73, 0x68, 0x48, 0x61, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +}) + +var file_dataplane_proto_sai_dash_ha_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_ha_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_dataplane_proto_sai_dash_ha_proto_init() } +func file_dataplane_proto_sai_dash_ha_proto_init() { + if File_dataplane_proto_sai_dash_ha_proto != nil { + return + } + file_dataplane_proto_sai_common_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_dash_ha_proto_rawDesc), len(file_dataplane_proto_sai_dash_ha_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_ha_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_ha_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_ha_proto = out.File + file_dataplane_proto_sai_dash_ha_proto_goTypes = nil + file_dataplane_proto_sai_dash_ha_proto_depIdxs = nil +} diff --git a/dataplane/proto/sai/dash_ha.proto b/dataplane/proto/sai/dash_ha.proto new file mode 100644 index 000000000..50d5b239e --- /dev/null +++ b/dataplane/proto/sai/dash_ha.proto @@ -0,0 +1,10 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + +service DashHa {} diff --git a/dataplane/proto/sai/dash_ha_grpc.pb.go b/dataplane/proto/sai/dash_ha_grpc.pb.go new file mode 100755 index 000000000..70cffa7aa --- /dev/null +++ b/dataplane/proto/sai/dash_ha_grpc.pb.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.3 +// source: dataplane/proto/sai/dash_ha.proto + +package sai + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +// DashHaClient is the client API for DashHa service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DashHaClient interface { +} + +type dashHaClient struct { + cc grpc.ClientConnInterface +} + +func NewDashHaClient(cc grpc.ClientConnInterface) DashHaClient { + return &dashHaClient{cc} +} + +// DashHaServer is the server API for DashHa service. +// All implementations should embed UnimplementedDashHaServer +// for forward compatibility. +type DashHaServer interface { +} + +// UnimplementedDashHaServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedDashHaServer struct{} + +func (UnimplementedDashHaServer) testEmbeddedByValue() {} + +// UnsafeDashHaServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DashHaServer will +// result in compilation errors. +type UnsafeDashHaServer interface { + mustEmbedUnimplementedDashHaServer() +} + +func RegisterDashHaServer(s grpc.ServiceRegistrar, srv DashHaServer) { + // If the following call pancis, it indicates UnimplementedDashHaServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&DashHa_ServiceDesc, srv) +} + +// DashHa_ServiceDesc is the grpc.ServiceDesc for DashHa service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DashHa_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashHa", + HandlerType: (*DashHaServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_ha.proto", +} diff --git a/dataplane/proto/sai/dash_inbound_routing.proto b/dataplane/proto/sai/dash_inbound_routing.proto index 01ebde3a5..0dccdcf21 100644 --- a/dataplane/proto/sai/dash_inbound_routing.proto +++ b/dataplane/proto/sai/dash_inbound_routing.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashInboundRouting { -} +service DashInboundRouting {} diff --git a/dataplane/proto/sai/dash_meter.proto b/dataplane/proto/sai/dash_meter.proto index 38c7eaf39..ccf0a2c94 100644 --- a/dataplane/proto/sai/dash_meter.proto +++ b/dataplane/proto/sai/dash_meter.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashMeter { -} +service DashMeter {} diff --git a/dataplane/proto/sai/dash_outbound_ca_to_pa.proto b/dataplane/proto/sai/dash_outbound_ca_to_pa.proto index 8d7b351d9..02eb2d4a4 100644 --- a/dataplane/proto/sai/dash_outbound_ca_to_pa.proto +++ b/dataplane/proto/sai/dash_outbound_ca_to_pa.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashOutboundCaToPa { -} +service DashOutboundCaToPa {} diff --git a/dataplane/proto/sai/dash_outbound_routing.proto b/dataplane/proto/sai/dash_outbound_routing.proto index e88b509a2..8bf80cb08 100644 --- a/dataplane/proto/sai/dash_outbound_routing.proto +++ b/dataplane/proto/sai/dash_outbound_routing.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashOutboundRouting { -} +service DashOutboundRouting {} diff --git a/dataplane/proto/sai/dash_pa_validation.proto b/dataplane/proto/sai/dash_pa_validation.proto index dbbb94cad..6a78b8f39 100644 --- a/dataplane/proto/sai/dash_pa_validation.proto +++ b/dataplane/proto/sai/dash_pa_validation.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashPaValidation { -} +service DashPaValidation {} diff --git a/dataplane/proto/sai/dash_tunnel.pb.go b/dataplane/proto/sai/dash_tunnel.pb.go new file mode 100755 index 000000000..eecb9ed56 --- /dev/null +++ b/dataplane/proto/sai/dash_tunnel.pb.go @@ -0,0 +1,70 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v5.29.3 +// source: dataplane/proto/sai/dash_tunnel.proto + +package sai + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +var File_dataplane_proto_sai_dash_tunnel_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_dash_tunnel_proto_rawDesc = string([]byte{ + 0x0a, 0x25, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x64, 0x61, 0x73, 0x68, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x32, 0x0c, 0x0a, 0x0a, 0x44, 0x61, 0x73, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x33, + 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, + 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var file_dataplane_proto_sai_dash_tunnel_proto_goTypes = []any{} +var file_dataplane_proto_sai_dash_tunnel_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_dataplane_proto_sai_dash_tunnel_proto_init() } +func file_dataplane_proto_sai_dash_tunnel_proto_init() { + if File_dataplane_proto_sai_dash_tunnel_proto != nil { + return + } + file_dataplane_proto_sai_common_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_dash_tunnel_proto_rawDesc), len(file_dataplane_proto_sai_dash_tunnel_proto_rawDesc)), + NumEnums: 0, + NumMessages: 0, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_dash_tunnel_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_dash_tunnel_proto_depIdxs, + }.Build() + File_dataplane_proto_sai_dash_tunnel_proto = out.File + file_dataplane_proto_sai_dash_tunnel_proto_goTypes = nil + file_dataplane_proto_sai_dash_tunnel_proto_depIdxs = nil +} diff --git a/dataplane/proto/sai/dash_tunnel.proto b/dataplane/proto/sai/dash_tunnel.proto new file mode 100644 index 000000000..cc7b22920 --- /dev/null +++ b/dataplane/proto/sai/dash_tunnel.proto @@ -0,0 +1,10 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + +service DashTunnel {} diff --git a/dataplane/proto/sai/dash_tunnel_grpc.pb.go b/dataplane/proto/sai/dash_tunnel_grpc.pb.go new file mode 100755 index 000000000..97961f598 --- /dev/null +++ b/dataplane/proto/sai/dash_tunnel_grpc.pb.go @@ -0,0 +1,74 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.3 +// source: dataplane/proto/sai/dash_tunnel.proto + +package sai + +import ( + grpc "google.golang.org/grpc" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +// DashTunnelClient is the client API for DashTunnel service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type DashTunnelClient interface { +} + +type dashTunnelClient struct { + cc grpc.ClientConnInterface +} + +func NewDashTunnelClient(cc grpc.ClientConnInterface) DashTunnelClient { + return &dashTunnelClient{cc} +} + +// DashTunnelServer is the server API for DashTunnel service. +// All implementations should embed UnimplementedDashTunnelServer +// for forward compatibility. +type DashTunnelServer interface { +} + +// UnimplementedDashTunnelServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedDashTunnelServer struct{} + +func (UnimplementedDashTunnelServer) testEmbeddedByValue() {} + +// UnsafeDashTunnelServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to DashTunnelServer will +// result in compilation errors. +type UnsafeDashTunnelServer interface { + mustEmbedUnimplementedDashTunnelServer() +} + +func RegisterDashTunnelServer(s grpc.ServiceRegistrar, srv DashTunnelServer) { + // If the following call pancis, it indicates UnimplementedDashTunnelServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&DashTunnel_ServiceDesc, srv) +} + +// DashTunnel_ServiceDesc is the grpc.ServiceDesc for DashTunnel service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var DashTunnel_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.DashTunnel", + HandlerType: (*DashTunnelServer)(nil), + Methods: []grpc.MethodDesc{}, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/dash_tunnel.proto", +} diff --git a/dataplane/proto/sai/dash_vip.proto b/dataplane/proto/sai/dash_vip.proto index 162836f03..e42197dab 100644 --- a/dataplane/proto/sai/dash_vip.proto +++ b/dataplane/proto/sai/dash_vip.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashVip { -} +service DashVip {} diff --git a/dataplane/proto/sai/dash_vnet.proto b/dataplane/proto/sai/dash_vnet.proto index f254796c6..3b916a638 100644 --- a/dataplane/proto/sai/dash_vnet.proto +++ b/dataplane/proto/sai/dash_vnet.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service DashVnet { -} +service DashVnet {} diff --git a/dataplane/proto/sai/debug_counter.proto b/dataplane/proto/sai/debug_counter.proto index e150dd08d..bd00bac62 100644 --- a/dataplane/proto/sai/debug_counter.proto +++ b/dataplane/proto/sai/debug_counter.proto @@ -7,58 +7,58 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum DebugCounterAttr { - DEBUG_COUNTER_ATTR_UNSPECIFIED = 0; - DEBUG_COUNTER_ATTR_INDEX = 1; - DEBUG_COUNTER_ATTR_TYPE = 2; - DEBUG_COUNTER_ATTR_BIND_METHOD = 3; - DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST = 4; - DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST = 5; + DEBUG_COUNTER_ATTR_UNSPECIFIED = 0; + DEBUG_COUNTER_ATTR_INDEX = 1; + DEBUG_COUNTER_ATTR_TYPE = 2; + DEBUG_COUNTER_ATTR_BIND_METHOD = 3; + DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST = 4; + DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST = 5; } message CreateDebugCounterRequest { - option (sai_type) = OBJECT_TYPE_DEBUG_COUNTER; - uint64 switch = 1; - optional DebugCounterType type = 2[(attr_enum_value) = 2]; - optional DebugCounterBindMethod bind_method = 3[(attr_enum_value) = 3]; - repeated InDropReason in_drop_reason_list = 4[(attr_enum_value) = 4]; - repeated OutDropReason out_drop_reason_list = 5[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_DEBUG_COUNTER; + uint64 switch = 1; + optional DebugCounterType type = 2 [(attr_enum_value) = 2]; + optional DebugCounterBindMethod bind_method = 3 [(attr_enum_value) = 3]; + repeated InDropReason in_drop_reason_list = 4 [(attr_enum_value) = 4]; + repeated OutDropReason out_drop_reason_list = 5 [(attr_enum_value) = 5]; } message CreateDebugCounterResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDebugCounterRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDebugCounterResponse { -} +message RemoveDebugCounterResponse {} message SetDebugCounterAttributeRequest { - uint64 oid = 1; - repeated InDropReason in_drop_reason_list = 2[(attr_enum_value) = 4]; - repeated OutDropReason out_drop_reason_list = 3[(attr_enum_value) = 5]; + uint64 oid = 1; + repeated InDropReason in_drop_reason_list = 2 [(attr_enum_value) = 4]; + repeated OutDropReason out_drop_reason_list = 3 [(attr_enum_value) = 5]; } -message SetDebugCounterAttributeResponse { -} +message SetDebugCounterAttributeResponse {} message GetDebugCounterAttributeRequest { - uint64 oid = 1; - repeated DebugCounterAttr attr_type = 2; + uint64 oid = 1; + repeated DebugCounterAttr attr_type = 2; } message GetDebugCounterAttributeResponse { - DebugCounterAttribute attr = 1; + DebugCounterAttribute attr = 1; } - service DebugCounter { - rpc CreateDebugCounter (CreateDebugCounterRequest) returns (CreateDebugCounterResponse) {} - rpc RemoveDebugCounter (RemoveDebugCounterRequest) returns (RemoveDebugCounterResponse) {} - rpc SetDebugCounterAttribute (SetDebugCounterAttributeRequest) returns (SetDebugCounterAttributeResponse) {} - rpc GetDebugCounterAttribute (GetDebugCounterAttributeRequest) returns (GetDebugCounterAttributeResponse) {} + rpc CreateDebugCounter(CreateDebugCounterRequest) + returns (CreateDebugCounterResponse) {} + rpc RemoveDebugCounter(RemoveDebugCounterRequest) + returns (RemoveDebugCounterResponse) {} + rpc SetDebugCounterAttribute(SetDebugCounterAttributeRequest) + returns (SetDebugCounterAttributeResponse) {} + rpc GetDebugCounterAttribute(GetDebugCounterAttributeRequest) + returns (GetDebugCounterAttributeResponse) {} } diff --git a/dataplane/proto/sai/dtel.proto b/dataplane/proto/sai/dtel.proto index 3a6ae9188..8413e617d 100644 --- a/dataplane/proto/sai/dtel.proto +++ b/dataplane/proto/sai/dtel.proto @@ -7,292 +7,298 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum DtelAttr { - DTEL_ATTR_UNSPECIFIED = 0; - DTEL_ATTR_INT_ENDPOINT_ENABLE = 1; - DTEL_ATTR_INT_TRANSIT_ENABLE = 2; - DTEL_ATTR_POSTCARD_ENABLE = 3; - DTEL_ATTR_DROP_REPORT_ENABLE = 4; - DTEL_ATTR_QUEUE_REPORT_ENABLE = 5; - DTEL_ATTR_SWITCH_ID = 6; - DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE = 7; - DTEL_ATTR_LATENCY_SENSITIVITY = 8; - DTEL_ATTR_SINK_PORT_LIST = 9; - DTEL_ATTR_INT_L4_DSCP = 10; + DTEL_ATTR_UNSPECIFIED = 0; + DTEL_ATTR_INT_ENDPOINT_ENABLE = 1; + DTEL_ATTR_INT_TRANSIT_ENABLE = 2; + DTEL_ATTR_POSTCARD_ENABLE = 3; + DTEL_ATTR_DROP_REPORT_ENABLE = 4; + DTEL_ATTR_QUEUE_REPORT_ENABLE = 5; + DTEL_ATTR_SWITCH_ID = 6; + DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE = 7; + DTEL_ATTR_LATENCY_SENSITIVITY = 8; + DTEL_ATTR_SINK_PORT_LIST = 9; + DTEL_ATTR_INT_L4_DSCP = 10; } enum DtelQueueReportAttr { - DTEL_QUEUE_REPORT_ATTR_UNSPECIFIED = 0; - DTEL_QUEUE_REPORT_ATTR_QUEUE_ID = 1; - DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD = 2; - DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD = 3; - DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA = 4; - DTEL_QUEUE_REPORT_ATTR_TAIL_DROP = 5; + DTEL_QUEUE_REPORT_ATTR_UNSPECIFIED = 0; + DTEL_QUEUE_REPORT_ATTR_QUEUE_ID = 1; + DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD = 2; + DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD = 3; + DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA = 4; + DTEL_QUEUE_REPORT_ATTR_TAIL_DROP = 5; } enum DtelIntSessionAttr { - DTEL_INT_SESSION_ATTR_UNSPECIFIED = 0; - DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT = 1; - DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID = 2; - DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS = 3; - DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP = 4; - DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP = 5; - DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO = 6; + DTEL_INT_SESSION_ATTR_UNSPECIFIED = 0; + DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT = 1; + DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID = 2; + DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS = 3; + DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP = 4; + DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP = 5; + DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO = 6; } enum DtelReportSessionAttr { - DTEL_REPORT_SESSION_ATTR_UNSPECIFIED = 0; - DTEL_REPORT_SESSION_ATTR_SRC_IP = 1; - DTEL_REPORT_SESSION_ATTR_DST_IP_LIST = 2; - DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID = 3; - DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE = 4; - DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT = 5; + DTEL_REPORT_SESSION_ATTR_UNSPECIFIED = 0; + DTEL_REPORT_SESSION_ATTR_SRC_IP = 1; + DTEL_REPORT_SESSION_ATTR_DST_IP_LIST = 2; + DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID = 3; + DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE = 4; + DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT = 5; } enum DtelEventAttr { - DTEL_EVENT_ATTR_UNSPECIFIED = 0; - DTEL_EVENT_ATTR_TYPE = 1; - DTEL_EVENT_ATTR_REPORT_SESSION = 2; - DTEL_EVENT_ATTR_DSCP_VALUE = 3; + DTEL_EVENT_ATTR_UNSPECIFIED = 0; + DTEL_EVENT_ATTR_TYPE = 1; + DTEL_EVENT_ATTR_REPORT_SESSION = 2; + DTEL_EVENT_ATTR_DSCP_VALUE = 3; } message CreateDtelRequest { - option (sai_type) = OBJECT_TYPE_DTEL; - uint64 switch = 1; - optional bool int_endpoint_enable = 2[(attr_enum_value) = 1]; - optional bool int_transit_enable = 3[(attr_enum_value) = 2]; - optional bool postcard_enable = 4[(attr_enum_value) = 3]; - optional bool drop_report_enable = 5[(attr_enum_value) = 4]; - optional bool queue_report_enable = 6[(attr_enum_value) = 5]; - optional uint32 switch_id = 7[(attr_enum_value) = 6]; - optional uint32 flow_state_clear_cycle = 8[(attr_enum_value) = 7]; - optional uint32 latency_sensitivity = 9[(attr_enum_value) = 8]; - repeated uint64 sink_port_list = 10[(attr_enum_value) = 9]; - optional AclFieldData int_l4_dscp = 11[(attr_enum_value) = 10]; + option (sai_type) = OBJECT_TYPE_DTEL; + uint64 switch = 1; + optional bool int_endpoint_enable = 2 [(attr_enum_value) = 1]; + optional bool int_transit_enable = 3 [(attr_enum_value) = 2]; + optional bool postcard_enable = 4 [(attr_enum_value) = 3]; + optional bool drop_report_enable = 5 [(attr_enum_value) = 4]; + optional bool queue_report_enable = 6 [(attr_enum_value) = 5]; + optional uint32 switch_id = 7 [(attr_enum_value) = 6]; + optional uint32 flow_state_clear_cycle = 8 [(attr_enum_value) = 7]; + optional uint32 latency_sensitivity = 9 [(attr_enum_value) = 8]; + repeated uint64 sink_port_list = 10 [(attr_enum_value) = 9]; + optional AclFieldData int_l4_dscp = 11 [(attr_enum_value) = 10]; } message CreateDtelResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDtelRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDtelResponse { -} +message RemoveDtelResponse {} message SetDtelAttributeRequest { - uint64 oid = 1; - optional bool int_endpoint_enable = 2[(attr_enum_value) = 1]; - optional bool int_transit_enable = 3[(attr_enum_value) = 2]; - optional bool postcard_enable = 4[(attr_enum_value) = 3]; - optional bool drop_report_enable = 5[(attr_enum_value) = 4]; - optional bool queue_report_enable = 6[(attr_enum_value) = 5]; - optional uint32 switch_id = 7[(attr_enum_value) = 6]; - optional uint32 flow_state_clear_cycle = 8[(attr_enum_value) = 7]; - optional uint32 latency_sensitivity = 9[(attr_enum_value) = 8]; - repeated uint64 sink_port_list = 10[(attr_enum_value) = 9]; - optional AclFieldData int_l4_dscp = 11[(attr_enum_value) = 10]; + uint64 oid = 1; + optional bool int_endpoint_enable = 2 [(attr_enum_value) = 1]; + optional bool int_transit_enable = 3 [(attr_enum_value) = 2]; + optional bool postcard_enable = 4 [(attr_enum_value) = 3]; + optional bool drop_report_enable = 5 [(attr_enum_value) = 4]; + optional bool queue_report_enable = 6 [(attr_enum_value) = 5]; + optional uint32 switch_id = 7 [(attr_enum_value) = 6]; + optional uint32 flow_state_clear_cycle = 8 [(attr_enum_value) = 7]; + optional uint32 latency_sensitivity = 9 [(attr_enum_value) = 8]; + repeated uint64 sink_port_list = 10 [(attr_enum_value) = 9]; + optional AclFieldData int_l4_dscp = 11 [(attr_enum_value) = 10]; } -message SetDtelAttributeResponse { -} +message SetDtelAttributeResponse {} message GetDtelAttributeRequest { - uint64 oid = 1; - repeated DtelAttr attr_type = 2; + uint64 oid = 1; + repeated DtelAttr attr_type = 2; } message GetDtelAttributeResponse { - DtelAttribute attr = 1; + DtelAttribute attr = 1; } message CreateDtelQueueReportRequest { - option (sai_type) = OBJECT_TYPE_DTEL_QUEUE_REPORT; - uint64 switch = 1; - optional uint64 queue_id = 2[(attr_enum_value) = 1]; - optional uint32 depth_threshold = 3[(attr_enum_value) = 2]; - optional uint32 latency_threshold = 4[(attr_enum_value) = 3]; - optional uint32 breach_quota = 5[(attr_enum_value) = 4]; - optional bool tail_drop = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_DTEL_QUEUE_REPORT; + uint64 switch = 1; + optional uint64 queue_id = 2 [(attr_enum_value) = 1]; + optional uint32 depth_threshold = 3 [(attr_enum_value) = 2]; + optional uint32 latency_threshold = 4 [(attr_enum_value) = 3]; + optional uint32 breach_quota = 5 [(attr_enum_value) = 4]; + optional bool tail_drop = 6 [(attr_enum_value) = 5]; } message CreateDtelQueueReportResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDtelQueueReportRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDtelQueueReportResponse { -} +message RemoveDtelQueueReportResponse {} message SetDtelQueueReportAttributeRequest { - uint64 oid = 1; - optional uint32 depth_threshold = 2[(attr_enum_value) = 2]; - optional uint32 latency_threshold = 3[(attr_enum_value) = 3]; - optional uint32 breach_quota = 4[(attr_enum_value) = 4]; - optional bool tail_drop = 5[(attr_enum_value) = 5]; + uint64 oid = 1; + optional uint32 depth_threshold = 2 [(attr_enum_value) = 2]; + optional uint32 latency_threshold = 3 [(attr_enum_value) = 3]; + optional uint32 breach_quota = 4 [(attr_enum_value) = 4]; + optional bool tail_drop = 5 [(attr_enum_value) = 5]; } -message SetDtelQueueReportAttributeResponse { -} +message SetDtelQueueReportAttributeResponse {} message GetDtelQueueReportAttributeRequest { - uint64 oid = 1; - repeated DtelQueueReportAttr attr_type = 2; + uint64 oid = 1; + repeated DtelQueueReportAttr attr_type = 2; } message GetDtelQueueReportAttributeResponse { - DtelQueueReportAttribute attr = 1; + DtelQueueReportAttribute attr = 1; } message CreateDtelIntSessionRequest { - option (sai_type) = OBJECT_TYPE_DTEL_INT_SESSION; - uint64 switch = 1; - optional uint32 max_hop_count = 2[(attr_enum_value) = 1]; - optional bool collect_switch_id = 3[(attr_enum_value) = 2]; - optional bool collect_switch_ports = 4[(attr_enum_value) = 3]; - optional bool collect_ingress_timestamp = 5[(attr_enum_value) = 4]; - optional bool collect_egress_timestamp = 6[(attr_enum_value) = 5]; - optional bool collect_queue_info = 7[(attr_enum_value) = 6]; + option (sai_type) = OBJECT_TYPE_DTEL_INT_SESSION; + uint64 switch = 1; + optional uint32 max_hop_count = 2 [(attr_enum_value) = 1]; + optional bool collect_switch_id = 3 [(attr_enum_value) = 2]; + optional bool collect_switch_ports = 4 [(attr_enum_value) = 3]; + optional bool collect_ingress_timestamp = 5 [(attr_enum_value) = 4]; + optional bool collect_egress_timestamp = 6 [(attr_enum_value) = 5]; + optional bool collect_queue_info = 7 [(attr_enum_value) = 6]; } message CreateDtelIntSessionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDtelIntSessionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDtelIntSessionResponse { -} +message RemoveDtelIntSessionResponse {} message SetDtelIntSessionAttributeRequest { - uint64 oid = 1; - optional uint32 max_hop_count = 2[(attr_enum_value) = 1]; - optional bool collect_switch_id = 3[(attr_enum_value) = 2]; - optional bool collect_switch_ports = 4[(attr_enum_value) = 3]; - optional bool collect_ingress_timestamp = 5[(attr_enum_value) = 4]; - optional bool collect_egress_timestamp = 6[(attr_enum_value) = 5]; - optional bool collect_queue_info = 7[(attr_enum_value) = 6]; + uint64 oid = 1; + optional uint32 max_hop_count = 2 [(attr_enum_value) = 1]; + optional bool collect_switch_id = 3 [(attr_enum_value) = 2]; + optional bool collect_switch_ports = 4 [(attr_enum_value) = 3]; + optional bool collect_ingress_timestamp = 5 [(attr_enum_value) = 4]; + optional bool collect_egress_timestamp = 6 [(attr_enum_value) = 5]; + optional bool collect_queue_info = 7 [(attr_enum_value) = 6]; } -message SetDtelIntSessionAttributeResponse { -} +message SetDtelIntSessionAttributeResponse {} message GetDtelIntSessionAttributeRequest { - uint64 oid = 1; - repeated DtelIntSessionAttr attr_type = 2; + uint64 oid = 1; + repeated DtelIntSessionAttr attr_type = 2; } message GetDtelIntSessionAttributeResponse { - DtelIntSessionAttribute attr = 1; + DtelIntSessionAttribute attr = 1; } message CreateDtelReportSessionRequest { - option (sai_type) = OBJECT_TYPE_DTEL_REPORT_SESSION; - uint64 switch = 1; - optional bytes src_ip = 2[(attr_enum_value) = 1]; - repeated bytes dst_ip_list = 3[(attr_enum_value) = 2]; - optional uint64 virtual_router_id = 4[(attr_enum_value) = 3]; - optional uint32 truncate_size = 5[(attr_enum_value) = 4]; - optional uint32 udp_dst_port = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_DTEL_REPORT_SESSION; + uint64 switch = 1; + optional bytes src_ip = 2 [(attr_enum_value) = 1]; + repeated bytes dst_ip_list = 3 [(attr_enum_value) = 2]; + optional uint64 virtual_router_id = 4 [(attr_enum_value) = 3]; + optional uint32 truncate_size = 5 [(attr_enum_value) = 4]; + optional uint32 udp_dst_port = 6 [(attr_enum_value) = 5]; } message CreateDtelReportSessionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDtelReportSessionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDtelReportSessionResponse { -} +message RemoveDtelReportSessionResponse {} message SetDtelReportSessionAttributeRequest { - uint64 oid = 1; - optional bytes src_ip = 2[(attr_enum_value) = 1]; - repeated bytes dst_ip_list = 3[(attr_enum_value) = 2]; - optional uint64 virtual_router_id = 4[(attr_enum_value) = 3]; - optional uint32 truncate_size = 5[(attr_enum_value) = 4]; - optional uint32 udp_dst_port = 6[(attr_enum_value) = 5]; + uint64 oid = 1; + optional bytes src_ip = 2 [(attr_enum_value) = 1]; + repeated bytes dst_ip_list = 3 [(attr_enum_value) = 2]; + optional uint64 virtual_router_id = 4 [(attr_enum_value) = 3]; + optional uint32 truncate_size = 5 [(attr_enum_value) = 4]; + optional uint32 udp_dst_port = 6 [(attr_enum_value) = 5]; } -message SetDtelReportSessionAttributeResponse { -} +message SetDtelReportSessionAttributeResponse {} message GetDtelReportSessionAttributeRequest { - uint64 oid = 1; - repeated DtelReportSessionAttr attr_type = 2; + uint64 oid = 1; + repeated DtelReportSessionAttr attr_type = 2; } message GetDtelReportSessionAttributeResponse { - DtelReportSessionAttribute attr = 1; + DtelReportSessionAttribute attr = 1; } message CreateDtelEventRequest { - option (sai_type) = OBJECT_TYPE_DTEL_EVENT; - uint64 switch = 1; - optional DtelEventType type = 2[(attr_enum_value) = 1]; - optional uint64 report_session = 3[(attr_enum_value) = 2]; - optional uint32 dscp_value = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_DTEL_EVENT; + uint64 switch = 1; + optional DtelEventType type = 2 [(attr_enum_value) = 1]; + optional uint64 report_session = 3 [(attr_enum_value) = 2]; + optional uint32 dscp_value = 4 [(attr_enum_value) = 3]; } message CreateDtelEventResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveDtelEventRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveDtelEventResponse { -} +message RemoveDtelEventResponse {} message SetDtelEventAttributeRequest { - uint64 oid = 1; - optional uint64 report_session = 2[(attr_enum_value) = 2]; - optional uint32 dscp_value = 3[(attr_enum_value) = 3]; + uint64 oid = 1; + optional uint64 report_session = 2 [(attr_enum_value) = 2]; + optional uint32 dscp_value = 3 [(attr_enum_value) = 3]; } -message SetDtelEventAttributeResponse { -} +message SetDtelEventAttributeResponse {} message GetDtelEventAttributeRequest { - uint64 oid = 1; - repeated DtelEventAttr attr_type = 2; + uint64 oid = 1; + repeated DtelEventAttr attr_type = 2; } message GetDtelEventAttributeResponse { - DtelEventAttribute attr = 1; + DtelEventAttribute attr = 1; } - service Dtel { - rpc CreateDtel (CreateDtelRequest) returns (CreateDtelResponse) {} - rpc RemoveDtel (RemoveDtelRequest) returns (RemoveDtelResponse) {} - rpc SetDtelAttribute (SetDtelAttributeRequest) returns (SetDtelAttributeResponse) {} - rpc GetDtelAttribute (GetDtelAttributeRequest) returns (GetDtelAttributeResponse) {} - rpc CreateDtelQueueReport (CreateDtelQueueReportRequest) returns (CreateDtelQueueReportResponse) {} - rpc RemoveDtelQueueReport (RemoveDtelQueueReportRequest) returns (RemoveDtelQueueReportResponse) {} - rpc SetDtelQueueReportAttribute (SetDtelQueueReportAttributeRequest) returns (SetDtelQueueReportAttributeResponse) {} - rpc GetDtelQueueReportAttribute (GetDtelQueueReportAttributeRequest) returns (GetDtelQueueReportAttributeResponse) {} - rpc CreateDtelIntSession (CreateDtelIntSessionRequest) returns (CreateDtelIntSessionResponse) {} - rpc RemoveDtelIntSession (RemoveDtelIntSessionRequest) returns (RemoveDtelIntSessionResponse) {} - rpc SetDtelIntSessionAttribute (SetDtelIntSessionAttributeRequest) returns (SetDtelIntSessionAttributeResponse) {} - rpc GetDtelIntSessionAttribute (GetDtelIntSessionAttributeRequest) returns (GetDtelIntSessionAttributeResponse) {} - rpc CreateDtelReportSession (CreateDtelReportSessionRequest) returns (CreateDtelReportSessionResponse) {} - rpc RemoveDtelReportSession (RemoveDtelReportSessionRequest) returns (RemoveDtelReportSessionResponse) {} - rpc SetDtelReportSessionAttribute (SetDtelReportSessionAttributeRequest) returns (SetDtelReportSessionAttributeResponse) {} - rpc GetDtelReportSessionAttribute (GetDtelReportSessionAttributeRequest) returns (GetDtelReportSessionAttributeResponse) {} - rpc CreateDtelEvent (CreateDtelEventRequest) returns (CreateDtelEventResponse) {} - rpc RemoveDtelEvent (RemoveDtelEventRequest) returns (RemoveDtelEventResponse) {} - rpc SetDtelEventAttribute (SetDtelEventAttributeRequest) returns (SetDtelEventAttributeResponse) {} - rpc GetDtelEventAttribute (GetDtelEventAttributeRequest) returns (GetDtelEventAttributeResponse) {} + rpc CreateDtel(CreateDtelRequest) returns (CreateDtelResponse) {} + rpc RemoveDtel(RemoveDtelRequest) returns (RemoveDtelResponse) {} + rpc SetDtelAttribute(SetDtelAttributeRequest) + returns (SetDtelAttributeResponse) {} + rpc GetDtelAttribute(GetDtelAttributeRequest) + returns (GetDtelAttributeResponse) {} + rpc CreateDtelQueueReport(CreateDtelQueueReportRequest) + returns (CreateDtelQueueReportResponse) {} + rpc RemoveDtelQueueReport(RemoveDtelQueueReportRequest) + returns (RemoveDtelQueueReportResponse) {} + rpc SetDtelQueueReportAttribute(SetDtelQueueReportAttributeRequest) + returns (SetDtelQueueReportAttributeResponse) {} + rpc GetDtelQueueReportAttribute(GetDtelQueueReportAttributeRequest) + returns (GetDtelQueueReportAttributeResponse) {} + rpc CreateDtelIntSession(CreateDtelIntSessionRequest) + returns (CreateDtelIntSessionResponse) {} + rpc RemoveDtelIntSession(RemoveDtelIntSessionRequest) + returns (RemoveDtelIntSessionResponse) {} + rpc SetDtelIntSessionAttribute(SetDtelIntSessionAttributeRequest) + returns (SetDtelIntSessionAttributeResponse) {} + rpc GetDtelIntSessionAttribute(GetDtelIntSessionAttributeRequest) + returns (GetDtelIntSessionAttributeResponse) {} + rpc CreateDtelReportSession(CreateDtelReportSessionRequest) + returns (CreateDtelReportSessionResponse) {} + rpc RemoveDtelReportSession(RemoveDtelReportSessionRequest) + returns (RemoveDtelReportSessionResponse) {} + rpc SetDtelReportSessionAttribute(SetDtelReportSessionAttributeRequest) + returns (SetDtelReportSessionAttributeResponse) {} + rpc GetDtelReportSessionAttribute(GetDtelReportSessionAttributeRequest) + returns (GetDtelReportSessionAttributeResponse) {} + rpc CreateDtelEvent(CreateDtelEventRequest) + returns (CreateDtelEventResponse) {} + rpc RemoveDtelEvent(RemoveDtelEventRequest) + returns (RemoveDtelEventResponse) {} + rpc SetDtelEventAttribute(SetDtelEventAttributeRequest) + returns (SetDtelEventAttributeResponse) {} + rpc GetDtelEventAttribute(GetDtelEventAttributeRequest) + returns (GetDtelEventAttributeResponse) {} } diff --git a/dataplane/proto/sai/fdb.proto b/dataplane/proto/sai/fdb.proto index d83e7d6d1..0ba036aa3 100644 --- a/dataplane/proto/sai/fdb.proto +++ b/dataplane/proto/sai/fdb.proto @@ -7,107 +7,106 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum FdbEntryAttr { - FDB_ENTRY_ATTR_UNSPECIFIED = 0; - FDB_ENTRY_ATTR_TYPE = 1; - FDB_ENTRY_ATTR_PACKET_ACTION = 2; - FDB_ENTRY_ATTR_USER_TRAP_ID = 3; - FDB_ENTRY_ATTR_BRIDGE_PORT_ID = 4; - FDB_ENTRY_ATTR_META_DATA = 5; - FDB_ENTRY_ATTR_ENDPOINT_IP = 6; - FDB_ENTRY_ATTR_COUNTER_ID = 7; - FDB_ENTRY_ATTR_ALLOW_MAC_MOVE = 8; + FDB_ENTRY_ATTR_UNSPECIFIED = 0; + FDB_ENTRY_ATTR_TYPE = 1; + FDB_ENTRY_ATTR_PACKET_ACTION = 2; + FDB_ENTRY_ATTR_USER_TRAP_ID = 3; + FDB_ENTRY_ATTR_BRIDGE_PORT_ID = 4; + FDB_ENTRY_ATTR_META_DATA = 5; + FDB_ENTRY_ATTR_ENDPOINT_IP = 6; + FDB_ENTRY_ATTR_COUNTER_ID = 7; + FDB_ENTRY_ATTR_ALLOW_MAC_MOVE = 8; } enum FdbFlushAttr { - FDB_FLUSH_ATTR_UNSPECIFIED = 0; - FDB_FLUSH_ATTR_BRIDGE_PORT_ID = 1; - FDB_FLUSH_ATTR_BV_ID = 2; - FDB_FLUSH_ATTR_ENTRY_TYPE = 3; + FDB_FLUSH_ATTR_UNSPECIFIED = 0; + FDB_FLUSH_ATTR_BRIDGE_PORT_ID = 1; + FDB_FLUSH_ATTR_BV_ID = 2; + FDB_FLUSH_ATTR_ENTRY_TYPE = 3; } message CreateFdbEntryRequest { - option (sai_type) = OBJECT_TYPE_FDB_ENTRY; - FdbEntry entry = 1; - optional FdbEntryType type = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint64 user_trap_id = 4[(attr_enum_value) = 3]; - optional uint64 bridge_port_id = 5[(attr_enum_value) = 4]; - optional uint32 meta_data = 6[(attr_enum_value) = 5]; - optional bytes endpoint_ip = 7[(attr_enum_value) = 6]; - optional uint64 counter_id = 8[(attr_enum_value) = 7]; - optional bool allow_mac_move = 9[(attr_enum_value) = 8]; + option (sai_type) = OBJECT_TYPE_FDB_ENTRY; + FdbEntry entry = 1; + optional FdbEntryType type = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 4 [(attr_enum_value) = 3]; + optional uint64 bridge_port_id = 5 [(attr_enum_value) = 4]; + optional uint32 meta_data = 6 [(attr_enum_value) = 5]; + optional bytes endpoint_ip = 7 [(attr_enum_value) = 6]; + optional uint64 counter_id = 8 [(attr_enum_value) = 7]; + optional bool allow_mac_move = 9 [(attr_enum_value) = 8]; } -message CreateFdbEntryResponse { -} +message CreateFdbEntryResponse {} message RemoveFdbEntryRequest { - FdbEntry entry = 1; + FdbEntry entry = 1; } -message RemoveFdbEntryResponse { -} +message RemoveFdbEntryResponse {} message SetFdbEntryAttributeRequest { - FdbEntry entry = 1; - optional FdbEntryType type = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint64 user_trap_id = 4[(attr_enum_value) = 3]; - optional uint64 bridge_port_id = 5[(attr_enum_value) = 4]; - optional uint32 meta_data = 6[(attr_enum_value) = 5]; - optional bytes endpoint_ip = 7[(attr_enum_value) = 6]; - optional uint64 counter_id = 8[(attr_enum_value) = 7]; - optional bool allow_mac_move = 9[(attr_enum_value) = 8]; + FdbEntry entry = 1; + optional FdbEntryType type = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 4 [(attr_enum_value) = 3]; + optional uint64 bridge_port_id = 5 [(attr_enum_value) = 4]; + optional uint32 meta_data = 6 [(attr_enum_value) = 5]; + optional bytes endpoint_ip = 7 [(attr_enum_value) = 6]; + optional uint64 counter_id = 8 [(attr_enum_value) = 7]; + optional bool allow_mac_move = 9 [(attr_enum_value) = 8]; } -message SetFdbEntryAttributeResponse { -} +message SetFdbEntryAttributeResponse {} message GetFdbEntryAttributeRequest { - FdbEntry entry = 1; - repeated FdbEntryAttr attr_type = 2; + FdbEntry entry = 1; + repeated FdbEntryAttr attr_type = 2; } message GetFdbEntryAttributeResponse { - FdbEntryAttribute attr = 1; + FdbEntryAttribute attr = 1; } message FlushFdbEntriesRequest { - option (sai_type) = OBJECT_TYPE_UNSPECIFIED; - uint64 switch = 1; - optional uint64 bridge_port_id = 2[(attr_enum_value) = 1]; - optional uint64 bv_id = 3[(attr_enum_value) = 2]; - optional FdbFlushEntryType entry_type = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_UNSPECIFIED; + uint64 switch = 1; + optional uint64 bridge_port_id = 2 [(attr_enum_value) = 1]; + optional uint64 bv_id = 3 [(attr_enum_value) = 2]; + optional FdbFlushEntryType entry_type = 4 [(attr_enum_value) = 3]; } -message FlushFdbEntriesResponse { -} +message FlushFdbEntriesResponse {} message CreateFdbEntriesRequest { - repeated CreateFdbEntryRequest reqs = 1; + repeated CreateFdbEntryRequest reqs = 1; } message CreateFdbEntriesResponse { - repeated CreateFdbEntryResponse resps = 1; + repeated CreateFdbEntryResponse resps = 1; } message RemoveFdbEntriesRequest { - repeated RemoveFdbEntryRequest reqs = 1; + repeated RemoveFdbEntryRequest reqs = 1; } message RemoveFdbEntriesResponse { - repeated RemoveFdbEntryResponse resps = 1; + repeated RemoveFdbEntryResponse resps = 1; } - service Fdb { - rpc CreateFdbEntry (CreateFdbEntryRequest) returns (CreateFdbEntryResponse) {} - rpc RemoveFdbEntry (RemoveFdbEntryRequest) returns (RemoveFdbEntryResponse) {} - rpc SetFdbEntryAttribute (SetFdbEntryAttributeRequest) returns (SetFdbEntryAttributeResponse) {} - rpc GetFdbEntryAttribute (GetFdbEntryAttributeRequest) returns (GetFdbEntryAttributeResponse) {} - rpc FlushFdbEntries (FlushFdbEntriesRequest) returns (FlushFdbEntriesResponse) {} - rpc CreateFdbEntries (CreateFdbEntriesRequest) returns (CreateFdbEntriesResponse) {} - rpc RemoveFdbEntries (RemoveFdbEntriesRequest) returns (RemoveFdbEntriesResponse) {} + rpc CreateFdbEntry(CreateFdbEntryRequest) returns (CreateFdbEntryResponse) {} + rpc RemoveFdbEntry(RemoveFdbEntryRequest) returns (RemoveFdbEntryResponse) {} + rpc SetFdbEntryAttribute(SetFdbEntryAttributeRequest) + returns (SetFdbEntryAttributeResponse) {} + rpc GetFdbEntryAttribute(GetFdbEntryAttributeRequest) + returns (GetFdbEntryAttributeResponse) {} + rpc FlushFdbEntries(FlushFdbEntriesRequest) + returns (FlushFdbEntriesResponse) {} + rpc CreateFdbEntries(CreateFdbEntriesRequest) + returns (CreateFdbEntriesResponse) {} + rpc RemoveFdbEntries(RemoveFdbEntriesRequest) + returns (RemoveFdbEntriesResponse) {} } diff --git a/dataplane/proto/sai/generic_programmable.proto b/dataplane/proto/sai/generic_programmable.proto index a46b7f954..0fc407517 100644 --- a/dataplane/proto/sai/generic_programmable.proto +++ b/dataplane/proto/sai/generic_programmable.proto @@ -7,55 +7,55 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum GenericProgrammableAttr { - GENERIC_PROGRAMMABLE_ATTR_UNSPECIFIED = 0; - GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME = 1; - GENERIC_PROGRAMMABLE_ATTR_ENTRY = 2; - GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID = 3; + GENERIC_PROGRAMMABLE_ATTR_UNSPECIFIED = 0; + GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME = 1; + GENERIC_PROGRAMMABLE_ATTR_ENTRY = 2; + GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID = 3; } message CreateGenericProgrammableRequest { - option (sai_type) = OBJECT_TYPE_GENERIC_PROGRAMMABLE; - uint64 switch = 1; - repeated int32 object_name = 2[(attr_enum_value) = 1]; - optional bytes entry = 3[(attr_enum_value) = 2]; - optional uint64 counter_id = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_GENERIC_PROGRAMMABLE; + uint64 switch = 1; + repeated int32 object_name = 2 [(attr_enum_value) = 1]; + optional bytes entry = 3 [(attr_enum_value) = 2]; + optional uint64 counter_id = 4 [(attr_enum_value) = 3]; } message CreateGenericProgrammableResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveGenericProgrammableRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveGenericProgrammableResponse { -} +message RemoveGenericProgrammableResponse {} message SetGenericProgrammableAttributeRequest { - uint64 oid = 1; - optional bytes entry = 2[(attr_enum_value) = 2]; - optional uint64 counter_id = 3[(attr_enum_value) = 3]; + uint64 oid = 1; + optional bytes entry = 2 [(attr_enum_value) = 2]; + optional uint64 counter_id = 3 [(attr_enum_value) = 3]; } -message SetGenericProgrammableAttributeResponse { -} +message SetGenericProgrammableAttributeResponse {} message GetGenericProgrammableAttributeRequest { - uint64 oid = 1; - repeated GenericProgrammableAttr attr_type = 2; + uint64 oid = 1; + repeated GenericProgrammableAttr attr_type = 2; } message GetGenericProgrammableAttributeResponse { - GenericProgrammableAttribute attr = 1; + GenericProgrammableAttribute attr = 1; } - service GenericProgrammable { - rpc CreateGenericProgrammable (CreateGenericProgrammableRequest) returns (CreateGenericProgrammableResponse) {} - rpc RemoveGenericProgrammable (RemoveGenericProgrammableRequest) returns (RemoveGenericProgrammableResponse) {} - rpc SetGenericProgrammableAttribute (SetGenericProgrammableAttributeRequest) returns (SetGenericProgrammableAttributeResponse) {} - rpc GetGenericProgrammableAttribute (GetGenericProgrammableAttributeRequest) returns (GetGenericProgrammableAttributeResponse) {} + rpc CreateGenericProgrammable(CreateGenericProgrammableRequest) + returns (CreateGenericProgrammableResponse) {} + rpc RemoveGenericProgrammable(RemoveGenericProgrammableRequest) + returns (RemoveGenericProgrammableResponse) {} + rpc SetGenericProgrammableAttribute(SetGenericProgrammableAttributeRequest) + returns (SetGenericProgrammableAttributeResponse) {} + rpc GetGenericProgrammableAttribute(GetGenericProgrammableAttributeRequest) + returns (GetGenericProgrammableAttributeResponse) {} } diff --git a/dataplane/proto/sai/hash.proto b/dataplane/proto/sai/hash.proto index 5fcc6312c..05d984bbb 100644 --- a/dataplane/proto/sai/hash.proto +++ b/dataplane/proto/sai/hash.proto @@ -7,96 +7,96 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum HashAttr { - HASH_ATTR_UNSPECIFIED = 0; - HASH_ATTR_NATIVE_HASH_FIELD_LIST = 1; - HASH_ATTR_UDF_GROUP_LIST = 2; - HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST = 3; + HASH_ATTR_UNSPECIFIED = 0; + HASH_ATTR_NATIVE_HASH_FIELD_LIST = 1; + HASH_ATTR_UDF_GROUP_LIST = 2; + HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST = 3; } enum FineGrainedHashFieldAttr { - FINE_GRAINED_HASH_FIELD_ATTR_UNSPECIFIED = 0; - FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD = 1; - FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK = 2; - FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK = 3; - FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID = 4; + FINE_GRAINED_HASH_FIELD_ATTR_UNSPECIFIED = 0; + FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD = 1; + FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK = 2; + FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK = 3; + FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID = 4; } message CreateHashRequest { - option (sai_type) = OBJECT_TYPE_HASH; - uint64 switch = 1; - repeated NativeHashField native_hash_field_list = 2[(attr_enum_value) = 1]; - repeated uint64 udf_group_list = 3[(attr_enum_value) = 2]; - repeated uint64 fine_grained_hash_field_list = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_HASH; + uint64 switch = 1; + repeated NativeHashField native_hash_field_list = 2 [(attr_enum_value) = 1]; + repeated uint64 udf_group_list = 3 [(attr_enum_value) = 2]; + repeated uint64 fine_grained_hash_field_list = 4 [(attr_enum_value) = 3]; } message CreateHashResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHashRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHashResponse { -} +message RemoveHashResponse {} message SetHashAttributeRequest { - uint64 oid = 1; - repeated NativeHashField native_hash_field_list = 2[(attr_enum_value) = 1]; - repeated uint64 udf_group_list = 3[(attr_enum_value) = 2]; - repeated uint64 fine_grained_hash_field_list = 4[(attr_enum_value) = 3]; + uint64 oid = 1; + repeated NativeHashField native_hash_field_list = 2 [(attr_enum_value) = 1]; + repeated uint64 udf_group_list = 3 [(attr_enum_value) = 2]; + repeated uint64 fine_grained_hash_field_list = 4 [(attr_enum_value) = 3]; } -message SetHashAttributeResponse { -} +message SetHashAttributeResponse {} message GetHashAttributeRequest { - uint64 oid = 1; - repeated HashAttr attr_type = 2; + uint64 oid = 1; + repeated HashAttr attr_type = 2; } message GetHashAttributeResponse { - HashAttribute attr = 1; + HashAttribute attr = 1; } message CreateFineGrainedHashFieldRequest { - option (sai_type) = OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; - uint64 switch = 1; - optional NativeHashField native_hash_field = 2[(attr_enum_value) = 1]; - optional bytes ipv4_mask = 3[(attr_enum_value) = 2]; - optional bytes ipv6_mask = 4[(attr_enum_value) = 3]; - optional uint32 sequence_id = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; + uint64 switch = 1; + optional NativeHashField native_hash_field = 2 [(attr_enum_value) = 1]; + optional bytes ipv4_mask = 3 [(attr_enum_value) = 2]; + optional bytes ipv6_mask = 4 [(attr_enum_value) = 3]; + optional uint32 sequence_id = 5 [(attr_enum_value) = 4]; } message CreateFineGrainedHashFieldResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveFineGrainedHashFieldRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveFineGrainedHashFieldResponse { -} +message RemoveFineGrainedHashFieldResponse {} message GetFineGrainedHashFieldAttributeRequest { - uint64 oid = 1; - repeated FineGrainedHashFieldAttr attr_type = 2; + uint64 oid = 1; + repeated FineGrainedHashFieldAttr attr_type = 2; } message GetFineGrainedHashFieldAttributeResponse { - FineGrainedHashFieldAttribute attr = 1; + FineGrainedHashFieldAttribute attr = 1; } - service Hash { - rpc CreateHash (CreateHashRequest) returns (CreateHashResponse) {} - rpc RemoveHash (RemoveHashRequest) returns (RemoveHashResponse) {} - rpc SetHashAttribute (SetHashAttributeRequest) returns (SetHashAttributeResponse) {} - rpc GetHashAttribute (GetHashAttributeRequest) returns (GetHashAttributeResponse) {} - rpc CreateFineGrainedHashField (CreateFineGrainedHashFieldRequest) returns (CreateFineGrainedHashFieldResponse) {} - rpc RemoveFineGrainedHashField (RemoveFineGrainedHashFieldRequest) returns (RemoveFineGrainedHashFieldResponse) {} - rpc GetFineGrainedHashFieldAttribute (GetFineGrainedHashFieldAttributeRequest) returns (GetFineGrainedHashFieldAttributeResponse) {} + rpc CreateHash(CreateHashRequest) returns (CreateHashResponse) {} + rpc RemoveHash(RemoveHashRequest) returns (RemoveHashResponse) {} + rpc SetHashAttribute(SetHashAttributeRequest) + returns (SetHashAttributeResponse) {} + rpc GetHashAttribute(GetHashAttributeRequest) + returns (GetHashAttributeResponse) {} + rpc CreateFineGrainedHashField(CreateFineGrainedHashFieldRequest) + returns (CreateFineGrainedHashFieldResponse) {} + rpc RemoveFineGrainedHashField(RemoveFineGrainedHashFieldRequest) + returns (RemoveFineGrainedHashFieldResponse) {} + rpc GetFineGrainedHashFieldAttribute(GetFineGrainedHashFieldAttributeRequest) + returns (GetFineGrainedHashFieldAttributeResponse) {} } diff --git a/dataplane/proto/sai/hostif.proto b/dataplane/proto/sai/hostif.proto index 001887d7a..24a598983 100644 --- a/dataplane/proto/sai/hostif.proto +++ b/dataplane/proto/sai/hostif.proto @@ -7,265 +7,273 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum HostifAttr { - HOSTIF_ATTR_UNSPECIFIED = 0; - HOSTIF_ATTR_TYPE = 1; - HOSTIF_ATTR_OBJ_ID = 2; - HOSTIF_ATTR_NAME = 3; - HOSTIF_ATTR_OPER_STATUS = 4; - HOSTIF_ATTR_QUEUE = 5; - HOSTIF_ATTR_VLAN_TAG = 6; - HOSTIF_ATTR_GENETLINK_MCGRP_NAME = 7; + HOSTIF_ATTR_UNSPECIFIED = 0; + HOSTIF_ATTR_TYPE = 1; + HOSTIF_ATTR_OBJ_ID = 2; + HOSTIF_ATTR_NAME = 3; + HOSTIF_ATTR_OPER_STATUS = 4; + HOSTIF_ATTR_QUEUE = 5; + HOSTIF_ATTR_VLAN_TAG = 6; + HOSTIF_ATTR_GENETLINK_MCGRP_NAME = 7; } enum HostifTableEntryAttr { - HOSTIF_TABLE_ENTRY_ATTR_UNSPECIFIED = 0; - HOSTIF_TABLE_ENTRY_ATTR_TYPE = 1; - HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID = 2; - HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID = 3; - HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE = 4; - HOSTIF_TABLE_ENTRY_ATTR_HOST_IF = 5; + HOSTIF_TABLE_ENTRY_ATTR_UNSPECIFIED = 0; + HOSTIF_TABLE_ENTRY_ATTR_TYPE = 1; + HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID = 2; + HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID = 3; + HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE = 4; + HOSTIF_TABLE_ENTRY_ATTR_HOST_IF = 5; } enum HostifTrapGroupAttr { - HOSTIF_TRAP_GROUP_ATTR_UNSPECIFIED = 0; - HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE = 1; - HOSTIF_TRAP_GROUP_ATTR_QUEUE = 2; - HOSTIF_TRAP_GROUP_ATTR_POLICER = 3; - HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE = 4; + HOSTIF_TRAP_GROUP_ATTR_UNSPECIFIED = 0; + HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE = 1; + HOSTIF_TRAP_GROUP_ATTR_QUEUE = 2; + HOSTIF_TRAP_GROUP_ATTR_POLICER = 3; + HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE = 4; } enum HostifTrapAttr { - HOSTIF_TRAP_ATTR_UNSPECIFIED = 0; - HOSTIF_TRAP_ATTR_TRAP_TYPE = 1; - HOSTIF_TRAP_ATTR_PACKET_ACTION = 2; - HOSTIF_TRAP_ATTR_TRAP_PRIORITY = 3; - HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST = 4; - HOSTIF_TRAP_ATTR_TRAP_GROUP = 5; - HOSTIF_TRAP_ATTR_MIRROR_SESSION = 6; - HOSTIF_TRAP_ATTR_COUNTER_ID = 7; + HOSTIF_TRAP_ATTR_UNSPECIFIED = 0; + HOSTIF_TRAP_ATTR_TRAP_TYPE = 1; + HOSTIF_TRAP_ATTR_PACKET_ACTION = 2; + HOSTIF_TRAP_ATTR_TRAP_PRIORITY = 3; + HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST = 4; + HOSTIF_TRAP_ATTR_TRAP_GROUP = 5; + HOSTIF_TRAP_ATTR_MIRROR_SESSION = 6; + HOSTIF_TRAP_ATTR_COUNTER_ID = 7; } enum HostifUserDefinedTrapAttr { - HOSTIF_USER_DEFINED_TRAP_ATTR_UNSPECIFIED = 0; - HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE = 1; - HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY = 2; - HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP = 3; + HOSTIF_USER_DEFINED_TRAP_ATTR_UNSPECIFIED = 0; + HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE = 1; + HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY = 2; + HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP = 3; } message CreateHostifRequest { - option (sai_type) = OBJECT_TYPE_HOSTIF; - uint64 switch = 1; - optional HostifType type = 2[(attr_enum_value) = 1]; - optional uint64 obj_id = 3[(attr_enum_value) = 2]; - optional bytes name = 4[(attr_enum_value) = 3]; - optional bool oper_status = 5[(attr_enum_value) = 4]; - optional uint32 queue = 6[(attr_enum_value) = 5]; - optional HostifVlanTag vlan_tag = 7[(attr_enum_value) = 6]; - optional bytes genetlink_mcgrp_name = 8[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_HOSTIF; + uint64 switch = 1; + optional HostifType type = 2 [(attr_enum_value) = 1]; + optional uint64 obj_id = 3 [(attr_enum_value) = 2]; + optional bytes name = 4 [(attr_enum_value) = 3]; + optional bool oper_status = 5 [(attr_enum_value) = 4]; + optional uint32 queue = 6 [(attr_enum_value) = 5]; + optional HostifVlanTag vlan_tag = 7 [(attr_enum_value) = 6]; + optional bytes genetlink_mcgrp_name = 8 [(attr_enum_value) = 7]; } message CreateHostifResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHostifRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHostifResponse { -} +message RemoveHostifResponse {} message SetHostifAttributeRequest { - uint64 oid = 1; - optional bool oper_status = 2[(attr_enum_value) = 4]; - optional uint32 queue = 3[(attr_enum_value) = 5]; - optional HostifVlanTag vlan_tag = 4[(attr_enum_value) = 6]; + uint64 oid = 1; + optional bool oper_status = 2 [(attr_enum_value) = 4]; + optional uint32 queue = 3 [(attr_enum_value) = 5]; + optional HostifVlanTag vlan_tag = 4 [(attr_enum_value) = 6]; } -message SetHostifAttributeResponse { -} +message SetHostifAttributeResponse {} message GetHostifAttributeRequest { - uint64 oid = 1; - repeated HostifAttr attr_type = 2; + uint64 oid = 1; + repeated HostifAttr attr_type = 2; } message GetHostifAttributeResponse { - HostifAttribute attr = 1; + HostifAttribute attr = 1; } message CreateHostifTableEntryRequest { - option (sai_type) = OBJECT_TYPE_HOSTIF_TABLE_ENTRY; - uint64 switch = 1; - optional HostifTableEntryType type = 2[(attr_enum_value) = 1]; - optional uint64 obj_id = 3[(attr_enum_value) = 2]; - optional uint64 trap_id = 4[(attr_enum_value) = 3]; - optional HostifTableEntryChannelType channel_type = 5[(attr_enum_value) = 4]; - optional uint64 host_if = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_HOSTIF_TABLE_ENTRY; + uint64 switch = 1; + optional HostifTableEntryType type = 2 [(attr_enum_value) = 1]; + optional uint64 obj_id = 3 [(attr_enum_value) = 2]; + optional uint64 trap_id = 4 [(attr_enum_value) = 3]; + optional HostifTableEntryChannelType channel_type = 5 [(attr_enum_value) = 4]; + optional uint64 host_if = 6 [(attr_enum_value) = 5]; } message CreateHostifTableEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHostifTableEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHostifTableEntryResponse { -} +message RemoveHostifTableEntryResponse {} message GetHostifTableEntryAttributeRequest { - uint64 oid = 1; - repeated HostifTableEntryAttr attr_type = 2; + uint64 oid = 1; + repeated HostifTableEntryAttr attr_type = 2; } message GetHostifTableEntryAttributeResponse { - HostifTableEntryAttribute attr = 1; + HostifTableEntryAttribute attr = 1; } message CreateHostifTrapGroupRequest { - option (sai_type) = OBJECT_TYPE_HOSTIF_TRAP_GROUP; - uint64 switch = 1; - optional bool admin_state = 2[(attr_enum_value) = 1]; - optional uint32 queue = 3[(attr_enum_value) = 2]; - optional uint64 policer = 4[(attr_enum_value) = 3]; - optional ObjectStage object_stage = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_HOSTIF_TRAP_GROUP; + uint64 switch = 1; + optional bool admin_state = 2 [(attr_enum_value) = 1]; + optional uint32 queue = 3 [(attr_enum_value) = 2]; + optional uint64 policer = 4 [(attr_enum_value) = 3]; + optional ObjectStage object_stage = 5 [(attr_enum_value) = 4]; } message CreateHostifTrapGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHostifTrapGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHostifTrapGroupResponse { -} +message RemoveHostifTrapGroupResponse {} message SetHostifTrapGroupAttributeRequest { - uint64 oid = 1; - optional bool admin_state = 2[(attr_enum_value) = 1]; - optional uint32 queue = 3[(attr_enum_value) = 2]; - optional uint64 policer = 4[(attr_enum_value) = 3]; + uint64 oid = 1; + optional bool admin_state = 2 [(attr_enum_value) = 1]; + optional uint32 queue = 3 [(attr_enum_value) = 2]; + optional uint64 policer = 4 [(attr_enum_value) = 3]; } -message SetHostifTrapGroupAttributeResponse { -} +message SetHostifTrapGroupAttributeResponse {} message GetHostifTrapGroupAttributeRequest { - uint64 oid = 1; - repeated HostifTrapGroupAttr attr_type = 2; + uint64 oid = 1; + repeated HostifTrapGroupAttr attr_type = 2; } message GetHostifTrapGroupAttributeResponse { - HostifTrapGroupAttribute attr = 1; + HostifTrapGroupAttribute attr = 1; } message CreateHostifTrapRequest { - option (sai_type) = OBJECT_TYPE_HOSTIF_TRAP; - uint64 switch = 1; - optional HostifTrapType trap_type = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint32 trap_priority = 4[(attr_enum_value) = 3]; - repeated uint64 exclude_port_list = 5[(attr_enum_value) = 4]; - optional uint64 trap_group = 6[(attr_enum_value) = 5]; - repeated uint64 mirror_session = 7[(attr_enum_value) = 6]; - optional uint64 counter_id = 8[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_HOSTIF_TRAP; + uint64 switch = 1; + optional HostifTrapType trap_type = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 4 [(attr_enum_value) = 3]; + repeated uint64 exclude_port_list = 5 [(attr_enum_value) = 4]; + optional uint64 trap_group = 6 [(attr_enum_value) = 5]; + repeated uint64 mirror_session = 7 [(attr_enum_value) = 6]; + optional uint64 counter_id = 8 [(attr_enum_value) = 7]; } message CreateHostifTrapResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHostifTrapRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHostifTrapResponse { -} +message RemoveHostifTrapResponse {} message SetHostifTrapAttributeRequest { - uint64 oid = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 2]; - optional uint32 trap_priority = 3[(attr_enum_value) = 3]; - repeated uint64 exclude_port_list = 4[(attr_enum_value) = 4]; - optional uint64 trap_group = 5[(attr_enum_value) = 5]; - repeated uint64 mirror_session = 6[(attr_enum_value) = 6]; - optional uint64 counter_id = 7[(attr_enum_value) = 7]; + uint64 oid = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 3 [(attr_enum_value) = 3]; + repeated uint64 exclude_port_list = 4 [(attr_enum_value) = 4]; + optional uint64 trap_group = 5 [(attr_enum_value) = 5]; + repeated uint64 mirror_session = 6 [(attr_enum_value) = 6]; + optional uint64 counter_id = 7 [(attr_enum_value) = 7]; } -message SetHostifTrapAttributeResponse { -} +message SetHostifTrapAttributeResponse {} message GetHostifTrapAttributeRequest { - uint64 oid = 1; - repeated HostifTrapAttr attr_type = 2; + uint64 oid = 1; + repeated HostifTrapAttr attr_type = 2; } message GetHostifTrapAttributeResponse { - HostifTrapAttribute attr = 1; + HostifTrapAttribute attr = 1; } message CreateHostifUserDefinedTrapRequest { - option (sai_type) = OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; - uint64 switch = 1; - optional HostifUserDefinedTrapType type = 2[(attr_enum_value) = 1]; - optional uint32 trap_priority = 3[(attr_enum_value) = 2]; - optional uint64 trap_group = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; + uint64 switch = 1; + optional HostifUserDefinedTrapType type = 2 [(attr_enum_value) = 1]; + optional uint32 trap_priority = 3 [(attr_enum_value) = 2]; + optional uint64 trap_group = 4 [(attr_enum_value) = 3]; } message CreateHostifUserDefinedTrapResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveHostifUserDefinedTrapRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveHostifUserDefinedTrapResponse { -} +message RemoveHostifUserDefinedTrapResponse {} message SetHostifUserDefinedTrapAttributeRequest { - uint64 oid = 1; - optional uint32 trap_priority = 2[(attr_enum_value) = 2]; - optional uint64 trap_group = 3[(attr_enum_value) = 3]; + uint64 oid = 1; + optional uint32 trap_priority = 2 [(attr_enum_value) = 2]; + optional uint64 trap_group = 3 [(attr_enum_value) = 3]; } -message SetHostifUserDefinedTrapAttributeResponse { -} +message SetHostifUserDefinedTrapAttributeResponse {} message GetHostifUserDefinedTrapAttributeRequest { - uint64 oid = 1; - repeated HostifUserDefinedTrapAttr attr_type = 2; + uint64 oid = 1; + repeated HostifUserDefinedTrapAttr attr_type = 2; } message GetHostifUserDefinedTrapAttributeResponse { - HostifUserDefinedTrapAttribute attr = 1; + HostifUserDefinedTrapAttribute attr = 1; } - service Hostif { - rpc CreateHostif (CreateHostifRequest) returns (CreateHostifResponse) {} - rpc RemoveHostif (RemoveHostifRequest) returns (RemoveHostifResponse) {} - rpc SetHostifAttribute (SetHostifAttributeRequest) returns (SetHostifAttributeResponse) {} - rpc GetHostifAttribute (GetHostifAttributeRequest) returns (GetHostifAttributeResponse) {} - rpc CreateHostifTableEntry (CreateHostifTableEntryRequest) returns (CreateHostifTableEntryResponse) {} - rpc RemoveHostifTableEntry (RemoveHostifTableEntryRequest) returns (RemoveHostifTableEntryResponse) {} - rpc GetHostifTableEntryAttribute (GetHostifTableEntryAttributeRequest) returns (GetHostifTableEntryAttributeResponse) {} - rpc CreateHostifTrapGroup (CreateHostifTrapGroupRequest) returns (CreateHostifTrapGroupResponse) {} - rpc RemoveHostifTrapGroup (RemoveHostifTrapGroupRequest) returns (RemoveHostifTrapGroupResponse) {} - rpc SetHostifTrapGroupAttribute (SetHostifTrapGroupAttributeRequest) returns (SetHostifTrapGroupAttributeResponse) {} - rpc GetHostifTrapGroupAttribute (GetHostifTrapGroupAttributeRequest) returns (GetHostifTrapGroupAttributeResponse) {} - rpc CreateHostifTrap (CreateHostifTrapRequest) returns (CreateHostifTrapResponse) {} - rpc RemoveHostifTrap (RemoveHostifTrapRequest) returns (RemoveHostifTrapResponse) {} - rpc SetHostifTrapAttribute (SetHostifTrapAttributeRequest) returns (SetHostifTrapAttributeResponse) {} - rpc GetHostifTrapAttribute (GetHostifTrapAttributeRequest) returns (GetHostifTrapAttributeResponse) {} - rpc CreateHostifUserDefinedTrap (CreateHostifUserDefinedTrapRequest) returns (CreateHostifUserDefinedTrapResponse) {} - rpc RemoveHostifUserDefinedTrap (RemoveHostifUserDefinedTrapRequest) returns (RemoveHostifUserDefinedTrapResponse) {} - rpc SetHostifUserDefinedTrapAttribute (SetHostifUserDefinedTrapAttributeRequest) returns (SetHostifUserDefinedTrapAttributeResponse) {} - rpc GetHostifUserDefinedTrapAttribute (GetHostifUserDefinedTrapAttributeRequest) returns (GetHostifUserDefinedTrapAttributeResponse) {} + rpc CreateHostif(CreateHostifRequest) returns (CreateHostifResponse) {} + rpc RemoveHostif(RemoveHostifRequest) returns (RemoveHostifResponse) {} + rpc SetHostifAttribute(SetHostifAttributeRequest) + returns (SetHostifAttributeResponse) {} + rpc GetHostifAttribute(GetHostifAttributeRequest) + returns (GetHostifAttributeResponse) {} + rpc CreateHostifTableEntry(CreateHostifTableEntryRequest) + returns (CreateHostifTableEntryResponse) {} + rpc RemoveHostifTableEntry(RemoveHostifTableEntryRequest) + returns (RemoveHostifTableEntryResponse) {} + rpc GetHostifTableEntryAttribute(GetHostifTableEntryAttributeRequest) + returns (GetHostifTableEntryAttributeResponse) {} + rpc CreateHostifTrapGroup(CreateHostifTrapGroupRequest) + returns (CreateHostifTrapGroupResponse) {} + rpc RemoveHostifTrapGroup(RemoveHostifTrapGroupRequest) + returns (RemoveHostifTrapGroupResponse) {} + rpc SetHostifTrapGroupAttribute(SetHostifTrapGroupAttributeRequest) + returns (SetHostifTrapGroupAttributeResponse) {} + rpc GetHostifTrapGroupAttribute(GetHostifTrapGroupAttributeRequest) + returns (GetHostifTrapGroupAttributeResponse) {} + rpc CreateHostifTrap(CreateHostifTrapRequest) + returns (CreateHostifTrapResponse) {} + rpc RemoveHostifTrap(RemoveHostifTrapRequest) + returns (RemoveHostifTrapResponse) {} + rpc SetHostifTrapAttribute(SetHostifTrapAttributeRequest) + returns (SetHostifTrapAttributeResponse) {} + rpc GetHostifTrapAttribute(GetHostifTrapAttributeRequest) + returns (GetHostifTrapAttributeResponse) {} + rpc CreateHostifUserDefinedTrap(CreateHostifUserDefinedTrapRequest) + returns (CreateHostifUserDefinedTrapResponse) {} + rpc RemoveHostifUserDefinedTrap(RemoveHostifUserDefinedTrapRequest) + returns (RemoveHostifUserDefinedTrapResponse) {} + rpc SetHostifUserDefinedTrapAttribute( + SetHostifUserDefinedTrapAttributeRequest) + returns (SetHostifUserDefinedTrapAttributeResponse) {} + rpc GetHostifUserDefinedTrapAttribute( + GetHostifUserDefinedTrapAttributeRequest) + returns (GetHostifUserDefinedTrapAttributeResponse) {} } diff --git a/dataplane/proto/sai/icmp_echo.pb.go b/dataplane/proto/sai/icmp_echo.pb.go new file mode 100755 index 000000000..0347d5b97 --- /dev/null +++ b/dataplane/proto/sai/icmp_echo.pb.go @@ -0,0 +1,1177 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc v5.29.3 +// source: dataplane/proto/sai/icmp_echo.proto + +package sai + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type IcmpEchoSessionAttr int32 + +const ( + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_UNSPECIFIED IcmpEchoSessionAttr = 0 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID IcmpEchoSessionAttr = 1 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER IcmpEchoSessionAttr = 2 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_PORT IcmpEchoSessionAttr = 3 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_RX_PORT IcmpEchoSessionAttr = 4 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_GUID IcmpEchoSessionAttr = 5 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_COOKIE IcmpEchoSessionAttr = 6 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION IcmpEchoSessionAttr = 7 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_TOS IcmpEchoSessionAttr = 8 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_TTL IcmpEchoSessionAttr = 9 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS IcmpEchoSessionAttr = 10 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS IcmpEchoSessionAttr = 11 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS IcmpEchoSessionAttr = 12 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS IcmpEchoSessionAttr = 13 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL IcmpEchoSessionAttr = 14 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL IcmpEchoSessionAttr = 15 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER IcmpEchoSessionAttr = 16 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_STATE IcmpEchoSessionAttr = 17 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE IcmpEchoSessionAttr = 18 + IcmpEchoSessionAttr_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST IcmpEchoSessionAttr = 19 +) + +// Enum value maps for IcmpEchoSessionAttr. +var ( + IcmpEchoSessionAttr_name = map[int32]string{ + 0: "ICMP_ECHO_SESSION_ATTR_UNSPECIFIED", + 1: "ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID", + 2: "ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER", + 3: "ICMP_ECHO_SESSION_ATTR_PORT", + 4: "ICMP_ECHO_SESSION_ATTR_RX_PORT", + 5: "ICMP_ECHO_SESSION_ATTR_GUID", + 6: "ICMP_ECHO_SESSION_ATTR_COOKIE", + 7: "ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION", + 8: "ICMP_ECHO_SESSION_ATTR_TOS", + 9: "ICMP_ECHO_SESSION_ATTR_TTL", + 10: "ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS", + 11: "ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS", + 12: "ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS", + 13: "ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS", + 14: "ICMP_ECHO_SESSION_ATTR_TX_INTERVAL", + 15: "ICMP_ECHO_SESSION_ATTR_RX_INTERVAL", + 16: "ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER", + 17: "ICMP_ECHO_SESSION_ATTR_STATE", + 18: "ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE", + 19: "ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST", + } + IcmpEchoSessionAttr_value = map[string]int32{ + "ICMP_ECHO_SESSION_ATTR_UNSPECIFIED": 0, + "ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID": 1, + "ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER": 2, + "ICMP_ECHO_SESSION_ATTR_PORT": 3, + "ICMP_ECHO_SESSION_ATTR_RX_PORT": 4, + "ICMP_ECHO_SESSION_ATTR_GUID": 5, + "ICMP_ECHO_SESSION_ATTR_COOKIE": 6, + "ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION": 7, + "ICMP_ECHO_SESSION_ATTR_TOS": 8, + "ICMP_ECHO_SESSION_ATTR_TTL": 9, + "ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS": 10, + "ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS": 11, + "ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS": 12, + "ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS": 13, + "ICMP_ECHO_SESSION_ATTR_TX_INTERVAL": 14, + "ICMP_ECHO_SESSION_ATTR_RX_INTERVAL": 15, + "ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER": 16, + "ICMP_ECHO_SESSION_ATTR_STATE": 17, + "ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE": 18, + "ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST": 19, + } +) + +func (x IcmpEchoSessionAttr) Enum() *IcmpEchoSessionAttr { + p := new(IcmpEchoSessionAttr) + *p = x + return p +} + +func (x IcmpEchoSessionAttr) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (IcmpEchoSessionAttr) Descriptor() protoreflect.EnumDescriptor { + return file_dataplane_proto_sai_icmp_echo_proto_enumTypes[0].Descriptor() +} + +func (IcmpEchoSessionAttr) Type() protoreflect.EnumType { + return &file_dataplane_proto_sai_icmp_echo_proto_enumTypes[0] +} + +func (x IcmpEchoSessionAttr) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use IcmpEchoSessionAttr.Descriptor instead. +func (IcmpEchoSessionAttr) EnumDescriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{0} +} + +type CreateIcmpEchoSessionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + HwLookupValid *bool `protobuf:"varint,2,opt,name=hw_lookup_valid,json=hwLookupValid,proto3,oneof" json:"hw_lookup_valid,omitempty"` + VirtualRouter *uint64 `protobuf:"varint,3,opt,name=virtual_router,json=virtualRouter,proto3,oneof" json:"virtual_router,omitempty"` + Port *uint64 `protobuf:"varint,4,opt,name=port,proto3,oneof" json:"port,omitempty"` + RxPort *uint64 `protobuf:"varint,5,opt,name=rx_port,json=rxPort,proto3,oneof" json:"rx_port,omitempty"` + Guid *uint64 `protobuf:"varint,6,opt,name=guid,proto3,oneof" json:"guid,omitempty"` + Cookie *uint32 `protobuf:"varint,7,opt,name=cookie,proto3,oneof" json:"cookie,omitempty"` + IphdrVersion *uint32 `protobuf:"varint,8,opt,name=iphdr_version,json=iphdrVersion,proto3,oneof" json:"iphdr_version,omitempty"` + Tos *uint32 `protobuf:"varint,9,opt,name=tos,proto3,oneof" json:"tos,omitempty"` + Ttl *uint32 `protobuf:"varint,10,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + SrcIpAddress []byte `protobuf:"bytes,11,opt,name=src_ip_address,json=srcIpAddress,proto3,oneof" json:"src_ip_address,omitempty"` + DstIpAddress []byte `protobuf:"bytes,12,opt,name=dst_ip_address,json=dstIpAddress,proto3,oneof" json:"dst_ip_address,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,13,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + DstMacAddress []byte `protobuf:"bytes,14,opt,name=dst_mac_address,json=dstMacAddress,proto3,oneof" json:"dst_mac_address,omitempty"` + TxInterval *uint32 `protobuf:"varint,15,opt,name=tx_interval,json=txInterval,proto3,oneof" json:"tx_interval,omitempty"` + RxInterval *uint32 `protobuf:"varint,16,opt,name=rx_interval,json=rxInterval,proto3,oneof" json:"rx_interval,omitempty"` + SetNextHopGroupSwitchover *bool `protobuf:"varint,17,opt,name=set_next_hop_group_switchover,json=setNextHopGroupSwitchover,proto3,oneof" json:"set_next_hop_group_switchover,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,18,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,19,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateIcmpEchoSessionRequest) Reset() { + *x = CreateIcmpEchoSessionRequest{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateIcmpEchoSessionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateIcmpEchoSessionRequest) ProtoMessage() {} + +func (x *CreateIcmpEchoSessionRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateIcmpEchoSessionRequest.ProtoReflect.Descriptor instead. +func (*CreateIcmpEchoSessionRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{0} +} + +func (x *CreateIcmpEchoSessionRequest) GetSwitch() uint64 { + if x != nil { + return x.Switch + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetHwLookupValid() bool { + if x != nil && x.HwLookupValid != nil { + return *x.HwLookupValid + } + return false +} + +func (x *CreateIcmpEchoSessionRequest) GetVirtualRouter() uint64 { + if x != nil && x.VirtualRouter != nil { + return *x.VirtualRouter + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetPort() uint64 { + if x != nil && x.Port != nil { + return *x.Port + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetRxPort() uint64 { + if x != nil && x.RxPort != nil { + return *x.RxPort + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetGuid() uint64 { + if x != nil && x.Guid != nil { + return *x.Guid + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetCookie() uint32 { + if x != nil && x.Cookie != nil { + return *x.Cookie + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetIphdrVersion() uint32 { + if x != nil && x.IphdrVersion != nil { + return *x.IphdrVersion + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetTos() uint32 { + if x != nil && x.Tos != nil { + return *x.Tos + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetSrcIpAddress() []byte { + if x != nil { + return x.SrcIpAddress + } + return nil +} + +func (x *CreateIcmpEchoSessionRequest) GetDstIpAddress() []byte { + if x != nil { + return x.DstIpAddress + } + return nil +} + +func (x *CreateIcmpEchoSessionRequest) GetSrcMacAddress() []byte { + if x != nil { + return x.SrcMacAddress + } + return nil +} + +func (x *CreateIcmpEchoSessionRequest) GetDstMacAddress() []byte { + if x != nil { + return x.DstMacAddress + } + return nil +} + +func (x *CreateIcmpEchoSessionRequest) GetTxInterval() uint32 { + if x != nil && x.TxInterval != nil { + return *x.TxInterval + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetRxInterval() uint32 { + if x != nil && x.RxInterval != nil { + return *x.RxInterval + } + return 0 +} + +func (x *CreateIcmpEchoSessionRequest) GetSetNextHopGroupSwitchover() bool { + if x != nil && x.SetNextHopGroupSwitchover != nil { + return *x.SetNextHopGroupSwitchover + } + return false +} + +func (x *CreateIcmpEchoSessionRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateIcmpEchoSessionRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + +type CreateIcmpEchoSessionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *CreateIcmpEchoSessionResponse) Reset() { + *x = CreateIcmpEchoSessionResponse{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *CreateIcmpEchoSessionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateIcmpEchoSessionResponse) ProtoMessage() {} + +func (x *CreateIcmpEchoSessionResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateIcmpEchoSessionResponse.ProtoReflect.Descriptor instead. +func (*CreateIcmpEchoSessionResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{1} +} + +func (x *CreateIcmpEchoSessionResponse) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveIcmpEchoSessionRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RemoveIcmpEchoSessionRequest) Reset() { + *x = RemoveIcmpEchoSessionRequest{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveIcmpEchoSessionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveIcmpEchoSessionRequest) ProtoMessage() {} + +func (x *RemoveIcmpEchoSessionRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveIcmpEchoSessionRequest.ProtoReflect.Descriptor instead. +func (*RemoveIcmpEchoSessionRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{2} +} + +func (x *RemoveIcmpEchoSessionRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +type RemoveIcmpEchoSessionResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RemoveIcmpEchoSessionResponse) Reset() { + *x = RemoveIcmpEchoSessionResponse{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RemoveIcmpEchoSessionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveIcmpEchoSessionResponse) ProtoMessage() {} + +func (x *RemoveIcmpEchoSessionResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveIcmpEchoSessionResponse.ProtoReflect.Descriptor instead. +func (*RemoveIcmpEchoSessionResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{3} +} + +type SetIcmpEchoSessionAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + VirtualRouter *uint64 `protobuf:"varint,2,opt,name=virtual_router,json=virtualRouter,proto3,oneof" json:"virtual_router,omitempty"` + Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` + RxPort *uint64 `protobuf:"varint,4,opt,name=rx_port,json=rxPort,proto3,oneof" json:"rx_port,omitempty"` + IphdrVersion *uint32 `protobuf:"varint,5,opt,name=iphdr_version,json=iphdrVersion,proto3,oneof" json:"iphdr_version,omitempty"` + Tos *uint32 `protobuf:"varint,6,opt,name=tos,proto3,oneof" json:"tos,omitempty"` + Ttl *uint32 `protobuf:"varint,7,opt,name=ttl,proto3,oneof" json:"ttl,omitempty"` + SrcMacAddress []byte `protobuf:"bytes,8,opt,name=src_mac_address,json=srcMacAddress,proto3,oneof" json:"src_mac_address,omitempty"` + DstMacAddress []byte `protobuf:"bytes,9,opt,name=dst_mac_address,json=dstMacAddress,proto3,oneof" json:"dst_mac_address,omitempty"` + TxInterval *uint32 `protobuf:"varint,10,opt,name=tx_interval,json=txInterval,proto3,oneof" json:"tx_interval,omitempty"` + RxInterval *uint32 `protobuf:"varint,11,opt,name=rx_interval,json=rxInterval,proto3,oneof" json:"rx_interval,omitempty"` + SetNextHopGroupSwitchover *bool `protobuf:"varint,12,opt,name=set_next_hop_group_switchover,json=setNextHopGroupSwitchover,proto3,oneof" json:"set_next_hop_group_switchover,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,13,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,14,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetIcmpEchoSessionAttributeRequest) Reset() { + *x = SetIcmpEchoSessionAttributeRequest{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetIcmpEchoSessionAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetIcmpEchoSessionAttributeRequest) ProtoMessage() {} + +func (x *SetIcmpEchoSessionAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetIcmpEchoSessionAttributeRequest.ProtoReflect.Descriptor instead. +func (*SetIcmpEchoSessionAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{4} +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetVirtualRouter() uint64 { + if x != nil && x.VirtualRouter != nil { + return *x.VirtualRouter + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetPort() uint64 { + if x != nil && x.Port != nil { + return *x.Port + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetRxPort() uint64 { + if x != nil && x.RxPort != nil { + return *x.RxPort + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetIphdrVersion() uint32 { + if x != nil && x.IphdrVersion != nil { + return *x.IphdrVersion + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetTos() uint32 { + if x != nil && x.Tos != nil { + return *x.Tos + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetTtl() uint32 { + if x != nil && x.Ttl != nil { + return *x.Ttl + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetSrcMacAddress() []byte { + if x != nil { + return x.SrcMacAddress + } + return nil +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetDstMacAddress() []byte { + if x != nil { + return x.DstMacAddress + } + return nil +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetTxInterval() uint32 { + if x != nil && x.TxInterval != nil { + return *x.TxInterval + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetRxInterval() uint32 { + if x != nil && x.RxInterval != nil { + return *x.RxInterval + } + return 0 +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetSetNextHopGroupSwitchover() bool { + if x != nil && x.SetNextHopGroupSwitchover != nil { + return *x.SetNextHopGroupSwitchover + } + return false +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetIcmpEchoSessionAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + +type SetIcmpEchoSessionAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetIcmpEchoSessionAttributeResponse) Reset() { + *x = SetIcmpEchoSessionAttributeResponse{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetIcmpEchoSessionAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetIcmpEchoSessionAttributeResponse) ProtoMessage() {} + +func (x *SetIcmpEchoSessionAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetIcmpEchoSessionAttributeResponse.ProtoReflect.Descriptor instead. +func (*SetIcmpEchoSessionAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{5} +} + +type GetIcmpEchoSessionAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + AttrType []IcmpEchoSessionAttr `protobuf:"varint,2,rep,packed,name=attr_type,json=attrType,proto3,enum=lemming.dataplane.sai.IcmpEchoSessionAttr" json:"attr_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetIcmpEchoSessionAttributeRequest) Reset() { + *x = GetIcmpEchoSessionAttributeRequest{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetIcmpEchoSessionAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIcmpEchoSessionAttributeRequest) ProtoMessage() {} + +func (x *GetIcmpEchoSessionAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetIcmpEchoSessionAttributeRequest.ProtoReflect.Descriptor instead. +func (*GetIcmpEchoSessionAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{6} +} + +func (x *GetIcmpEchoSessionAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *GetIcmpEchoSessionAttributeRequest) GetAttrType() []IcmpEchoSessionAttr { + if x != nil { + return x.AttrType + } + return nil +} + +type GetIcmpEchoSessionAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Attr *IcmpEchoSessionAttribute `protobuf:"bytes,1,opt,name=attr,proto3" json:"attr,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetIcmpEchoSessionAttributeResponse) Reset() { + *x = GetIcmpEchoSessionAttributeResponse{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetIcmpEchoSessionAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIcmpEchoSessionAttributeResponse) ProtoMessage() {} + +func (x *GetIcmpEchoSessionAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetIcmpEchoSessionAttributeResponse.ProtoReflect.Descriptor instead. +func (*GetIcmpEchoSessionAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{7} +} + +func (x *GetIcmpEchoSessionAttributeResponse) GetAttr() *IcmpEchoSessionAttribute { + if x != nil { + return x.Attr + } + return nil +} + +type GetIcmpEchoSessionStatsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + CounterIds []IcmpEchoSessionStat `protobuf:"varint,2,rep,packed,name=counter_ids,json=counterIds,proto3,enum=lemming.dataplane.sai.IcmpEchoSessionStat" json:"counter_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetIcmpEchoSessionStatsRequest) Reset() { + *x = GetIcmpEchoSessionStatsRequest{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetIcmpEchoSessionStatsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIcmpEchoSessionStatsRequest) ProtoMessage() {} + +func (x *GetIcmpEchoSessionStatsRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetIcmpEchoSessionStatsRequest.ProtoReflect.Descriptor instead. +func (*GetIcmpEchoSessionStatsRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{8} +} + +func (x *GetIcmpEchoSessionStatsRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *GetIcmpEchoSessionStatsRequest) GetCounterIds() []IcmpEchoSessionStat { + if x != nil { + return x.CounterIds + } + return nil +} + +type GetIcmpEchoSessionStatsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Values []uint64 `protobuf:"varint,1,rep,packed,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetIcmpEchoSessionStatsResponse) Reset() { + *x = GetIcmpEchoSessionStatsResponse{} + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetIcmpEchoSessionStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetIcmpEchoSessionStatsResponse) ProtoMessage() {} + +func (x *GetIcmpEchoSessionStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_icmp_echo_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetIcmpEchoSessionStatsResponse.ProtoReflect.Descriptor instead. +func (*GetIcmpEchoSessionStatsResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP(), []int{9} +} + +func (x *GetIcmpEchoSessionStatsResponse) GetValues() []uint64 { + if x != nil { + return x.Values + } + return nil +} + +var File_dataplane_proto_sai_icmp_echo_proto protoreflect.FileDescriptor + +var file_dataplane_proto_sai_icmp_echo_proto_rawDesc = string([]byte{ + 0x0a, 0x23, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x69, 0x63, 0x6d, 0x70, 0x5f, 0x65, 0x63, 0x68, 0x6f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, + 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd2, + 0x09, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, + 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x33, 0x0a, 0x0f, 0x68, 0x77, 0x5f, 0x6c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x68, 0x77, 0x4c, 0x6f, + 0x6f, 0x6b, 0x75, 0x70, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0d, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, + 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x24, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x06, 0x72, 0x78, + 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, + 0x04, 0x67, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x06, 0x63, 0x6f, 0x6f, 0x6b, + 0x69, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, + 0x48, 0x05, 0x52, 0x06, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0c, + 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x03, 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, + 0x0e, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, + 0x0c, 0x73, 0x72, 0x63, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x31, 0x0a, 0x0e, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, + 0x48, 0x0a, 0x52, 0x0c, 0x64, 0x73, 0x74, 0x49, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, + 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x0d, 0x64, 0x73, 0x74, + 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x0a, 0x74, 0x78, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x72, + 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, 0x52, 0x0a, 0x72, 0x78, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1d, 0x73, 0x65, 0x74, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, 0x19, 0x73, 0x65, 0x74, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x12, 0x48, 0x10, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x14, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x70, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x68, 0x77, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0a, 0x0a, 0x08, + 0x5f, 0x72, 0x78, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x67, 0x75, 0x69, + 0x64, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x73, 0x74, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x20, 0x0a, 0x1e, + 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0x31, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9b, 0x07, 0x0a, 0x22, 0x53, 0x65, + 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, + 0x69, 0x64, 0x12, 0x32, 0x0a, 0x0e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x02, 0x48, 0x00, 0x52, 0x0d, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, 0x52, 0x04, + 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x72, 0x78, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x02, 0x52, 0x06, 0x72, 0x78, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x0d, 0x69, 0x70, 0x68, 0x64, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 0x52, 0x0c, + 0x69, 0x70, 0x68, 0x64, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x03, 0x74, 0x6f, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, 0x52, 0x03, 0x74, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x74, 0x74, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, + 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0d, 0x48, 0x07, 0x52, 0x0d, 0x64, 0x73, 0x74, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x08, 0x52, 0x0a, 0x74, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x0f, 0x48, 0x09, 0x52, 0x0a, 0x72, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x1d, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, + 0x68, 0x6f, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x6f, 0x76, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x10, 0x48, 0x0a, 0x52, 0x19, 0x73, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, 0x65, 0x72, 0x88, + 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0b, 0x52, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x72, + 0x78, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x70, 0x68, 0x64, 0x72, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x6f, 0x73, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, + 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, + 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x6f, 0x76, + 0x65, 0x72, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x25, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x49, 0x63, + 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, + 0x0a, 0x22, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x6a, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x7f, 0x0a, 0x1e, 0x47, + 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, + 0x4b, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x1f, + 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0xc1, 0x06, 0x0a, 0x13, 0x49, 0x63, 0x6d, 0x70, + 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x26, 0x0a, 0x22, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x43, 0x4d, 0x50, 0x5f, + 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x48, 0x57, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x49, + 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, + 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x1f, + 0x0a, 0x1b, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, + 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x03, 0x12, + 0x22, 0x0a, 0x1e, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x55, + 0x49, 0x44, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, + 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, + 0x4f, 0x4f, 0x4b, 0x49, 0x45, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x43, 0x4d, 0x50, 0x5f, + 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x49, 0x50, 0x48, 0x44, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, + 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4f, 0x53, 0x10, + 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x54, 0x4c, 0x10, + 0x09, 0x12, 0x29, 0x0a, 0x25, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0a, 0x12, 0x29, 0x0a, 0x25, + 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, + 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, + 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0b, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x43, 0x4d, 0x50, 0x5f, + 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, + 0x53, 0x10, 0x0c, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, + 0x54, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x0d, 0x12, + 0x26, 0x0a, 0x22, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x0e, 0x12, 0x26, 0x0a, 0x22, 0x49, 0x43, 0x4d, 0x50, 0x5f, + 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x0f, 0x12, + 0x38, 0x0a, 0x34, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x54, 0x5f, 0x4e, 0x45, + 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x10, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x43, 0x4d, + 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x11, 0x12, 0x2b, 0x0a, 0x27, 0x49, + 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x12, 0x12, 0x31, 0x0a, 0x2d, 0x49, 0x43, 0x4d, 0x50, + 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x13, 0x32, 0xd7, 0x05, 0x0a, 0x08, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x84, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, + 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, + 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x96, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x49, 0x63, + 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x3a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x63, 0x6d, + 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x96, 0x01, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, + 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x63, 0x6d, 0x70, 0x45, 0x63, 0x68, 0x6f, 0x53, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +}) + +var ( + file_dataplane_proto_sai_icmp_echo_proto_rawDescOnce sync.Once + file_dataplane_proto_sai_icmp_echo_proto_rawDescData []byte +) + +func file_dataplane_proto_sai_icmp_echo_proto_rawDescGZIP() []byte { + file_dataplane_proto_sai_icmp_echo_proto_rawDescOnce.Do(func() { + file_dataplane_proto_sai_icmp_echo_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_icmp_echo_proto_rawDesc), len(file_dataplane_proto_sai_icmp_echo_proto_rawDesc))) + }) + return file_dataplane_proto_sai_icmp_echo_proto_rawDescData +} + +var file_dataplane_proto_sai_icmp_echo_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_dataplane_proto_sai_icmp_echo_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_dataplane_proto_sai_icmp_echo_proto_goTypes = []any{ + (IcmpEchoSessionAttr)(0), // 0: lemming.dataplane.sai.IcmpEchoSessionAttr + (*CreateIcmpEchoSessionRequest)(nil), // 1: lemming.dataplane.sai.CreateIcmpEchoSessionRequest + (*CreateIcmpEchoSessionResponse)(nil), // 2: lemming.dataplane.sai.CreateIcmpEchoSessionResponse + (*RemoveIcmpEchoSessionRequest)(nil), // 3: lemming.dataplane.sai.RemoveIcmpEchoSessionRequest + (*RemoveIcmpEchoSessionResponse)(nil), // 4: lemming.dataplane.sai.RemoveIcmpEchoSessionResponse + (*SetIcmpEchoSessionAttributeRequest)(nil), // 5: lemming.dataplane.sai.SetIcmpEchoSessionAttributeRequest + (*SetIcmpEchoSessionAttributeResponse)(nil), // 6: lemming.dataplane.sai.SetIcmpEchoSessionAttributeResponse + (*GetIcmpEchoSessionAttributeRequest)(nil), // 7: lemming.dataplane.sai.GetIcmpEchoSessionAttributeRequest + (*GetIcmpEchoSessionAttributeResponse)(nil), // 8: lemming.dataplane.sai.GetIcmpEchoSessionAttributeResponse + (*GetIcmpEchoSessionStatsRequest)(nil), // 9: lemming.dataplane.sai.GetIcmpEchoSessionStatsRequest + (*GetIcmpEchoSessionStatsResponse)(nil), // 10: lemming.dataplane.sai.GetIcmpEchoSessionStatsResponse + (StatsCountMode)(0), // 11: lemming.dataplane.sai.StatsCountMode + (*IcmpEchoSessionAttribute)(nil), // 12: lemming.dataplane.sai.IcmpEchoSessionAttribute + (IcmpEchoSessionStat)(0), // 13: lemming.dataplane.sai.IcmpEchoSessionStat +} +var file_dataplane_proto_sai_icmp_echo_proto_depIdxs = []int32{ + 11, // 0: lemming.dataplane.sai.CreateIcmpEchoSessionRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 11, // 1: lemming.dataplane.sai.SetIcmpEchoSessionAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 2: lemming.dataplane.sai.GetIcmpEchoSessionAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IcmpEchoSessionAttr + 12, // 3: lemming.dataplane.sai.GetIcmpEchoSessionAttributeResponse.attr:type_name -> lemming.dataplane.sai.IcmpEchoSessionAttribute + 13, // 4: lemming.dataplane.sai.GetIcmpEchoSessionStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IcmpEchoSessionStat + 1, // 5: lemming.dataplane.sai.IcmpEcho.CreateIcmpEchoSession:input_type -> lemming.dataplane.sai.CreateIcmpEchoSessionRequest + 3, // 6: lemming.dataplane.sai.IcmpEcho.RemoveIcmpEchoSession:input_type -> lemming.dataplane.sai.RemoveIcmpEchoSessionRequest + 5, // 7: lemming.dataplane.sai.IcmpEcho.SetIcmpEchoSessionAttribute:input_type -> lemming.dataplane.sai.SetIcmpEchoSessionAttributeRequest + 7, // 8: lemming.dataplane.sai.IcmpEcho.GetIcmpEchoSessionAttribute:input_type -> lemming.dataplane.sai.GetIcmpEchoSessionAttributeRequest + 9, // 9: lemming.dataplane.sai.IcmpEcho.GetIcmpEchoSessionStats:input_type -> lemming.dataplane.sai.GetIcmpEchoSessionStatsRequest + 2, // 10: lemming.dataplane.sai.IcmpEcho.CreateIcmpEchoSession:output_type -> lemming.dataplane.sai.CreateIcmpEchoSessionResponse + 4, // 11: lemming.dataplane.sai.IcmpEcho.RemoveIcmpEchoSession:output_type -> lemming.dataplane.sai.RemoveIcmpEchoSessionResponse + 6, // 12: lemming.dataplane.sai.IcmpEcho.SetIcmpEchoSessionAttribute:output_type -> lemming.dataplane.sai.SetIcmpEchoSessionAttributeResponse + 8, // 13: lemming.dataplane.sai.IcmpEcho.GetIcmpEchoSessionAttribute:output_type -> lemming.dataplane.sai.GetIcmpEchoSessionAttributeResponse + 10, // 14: lemming.dataplane.sai.IcmpEcho.GetIcmpEchoSessionStats:output_type -> lemming.dataplane.sai.GetIcmpEchoSessionStatsResponse + 10, // [10:15] is the sub-list for method output_type + 5, // [5:10] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_dataplane_proto_sai_icmp_echo_proto_init() } +func file_dataplane_proto_sai_icmp_echo_proto_init() { + if File_dataplane_proto_sai_icmp_echo_proto != nil { + return + } + file_dataplane_proto_sai_common_proto_init() + file_dataplane_proto_sai_icmp_echo_proto_msgTypes[0].OneofWrappers = []any{} + file_dataplane_proto_sai_icmp_echo_proto_msgTypes[4].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_icmp_echo_proto_rawDesc), len(file_dataplane_proto_sai_icmp_echo_proto_rawDesc)), + NumEnums: 1, + NumMessages: 10, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_dataplane_proto_sai_icmp_echo_proto_goTypes, + DependencyIndexes: file_dataplane_proto_sai_icmp_echo_proto_depIdxs, + EnumInfos: file_dataplane_proto_sai_icmp_echo_proto_enumTypes, + MessageInfos: file_dataplane_proto_sai_icmp_echo_proto_msgTypes, + }.Build() + File_dataplane_proto_sai_icmp_echo_proto = out.File + file_dataplane_proto_sai_icmp_echo_proto_goTypes = nil + file_dataplane_proto_sai_icmp_echo_proto_depIdxs = nil +} diff --git a/dataplane/proto/sai/icmp_echo.proto b/dataplane/proto/sai/icmp_echo.proto new file mode 100644 index 000000000..7a6edc789 --- /dev/null +++ b/dataplane/proto/sai/icmp_echo.proto @@ -0,0 +1,114 @@ + +syntax = "proto3"; + +package lemming.dataplane.sai; + +import "dataplane/proto/sai/common.proto"; + +option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; + +enum IcmpEchoSessionAttr { + ICMP_ECHO_SESSION_ATTR_UNSPECIFIED = 0; + ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID = 1; + ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER = 2; + ICMP_ECHO_SESSION_ATTR_PORT = 3; + ICMP_ECHO_SESSION_ATTR_RX_PORT = 4; + ICMP_ECHO_SESSION_ATTR_GUID = 5; + ICMP_ECHO_SESSION_ATTR_COOKIE = 6; + ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION = 7; + ICMP_ECHO_SESSION_ATTR_TOS = 8; + ICMP_ECHO_SESSION_ATTR_TTL = 9; + ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS = 10; + ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS = 11; + ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS = 12; + ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS = 13; + ICMP_ECHO_SESSION_ATTR_TX_INTERVAL = 14; + ICMP_ECHO_SESSION_ATTR_RX_INTERVAL = 15; + ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER = 16; + ICMP_ECHO_SESSION_ATTR_STATE = 17; + ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE = 18; + ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST = 19; +} + +message CreateIcmpEchoSessionRequest { + option (sai_type) = OBJECT_TYPE_ICMP_ECHO_SESSION; + uint64 switch = 1; + optional bool hw_lookup_valid = 2 [(attr_enum_value) = 1]; + optional uint64 virtual_router = 3 [(attr_enum_value) = 2]; + optional uint64 port = 4 [(attr_enum_value) = 3]; + optional uint64 rx_port = 5 [(attr_enum_value) = 4]; + optional uint64 guid = 6 [(attr_enum_value) = 5]; + optional uint32 cookie = 7 [(attr_enum_value) = 6]; + optional uint32 iphdr_version = 8 [(attr_enum_value) = 7]; + optional uint32 tos = 9 [(attr_enum_value) = 8]; + optional uint32 ttl = 10 [(attr_enum_value) = 9]; + optional bytes src_ip_address = 11 [(attr_enum_value) = 10]; + optional bytes dst_ip_address = 12 [(attr_enum_value) = 11]; + optional bytes src_mac_address = 13 [(attr_enum_value) = 12]; + optional bytes dst_mac_address = 14 [(attr_enum_value) = 13]; + optional uint32 tx_interval = 15 [(attr_enum_value) = 14]; + optional uint32 rx_interval = 16 [(attr_enum_value) = 15]; + optional bool set_next_hop_group_switchover = 17 [(attr_enum_value) = 16]; + optional StatsCountMode stats_count_mode = 18 [(attr_enum_value) = 18]; + repeated uint64 selective_counter_list = 19 [(attr_enum_value) = 19]; +} + +message CreateIcmpEchoSessionResponse { + uint64 oid = 1; +} + +message RemoveIcmpEchoSessionRequest { + uint64 oid = 1; +} + +message RemoveIcmpEchoSessionResponse {} + +message SetIcmpEchoSessionAttributeRequest { + uint64 oid = 1; + optional uint64 virtual_router = 2 [(attr_enum_value) = 2]; + optional uint64 port = 3 [(attr_enum_value) = 3]; + optional uint64 rx_port = 4 [(attr_enum_value) = 4]; + optional uint32 iphdr_version = 5 [(attr_enum_value) = 7]; + optional uint32 tos = 6 [(attr_enum_value) = 8]; + optional uint32 ttl = 7 [(attr_enum_value) = 9]; + optional bytes src_mac_address = 8 [(attr_enum_value) = 12]; + optional bytes dst_mac_address = 9 [(attr_enum_value) = 13]; + optional uint32 tx_interval = 10 [(attr_enum_value) = 14]; + optional uint32 rx_interval = 11 [(attr_enum_value) = 15]; + optional bool set_next_hop_group_switchover = 12 [(attr_enum_value) = 16]; + optional StatsCountMode stats_count_mode = 13 [(attr_enum_value) = 18]; + repeated uint64 selective_counter_list = 14 [(attr_enum_value) = 19]; +} + +message SetIcmpEchoSessionAttributeResponse {} + +message GetIcmpEchoSessionAttributeRequest { + uint64 oid = 1; + repeated IcmpEchoSessionAttr attr_type = 2; +} + +message GetIcmpEchoSessionAttributeResponse { + IcmpEchoSessionAttribute attr = 1; +} + +message GetIcmpEchoSessionStatsRequest { + uint64 oid = 1; + repeated IcmpEchoSessionStat counter_ids = 2; +} + +message GetIcmpEchoSessionStatsResponse { + repeated uint64 values = 1; +} + +service IcmpEcho { + rpc CreateIcmpEchoSession(CreateIcmpEchoSessionRequest) + returns (CreateIcmpEchoSessionResponse) {} + rpc RemoveIcmpEchoSession(RemoveIcmpEchoSessionRequest) + returns (RemoveIcmpEchoSessionResponse) {} + rpc SetIcmpEchoSessionAttribute(SetIcmpEchoSessionAttributeRequest) + returns (SetIcmpEchoSessionAttributeResponse) {} + rpc GetIcmpEchoSessionAttribute(GetIcmpEchoSessionAttributeRequest) + returns (GetIcmpEchoSessionAttributeResponse) {} + rpc GetIcmpEchoSessionStats(GetIcmpEchoSessionStatsRequest) + returns (GetIcmpEchoSessionStatsResponse) {} +} diff --git a/dataplane/proto/sai/icmp_echo_grpc.pb.go b/dataplane/proto/sai/icmp_echo_grpc.pb.go new file mode 100755 index 000000000..01570b9f5 --- /dev/null +++ b/dataplane/proto/sai/icmp_echo_grpc.pb.go @@ -0,0 +1,271 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.29.3 +// source: dataplane/proto/sai/icmp_echo.proto + +package sai + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + IcmpEcho_CreateIcmpEchoSession_FullMethodName = "/lemming.dataplane.sai.IcmpEcho/CreateIcmpEchoSession" + IcmpEcho_RemoveIcmpEchoSession_FullMethodName = "/lemming.dataplane.sai.IcmpEcho/RemoveIcmpEchoSession" + IcmpEcho_SetIcmpEchoSessionAttribute_FullMethodName = "/lemming.dataplane.sai.IcmpEcho/SetIcmpEchoSessionAttribute" + IcmpEcho_GetIcmpEchoSessionAttribute_FullMethodName = "/lemming.dataplane.sai.IcmpEcho/GetIcmpEchoSessionAttribute" + IcmpEcho_GetIcmpEchoSessionStats_FullMethodName = "/lemming.dataplane.sai.IcmpEcho/GetIcmpEchoSessionStats" +) + +// IcmpEchoClient is the client API for IcmpEcho service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type IcmpEchoClient interface { + CreateIcmpEchoSession(ctx context.Context, in *CreateIcmpEchoSessionRequest, opts ...grpc.CallOption) (*CreateIcmpEchoSessionResponse, error) + RemoveIcmpEchoSession(ctx context.Context, in *RemoveIcmpEchoSessionRequest, opts ...grpc.CallOption) (*RemoveIcmpEchoSessionResponse, error) + SetIcmpEchoSessionAttribute(ctx context.Context, in *SetIcmpEchoSessionAttributeRequest, opts ...grpc.CallOption) (*SetIcmpEchoSessionAttributeResponse, error) + GetIcmpEchoSessionAttribute(ctx context.Context, in *GetIcmpEchoSessionAttributeRequest, opts ...grpc.CallOption) (*GetIcmpEchoSessionAttributeResponse, error) + GetIcmpEchoSessionStats(ctx context.Context, in *GetIcmpEchoSessionStatsRequest, opts ...grpc.CallOption) (*GetIcmpEchoSessionStatsResponse, error) +} + +type icmpEchoClient struct { + cc grpc.ClientConnInterface +} + +func NewIcmpEchoClient(cc grpc.ClientConnInterface) IcmpEchoClient { + return &icmpEchoClient{cc} +} + +func (c *icmpEchoClient) CreateIcmpEchoSession(ctx context.Context, in *CreateIcmpEchoSessionRequest, opts ...grpc.CallOption) (*CreateIcmpEchoSessionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateIcmpEchoSessionResponse) + err := c.cc.Invoke(ctx, IcmpEcho_CreateIcmpEchoSession_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *icmpEchoClient) RemoveIcmpEchoSession(ctx context.Context, in *RemoveIcmpEchoSessionRequest, opts ...grpc.CallOption) (*RemoveIcmpEchoSessionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RemoveIcmpEchoSessionResponse) + err := c.cc.Invoke(ctx, IcmpEcho_RemoveIcmpEchoSession_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *icmpEchoClient) SetIcmpEchoSessionAttribute(ctx context.Context, in *SetIcmpEchoSessionAttributeRequest, opts ...grpc.CallOption) (*SetIcmpEchoSessionAttributeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SetIcmpEchoSessionAttributeResponse) + err := c.cc.Invoke(ctx, IcmpEcho_SetIcmpEchoSessionAttribute_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *icmpEchoClient) GetIcmpEchoSessionAttribute(ctx context.Context, in *GetIcmpEchoSessionAttributeRequest, opts ...grpc.CallOption) (*GetIcmpEchoSessionAttributeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetIcmpEchoSessionAttributeResponse) + err := c.cc.Invoke(ctx, IcmpEcho_GetIcmpEchoSessionAttribute_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *icmpEchoClient) GetIcmpEchoSessionStats(ctx context.Context, in *GetIcmpEchoSessionStatsRequest, opts ...grpc.CallOption) (*GetIcmpEchoSessionStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetIcmpEchoSessionStatsResponse) + err := c.cc.Invoke(ctx, IcmpEcho_GetIcmpEchoSessionStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// IcmpEchoServer is the server API for IcmpEcho service. +// All implementations should embed UnimplementedIcmpEchoServer +// for forward compatibility. +type IcmpEchoServer interface { + CreateIcmpEchoSession(context.Context, *CreateIcmpEchoSessionRequest) (*CreateIcmpEchoSessionResponse, error) + RemoveIcmpEchoSession(context.Context, *RemoveIcmpEchoSessionRequest) (*RemoveIcmpEchoSessionResponse, error) + SetIcmpEchoSessionAttribute(context.Context, *SetIcmpEchoSessionAttributeRequest) (*SetIcmpEchoSessionAttributeResponse, error) + GetIcmpEchoSessionAttribute(context.Context, *GetIcmpEchoSessionAttributeRequest) (*GetIcmpEchoSessionAttributeResponse, error) + GetIcmpEchoSessionStats(context.Context, *GetIcmpEchoSessionStatsRequest) (*GetIcmpEchoSessionStatsResponse, error) +} + +// UnimplementedIcmpEchoServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedIcmpEchoServer struct{} + +func (UnimplementedIcmpEchoServer) CreateIcmpEchoSession(context.Context, *CreateIcmpEchoSessionRequest) (*CreateIcmpEchoSessionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateIcmpEchoSession not implemented") +} +func (UnimplementedIcmpEchoServer) RemoveIcmpEchoSession(context.Context, *RemoveIcmpEchoSessionRequest) (*RemoveIcmpEchoSessionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveIcmpEchoSession not implemented") +} +func (UnimplementedIcmpEchoServer) SetIcmpEchoSessionAttribute(context.Context, *SetIcmpEchoSessionAttributeRequest) (*SetIcmpEchoSessionAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetIcmpEchoSessionAttribute not implemented") +} +func (UnimplementedIcmpEchoServer) GetIcmpEchoSessionAttribute(context.Context, *GetIcmpEchoSessionAttributeRequest) (*GetIcmpEchoSessionAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIcmpEchoSessionAttribute not implemented") +} +func (UnimplementedIcmpEchoServer) GetIcmpEchoSessionStats(context.Context, *GetIcmpEchoSessionStatsRequest) (*GetIcmpEchoSessionStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetIcmpEchoSessionStats not implemented") +} +func (UnimplementedIcmpEchoServer) testEmbeddedByValue() {} + +// UnsafeIcmpEchoServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to IcmpEchoServer will +// result in compilation errors. +type UnsafeIcmpEchoServer interface { + mustEmbedUnimplementedIcmpEchoServer() +} + +func RegisterIcmpEchoServer(s grpc.ServiceRegistrar, srv IcmpEchoServer) { + // If the following call pancis, it indicates UnimplementedIcmpEchoServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&IcmpEcho_ServiceDesc, srv) +} + +func _IcmpEcho_CreateIcmpEchoSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateIcmpEchoSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IcmpEchoServer).CreateIcmpEchoSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IcmpEcho_CreateIcmpEchoSession_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IcmpEchoServer).CreateIcmpEchoSession(ctx, req.(*CreateIcmpEchoSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IcmpEcho_RemoveIcmpEchoSession_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveIcmpEchoSessionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IcmpEchoServer).RemoveIcmpEchoSession(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IcmpEcho_RemoveIcmpEchoSession_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IcmpEchoServer).RemoveIcmpEchoSession(ctx, req.(*RemoveIcmpEchoSessionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IcmpEcho_SetIcmpEchoSessionAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetIcmpEchoSessionAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IcmpEchoServer).SetIcmpEchoSessionAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IcmpEcho_SetIcmpEchoSessionAttribute_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IcmpEchoServer).SetIcmpEchoSessionAttribute(ctx, req.(*SetIcmpEchoSessionAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IcmpEcho_GetIcmpEchoSessionAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetIcmpEchoSessionAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IcmpEchoServer).GetIcmpEchoSessionAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IcmpEcho_GetIcmpEchoSessionAttribute_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IcmpEchoServer).GetIcmpEchoSessionAttribute(ctx, req.(*GetIcmpEchoSessionAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IcmpEcho_GetIcmpEchoSessionStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetIcmpEchoSessionStatsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IcmpEchoServer).GetIcmpEchoSessionStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IcmpEcho_GetIcmpEchoSessionStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IcmpEchoServer).GetIcmpEchoSessionStats(ctx, req.(*GetIcmpEchoSessionStatsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// IcmpEcho_ServiceDesc is the grpc.ServiceDesc for IcmpEcho service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var IcmpEcho_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "lemming.dataplane.sai.IcmpEcho", + HandlerType: (*IcmpEchoServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateIcmpEchoSession", + Handler: _IcmpEcho_CreateIcmpEchoSession_Handler, + }, + { + MethodName: "RemoveIcmpEchoSession", + Handler: _IcmpEcho_RemoveIcmpEchoSession_Handler, + }, + { + MethodName: "SetIcmpEchoSessionAttribute", + Handler: _IcmpEcho_SetIcmpEchoSessionAttribute_Handler, + }, + { + MethodName: "GetIcmpEchoSessionAttribute", + Handler: _IcmpEcho_GetIcmpEchoSessionAttribute_Handler, + }, + { + MethodName: "GetIcmpEchoSessionStats", + Handler: _IcmpEcho_GetIcmpEchoSessionStats_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "dataplane/proto/sai/icmp_echo.proto", +} diff --git a/dataplane/proto/sai/ipmc.proto b/dataplane/proto/sai/ipmc.proto index b08df8f91..49d47ca8f 100644 --- a/dataplane/proto/sai/ipmc.proto +++ b/dataplane/proto/sai/ipmc.proto @@ -7,58 +7,57 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum IpmcEntryAttr { - IPMC_ENTRY_ATTR_UNSPECIFIED = 0; - IPMC_ENTRY_ATTR_PACKET_ACTION = 1; - IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID = 2; - IPMC_ENTRY_ATTR_RPF_GROUP_ID = 3; - IPMC_ENTRY_ATTR_COUNTER_ID = 4; + IPMC_ENTRY_ATTR_UNSPECIFIED = 0; + IPMC_ENTRY_ATTR_PACKET_ACTION = 1; + IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID = 2; + IPMC_ENTRY_ATTR_RPF_GROUP_ID = 3; + IPMC_ENTRY_ATTR_COUNTER_ID = 4; } message CreateIpmcEntryRequest { - option (sai_type) = OBJECT_TYPE_IPMC_ENTRY; - IpmcEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 output_group_id = 3[(attr_enum_value) = 2]; - optional uint64 rpf_group_id = 4[(attr_enum_value) = 3]; - optional uint64 counter_id = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_IPMC_ENTRY; + IpmcEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 3 [(attr_enum_value) = 2]; + optional uint64 rpf_group_id = 4 [(attr_enum_value) = 3]; + optional uint64 counter_id = 5 [(attr_enum_value) = 4]; } -message CreateIpmcEntryResponse { -} +message CreateIpmcEntryResponse {} message RemoveIpmcEntryRequest { - IpmcEntry entry = 1; + IpmcEntry entry = 1; } -message RemoveIpmcEntryResponse { -} +message RemoveIpmcEntryResponse {} message SetIpmcEntryAttributeRequest { - IpmcEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 output_group_id = 3[(attr_enum_value) = 2]; - optional uint64 rpf_group_id = 4[(attr_enum_value) = 3]; - optional uint64 counter_id = 5[(attr_enum_value) = 4]; + IpmcEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 3 [(attr_enum_value) = 2]; + optional uint64 rpf_group_id = 4 [(attr_enum_value) = 3]; + optional uint64 counter_id = 5 [(attr_enum_value) = 4]; } -message SetIpmcEntryAttributeResponse { -} +message SetIpmcEntryAttributeResponse {} message GetIpmcEntryAttributeRequest { - IpmcEntry entry = 1; - repeated IpmcEntryAttr attr_type = 2; + IpmcEntry entry = 1; + repeated IpmcEntryAttr attr_type = 2; } message GetIpmcEntryAttributeResponse { - IpmcEntryAttribute attr = 1; + IpmcEntryAttribute attr = 1; } - service Ipmc { - rpc CreateIpmcEntry (CreateIpmcEntryRequest) returns (CreateIpmcEntryResponse) {} - rpc RemoveIpmcEntry (RemoveIpmcEntryRequest) returns (RemoveIpmcEntryResponse) {} - rpc SetIpmcEntryAttribute (SetIpmcEntryAttributeRequest) returns (SetIpmcEntryAttributeResponse) {} - rpc GetIpmcEntryAttribute (GetIpmcEntryAttributeRequest) returns (GetIpmcEntryAttributeResponse) {} + rpc CreateIpmcEntry(CreateIpmcEntryRequest) + returns (CreateIpmcEntryResponse) {} + rpc RemoveIpmcEntry(RemoveIpmcEntryRequest) + returns (RemoveIpmcEntryResponse) {} + rpc SetIpmcEntryAttribute(SetIpmcEntryAttributeRequest) + returns (SetIpmcEntryAttributeResponse) {} + rpc GetIpmcEntryAttribute(GetIpmcEntryAttributeRequest) + returns (GetIpmcEntryAttributeResponse) {} } diff --git a/dataplane/proto/sai/ipmc_group.proto b/dataplane/proto/sai/ipmc_group.proto index 1558de521..e470adf80 100644 --- a/dataplane/proto/sai/ipmc_group.proto +++ b/dataplane/proto/sai/ipmc_group.proto @@ -7,77 +7,79 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum IpmcGroupAttr { - IPMC_GROUP_ATTR_UNSPECIFIED = 0; - IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT = 1; - IPMC_GROUP_ATTR_IPMC_MEMBER_LIST = 2; + IPMC_GROUP_ATTR_UNSPECIFIED = 0; + IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT = 1; + IPMC_GROUP_ATTR_IPMC_MEMBER_LIST = 2; } enum IpmcGroupMemberAttr { - IPMC_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID = 1; - IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID = 2; + IPMC_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID = 1; + IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID = 2; } message CreateIpmcGroupRequest { - option (sai_type) = OBJECT_TYPE_IPMC_GROUP; - uint64 switch = 1; + option (sai_type) = OBJECT_TYPE_IPMC_GROUP; + uint64 switch = 1; } message CreateIpmcGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIpmcGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIpmcGroupResponse { -} +message RemoveIpmcGroupResponse {} message GetIpmcGroupAttributeRequest { - uint64 oid = 1; - repeated IpmcGroupAttr attr_type = 2; + uint64 oid = 1; + repeated IpmcGroupAttr attr_type = 2; } message GetIpmcGroupAttributeResponse { - IpmcGroupAttribute attr = 1; + IpmcGroupAttribute attr = 1; } message CreateIpmcGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_IPMC_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 ipmc_group_id = 2[(attr_enum_value) = 1]; - optional uint64 ipmc_output_id = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_IPMC_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 ipmc_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 ipmc_output_id = 3 [(attr_enum_value) = 2]; } message CreateIpmcGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIpmcGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIpmcGroupMemberResponse { -} +message RemoveIpmcGroupMemberResponse {} message GetIpmcGroupMemberAttributeRequest { - uint64 oid = 1; - repeated IpmcGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated IpmcGroupMemberAttr attr_type = 2; } message GetIpmcGroupMemberAttributeResponse { - IpmcGroupMemberAttribute attr = 1; + IpmcGroupMemberAttribute attr = 1; } - service IpmcGroup { - rpc CreateIpmcGroup (CreateIpmcGroupRequest) returns (CreateIpmcGroupResponse) {} - rpc RemoveIpmcGroup (RemoveIpmcGroupRequest) returns (RemoveIpmcGroupResponse) {} - rpc GetIpmcGroupAttribute (GetIpmcGroupAttributeRequest) returns (GetIpmcGroupAttributeResponse) {} - rpc CreateIpmcGroupMember (CreateIpmcGroupMemberRequest) returns (CreateIpmcGroupMemberResponse) {} - rpc RemoveIpmcGroupMember (RemoveIpmcGroupMemberRequest) returns (RemoveIpmcGroupMemberResponse) {} - rpc GetIpmcGroupMemberAttribute (GetIpmcGroupMemberAttributeRequest) returns (GetIpmcGroupMemberAttributeResponse) {} + rpc CreateIpmcGroup(CreateIpmcGroupRequest) + returns (CreateIpmcGroupResponse) {} + rpc RemoveIpmcGroup(RemoveIpmcGroupRequest) + returns (RemoveIpmcGroupResponse) {} + rpc GetIpmcGroupAttribute(GetIpmcGroupAttributeRequest) + returns (GetIpmcGroupAttributeResponse) {} + rpc CreateIpmcGroupMember(CreateIpmcGroupMemberRequest) + returns (CreateIpmcGroupMemberResponse) {} + rpc RemoveIpmcGroupMember(RemoveIpmcGroupMemberRequest) + returns (RemoveIpmcGroupMemberResponse) {} + rpc GetIpmcGroupMemberAttribute(GetIpmcGroupMemberAttributeRequest) + returns (GetIpmcGroupMemberAttributeResponse) {} } diff --git a/dataplane/proto/sai/ipsec.pb.go b/dataplane/proto/sai/ipsec.pb.go index 769232361..a9084f68f 100644 --- a/dataplane/proto/sai/ipsec.pb.go +++ b/dataplane/proto/sai/ipsec.pb.go @@ -134,6 +134,8 @@ const ( IpsecPortAttr_IPSEC_PORT_ATTR_NATIVE_VLAN_ID IpsecPortAttr = 4 IpsecPortAttr_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE IpsecPortAttr = 5 IpsecPortAttr_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE IpsecPortAttr = 6 + IpsecPortAttr_IPSEC_PORT_ATTR_STATS_COUNT_MODE IpsecPortAttr = 7 + IpsecPortAttr_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST IpsecPortAttr = 8 ) // Enum value maps for IpsecPortAttr. @@ -146,6 +148,8 @@ var ( 4: "IPSEC_PORT_ATTR_NATIVE_VLAN_ID", 5: "IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE", 6: "IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE", + 7: "IPSEC_PORT_ATTR_STATS_COUNT_MODE", + 8: "IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST", } IpsecPortAttr_value = map[string]int32{ "IPSEC_PORT_ATTR_UNSPECIFIED": 0, @@ -155,6 +159,8 @@ var ( "IPSEC_PORT_ATTR_NATIVE_VLAN_ID": 4, "IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE": 5, "IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE": 6, + "IPSEC_PORT_ATTR_STATS_COUNT_MODE": 7, + "IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST": 8, } ) @@ -210,6 +216,8 @@ const ( IpsecSaAttr_IPSEC_SA_ATTR_TERM_SRC_IP IpsecSaAttr = 19 IpsecSaAttr_IPSEC_SA_ATTR_EGRESS_ESN IpsecSaAttr = 20 IpsecSaAttr_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN IpsecSaAttr = 21 + IpsecSaAttr_IPSEC_SA_ATTR_STATS_COUNT_MODE IpsecSaAttr = 22 + IpsecSaAttr_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST IpsecSaAttr = 23 ) // Enum value maps for IpsecSaAttr. @@ -237,6 +245,8 @@ var ( 19: "IPSEC_SA_ATTR_TERM_SRC_IP", 20: "IPSEC_SA_ATTR_EGRESS_ESN", 21: "IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN", + 22: "IPSEC_SA_ATTR_STATS_COUNT_MODE", + 23: "IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST", } IpsecSaAttr_value = map[string]int32{ "IPSEC_SA_ATTR_UNSPECIFIED": 0, @@ -261,6 +271,8 @@ var ( "IPSEC_SA_ATTR_TERM_SRC_IP": 19, "IPSEC_SA_ATTR_EGRESS_ESN": 20, "IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN": 21, + "IPSEC_SA_ATTR_STATS_COUNT_MODE": 22, + "IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST": 23, } ) @@ -764,6 +776,8 @@ type CreateIpsecPortRequest struct { NativeVlanId *uint32 `protobuf:"varint,5,opt,name=native_vlan_id,json=nativeVlanId,proto3,oneof" json:"native_vlan_id,omitempty"` VrfFromPacketVlanEnable *bool `protobuf:"varint,6,opt,name=vrf_from_packet_vlan_enable,json=vrfFromPacketVlanEnable,proto3,oneof" json:"vrf_from_packet_vlan_enable,omitempty"` SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,7,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,8,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,9,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -847,6 +861,20 @@ func (x *CreateIpsecPortRequest) GetSwitchSwitchingMode() SwitchSwitchingMode { return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *CreateIpsecPortRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateIpsecPortRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateIpsecPortResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -978,6 +1006,8 @@ type SetIpsecPortAttributeRequest struct { StagEnable *bool `protobuf:"varint,3,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` VrfFromPacketVlanEnable *bool `protobuf:"varint,4,opt,name=vrf_from_packet_vlan_enable,json=vrfFromPacketVlanEnable,proto3,oneof" json:"vrf_from_packet_vlan_enable,omitempty"` SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,5,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,6,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,7,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1047,6 +1077,20 @@ func (x *SetIpsecPortAttributeRequest) GetSwitchSwitchingMode() SwitchSwitchingM return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *SetIpsecPortAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetIpsecPortAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetIpsecPortAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1297,6 +1341,8 @@ type CreateIpsecSaRequest struct { TermSrcIp []byte `protobuf:"bytes,18,opt,name=term_src_ip,json=termSrcIp,proto3,oneof" json:"term_src_ip,omitempty"` EgressEsn *uint64 `protobuf:"varint,19,opt,name=egress_esn,json=egressEsn,proto3,oneof" json:"egress_esn,omitempty"` MinimumIngressEsn *uint64 `protobuf:"varint,20,opt,name=minimum_ingress_esn,json=minimumIngressEsn,proto3,oneof" json:"minimum_ingress_esn,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,21,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,22,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1471,6 +1517,20 @@ func (x *CreateIpsecSaRequest) GetMinimumIngressEsn() uint64 { return 0 } +func (x *CreateIpsecSaRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateIpsecSaRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateIpsecSaResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1604,6 +1664,8 @@ type SetIpsecSaAttributeRequest struct { IpsecReplayProtectionWindow *uint32 `protobuf:"varint,5,opt,name=ipsec_replay_protection_window,json=ipsecReplayProtectionWindow,proto3,oneof" json:"ipsec_replay_protection_window,omitempty"` EgressEsn *uint64 `protobuf:"varint,6,opt,name=egress_esn,json=egressEsn,proto3,oneof" json:"egress_esn,omitempty"` MinimumIngressEsn *uint64 `protobuf:"varint,7,opt,name=minimum_ingress_esn,json=minimumIngressEsn,proto3,oneof" json:"minimum_ingress_esn,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,8,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,9,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1687,6 +1749,20 @@ func (x *SetIpsecSaAttributeRequest) GetMinimumIngressEsn() uint64 { return 0 } +func (x *SetIpsecSaAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetIpsecSaAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetIpsecSaAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -2028,7 +2104,7 @@ var file_dataplane_proto_sai_ipsec_proto_rawDesc = string([]byte{ 0x12, 0x39, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x9e, 0x04, 0x0a, 0x16, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xcf, 0x05, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, @@ -2054,457 +2130,511 @@ var file_dataplane_proto_sai_ipsec_proto_rawDesc = string([]byte{ 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, - 0xad, 0x0f, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2b, 0x0a, 0x17, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x16, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x9e, 0x03, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x00, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x01, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x49, 0x0a, 0x1b, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x17, - 0x76, 0x72, 0x66, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, 0x61, - 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x15, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, - 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x76, 0x72, 0x66, 0x5f, - 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, + 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x08, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x65, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x1e, + 0x0a, 0x1c, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2b, 0x0a, + 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x16, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xcf, 0x04, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, - 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x49, 0x70, - 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x73, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x49, 0x70, - 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, + 0x01, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x49, 0x0a, 0x1b, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, + 0x17, 0x76, 0x72, 0x66, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x56, 0x6c, + 0x61, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x15, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x33, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x22, 0xba, 0x0b, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x12, 0x5b, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x70, - 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, - 0x26, 0x0a, 0x08, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x07, 0x69, 0x70, 0x73, - 0x65, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0f, 0x65, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, - 0x12, 0x2e, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x06, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x28, 0x0a, 0x09, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x70, 0x69, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 0x52, 0x08, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x53, 0x70, 0x69, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x69, 0x70, - 0x73, 0x65, 0x63, 0x5f, 0x65, 0x73, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, 0x52, 0x0e, - 0x69, 0x70, 0x73, 0x65, 0x63, 0x45, 0x73, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x06, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x07, 0x52, 0x04, 0x73, 0x61, 0x6c, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x08, - 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1e, - 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x09, 0x52, 0x1b, - 0x69, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, + 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x07, 0x48, 0x04, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, 0x14, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x76, 0x72, 0x66, 0x5f, 0x66, 0x72, 0x6f, + 0x6d, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x73, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, + 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, + 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5e, 0x0a, 0x1d, 0x47, 0x65, 0x74, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x61, 0x74, + 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x73, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x33, + 0x0a, 0x19, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0xeb, 0x0c, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x12, 0x5b, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0e, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x26, 0x0a, 0x08, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x07, 0x69, + 0x70, 0x73, 0x65, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x02, 0x52, 0x0f, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, + 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x06, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x28, 0x0a, 0x09, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x70, 0x69, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 0x52, + 0x08, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x70, 0x69, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x73, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, + 0x52, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x45, 0x73, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0c, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, 0x0b, 0x69, 0x70, 0x73, 0x65, 0x63, 0x43, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x06, 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x07, 0x52, 0x04, 0x73, + 0x61, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, + 0x48, 0x08, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0a, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x09, 0x52, 0x1b, 0x69, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, - 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, - 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0b, 0x52, - 0x09, 0x74, 0x65, 0x72, 0x6d, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, - 0x13, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x10, 0x48, 0x0c, 0x52, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x74, 0x65, 0x72, - 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x56, - 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x74, 0x65, 0x72, 0x6d, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0e, 0x52, 0x0f, - 0x74, 0x65, 0x72, 0x6d, 0x53, 0x72, 0x63, 0x49, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, - 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, - 0x0f, 0x52, 0x09, 0x74, 0x65, 0x72, 0x6d, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x10, 0x52, 0x09, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, - 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, - 0x73, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, - 0x48, 0x11, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x66, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, - 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, - 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x5f, 0x73, 0x70, 0x69, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, - 0x65, 0x73, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, - 0x79, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, - 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, - 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, 0x6d, - 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x65, 0x72, 0x6d, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, 0x6d, - 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, - 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x22, 0x29, - 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa7, 0x04, 0x0a, - 0x1a, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x37, 0x0a, - 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, - 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x61, 0x49, 0x6e, - 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x1e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, - 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x01, 0x52, 0x1b, 0x69, 0x70, 0x73, 0x65, 0x63, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1e, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x02, 0x52, 0x1b, 0x69, 0x70, 0x73, 0x65, - 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x03, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, - 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x04, 0x52, 0x11, 0x6d, - 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, - 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, - 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, - 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, - 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, - 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, - 0x74, 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, - 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x9f, 0x06, 0x0a, 0x09, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x41, 0x74, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x45, 0x52, 0x4d, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x4d, 0x41, - 0x54, 0x43, 0x48, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, - 0x33, 0x0a, 0x2f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x55, 0x54, - 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, - 0x45, 0x44, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, - 0x41, 0x52, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, - 0x28, 0x0a, 0x24, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x53, 0x55, - 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x2e, 0x0a, 0x2a, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x55, - 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x4e, 0x5f, 0x33, 0x32, 0x42, 0x49, 0x54, - 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x53, 0x4e, 0x5f, 0x36, - 0x34, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x07, - 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, - 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x49, 0x44, 0x45, - 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x09, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x53, - 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x50, 0x0a, 0x1e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, + 0x6f, 0x77, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, + 0x48, 0x0a, 0x52, 0x1b, 0x69, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, + 0x0b, 0x52, 0x09, 0x74, 0x65, 0x72, 0x6d, 0x44, 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x3a, 0x0a, 0x13, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0c, 0x52, 0x10, 0x74, 0x65, 0x72, 0x6d, 0x56, 0x6c, 0x61, 0x6e, + 0x49, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x74, + 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0d, 0x52, 0x0a, 0x74, 0x65, 0x72, + 0x6d, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x74, 0x65, + 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0e, + 0x52, 0x0f, 0x74, 0x65, 0x72, 0x6d, 0x53, 0x72, 0x63, 0x49, 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, + 0x5f, 0x69, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x13, 0x48, 0x0f, 0x52, 0x09, 0x74, 0x65, 0x72, 0x6d, 0x53, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x10, 0x52, + 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x15, 0x48, 0x11, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x16, 0x48, 0x12, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, + 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x66, 0x42, 0x12, + 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x69, 0x64, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, + 0x73, 0x70, 0x69, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x73, + 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x61, + 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, + 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, + 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x64, + 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0f, 0x0a, + 0x0d, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x15, + 0x0a, 0x13, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xd8, 0x05, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x37, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x61, 0x5f, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, + 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0f, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x1e, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x01, 0x52, 0x1b, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x1e, 0x69, + 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x02, 0x52, 0x1b, 0x69, + 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, + 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x03, 0x52, 0x09, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x04, + 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x45, 0x73, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, + 0x05, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x14, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x69, 0x70, 0x73, + 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, + 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x65, 0x73, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x65, + 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, 0x74, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, + 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, + 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, + 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x9f, 0x06, 0x0a, 0x09, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x2d, 0x0a, 0x29, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x49, + 0x50, 0x5f, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x33, 0x0a, 0x2f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x43, 0x55, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x53, 0x55, 0x50, + 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x39, 0x0a, 0x35, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, + 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, + 0x44, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, + 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x2e, 0x0a, + 0x2a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x4c, 0x45, 0x41, + 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x21, 0x0a, + 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x4e, 0x5f, 0x33, + 0x32, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x06, + 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, + 0x53, 0x4e, 0x5f, 0x36, 0x34, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x49, 0x50, + 0x48, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, + 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x09, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x42, 0x4f, - 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, 0x27, 0x0a, 0x23, 0x49, - 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, - 0x41, 0x4c, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x43, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x0d, 0x12, 0x18, - 0x0a, 0x14, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x50, 0x53, 0x45, - 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, - 0x54, 0x41, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x44, 0x10, 0x0f, 0x12, 0x29, 0x0a, - 0x25, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, - 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, 0x57, 0x41, 0x54, - 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x10, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x50, 0x53, 0x45, - 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, - 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x12, 0x12, 0x21, 0x0a, - 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x10, 0x13, - 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, - 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x14, 0x2a, 0x8f, 0x02, 0x0a, 0x0d, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x49, - 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, - 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x54, 0x41, 0x47, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, - 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, - 0x54, 0x49, 0x56, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x2f, - 0x0a, 0x2b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x56, 0x52, 0x46, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, - 0x29, 0x0a, 0x25, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x06, 0x2a, 0xfd, 0x05, 0x0a, 0x0b, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, - 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, - 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x03, 0x12, 0x23, - 0x0a, 0x1f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, - 0x58, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x05, 0x12, + 0x4f, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x1f, + 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, + 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0b, 0x12, + 0x27, 0x0a, 0x23, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, + 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, + 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x23, 0x0a, 0x1f, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x44, 0x10, + 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x48, 0x49, 0x47, 0x48, + 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x10, 0x12, 0x28, 0x0a, 0x24, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x43, 0x54, 0x45, 0x54, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x54, 0x45, 0x52, + 0x4d, 0x41, 0x52, 0x4b, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, + 0x53, 0x41, 0x10, 0x13, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x14, 0x2a, 0xe1, 0x02, 0x0a, + 0x0d, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, + 0x0a, 0x1b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x43, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x1f, 0x0a, + 0x1b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x22, + 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, + 0x10, 0x04, 0x12, 0x2f, 0x0a, 0x2b, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x52, 0x46, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x06, 0x12, 0x24, + 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x07, 0x12, 0x2a, 0x0a, 0x26, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, + 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, + 0x2a, 0xcb, 0x06, 0x0a, 0x0b, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, + 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x50, 0x49, 0x10, 0x07, 0x12, - 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x45, 0x53, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x4b, 0x45, 0x59, - 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10, 0x0b, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, - 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, - 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0d, 0x12, 0x30, 0x0a, 0x2c, 0x49, 0x50, 0x53, 0x45, + 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x24, + 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4f, 0x43, 0x54, 0x45, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, + 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, + 0x44, 0x45, 0x58, 0x10, 0x05, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, + 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x0e, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, - 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x0f, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, - 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x10, - 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x11, - 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x5f, 0x45, 0x4e, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x12, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, + 0x53, 0x50, 0x49, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, + 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x45, 0x53, 0x4e, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, + 0x50, 0x54, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0a, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10, 0x0b, + 0x12, 0x1a, 0x0a, 0x16, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0c, 0x12, 0x30, 0x0a, 0x2c, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, + 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0d, 0x12, 0x30, + 0x0a, 0x2c, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, + 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x0e, + 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x0f, 0x12, + 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x10, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, + 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x53, 0x52, 0x43, - 0x5f, 0x49, 0x50, 0x10, 0x13, 0x12, 0x1c, 0x0a, 0x18, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x53, - 0x4e, 0x10, 0x14, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x53, 0x4e, 0x10, 0x15, 0x32, 0x8b, 0x0d, 0x0a, 0x05, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, - 0x73, 0x65, 0x63, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x12, 0x29, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, + 0x5f, 0x49, 0x50, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x12, 0x12, 0x1d, 0x0a, 0x19, + 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, + 0x52, 0x4d, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x13, 0x12, 0x1c, 0x0a, 0x18, 0x49, + 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x45, 0x53, 0x4e, 0x10, 0x14, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x50, 0x53, + 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, + 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x45, 0x53, 0x4e, 0x10, 0x15, + 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x16, 0x12, 0x28, 0x0a, 0x24, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x17, 0x32, 0x8b, + 0x0d, 0x0a, 0x05, 0x49, 0x70, 0x73, 0x65, 0x63, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x66, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x12, + 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, + 0x12, 0x72, 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, - 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, - 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, + 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2b, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, + 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, + 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, + 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, + 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, - 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, + 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -2556,12 +2686,13 @@ var file_dataplane_proto_sai_ipsec_proto_goTypes = []any{ (StatsMode)(0), // 31: lemming.dataplane.sai.StatsMode (*IpsecAttribute)(nil), // 32: lemming.dataplane.sai.IpsecAttribute (SwitchSwitchingMode)(0), // 33: lemming.dataplane.sai.SwitchSwitchingMode - (*IpsecPortAttribute)(nil), // 34: lemming.dataplane.sai.IpsecPortAttribute - (IpsecPortStat)(0), // 35: lemming.dataplane.sai.IpsecPortStat - (IpsecDirection)(0), // 36: lemming.dataplane.sai.IpsecDirection - (IpsecCipher)(0), // 37: lemming.dataplane.sai.IpsecCipher - (*IpsecSaAttribute)(nil), // 38: lemming.dataplane.sai.IpsecSaAttribute - (IpsecSaStat)(0), // 39: lemming.dataplane.sai.IpsecSaStat + (StatsCountMode)(0), // 34: lemming.dataplane.sai.StatsCountMode + (*IpsecPortAttribute)(nil), // 35: lemming.dataplane.sai.IpsecPortAttribute + (IpsecPortStat)(0), // 36: lemming.dataplane.sai.IpsecPortStat + (IpsecDirection)(0), // 37: lemming.dataplane.sai.IpsecDirection + (IpsecCipher)(0), // 38: lemming.dataplane.sai.IpsecCipher + (*IpsecSaAttribute)(nil), // 39: lemming.dataplane.sai.IpsecSaAttribute + (IpsecSaStat)(0), // 40: lemming.dataplane.sai.IpsecSaStat } var file_dataplane_proto_sai_ipsec_proto_depIdxs = []int32{ 31, // 0: lemming.dataplane.sai.CreateIpsecRequest.stats_mode:type_name -> lemming.dataplane.sai.StatsMode @@ -2569,48 +2700,52 @@ var file_dataplane_proto_sai_ipsec_proto_depIdxs = []int32{ 0, // 2: lemming.dataplane.sai.GetIpsecAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IpsecAttr 32, // 3: lemming.dataplane.sai.GetIpsecAttributeResponse.attr:type_name -> lemming.dataplane.sai.IpsecAttribute 33, // 4: lemming.dataplane.sai.CreateIpsecPortRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 33, // 5: lemming.dataplane.sai.SetIpsecPortAttributeRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 1, // 6: lemming.dataplane.sai.GetIpsecPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IpsecPortAttr - 34, // 7: lemming.dataplane.sai.GetIpsecPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.IpsecPortAttribute - 35, // 8: lemming.dataplane.sai.GetIpsecPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IpsecPortStat - 36, // 9: lemming.dataplane.sai.CreateIpsecSaRequest.ipsec_direction:type_name -> lemming.dataplane.sai.IpsecDirection - 37, // 10: lemming.dataplane.sai.CreateIpsecSaRequest.ipsec_cipher:type_name -> lemming.dataplane.sai.IpsecCipher - 2, // 11: lemming.dataplane.sai.GetIpsecSaAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IpsecSaAttr - 38, // 12: lemming.dataplane.sai.GetIpsecSaAttributeResponse.attr:type_name -> lemming.dataplane.sai.IpsecSaAttribute - 39, // 13: lemming.dataplane.sai.GetIpsecSaStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IpsecSaStat - 3, // 14: lemming.dataplane.sai.Ipsec.CreateIpsec:input_type -> lemming.dataplane.sai.CreateIpsecRequest - 5, // 15: lemming.dataplane.sai.Ipsec.RemoveIpsec:input_type -> lemming.dataplane.sai.RemoveIpsecRequest - 7, // 16: lemming.dataplane.sai.Ipsec.SetIpsecAttribute:input_type -> lemming.dataplane.sai.SetIpsecAttributeRequest - 9, // 17: lemming.dataplane.sai.Ipsec.GetIpsecAttribute:input_type -> lemming.dataplane.sai.GetIpsecAttributeRequest - 11, // 18: lemming.dataplane.sai.Ipsec.CreateIpsecPort:input_type -> lemming.dataplane.sai.CreateIpsecPortRequest - 13, // 19: lemming.dataplane.sai.Ipsec.RemoveIpsecPort:input_type -> lemming.dataplane.sai.RemoveIpsecPortRequest - 15, // 20: lemming.dataplane.sai.Ipsec.SetIpsecPortAttribute:input_type -> lemming.dataplane.sai.SetIpsecPortAttributeRequest - 17, // 21: lemming.dataplane.sai.Ipsec.GetIpsecPortAttribute:input_type -> lemming.dataplane.sai.GetIpsecPortAttributeRequest - 19, // 22: lemming.dataplane.sai.Ipsec.GetIpsecPortStats:input_type -> lemming.dataplane.sai.GetIpsecPortStatsRequest - 21, // 23: lemming.dataplane.sai.Ipsec.CreateIpsecSa:input_type -> lemming.dataplane.sai.CreateIpsecSaRequest - 23, // 24: lemming.dataplane.sai.Ipsec.RemoveIpsecSa:input_type -> lemming.dataplane.sai.RemoveIpsecSaRequest - 25, // 25: lemming.dataplane.sai.Ipsec.SetIpsecSaAttribute:input_type -> lemming.dataplane.sai.SetIpsecSaAttributeRequest - 27, // 26: lemming.dataplane.sai.Ipsec.GetIpsecSaAttribute:input_type -> lemming.dataplane.sai.GetIpsecSaAttributeRequest - 29, // 27: lemming.dataplane.sai.Ipsec.GetIpsecSaStats:input_type -> lemming.dataplane.sai.GetIpsecSaStatsRequest - 4, // 28: lemming.dataplane.sai.Ipsec.CreateIpsec:output_type -> lemming.dataplane.sai.CreateIpsecResponse - 6, // 29: lemming.dataplane.sai.Ipsec.RemoveIpsec:output_type -> lemming.dataplane.sai.RemoveIpsecResponse - 8, // 30: lemming.dataplane.sai.Ipsec.SetIpsecAttribute:output_type -> lemming.dataplane.sai.SetIpsecAttributeResponse - 10, // 31: lemming.dataplane.sai.Ipsec.GetIpsecAttribute:output_type -> lemming.dataplane.sai.GetIpsecAttributeResponse - 12, // 32: lemming.dataplane.sai.Ipsec.CreateIpsecPort:output_type -> lemming.dataplane.sai.CreateIpsecPortResponse - 14, // 33: lemming.dataplane.sai.Ipsec.RemoveIpsecPort:output_type -> lemming.dataplane.sai.RemoveIpsecPortResponse - 16, // 34: lemming.dataplane.sai.Ipsec.SetIpsecPortAttribute:output_type -> lemming.dataplane.sai.SetIpsecPortAttributeResponse - 18, // 35: lemming.dataplane.sai.Ipsec.GetIpsecPortAttribute:output_type -> lemming.dataplane.sai.GetIpsecPortAttributeResponse - 20, // 36: lemming.dataplane.sai.Ipsec.GetIpsecPortStats:output_type -> lemming.dataplane.sai.GetIpsecPortStatsResponse - 22, // 37: lemming.dataplane.sai.Ipsec.CreateIpsecSa:output_type -> lemming.dataplane.sai.CreateIpsecSaResponse - 24, // 38: lemming.dataplane.sai.Ipsec.RemoveIpsecSa:output_type -> lemming.dataplane.sai.RemoveIpsecSaResponse - 26, // 39: lemming.dataplane.sai.Ipsec.SetIpsecSaAttribute:output_type -> lemming.dataplane.sai.SetIpsecSaAttributeResponse - 28, // 40: lemming.dataplane.sai.Ipsec.GetIpsecSaAttribute:output_type -> lemming.dataplane.sai.GetIpsecSaAttributeResponse - 30, // 41: lemming.dataplane.sai.Ipsec.GetIpsecSaStats:output_type -> lemming.dataplane.sai.GetIpsecSaStatsResponse - 28, // [28:42] is the sub-list for method output_type - 14, // [14:28] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 34, // 5: lemming.dataplane.sai.CreateIpsecPortRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 33, // 6: lemming.dataplane.sai.SetIpsecPortAttributeRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 34, // 7: lemming.dataplane.sai.SetIpsecPortAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 1, // 8: lemming.dataplane.sai.GetIpsecPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IpsecPortAttr + 35, // 9: lemming.dataplane.sai.GetIpsecPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.IpsecPortAttribute + 36, // 10: lemming.dataplane.sai.GetIpsecPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IpsecPortStat + 37, // 11: lemming.dataplane.sai.CreateIpsecSaRequest.ipsec_direction:type_name -> lemming.dataplane.sai.IpsecDirection + 38, // 12: lemming.dataplane.sai.CreateIpsecSaRequest.ipsec_cipher:type_name -> lemming.dataplane.sai.IpsecCipher + 34, // 13: lemming.dataplane.sai.CreateIpsecSaRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 34, // 14: lemming.dataplane.sai.SetIpsecSaAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 2, // 15: lemming.dataplane.sai.GetIpsecSaAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.IpsecSaAttr + 39, // 16: lemming.dataplane.sai.GetIpsecSaAttributeResponse.attr:type_name -> lemming.dataplane.sai.IpsecSaAttribute + 40, // 17: lemming.dataplane.sai.GetIpsecSaStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.IpsecSaStat + 3, // 18: lemming.dataplane.sai.Ipsec.CreateIpsec:input_type -> lemming.dataplane.sai.CreateIpsecRequest + 5, // 19: lemming.dataplane.sai.Ipsec.RemoveIpsec:input_type -> lemming.dataplane.sai.RemoveIpsecRequest + 7, // 20: lemming.dataplane.sai.Ipsec.SetIpsecAttribute:input_type -> lemming.dataplane.sai.SetIpsecAttributeRequest + 9, // 21: lemming.dataplane.sai.Ipsec.GetIpsecAttribute:input_type -> lemming.dataplane.sai.GetIpsecAttributeRequest + 11, // 22: lemming.dataplane.sai.Ipsec.CreateIpsecPort:input_type -> lemming.dataplane.sai.CreateIpsecPortRequest + 13, // 23: lemming.dataplane.sai.Ipsec.RemoveIpsecPort:input_type -> lemming.dataplane.sai.RemoveIpsecPortRequest + 15, // 24: lemming.dataplane.sai.Ipsec.SetIpsecPortAttribute:input_type -> lemming.dataplane.sai.SetIpsecPortAttributeRequest + 17, // 25: lemming.dataplane.sai.Ipsec.GetIpsecPortAttribute:input_type -> lemming.dataplane.sai.GetIpsecPortAttributeRequest + 19, // 26: lemming.dataplane.sai.Ipsec.GetIpsecPortStats:input_type -> lemming.dataplane.sai.GetIpsecPortStatsRequest + 21, // 27: lemming.dataplane.sai.Ipsec.CreateIpsecSa:input_type -> lemming.dataplane.sai.CreateIpsecSaRequest + 23, // 28: lemming.dataplane.sai.Ipsec.RemoveIpsecSa:input_type -> lemming.dataplane.sai.RemoveIpsecSaRequest + 25, // 29: lemming.dataplane.sai.Ipsec.SetIpsecSaAttribute:input_type -> lemming.dataplane.sai.SetIpsecSaAttributeRequest + 27, // 30: lemming.dataplane.sai.Ipsec.GetIpsecSaAttribute:input_type -> lemming.dataplane.sai.GetIpsecSaAttributeRequest + 29, // 31: lemming.dataplane.sai.Ipsec.GetIpsecSaStats:input_type -> lemming.dataplane.sai.GetIpsecSaStatsRequest + 4, // 32: lemming.dataplane.sai.Ipsec.CreateIpsec:output_type -> lemming.dataplane.sai.CreateIpsecResponse + 6, // 33: lemming.dataplane.sai.Ipsec.RemoveIpsec:output_type -> lemming.dataplane.sai.RemoveIpsecResponse + 8, // 34: lemming.dataplane.sai.Ipsec.SetIpsecAttribute:output_type -> lemming.dataplane.sai.SetIpsecAttributeResponse + 10, // 35: lemming.dataplane.sai.Ipsec.GetIpsecAttribute:output_type -> lemming.dataplane.sai.GetIpsecAttributeResponse + 12, // 36: lemming.dataplane.sai.Ipsec.CreateIpsecPort:output_type -> lemming.dataplane.sai.CreateIpsecPortResponse + 14, // 37: lemming.dataplane.sai.Ipsec.RemoveIpsecPort:output_type -> lemming.dataplane.sai.RemoveIpsecPortResponse + 16, // 38: lemming.dataplane.sai.Ipsec.SetIpsecPortAttribute:output_type -> lemming.dataplane.sai.SetIpsecPortAttributeResponse + 18, // 39: lemming.dataplane.sai.Ipsec.GetIpsecPortAttribute:output_type -> lemming.dataplane.sai.GetIpsecPortAttributeResponse + 20, // 40: lemming.dataplane.sai.Ipsec.GetIpsecPortStats:output_type -> lemming.dataplane.sai.GetIpsecPortStatsResponse + 22, // 41: lemming.dataplane.sai.Ipsec.CreateIpsecSa:output_type -> lemming.dataplane.sai.CreateIpsecSaResponse + 24, // 42: lemming.dataplane.sai.Ipsec.RemoveIpsecSa:output_type -> lemming.dataplane.sai.RemoveIpsecSaResponse + 26, // 43: lemming.dataplane.sai.Ipsec.SetIpsecSaAttribute:output_type -> lemming.dataplane.sai.SetIpsecSaAttributeResponse + 28, // 44: lemming.dataplane.sai.Ipsec.GetIpsecSaAttribute:output_type -> lemming.dataplane.sai.GetIpsecSaAttributeResponse + 30, // 45: lemming.dataplane.sai.Ipsec.GetIpsecSaStats:output_type -> lemming.dataplane.sai.GetIpsecSaStatsResponse + 32, // [32:46] is the sub-list for method output_type + 18, // [18:32] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_ipsec_proto_init() } diff --git a/dataplane/proto/sai/ipsec.proto b/dataplane/proto/sai/ipsec.proto index 9ed07c6e7..4f03eb2c0 100644 --- a/dataplane/proto/sai/ipsec.proto +++ b/dataplane/proto/sai/ipsec.proto @@ -7,244 +7,260 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum IpsecAttr { - IPSEC_ATTR_UNSPECIFIED = 0; - IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED = 1; - IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED = 2; - IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED = 3; - IPSEC_ATTR_STATS_MODE_READ_SUPPORTED = 4; - IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED = 5; - IPSEC_ATTR_SN_32BIT_SUPPORTED = 6; - IPSEC_ATTR_ESN_64BIT_SUPPORTED = 7; - IPSEC_ATTR_SUPPORTED_CIPHER_LIST = 8; - IPSEC_ATTR_SYSTEM_SIDE_MTU = 9; - IPSEC_ATTR_WARM_BOOT_SUPPORTED = 10; - IPSEC_ATTR_WARM_BOOT_ENABLE = 11; - IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE = 12; - IPSEC_ATTR_CTAG_TPID = 13; - IPSEC_ATTR_STAG_TPID = 14; - IPSEC_ATTR_MAX_VLAN_TAGS_PARSED = 15; - IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK = 16; - IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK = 17; - IPSEC_ATTR_STATS_MODE = 18; - IPSEC_ATTR_AVAILABLE_IPSEC_SA = 19; - IPSEC_ATTR_SA_LIST = 20; + IPSEC_ATTR_UNSPECIFIED = 0; + IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED = 1; + IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED = 2; + IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED = 3; + IPSEC_ATTR_STATS_MODE_READ_SUPPORTED = 4; + IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED = 5; + IPSEC_ATTR_SN_32BIT_SUPPORTED = 6; + IPSEC_ATTR_ESN_64BIT_SUPPORTED = 7; + IPSEC_ATTR_SUPPORTED_CIPHER_LIST = 8; + IPSEC_ATTR_SYSTEM_SIDE_MTU = 9; + IPSEC_ATTR_WARM_BOOT_SUPPORTED = 10; + IPSEC_ATTR_WARM_BOOT_ENABLE = 11; + IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE = 12; + IPSEC_ATTR_CTAG_TPID = 13; + IPSEC_ATTR_STAG_TPID = 14; + IPSEC_ATTR_MAX_VLAN_TAGS_PARSED = 15; + IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK = 16; + IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK = 17; + IPSEC_ATTR_STATS_MODE = 18; + IPSEC_ATTR_AVAILABLE_IPSEC_SA = 19; + IPSEC_ATTR_SA_LIST = 20; } enum IpsecPortAttr { - IPSEC_PORT_ATTR_UNSPECIFIED = 0; - IPSEC_PORT_ATTR_PORT_ID = 1; - IPSEC_PORT_ATTR_CTAG_ENABLE = 2; - IPSEC_PORT_ATTR_STAG_ENABLE = 3; - IPSEC_PORT_ATTR_NATIVE_VLAN_ID = 4; - IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE = 5; - IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE = 6; + IPSEC_PORT_ATTR_UNSPECIFIED = 0; + IPSEC_PORT_ATTR_PORT_ID = 1; + IPSEC_PORT_ATTR_CTAG_ENABLE = 2; + IPSEC_PORT_ATTR_STAG_ENABLE = 3; + IPSEC_PORT_ATTR_NATIVE_VLAN_ID = 4; + IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE = 5; + IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE = 6; + IPSEC_PORT_ATTR_STATS_COUNT_MODE = 7; + IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST = 8; } enum IpsecSaAttr { - IPSEC_SA_ATTR_UNSPECIFIED = 0; - IPSEC_SA_ATTR_IPSEC_DIRECTION = 1; - IPSEC_SA_ATTR_IPSEC_ID = 2; - IPSEC_SA_ATTR_OCTET_COUNT_STATUS = 3; - IPSEC_SA_ATTR_EXTERNAL_SA_INDEX = 4; - IPSEC_SA_ATTR_SA_INDEX = 5; - IPSEC_SA_ATTR_IPSEC_PORT_LIST = 6; - IPSEC_SA_ATTR_IPSEC_SPI = 7; - IPSEC_SA_ATTR_IPSEC_ESN_ENABLE = 8; - IPSEC_SA_ATTR_IPSEC_CIPHER = 9; - IPSEC_SA_ATTR_ENCRYPT_KEY = 10; - IPSEC_SA_ATTR_SALT = 11; - IPSEC_SA_ATTR_AUTH_KEY = 12; - IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE = 13; - IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW = 14; - IPSEC_SA_ATTR_TERM_DST_IP = 15; - IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE = 16; - IPSEC_SA_ATTR_TERM_VLAN_ID = 17; - IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE = 18; - IPSEC_SA_ATTR_TERM_SRC_IP = 19; - IPSEC_SA_ATTR_EGRESS_ESN = 20; - IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN = 21; + IPSEC_SA_ATTR_UNSPECIFIED = 0; + IPSEC_SA_ATTR_IPSEC_DIRECTION = 1; + IPSEC_SA_ATTR_IPSEC_ID = 2; + IPSEC_SA_ATTR_OCTET_COUNT_STATUS = 3; + IPSEC_SA_ATTR_EXTERNAL_SA_INDEX = 4; + IPSEC_SA_ATTR_SA_INDEX = 5; + IPSEC_SA_ATTR_IPSEC_PORT_LIST = 6; + IPSEC_SA_ATTR_IPSEC_SPI = 7; + IPSEC_SA_ATTR_IPSEC_ESN_ENABLE = 8; + IPSEC_SA_ATTR_IPSEC_CIPHER = 9; + IPSEC_SA_ATTR_ENCRYPT_KEY = 10; + IPSEC_SA_ATTR_SALT = 11; + IPSEC_SA_ATTR_AUTH_KEY = 12; + IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE = 13; + IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW = 14; + IPSEC_SA_ATTR_TERM_DST_IP = 15; + IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE = 16; + IPSEC_SA_ATTR_TERM_VLAN_ID = 17; + IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE = 18; + IPSEC_SA_ATTR_TERM_SRC_IP = 19; + IPSEC_SA_ATTR_EGRESS_ESN = 20; + IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN = 21; + IPSEC_SA_ATTR_STATS_COUNT_MODE = 22; + IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST = 23; } message CreateIpsecRequest { - option (sai_type) = OBJECT_TYPE_IPSEC; - uint64 switch = 1; - optional bool warm_boot_enable = 2[(attr_enum_value) = 11]; - optional bool external_sa_index_enable = 3[(attr_enum_value) = 12]; - optional uint32 ctag_tpid = 4[(attr_enum_value) = 13]; - optional uint32 stag_tpid = 5[(attr_enum_value) = 14]; - optional uint32 max_vlan_tags_parsed = 6[(attr_enum_value) = 15]; - optional uint64 octet_count_high_watermark = 7[(attr_enum_value) = 16]; - optional uint64 octet_count_low_watermark = 8[(attr_enum_value) = 17]; - optional StatsMode stats_mode = 9[(attr_enum_value) = 18]; + option (sai_type) = OBJECT_TYPE_IPSEC; + uint64 switch = 1; + optional bool warm_boot_enable = 2 [(attr_enum_value) = 11]; + optional bool external_sa_index_enable = 3 [(attr_enum_value) = 12]; + optional uint32 ctag_tpid = 4 [(attr_enum_value) = 13]; + optional uint32 stag_tpid = 5 [(attr_enum_value) = 14]; + optional uint32 max_vlan_tags_parsed = 6 [(attr_enum_value) = 15]; + optional uint64 octet_count_high_watermark = 7 [(attr_enum_value) = 16]; + optional uint64 octet_count_low_watermark = 8 [(attr_enum_value) = 17]; + optional StatsMode stats_mode = 9 [(attr_enum_value) = 18]; } message CreateIpsecResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIpsecRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIpsecResponse { -} +message RemoveIpsecResponse {} message SetIpsecAttributeRequest { - uint64 oid = 1; - optional bool warm_boot_enable = 2[(attr_enum_value) = 11]; - optional uint32 ctag_tpid = 3[(attr_enum_value) = 13]; - optional uint32 stag_tpid = 4[(attr_enum_value) = 14]; - optional uint32 max_vlan_tags_parsed = 5[(attr_enum_value) = 15]; - optional uint64 octet_count_high_watermark = 6[(attr_enum_value) = 16]; - optional uint64 octet_count_low_watermark = 7[(attr_enum_value) = 17]; - optional StatsMode stats_mode = 8[(attr_enum_value) = 18]; + uint64 oid = 1; + optional bool warm_boot_enable = 2 [(attr_enum_value) = 11]; + optional uint32 ctag_tpid = 3 [(attr_enum_value) = 13]; + optional uint32 stag_tpid = 4 [(attr_enum_value) = 14]; + optional uint32 max_vlan_tags_parsed = 5 [(attr_enum_value) = 15]; + optional uint64 octet_count_high_watermark = 6 [(attr_enum_value) = 16]; + optional uint64 octet_count_low_watermark = 7 [(attr_enum_value) = 17]; + optional StatsMode stats_mode = 8 [(attr_enum_value) = 18]; } -message SetIpsecAttributeResponse { -} +message SetIpsecAttributeResponse {} message GetIpsecAttributeRequest { - uint64 oid = 1; - repeated IpsecAttr attr_type = 2; + uint64 oid = 1; + repeated IpsecAttr attr_type = 2; } message GetIpsecAttributeResponse { - IpsecAttribute attr = 1; + IpsecAttribute attr = 1; } message CreateIpsecPortRequest { - option (sai_type) = OBJECT_TYPE_IPSEC_PORT; - uint64 switch = 1; - optional uint64 port_id = 2[(attr_enum_value) = 1]; - optional bool ctag_enable = 3[(attr_enum_value) = 2]; - optional bool stag_enable = 4[(attr_enum_value) = 3]; - optional uint32 native_vlan_id = 5[(attr_enum_value) = 4]; - optional bool vrf_from_packet_vlan_enable = 6[(attr_enum_value) = 5]; - optional SwitchSwitchingMode switch_switching_mode = 7[(attr_enum_value) = 6]; + option (sai_type) = OBJECT_TYPE_IPSEC_PORT; + uint64 switch = 1; + optional uint64 port_id = 2 [(attr_enum_value) = 1]; + optional bool ctag_enable = 3 [(attr_enum_value) = 2]; + optional bool stag_enable = 4 [(attr_enum_value) = 3]; + optional uint32 native_vlan_id = 5 [(attr_enum_value) = 4]; + optional bool vrf_from_packet_vlan_enable = 6 [(attr_enum_value) = 5]; + optional SwitchSwitchingMode switch_switching_mode = 7 + [(attr_enum_value) = 6]; + optional StatsCountMode stats_count_mode = 8 [(attr_enum_value) = 7]; + repeated uint64 selective_counter_list = 9 [(attr_enum_value) = 8]; } message CreateIpsecPortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIpsecPortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIpsecPortResponse { -} +message RemoveIpsecPortResponse {} message SetIpsecPortAttributeRequest { - uint64 oid = 1; - optional bool ctag_enable = 2[(attr_enum_value) = 2]; - optional bool stag_enable = 3[(attr_enum_value) = 3]; - optional bool vrf_from_packet_vlan_enable = 4[(attr_enum_value) = 5]; - optional SwitchSwitchingMode switch_switching_mode = 5[(attr_enum_value) = 6]; + uint64 oid = 1; + optional bool ctag_enable = 2 [(attr_enum_value) = 2]; + optional bool stag_enable = 3 [(attr_enum_value) = 3]; + optional bool vrf_from_packet_vlan_enable = 4 [(attr_enum_value) = 5]; + optional SwitchSwitchingMode switch_switching_mode = 5 + [(attr_enum_value) = 6]; + optional StatsCountMode stats_count_mode = 6 [(attr_enum_value) = 7]; + repeated uint64 selective_counter_list = 7 [(attr_enum_value) = 8]; } -message SetIpsecPortAttributeResponse { -} +message SetIpsecPortAttributeResponse {} message GetIpsecPortAttributeRequest { - uint64 oid = 1; - repeated IpsecPortAttr attr_type = 2; + uint64 oid = 1; + repeated IpsecPortAttr attr_type = 2; } message GetIpsecPortAttributeResponse { - IpsecPortAttribute attr = 1; + IpsecPortAttribute attr = 1; } message GetIpsecPortStatsRequest { - uint64 oid = 1; - repeated IpsecPortStat counter_ids = 2; + uint64 oid = 1; + repeated IpsecPortStat counter_ids = 2; } message GetIpsecPortStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateIpsecSaRequest { - option (sai_type) = OBJECT_TYPE_IPSEC_SA; - uint64 switch = 1; - optional IpsecDirection ipsec_direction = 2[(attr_enum_value) = 1]; - optional uint64 ipsec_id = 3[(attr_enum_value) = 2]; - optional uint32 external_sa_index = 4[(attr_enum_value) = 4]; - repeated uint64 ipsec_port_list = 5[(attr_enum_value) = 6]; - optional uint32 ipsec_spi = 6[(attr_enum_value) = 7]; - optional bool ipsec_esn_enable = 7[(attr_enum_value) = 8]; - optional IpsecCipher ipsec_cipher = 8[(attr_enum_value) = 9]; - optional bytes encrypt_key = 9[(attr_enum_value) = 10]; - optional uint32 salt = 10[(attr_enum_value) = 11]; - optional bytes auth_key = 11[(attr_enum_value) = 12]; - optional bool ipsec_replay_protection_enable = 12[(attr_enum_value) = 13]; - optional uint32 ipsec_replay_protection_window = 13[(attr_enum_value) = 14]; - optional bytes term_dst_ip = 14[(attr_enum_value) = 15]; - optional bool term_vlan_id_enable = 15[(attr_enum_value) = 16]; - optional uint32 term_vlan_id = 16[(attr_enum_value) = 17]; - optional bool term_src_ip_enable = 17[(attr_enum_value) = 18]; - optional bytes term_src_ip = 18[(attr_enum_value) = 19]; - optional uint64 egress_esn = 19[(attr_enum_value) = 20]; - optional uint64 minimum_ingress_esn = 20[(attr_enum_value) = 21]; + option (sai_type) = OBJECT_TYPE_IPSEC_SA; + uint64 switch = 1; + optional IpsecDirection ipsec_direction = 2 [(attr_enum_value) = 1]; + optional uint64 ipsec_id = 3 [(attr_enum_value) = 2]; + optional uint32 external_sa_index = 4 [(attr_enum_value) = 4]; + repeated uint64 ipsec_port_list = 5 [(attr_enum_value) = 6]; + optional uint32 ipsec_spi = 6 [(attr_enum_value) = 7]; + optional bool ipsec_esn_enable = 7 [(attr_enum_value) = 8]; + optional IpsecCipher ipsec_cipher = 8 [(attr_enum_value) = 9]; + optional bytes encrypt_key = 9 [(attr_enum_value) = 10]; + optional uint32 salt = 10 [(attr_enum_value) = 11]; + optional bytes auth_key = 11 [(attr_enum_value) = 12]; + optional bool ipsec_replay_protection_enable = 12 [(attr_enum_value) = 13]; + optional uint32 ipsec_replay_protection_window = 13 [(attr_enum_value) = 14]; + optional bytes term_dst_ip = 14 [(attr_enum_value) = 15]; + optional bool term_vlan_id_enable = 15 [(attr_enum_value) = 16]; + optional uint32 term_vlan_id = 16 [(attr_enum_value) = 17]; + optional bool term_src_ip_enable = 17 [(attr_enum_value) = 18]; + optional bytes term_src_ip = 18 [(attr_enum_value) = 19]; + optional uint64 egress_esn = 19 [(attr_enum_value) = 20]; + optional uint64 minimum_ingress_esn = 20 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 21 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 22 [(attr_enum_value) = 23]; } message CreateIpsecSaResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIpsecSaRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIpsecSaResponse { -} +message RemoveIpsecSaResponse {} message SetIpsecSaAttributeRequest { - uint64 oid = 1; - optional uint32 external_sa_index = 2[(attr_enum_value) = 4]; - repeated uint64 ipsec_port_list = 3[(attr_enum_value) = 6]; - optional bool ipsec_replay_protection_enable = 4[(attr_enum_value) = 13]; - optional uint32 ipsec_replay_protection_window = 5[(attr_enum_value) = 14]; - optional uint64 egress_esn = 6[(attr_enum_value) = 20]; - optional uint64 minimum_ingress_esn = 7[(attr_enum_value) = 21]; + uint64 oid = 1; + optional uint32 external_sa_index = 2 [(attr_enum_value) = 4]; + repeated uint64 ipsec_port_list = 3 [(attr_enum_value) = 6]; + optional bool ipsec_replay_protection_enable = 4 [(attr_enum_value) = 13]; + optional uint32 ipsec_replay_protection_window = 5 [(attr_enum_value) = 14]; + optional uint64 egress_esn = 6 [(attr_enum_value) = 20]; + optional uint64 minimum_ingress_esn = 7 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 8 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 9 [(attr_enum_value) = 23]; } -message SetIpsecSaAttributeResponse { -} +message SetIpsecSaAttributeResponse {} message GetIpsecSaAttributeRequest { - uint64 oid = 1; - repeated IpsecSaAttr attr_type = 2; + uint64 oid = 1; + repeated IpsecSaAttr attr_type = 2; } message GetIpsecSaAttributeResponse { - IpsecSaAttribute attr = 1; + IpsecSaAttribute attr = 1; } message GetIpsecSaStatsRequest { - uint64 oid = 1; - repeated IpsecSaStat counter_ids = 2; + uint64 oid = 1; + repeated IpsecSaStat counter_ids = 2; } message GetIpsecSaStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Ipsec { - rpc CreateIpsec (CreateIpsecRequest) returns (CreateIpsecResponse) {} - rpc RemoveIpsec (RemoveIpsecRequest) returns (RemoveIpsecResponse) {} - rpc SetIpsecAttribute (SetIpsecAttributeRequest) returns (SetIpsecAttributeResponse) {} - rpc GetIpsecAttribute (GetIpsecAttributeRequest) returns (GetIpsecAttributeResponse) {} - rpc CreateIpsecPort (CreateIpsecPortRequest) returns (CreateIpsecPortResponse) {} - rpc RemoveIpsecPort (RemoveIpsecPortRequest) returns (RemoveIpsecPortResponse) {} - rpc SetIpsecPortAttribute (SetIpsecPortAttributeRequest) returns (SetIpsecPortAttributeResponse) {} - rpc GetIpsecPortAttribute (GetIpsecPortAttributeRequest) returns (GetIpsecPortAttributeResponse) {} - rpc GetIpsecPortStats (GetIpsecPortStatsRequest) returns (GetIpsecPortStatsResponse) {} - rpc CreateIpsecSa (CreateIpsecSaRequest) returns (CreateIpsecSaResponse) {} - rpc RemoveIpsecSa (RemoveIpsecSaRequest) returns (RemoveIpsecSaResponse) {} - rpc SetIpsecSaAttribute (SetIpsecSaAttributeRequest) returns (SetIpsecSaAttributeResponse) {} - rpc GetIpsecSaAttribute (GetIpsecSaAttributeRequest) returns (GetIpsecSaAttributeResponse) {} - rpc GetIpsecSaStats (GetIpsecSaStatsRequest) returns (GetIpsecSaStatsResponse) {} + rpc CreateIpsec(CreateIpsecRequest) returns (CreateIpsecResponse) {} + rpc RemoveIpsec(RemoveIpsecRequest) returns (RemoveIpsecResponse) {} + rpc SetIpsecAttribute(SetIpsecAttributeRequest) + returns (SetIpsecAttributeResponse) {} + rpc GetIpsecAttribute(GetIpsecAttributeRequest) + returns (GetIpsecAttributeResponse) {} + rpc CreateIpsecPort(CreateIpsecPortRequest) + returns (CreateIpsecPortResponse) {} + rpc RemoveIpsecPort(RemoveIpsecPortRequest) + returns (RemoveIpsecPortResponse) {} + rpc SetIpsecPortAttribute(SetIpsecPortAttributeRequest) + returns (SetIpsecPortAttributeResponse) {} + rpc GetIpsecPortAttribute(GetIpsecPortAttributeRequest) + returns (GetIpsecPortAttributeResponse) {} + rpc GetIpsecPortStats(GetIpsecPortStatsRequest) + returns (GetIpsecPortStatsResponse) {} + rpc CreateIpsecSa(CreateIpsecSaRequest) returns (CreateIpsecSaResponse) {} + rpc RemoveIpsecSa(RemoveIpsecSaRequest) returns (RemoveIpsecSaResponse) {} + rpc SetIpsecSaAttribute(SetIpsecSaAttributeRequest) + returns (SetIpsecSaAttributeResponse) {} + rpc GetIpsecSaAttribute(GetIpsecSaAttributeRequest) + returns (GetIpsecSaAttributeResponse) {} + rpc GetIpsecSaStats(GetIpsecSaStatsRequest) + returns (GetIpsecSaStatsResponse) {} } diff --git a/dataplane/proto/sai/isolation_group.proto b/dataplane/proto/sai/isolation_group.proto index a68528601..2bed0ba46 100644 --- a/dataplane/proto/sai/isolation_group.proto +++ b/dataplane/proto/sai/isolation_group.proto @@ -7,78 +7,80 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum IsolationGroupAttr { - ISOLATION_GROUP_ATTR_UNSPECIFIED = 0; - ISOLATION_GROUP_ATTR_TYPE = 1; - ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST = 2; + ISOLATION_GROUP_ATTR_UNSPECIFIED = 0; + ISOLATION_GROUP_ATTR_TYPE = 1; + ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST = 2; } enum IsolationGroupMemberAttr { - ISOLATION_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID = 1; - ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT = 2; + ISOLATION_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID = 1; + ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT = 2; } message CreateIsolationGroupRequest { - option (sai_type) = OBJECT_TYPE_ISOLATION_GROUP; - uint64 switch = 1; - optional IsolationGroupType type = 2[(attr_enum_value) = 1]; + option (sai_type) = OBJECT_TYPE_ISOLATION_GROUP; + uint64 switch = 1; + optional IsolationGroupType type = 2 [(attr_enum_value) = 1]; } message CreateIsolationGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIsolationGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIsolationGroupResponse { -} +message RemoveIsolationGroupResponse {} message GetIsolationGroupAttributeRequest { - uint64 oid = 1; - repeated IsolationGroupAttr attr_type = 2; + uint64 oid = 1; + repeated IsolationGroupAttr attr_type = 2; } message GetIsolationGroupAttributeResponse { - IsolationGroupAttribute attr = 1; + IsolationGroupAttribute attr = 1; } message CreateIsolationGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_ISOLATION_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 isolation_group_id = 2[(attr_enum_value) = 1]; - optional uint64 isolation_object = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_ISOLATION_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 isolation_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 isolation_object = 3 [(attr_enum_value) = 2]; } message CreateIsolationGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveIsolationGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveIsolationGroupMemberResponse { -} +message RemoveIsolationGroupMemberResponse {} message GetIsolationGroupMemberAttributeRequest { - uint64 oid = 1; - repeated IsolationGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated IsolationGroupMemberAttr attr_type = 2; } message GetIsolationGroupMemberAttributeResponse { - IsolationGroupMemberAttribute attr = 1; + IsolationGroupMemberAttribute attr = 1; } - service IsolationGroup { - rpc CreateIsolationGroup (CreateIsolationGroupRequest) returns (CreateIsolationGroupResponse) {} - rpc RemoveIsolationGroup (RemoveIsolationGroupRequest) returns (RemoveIsolationGroupResponse) {} - rpc GetIsolationGroupAttribute (GetIsolationGroupAttributeRequest) returns (GetIsolationGroupAttributeResponse) {} - rpc CreateIsolationGroupMember (CreateIsolationGroupMemberRequest) returns (CreateIsolationGroupMemberResponse) {} - rpc RemoveIsolationGroupMember (RemoveIsolationGroupMemberRequest) returns (RemoveIsolationGroupMemberResponse) {} - rpc GetIsolationGroupMemberAttribute (GetIsolationGroupMemberAttributeRequest) returns (GetIsolationGroupMemberAttributeResponse) {} + rpc CreateIsolationGroup(CreateIsolationGroupRequest) + returns (CreateIsolationGroupResponse) {} + rpc RemoveIsolationGroup(RemoveIsolationGroupRequest) + returns (RemoveIsolationGroupResponse) {} + rpc GetIsolationGroupAttribute(GetIsolationGroupAttributeRequest) + returns (GetIsolationGroupAttributeResponse) {} + rpc CreateIsolationGroupMember(CreateIsolationGroupMemberRequest) + returns (CreateIsolationGroupMemberResponse) {} + rpc RemoveIsolationGroupMember(RemoveIsolationGroupMemberRequest) + returns (RemoveIsolationGroupMemberResponse) {} + rpc GetIsolationGroupMemberAttribute(GetIsolationGroupMemberAttributeRequest) + returns (GetIsolationGroupMemberAttributeResponse) {} } diff --git a/dataplane/proto/sai/l2mc.proto b/dataplane/proto/sai/l2mc.proto index fdf000cec..8de842f30 100644 --- a/dataplane/proto/sai/l2mc.proto +++ b/dataplane/proto/sai/l2mc.proto @@ -7,52 +7,51 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum L2mcEntryAttr { - L2MC_ENTRY_ATTR_UNSPECIFIED = 0; - L2MC_ENTRY_ATTR_PACKET_ACTION = 1; - L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID = 2; + L2MC_ENTRY_ATTR_UNSPECIFIED = 0; + L2MC_ENTRY_ATTR_PACKET_ACTION = 1; + L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID = 2; } message CreateL2mcEntryRequest { - option (sai_type) = OBJECT_TYPE_L2MC_ENTRY; - L2mcEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 output_group_id = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_L2MC_ENTRY; + L2mcEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 3 [(attr_enum_value) = 2]; } -message CreateL2mcEntryResponse { -} +message CreateL2mcEntryResponse {} message RemoveL2mcEntryRequest { - L2mcEntry entry = 1; + L2mcEntry entry = 1; } -message RemoveL2mcEntryResponse { -} +message RemoveL2mcEntryResponse {} message SetL2mcEntryAttributeRequest { - L2mcEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 output_group_id = 3[(attr_enum_value) = 2]; + L2mcEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 output_group_id = 3 [(attr_enum_value) = 2]; } -message SetL2mcEntryAttributeResponse { -} +message SetL2mcEntryAttributeResponse {} message GetL2mcEntryAttributeRequest { - L2mcEntry entry = 1; - repeated L2mcEntryAttr attr_type = 2; + L2mcEntry entry = 1; + repeated L2mcEntryAttr attr_type = 2; } message GetL2mcEntryAttributeResponse { - L2mcEntryAttribute attr = 1; + L2mcEntryAttribute attr = 1; } - service L2mc { - rpc CreateL2mcEntry (CreateL2mcEntryRequest) returns (CreateL2mcEntryResponse) {} - rpc RemoveL2mcEntry (RemoveL2mcEntryRequest) returns (RemoveL2mcEntryResponse) {} - rpc SetL2mcEntryAttribute (SetL2mcEntryAttributeRequest) returns (SetL2mcEntryAttributeResponse) {} - rpc GetL2mcEntryAttribute (GetL2mcEntryAttributeRequest) returns (GetL2mcEntryAttributeResponse) {} + rpc CreateL2mcEntry(CreateL2mcEntryRequest) + returns (CreateL2mcEntryResponse) {} + rpc RemoveL2mcEntry(RemoveL2mcEntryRequest) + returns (RemoveL2mcEntryResponse) {} + rpc SetL2mcEntryAttribute(SetL2mcEntryAttributeRequest) + returns (SetL2mcEntryAttributeResponse) {} + rpc GetL2mcEntryAttribute(GetL2mcEntryAttributeRequest) + returns (GetL2mcEntryAttributeResponse) {} } diff --git a/dataplane/proto/sai/l2mc_group.proto b/dataplane/proto/sai/l2mc_group.proto index 43c45f42e..bc546323a 100644 --- a/dataplane/proto/sai/l2mc_group.proto +++ b/dataplane/proto/sai/l2mc_group.proto @@ -7,79 +7,81 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum L2mcGroupAttr { - L2MC_GROUP_ATTR_UNSPECIFIED = 0; - L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT = 1; - L2MC_GROUP_ATTR_L2MC_MEMBER_LIST = 2; + L2MC_GROUP_ATTR_UNSPECIFIED = 0; + L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT = 1; + L2MC_GROUP_ATTR_L2MC_MEMBER_LIST = 2; } enum L2mcGroupMemberAttr { - L2MC_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID = 1; - L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID = 2; - L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP = 3; + L2MC_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID = 1; + L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID = 2; + L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP = 3; } message CreateL2mcGroupRequest { - option (sai_type) = OBJECT_TYPE_L2MC_GROUP; - uint64 switch = 1; + option (sai_type) = OBJECT_TYPE_L2MC_GROUP; + uint64 switch = 1; } message CreateL2mcGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveL2mcGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveL2mcGroupResponse { -} +message RemoveL2mcGroupResponse {} message GetL2mcGroupAttributeRequest { - uint64 oid = 1; - repeated L2mcGroupAttr attr_type = 2; + uint64 oid = 1; + repeated L2mcGroupAttr attr_type = 2; } message GetL2mcGroupAttributeResponse { - L2mcGroupAttribute attr = 1; + L2mcGroupAttribute attr = 1; } message CreateL2mcGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_L2MC_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 l2mc_group_id = 2[(attr_enum_value) = 1]; - optional uint64 l2mc_output_id = 3[(attr_enum_value) = 2]; - optional bytes l2mc_endpoint_ip = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_L2MC_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 l2mc_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 l2mc_output_id = 3 [(attr_enum_value) = 2]; + optional bytes l2mc_endpoint_ip = 4 [(attr_enum_value) = 3]; } message CreateL2mcGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveL2mcGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveL2mcGroupMemberResponse { -} +message RemoveL2mcGroupMemberResponse {} message GetL2mcGroupMemberAttributeRequest { - uint64 oid = 1; - repeated L2mcGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated L2mcGroupMemberAttr attr_type = 2; } message GetL2mcGroupMemberAttributeResponse { - L2mcGroupMemberAttribute attr = 1; + L2mcGroupMemberAttribute attr = 1; } - service L2mcGroup { - rpc CreateL2mcGroup (CreateL2mcGroupRequest) returns (CreateL2mcGroupResponse) {} - rpc RemoveL2mcGroup (RemoveL2mcGroupRequest) returns (RemoveL2mcGroupResponse) {} - rpc GetL2mcGroupAttribute (GetL2mcGroupAttributeRequest) returns (GetL2mcGroupAttributeResponse) {} - rpc CreateL2mcGroupMember (CreateL2mcGroupMemberRequest) returns (CreateL2mcGroupMemberResponse) {} - rpc RemoveL2mcGroupMember (RemoveL2mcGroupMemberRequest) returns (RemoveL2mcGroupMemberResponse) {} - rpc GetL2mcGroupMemberAttribute (GetL2mcGroupMemberAttributeRequest) returns (GetL2mcGroupMemberAttributeResponse) {} + rpc CreateL2mcGroup(CreateL2mcGroupRequest) + returns (CreateL2mcGroupResponse) {} + rpc RemoveL2mcGroup(RemoveL2mcGroupRequest) + returns (RemoveL2mcGroupResponse) {} + rpc GetL2mcGroupAttribute(GetL2mcGroupAttributeRequest) + returns (GetL2mcGroupAttributeResponse) {} + rpc CreateL2mcGroupMember(CreateL2mcGroupMemberRequest) + returns (CreateL2mcGroupMemberResponse) {} + rpc RemoveL2mcGroupMember(RemoveL2mcGroupMemberRequest) + returns (RemoveL2mcGroupMemberResponse) {} + rpc GetL2mcGroupMemberAttribute(GetL2mcGroupMemberAttributeRequest) + returns (GetL2mcGroupMemberAttributeResponse) {} } diff --git a/dataplane/proto/sai/lag.proto b/dataplane/proto/sai/lag.proto index 9eada4c3e..75d48d0e5 100644 --- a/dataplane/proto/sai/lag.proto +++ b/dataplane/proto/sai/lag.proto @@ -7,147 +7,149 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum LagAttr { - LAG_ATTR_UNSPECIFIED = 0; - LAG_ATTR_PORT_LIST = 1; - LAG_ATTR_INGRESS_ACL = 2; - LAG_ATTR_EGRESS_ACL = 3; - LAG_ATTR_PORT_VLAN_ID = 4; - LAG_ATTR_DEFAULT_VLAN_PRIORITY = 5; - LAG_ATTR_DROP_UNTAGGED = 6; - LAG_ATTR_DROP_TAGGED = 7; - LAG_ATTR_TPID = 8; - LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID = 9; - LAG_ATTR_LABEL = 10; - LAG_ATTR_ARS_OBJECT_ID = 11; - LAG_ATTR_ARS_PACKET_DROPS = 12; - LAG_ATTR_ARS_PORT_REASSIGNMENTS = 13; + LAG_ATTR_UNSPECIFIED = 0; + LAG_ATTR_PORT_LIST = 1; + LAG_ATTR_INGRESS_ACL = 2; + LAG_ATTR_EGRESS_ACL = 3; + LAG_ATTR_PORT_VLAN_ID = 4; + LAG_ATTR_DEFAULT_VLAN_PRIORITY = 5; + LAG_ATTR_DROP_UNTAGGED = 6; + LAG_ATTR_DROP_TAGGED = 7; + LAG_ATTR_TPID = 8; + LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID = 9; + LAG_ATTR_LABEL = 10; + LAG_ATTR_ARS_OBJECT_ID = 11; + LAG_ATTR_ARS_PACKET_DROPS = 12; + LAG_ATTR_ARS_PORT_REASSIGNMENTS = 13; } enum LagMemberAttr { - LAG_MEMBER_ATTR_UNSPECIFIED = 0; - LAG_MEMBER_ATTR_LAG_ID = 1; - LAG_MEMBER_ATTR_PORT_ID = 2; - LAG_MEMBER_ATTR_EGRESS_DISABLE = 3; - LAG_MEMBER_ATTR_INGRESS_DISABLE = 4; + LAG_MEMBER_ATTR_UNSPECIFIED = 0; + LAG_MEMBER_ATTR_LAG_ID = 1; + LAG_MEMBER_ATTR_PORT_ID = 2; + LAG_MEMBER_ATTR_EGRESS_DISABLE = 3; + LAG_MEMBER_ATTR_INGRESS_DISABLE = 4; } message CreateLagRequest { - option (sai_type) = OBJECT_TYPE_LAG; - uint64 switch = 1; - optional uint64 ingress_acl = 2[(attr_enum_value) = 2]; - optional uint64 egress_acl = 3[(attr_enum_value) = 3]; - optional uint32 port_vlan_id = 4[(attr_enum_value) = 4]; - optional uint32 default_vlan_priority = 5[(attr_enum_value) = 5]; - optional bool drop_untagged = 6[(attr_enum_value) = 6]; - optional bool drop_tagged = 7[(attr_enum_value) = 7]; - optional uint32 tpid = 8[(attr_enum_value) = 8]; - optional uint32 system_port_aggregate_id = 9[(attr_enum_value) = 9]; - optional bytes label = 10[(attr_enum_value) = 10]; - optional uint64 ars_object_id = 11[(attr_enum_value) = 11]; + option (sai_type) = OBJECT_TYPE_LAG; + uint64 switch = 1; + optional uint64 ingress_acl = 2 [(attr_enum_value) = 2]; + optional uint64 egress_acl = 3 [(attr_enum_value) = 3]; + optional uint32 port_vlan_id = 4 [(attr_enum_value) = 4]; + optional uint32 default_vlan_priority = 5 [(attr_enum_value) = 5]; + optional bool drop_untagged = 6 [(attr_enum_value) = 6]; + optional bool drop_tagged = 7 [(attr_enum_value) = 7]; + optional uint32 tpid = 8 [(attr_enum_value) = 8]; + optional uint32 system_port_aggregate_id = 9 [(attr_enum_value) = 9]; + optional bytes label = 10 [(attr_enum_value) = 10]; + optional uint64 ars_object_id = 11 [(attr_enum_value) = 11]; } message CreateLagResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveLagRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveLagResponse { -} +message RemoveLagResponse {} message SetLagAttributeRequest { - uint64 oid = 1; - optional uint64 ingress_acl = 2[(attr_enum_value) = 2]; - optional uint64 egress_acl = 3[(attr_enum_value) = 3]; - optional uint32 port_vlan_id = 4[(attr_enum_value) = 4]; - optional uint32 default_vlan_priority = 5[(attr_enum_value) = 5]; - optional bool drop_untagged = 6[(attr_enum_value) = 6]; - optional bool drop_tagged = 7[(attr_enum_value) = 7]; - optional uint32 tpid = 8[(attr_enum_value) = 8]; - optional bytes label = 9[(attr_enum_value) = 10]; - optional uint64 ars_object_id = 10[(attr_enum_value) = 11]; + uint64 oid = 1; + optional uint64 ingress_acl = 2 [(attr_enum_value) = 2]; + optional uint64 egress_acl = 3 [(attr_enum_value) = 3]; + optional uint32 port_vlan_id = 4 [(attr_enum_value) = 4]; + optional uint32 default_vlan_priority = 5 [(attr_enum_value) = 5]; + optional bool drop_untagged = 6 [(attr_enum_value) = 6]; + optional bool drop_tagged = 7 [(attr_enum_value) = 7]; + optional uint32 tpid = 8 [(attr_enum_value) = 8]; + optional bytes label = 9 [(attr_enum_value) = 10]; + optional uint64 ars_object_id = 10 [(attr_enum_value) = 11]; } -message SetLagAttributeResponse { -} +message SetLagAttributeResponse {} message GetLagAttributeRequest { - uint64 oid = 1; - repeated LagAttr attr_type = 2; + uint64 oid = 1; + repeated LagAttr attr_type = 2; } message GetLagAttributeResponse { - LagAttribute attr = 1; + LagAttribute attr = 1; } message CreateLagMemberRequest { - option (sai_type) = OBJECT_TYPE_LAG_MEMBER; - uint64 switch = 1; - optional uint64 lag_id = 2[(attr_enum_value) = 1]; - optional uint64 port_id = 3[(attr_enum_value) = 2]; - optional bool egress_disable = 4[(attr_enum_value) = 3]; - optional bool ingress_disable = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_LAG_MEMBER; + uint64 switch = 1; + optional uint64 lag_id = 2 [(attr_enum_value) = 1]; + optional uint64 port_id = 3 [(attr_enum_value) = 2]; + optional bool egress_disable = 4 [(attr_enum_value) = 3]; + optional bool ingress_disable = 5 [(attr_enum_value) = 4]; } message CreateLagMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveLagMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveLagMemberResponse { -} +message RemoveLagMemberResponse {} message SetLagMemberAttributeRequest { - uint64 oid = 1; - optional bool egress_disable = 2[(attr_enum_value) = 3]; - optional bool ingress_disable = 3[(attr_enum_value) = 4]; + uint64 oid = 1; + optional bool egress_disable = 2 [(attr_enum_value) = 3]; + optional bool ingress_disable = 3 [(attr_enum_value) = 4]; } -message SetLagMemberAttributeResponse { -} +message SetLagMemberAttributeResponse {} message GetLagMemberAttributeRequest { - uint64 oid = 1; - repeated LagMemberAttr attr_type = 2; + uint64 oid = 1; + repeated LagMemberAttr attr_type = 2; } message GetLagMemberAttributeResponse { - LagMemberAttribute attr = 1; + LagMemberAttribute attr = 1; } message CreateLagMembersRequest { - repeated CreateLagMemberRequest reqs = 1; + repeated CreateLagMemberRequest reqs = 1; } message CreateLagMembersResponse { - repeated CreateLagMemberResponse resps = 1; + repeated CreateLagMemberResponse resps = 1; } message RemoveLagMembersRequest { - repeated RemoveLagMemberRequest reqs = 1; + repeated RemoveLagMemberRequest reqs = 1; } message RemoveLagMembersResponse { - repeated RemoveLagMemberResponse resps = 1; + repeated RemoveLagMemberResponse resps = 1; } - service Lag { - rpc CreateLag (CreateLagRequest) returns (CreateLagResponse) {} - rpc RemoveLag (RemoveLagRequest) returns (RemoveLagResponse) {} - rpc SetLagAttribute (SetLagAttributeRequest) returns (SetLagAttributeResponse) {} - rpc GetLagAttribute (GetLagAttributeRequest) returns (GetLagAttributeResponse) {} - rpc CreateLagMember (CreateLagMemberRequest) returns (CreateLagMemberResponse) {} - rpc RemoveLagMember (RemoveLagMemberRequest) returns (RemoveLagMemberResponse) {} - rpc SetLagMemberAttribute (SetLagMemberAttributeRequest) returns (SetLagMemberAttributeResponse) {} - rpc GetLagMemberAttribute (GetLagMemberAttributeRequest) returns (GetLagMemberAttributeResponse) {} - rpc CreateLagMembers (CreateLagMembersRequest) returns (CreateLagMembersResponse) {} - rpc RemoveLagMembers (RemoveLagMembersRequest) returns (RemoveLagMembersResponse) {} + rpc CreateLag(CreateLagRequest) returns (CreateLagResponse) {} + rpc RemoveLag(RemoveLagRequest) returns (RemoveLagResponse) {} + rpc SetLagAttribute(SetLagAttributeRequest) + returns (SetLagAttributeResponse) {} + rpc GetLagAttribute(GetLagAttributeRequest) + returns (GetLagAttributeResponse) {} + rpc CreateLagMember(CreateLagMemberRequest) + returns (CreateLagMemberResponse) {} + rpc RemoveLagMember(RemoveLagMemberRequest) + returns (RemoveLagMemberResponse) {} + rpc SetLagMemberAttribute(SetLagMemberAttributeRequest) + returns (SetLagMemberAttributeResponse) {} + rpc GetLagMemberAttribute(GetLagMemberAttributeRequest) + returns (GetLagMemberAttributeResponse) {} + rpc CreateLagMembers(CreateLagMembersRequest) + returns (CreateLagMembersResponse) {} + rpc RemoveLagMembers(RemoveLagMembersRequest) + returns (RemoveLagMembersResponse) {} } diff --git a/dataplane/proto/sai/macsec.pb.go b/dataplane/proto/sai/macsec.pb.go index 76d55032f..bdf39b5b9 100644 --- a/dataplane/proto/sai/macsec.pb.go +++ b/dataplane/proto/sai/macsec.pb.go @@ -145,12 +145,14 @@ func (MacsecAttr) EnumDescriptor() ([]byte, []int) { type MacsecPortAttr int32 const ( - MacsecPortAttr_MACSEC_PORT_ATTR_UNSPECIFIED MacsecPortAttr = 0 - MacsecPortAttr_MACSEC_PORT_ATTR_MACSEC_DIRECTION MacsecPortAttr = 1 - MacsecPortAttr_MACSEC_PORT_ATTR_PORT_ID MacsecPortAttr = 2 - MacsecPortAttr_MACSEC_PORT_ATTR_CTAG_ENABLE MacsecPortAttr = 3 - MacsecPortAttr_MACSEC_PORT_ATTR_STAG_ENABLE MacsecPortAttr = 4 - MacsecPortAttr_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE MacsecPortAttr = 5 + MacsecPortAttr_MACSEC_PORT_ATTR_UNSPECIFIED MacsecPortAttr = 0 + MacsecPortAttr_MACSEC_PORT_ATTR_MACSEC_DIRECTION MacsecPortAttr = 1 + MacsecPortAttr_MACSEC_PORT_ATTR_PORT_ID MacsecPortAttr = 2 + MacsecPortAttr_MACSEC_PORT_ATTR_CTAG_ENABLE MacsecPortAttr = 3 + MacsecPortAttr_MACSEC_PORT_ATTR_STAG_ENABLE MacsecPortAttr = 4 + MacsecPortAttr_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE MacsecPortAttr = 5 + MacsecPortAttr_MACSEC_PORT_ATTR_STATS_COUNT_MODE MacsecPortAttr = 6 + MacsecPortAttr_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST MacsecPortAttr = 7 ) // Enum value maps for MacsecPortAttr. @@ -162,14 +164,18 @@ var ( 3: "MACSEC_PORT_ATTR_CTAG_ENABLE", 4: "MACSEC_PORT_ATTR_STAG_ENABLE", 5: "MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE", + 6: "MACSEC_PORT_ATTR_STATS_COUNT_MODE", + 7: "MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST", } MacsecPortAttr_value = map[string]int32{ - "MACSEC_PORT_ATTR_UNSPECIFIED": 0, - "MACSEC_PORT_ATTR_MACSEC_DIRECTION": 1, - "MACSEC_PORT_ATTR_PORT_ID": 2, - "MACSEC_PORT_ATTR_CTAG_ENABLE": 3, - "MACSEC_PORT_ATTR_STAG_ENABLE": 4, - "MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE": 5, + "MACSEC_PORT_ATTR_UNSPECIFIED": 0, + "MACSEC_PORT_ATTR_MACSEC_DIRECTION": 1, + "MACSEC_PORT_ATTR_PORT_ID": 2, + "MACSEC_PORT_ATTR_CTAG_ENABLE": 3, + "MACSEC_PORT_ATTR_STAG_ENABLE": 4, + "MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE": 5, + "MACSEC_PORT_ATTR_STATS_COUNT_MODE": 6, + "MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST": 7, } ) @@ -203,10 +209,12 @@ func (MacsecPortAttr) EnumDescriptor() ([]byte, []int) { type MacsecFlowAttr int32 const ( - MacsecFlowAttr_MACSEC_FLOW_ATTR_UNSPECIFIED MacsecFlowAttr = 0 - MacsecFlowAttr_MACSEC_FLOW_ATTR_MACSEC_DIRECTION MacsecFlowAttr = 1 - MacsecFlowAttr_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST MacsecFlowAttr = 2 - MacsecFlowAttr_MACSEC_FLOW_ATTR_SC_LIST MacsecFlowAttr = 3 + MacsecFlowAttr_MACSEC_FLOW_ATTR_UNSPECIFIED MacsecFlowAttr = 0 + MacsecFlowAttr_MACSEC_FLOW_ATTR_MACSEC_DIRECTION MacsecFlowAttr = 1 + MacsecFlowAttr_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST MacsecFlowAttr = 2 + MacsecFlowAttr_MACSEC_FLOW_ATTR_SC_LIST MacsecFlowAttr = 3 + MacsecFlowAttr_MACSEC_FLOW_ATTR_STATS_COUNT_MODE MacsecFlowAttr = 4 + MacsecFlowAttr_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST MacsecFlowAttr = 5 ) // Enum value maps for MacsecFlowAttr. @@ -216,12 +224,16 @@ var ( 1: "MACSEC_FLOW_ATTR_MACSEC_DIRECTION", 2: "MACSEC_FLOW_ATTR_ACL_ENTRY_LIST", 3: "MACSEC_FLOW_ATTR_SC_LIST", + 4: "MACSEC_FLOW_ATTR_STATS_COUNT_MODE", + 5: "MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST", } MacsecFlowAttr_value = map[string]int32{ - "MACSEC_FLOW_ATTR_UNSPECIFIED": 0, - "MACSEC_FLOW_ATTR_MACSEC_DIRECTION": 1, - "MACSEC_FLOW_ATTR_ACL_ENTRY_LIST": 2, - "MACSEC_FLOW_ATTR_SC_LIST": 3, + "MACSEC_FLOW_ATTR_UNSPECIFIED": 0, + "MACSEC_FLOW_ATTR_MACSEC_DIRECTION": 1, + "MACSEC_FLOW_ATTR_ACL_ENTRY_LIST": 2, + "MACSEC_FLOW_ATTR_SC_LIST": 3, + "MACSEC_FLOW_ATTR_STATS_COUNT_MODE": 4, + "MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST": 5, } ) @@ -850,15 +862,17 @@ func (x *GetMacsecAttributeResponse) GetAttr() *MacsecAttribute { } type CreateMacsecPortRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - MacsecDirection *MacsecDirection `protobuf:"varint,2,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` - PortId *uint64 `protobuf:"varint,3,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` - CtagEnable *bool `protobuf:"varint,4,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` - StagEnable *bool `protobuf:"varint,5,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` - SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,6,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + MacsecDirection *MacsecDirection `protobuf:"varint,2,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` + PortId *uint64 `protobuf:"varint,3,opt,name=port_id,json=portId,proto3,oneof" json:"port_id,omitempty"` + CtagEnable *bool `protobuf:"varint,4,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` + StagEnable *bool `protobuf:"varint,5,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` + SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,6,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,7,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,8,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateMacsecPortRequest) Reset() { @@ -933,6 +947,20 @@ func (x *CreateMacsecPortRequest) GetSwitchSwitchingMode() SwitchSwitchingMode { return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *CreateMacsecPortRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateMacsecPortRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateMacsecPortResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1058,13 +1086,15 @@ func (*RemoveMacsecPortResponse) Descriptor() ([]byte, []int) { } type SetMacsecPortAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - CtagEnable *bool `protobuf:"varint,2,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` - StagEnable *bool `protobuf:"varint,3,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` - SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,4,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + CtagEnable *bool `protobuf:"varint,2,opt,name=ctag_enable,json=ctagEnable,proto3,oneof" json:"ctag_enable,omitempty"` + StagEnable *bool `protobuf:"varint,3,opt,name=stag_enable,json=stagEnable,proto3,oneof" json:"stag_enable,omitempty"` + SwitchSwitchingMode *SwitchSwitchingMode `protobuf:"varint,4,opt,name=switch_switching_mode,json=switchSwitchingMode,proto3,enum=lemming.dataplane.sai.SwitchSwitchingMode,oneof" json:"switch_switching_mode,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,5,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,6,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetMacsecPortAttributeRequest) Reset() { @@ -1125,6 +1155,20 @@ func (x *SetMacsecPortAttributeRequest) GetSwitchSwitchingMode() SwitchSwitching return SwitchSwitchingMode_SWITCH_SWITCHING_MODE_UNSPECIFIED } +func (x *SetMacsecPortAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetMacsecPortAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetMacsecPortAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1354,11 +1398,13 @@ func (x *GetMacsecPortStatsResponse) GetValues() []uint64 { } type CreateMacsecFlowRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - MacsecDirection *MacsecDirection `protobuf:"varint,2,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + MacsecDirection *MacsecDirection `protobuf:"varint,2,opt,name=macsec_direction,json=macsecDirection,proto3,enum=lemming.dataplane.sai.MacsecDirection,oneof" json:"macsec_direction,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,3,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,4,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateMacsecFlowRequest) Reset() { @@ -1405,6 +1451,20 @@ func (x *CreateMacsecFlowRequest) GetMacsecDirection() MacsecDirection { return MacsecDirection_MACSEC_DIRECTION_UNSPECIFIED } +func (x *CreateMacsecFlowRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateMacsecFlowRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateMacsecFlowResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1529,6 +1589,102 @@ func (*RemoveMacsecFlowResponse) Descriptor() ([]byte, []int) { return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{21} } +type SetMacsecFlowAttributeRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,2,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,3,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetMacsecFlowAttributeRequest) Reset() { + *x = SetMacsecFlowAttributeRequest{} + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetMacsecFlowAttributeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetMacsecFlowAttributeRequest) ProtoMessage() {} + +func (x *SetMacsecFlowAttributeRequest) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetMacsecFlowAttributeRequest.ProtoReflect.Descriptor instead. +func (*SetMacsecFlowAttributeRequest) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{22} +} + +func (x *SetMacsecFlowAttributeRequest) GetOid() uint64 { + if x != nil { + return x.Oid + } + return 0 +} + +func (x *SetMacsecFlowAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetMacsecFlowAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + +type SetMacsecFlowAttributeResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SetMacsecFlowAttributeResponse) Reset() { + *x = SetMacsecFlowAttributeResponse{} + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SetMacsecFlowAttributeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetMacsecFlowAttributeResponse) ProtoMessage() {} + +func (x *SetMacsecFlowAttributeResponse) ProtoReflect() protoreflect.Message { + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetMacsecFlowAttributeResponse.ProtoReflect.Descriptor instead. +func (*SetMacsecFlowAttributeResponse) Descriptor() ([]byte, []int) { + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{23} +} + type GetMacsecFlowAttributeRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1539,7 +1695,7 @@ type GetMacsecFlowAttributeRequest struct { func (x *GetMacsecFlowAttributeRequest) Reset() { *x = GetMacsecFlowAttributeRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[22] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1551,7 +1707,7 @@ func (x *GetMacsecFlowAttributeRequest) String() string { func (*GetMacsecFlowAttributeRequest) ProtoMessage() {} func (x *GetMacsecFlowAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[22] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1564,7 +1720,7 @@ func (x *GetMacsecFlowAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecFlowAttributeRequest.ProtoReflect.Descriptor instead. func (*GetMacsecFlowAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{22} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{24} } func (x *GetMacsecFlowAttributeRequest) GetOid() uint64 { @@ -1590,7 +1746,7 @@ type GetMacsecFlowAttributeResponse struct { func (x *GetMacsecFlowAttributeResponse) Reset() { *x = GetMacsecFlowAttributeResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[23] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1602,7 +1758,7 @@ func (x *GetMacsecFlowAttributeResponse) String() string { func (*GetMacsecFlowAttributeResponse) ProtoMessage() {} func (x *GetMacsecFlowAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[23] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1615,7 +1771,7 @@ func (x *GetMacsecFlowAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecFlowAttributeResponse.ProtoReflect.Descriptor instead. func (*GetMacsecFlowAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{23} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{25} } func (x *GetMacsecFlowAttributeResponse) GetAttr() *MacsecFlowAttribute { @@ -1635,7 +1791,7 @@ type GetMacsecFlowStatsRequest struct { func (x *GetMacsecFlowStatsRequest) Reset() { *x = GetMacsecFlowStatsRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[24] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1647,7 +1803,7 @@ func (x *GetMacsecFlowStatsRequest) String() string { func (*GetMacsecFlowStatsRequest) ProtoMessage() {} func (x *GetMacsecFlowStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[24] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1660,7 +1816,7 @@ func (x *GetMacsecFlowStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecFlowStatsRequest.ProtoReflect.Descriptor instead. func (*GetMacsecFlowStatsRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{24} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{26} } func (x *GetMacsecFlowStatsRequest) GetOid() uint64 { @@ -1686,7 +1842,7 @@ type GetMacsecFlowStatsResponse struct { func (x *GetMacsecFlowStatsResponse) Reset() { *x = GetMacsecFlowStatsResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[25] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1698,7 +1854,7 @@ func (x *GetMacsecFlowStatsResponse) String() string { func (*GetMacsecFlowStatsResponse) ProtoMessage() {} func (x *GetMacsecFlowStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[25] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1711,7 +1867,7 @@ func (x *GetMacsecFlowStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecFlowStatsResponse.ProtoReflect.Descriptor instead. func (*GetMacsecFlowStatsResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{25} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{27} } func (x *GetMacsecFlowStatsResponse) GetValues() []uint64 { @@ -1739,7 +1895,7 @@ type CreateMacsecScRequest struct { func (x *CreateMacsecScRequest) Reset() { *x = CreateMacsecScRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[26] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1751,7 +1907,7 @@ func (x *CreateMacsecScRequest) String() string { func (*CreateMacsecScRequest) ProtoMessage() {} func (x *CreateMacsecScRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[26] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1764,7 +1920,7 @@ func (x *CreateMacsecScRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMacsecScRequest.ProtoReflect.Descriptor instead. func (*CreateMacsecScRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{26} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{28} } func (x *CreateMacsecScRequest) GetSwitch() uint64 { @@ -1846,7 +2002,7 @@ type CreateMacsecScResponse struct { func (x *CreateMacsecScResponse) Reset() { *x = CreateMacsecScResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[27] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1858,7 +2014,7 @@ func (x *CreateMacsecScResponse) String() string { func (*CreateMacsecScResponse) ProtoMessage() {} func (x *CreateMacsecScResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[27] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1871,7 +2027,7 @@ func (x *CreateMacsecScResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMacsecScResponse.ProtoReflect.Descriptor instead. func (*CreateMacsecScResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{27} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{29} } func (x *CreateMacsecScResponse) GetOid() uint64 { @@ -1890,7 +2046,7 @@ type RemoveMacsecScRequest struct { func (x *RemoveMacsecScRequest) Reset() { *x = RemoveMacsecScRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[28] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1902,7 +2058,7 @@ func (x *RemoveMacsecScRequest) String() string { func (*RemoveMacsecScRequest) ProtoMessage() {} func (x *RemoveMacsecScRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[28] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1915,7 +2071,7 @@ func (x *RemoveMacsecScRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMacsecScRequest.ProtoReflect.Descriptor instead. func (*RemoveMacsecScRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{28} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{30} } func (x *RemoveMacsecScRequest) GetOid() uint64 { @@ -1933,7 +2089,7 @@ type RemoveMacsecScResponse struct { func (x *RemoveMacsecScResponse) Reset() { *x = RemoveMacsecScResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[29] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1945,7 +2101,7 @@ func (x *RemoveMacsecScResponse) String() string { func (*RemoveMacsecScResponse) ProtoMessage() {} func (x *RemoveMacsecScResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[29] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1958,7 +2114,7 @@ func (x *RemoveMacsecScResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMacsecScResponse.ProtoReflect.Descriptor instead. func (*RemoveMacsecScResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{29} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{31} } type SetMacsecScAttributeRequest struct { @@ -1976,7 +2132,7 @@ type SetMacsecScAttributeRequest struct { func (x *SetMacsecScAttributeRequest) Reset() { *x = SetMacsecScAttributeRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[30] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1988,7 +2144,7 @@ func (x *SetMacsecScAttributeRequest) String() string { func (*SetMacsecScAttributeRequest) ProtoMessage() {} func (x *SetMacsecScAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[30] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2001,7 +2157,7 @@ func (x *SetMacsecScAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMacsecScAttributeRequest.ProtoReflect.Descriptor instead. func (*SetMacsecScAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{30} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{32} } func (x *SetMacsecScAttributeRequest) GetOid() uint64 { @@ -2061,7 +2217,7 @@ type SetMacsecScAttributeResponse struct { func (x *SetMacsecScAttributeResponse) Reset() { *x = SetMacsecScAttributeResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[31] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2073,7 +2229,7 @@ func (x *SetMacsecScAttributeResponse) String() string { func (*SetMacsecScAttributeResponse) ProtoMessage() {} func (x *SetMacsecScAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[31] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2086,7 +2242,7 @@ func (x *SetMacsecScAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMacsecScAttributeResponse.ProtoReflect.Descriptor instead. func (*SetMacsecScAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{31} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{33} } type GetMacsecScAttributeRequest struct { @@ -2099,7 +2255,7 @@ type GetMacsecScAttributeRequest struct { func (x *GetMacsecScAttributeRequest) Reset() { *x = GetMacsecScAttributeRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[32] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2111,7 +2267,7 @@ func (x *GetMacsecScAttributeRequest) String() string { func (*GetMacsecScAttributeRequest) ProtoMessage() {} func (x *GetMacsecScAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[32] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2124,7 +2280,7 @@ func (x *GetMacsecScAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecScAttributeRequest.ProtoReflect.Descriptor instead. func (*GetMacsecScAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{32} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{34} } func (x *GetMacsecScAttributeRequest) GetOid() uint64 { @@ -2150,7 +2306,7 @@ type GetMacsecScAttributeResponse struct { func (x *GetMacsecScAttributeResponse) Reset() { *x = GetMacsecScAttributeResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[33] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2162,7 +2318,7 @@ func (x *GetMacsecScAttributeResponse) String() string { func (*GetMacsecScAttributeResponse) ProtoMessage() {} func (x *GetMacsecScAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[33] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +2331,7 @@ func (x *GetMacsecScAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecScAttributeResponse.ProtoReflect.Descriptor instead. func (*GetMacsecScAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{33} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{35} } func (x *GetMacsecScAttributeResponse) GetAttr() *MacsecScAttribute { @@ -2195,7 +2351,7 @@ type GetMacsecScStatsRequest struct { func (x *GetMacsecScStatsRequest) Reset() { *x = GetMacsecScStatsRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[34] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2207,7 +2363,7 @@ func (x *GetMacsecScStatsRequest) String() string { func (*GetMacsecScStatsRequest) ProtoMessage() {} func (x *GetMacsecScStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[34] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2220,7 +2376,7 @@ func (x *GetMacsecScStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecScStatsRequest.ProtoReflect.Descriptor instead. func (*GetMacsecScStatsRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{34} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{36} } func (x *GetMacsecScStatsRequest) GetOid() uint64 { @@ -2246,7 +2402,7 @@ type GetMacsecScStatsResponse struct { func (x *GetMacsecScStatsResponse) Reset() { *x = GetMacsecScStatsResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[35] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2258,7 +2414,7 @@ func (x *GetMacsecScStatsResponse) String() string { func (*GetMacsecScStatsResponse) ProtoMessage() {} func (x *GetMacsecScStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[35] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2271,7 +2427,7 @@ func (x *GetMacsecScStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecScStatsResponse.ProtoReflect.Descriptor instead. func (*GetMacsecScStatsResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{35} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{37} } func (x *GetMacsecScStatsResponse) GetValues() []uint64 { @@ -2299,7 +2455,7 @@ type CreateMacsecSaRequest struct { func (x *CreateMacsecSaRequest) Reset() { *x = CreateMacsecSaRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[36] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2311,7 +2467,7 @@ func (x *CreateMacsecSaRequest) String() string { func (*CreateMacsecSaRequest) ProtoMessage() {} func (x *CreateMacsecSaRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[36] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2324,7 +2480,7 @@ func (x *CreateMacsecSaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMacsecSaRequest.ProtoReflect.Descriptor instead. func (*CreateMacsecSaRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{36} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{38} } func (x *CreateMacsecSaRequest) GetSwitch() uint64 { @@ -2406,7 +2562,7 @@ type CreateMacsecSaResponse struct { func (x *CreateMacsecSaResponse) Reset() { *x = CreateMacsecSaResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[37] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2418,7 +2574,7 @@ func (x *CreateMacsecSaResponse) String() string { func (*CreateMacsecSaResponse) ProtoMessage() {} func (x *CreateMacsecSaResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[37] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2431,7 +2587,7 @@ func (x *CreateMacsecSaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateMacsecSaResponse.ProtoReflect.Descriptor instead. func (*CreateMacsecSaResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{37} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{39} } func (x *CreateMacsecSaResponse) GetOid() uint64 { @@ -2450,7 +2606,7 @@ type RemoveMacsecSaRequest struct { func (x *RemoveMacsecSaRequest) Reset() { *x = RemoveMacsecSaRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[38] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2462,7 +2618,7 @@ func (x *RemoveMacsecSaRequest) String() string { func (*RemoveMacsecSaRequest) ProtoMessage() {} func (x *RemoveMacsecSaRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[38] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[40] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2475,7 +2631,7 @@ func (x *RemoveMacsecSaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMacsecSaRequest.ProtoReflect.Descriptor instead. func (*RemoveMacsecSaRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{38} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{40} } func (x *RemoveMacsecSaRequest) GetOid() uint64 { @@ -2493,7 +2649,7 @@ type RemoveMacsecSaResponse struct { func (x *RemoveMacsecSaResponse) Reset() { *x = RemoveMacsecSaResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[39] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2505,7 +2661,7 @@ func (x *RemoveMacsecSaResponse) String() string { func (*RemoveMacsecSaResponse) ProtoMessage() {} func (x *RemoveMacsecSaResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[39] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[41] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2518,7 +2674,7 @@ func (x *RemoveMacsecSaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveMacsecSaResponse.ProtoReflect.Descriptor instead. func (*RemoveMacsecSaResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{39} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{41} } type SetMacsecSaAttributeRequest struct { @@ -2532,7 +2688,7 @@ type SetMacsecSaAttributeRequest struct { func (x *SetMacsecSaAttributeRequest) Reset() { *x = SetMacsecSaAttributeRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[40] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2544,7 +2700,7 @@ func (x *SetMacsecSaAttributeRequest) String() string { func (*SetMacsecSaAttributeRequest) ProtoMessage() {} func (x *SetMacsecSaAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[40] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2557,7 +2713,7 @@ func (x *SetMacsecSaAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMacsecSaAttributeRequest.ProtoReflect.Descriptor instead. func (*SetMacsecSaAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{40} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{42} } func (x *SetMacsecSaAttributeRequest) GetOid() uint64 { @@ -2589,7 +2745,7 @@ type SetMacsecSaAttributeResponse struct { func (x *SetMacsecSaAttributeResponse) Reset() { *x = SetMacsecSaAttributeResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[41] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2601,7 +2757,7 @@ func (x *SetMacsecSaAttributeResponse) String() string { func (*SetMacsecSaAttributeResponse) ProtoMessage() {} func (x *SetMacsecSaAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[41] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2614,7 +2770,7 @@ func (x *SetMacsecSaAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetMacsecSaAttributeResponse.ProtoReflect.Descriptor instead. func (*SetMacsecSaAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{41} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{43} } type GetMacsecSaAttributeRequest struct { @@ -2627,7 +2783,7 @@ type GetMacsecSaAttributeRequest struct { func (x *GetMacsecSaAttributeRequest) Reset() { *x = GetMacsecSaAttributeRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[42] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2639,7 +2795,7 @@ func (x *GetMacsecSaAttributeRequest) String() string { func (*GetMacsecSaAttributeRequest) ProtoMessage() {} func (x *GetMacsecSaAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[42] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2652,7 +2808,7 @@ func (x *GetMacsecSaAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecSaAttributeRequest.ProtoReflect.Descriptor instead. func (*GetMacsecSaAttributeRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{42} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{44} } func (x *GetMacsecSaAttributeRequest) GetOid() uint64 { @@ -2678,7 +2834,7 @@ type GetMacsecSaAttributeResponse struct { func (x *GetMacsecSaAttributeResponse) Reset() { *x = GetMacsecSaAttributeResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[43] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2690,7 +2846,7 @@ func (x *GetMacsecSaAttributeResponse) String() string { func (*GetMacsecSaAttributeResponse) ProtoMessage() {} func (x *GetMacsecSaAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[43] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2703,7 +2859,7 @@ func (x *GetMacsecSaAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecSaAttributeResponse.ProtoReflect.Descriptor instead. func (*GetMacsecSaAttributeResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{43} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{45} } func (x *GetMacsecSaAttributeResponse) GetAttr() *MacsecSaAttribute { @@ -2723,7 +2879,7 @@ type GetMacsecSaStatsRequest struct { func (x *GetMacsecSaStatsRequest) Reset() { *x = GetMacsecSaStatsRequest{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[44] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2735,7 +2891,7 @@ func (x *GetMacsecSaStatsRequest) String() string { func (*GetMacsecSaStatsRequest) ProtoMessage() {} func (x *GetMacsecSaStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[44] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2748,7 +2904,7 @@ func (x *GetMacsecSaStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecSaStatsRequest.ProtoReflect.Descriptor instead. func (*GetMacsecSaStatsRequest) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{44} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{46} } func (x *GetMacsecSaStatsRequest) GetOid() uint64 { @@ -2774,7 +2930,7 @@ type GetMacsecSaStatsResponse struct { func (x *GetMacsecSaStatsResponse) Reset() { *x = GetMacsecSaStatsResponse{} - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[45] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2786,7 +2942,7 @@ func (x *GetMacsecSaStatsResponse) String() string { func (*GetMacsecSaStatsResponse) ProtoMessage() {} func (x *GetMacsecSaStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[45] + mi := &file_dataplane_proto_sai_macsec_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2799,7 +2955,7 @@ func (x *GetMacsecSaStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMacsecSaStatsResponse.ProtoReflect.Descriptor instead. func (*GetMacsecSaStatsResponse) Descriptor() ([]byte, []int) { - return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{45} + return file_dataplane_proto_sai_macsec_proto_rawDescGZIP(), []int{47} } func (x *GetMacsecSaStatsResponse) GetValues() []uint64 { @@ -2909,7 +3065,7 @@ var file_dataplane_proto_sai_macsec_proto_rawDesc = string([]byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, - 0x74, 0x72, 0x22, 0xe3, 0x03, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, + 0x74, 0x72, 0x22, 0x94, 0x05, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, @@ -2933,652 +3089,721 @@ var file_dataplane_proto_sai_macsec_proto_rawDesc = string([]byte{ 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5a, 0x42, 0x13, 0x0a, - 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xb4, 0x02, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x00, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, - 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x6b, 0x0a, 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x02, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, - 0x5f, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, + 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x14, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, + 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5a, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, + 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, + 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xe5, 0x03, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, + 0x01, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x6b, 0x0a, 0x15, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x13, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x74, + 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, + 0x61, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, + 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, + 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, + 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0xdf, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, - 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, + 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5b, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, - 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xae, - 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5b, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, - 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, - 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, - 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, + 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, + 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x01, 0x0a, 0x1d, 0x53, 0x65, + 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x5c, 0x0a, + 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x20, + 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, + 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, + 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, - 0x75, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, - 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x99, 0x07, 0x0a, - 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x5e, - 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, - 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x06, 0x66, 0x6c, 0x6f, 0x77, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, - 0x63, 0x69, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, - 0x48, 0x02, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, - 0x12, 0x48, 0x0a, 0x1a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, - 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x17, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, - 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, - 0x48, 0x04, 0x52, 0x12, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x65, 0x63, 0x74, 0x61, 0x67, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x1c, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, - 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, - 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, - 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, - 0x01, 0x12, 0x65, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, - 0x48, 0x07, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, - 0x53, 0x75, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, - 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x10, 0x65, - 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, - 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x22, 0x34, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, + 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x99, 0x07, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x07, 0x66, 0x6c, 0x6f, 0x77, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x01, 0x52, 0x06, 0x66, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, + 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x63, 0x69, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x09, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x69, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, + 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x17, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, + 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x12, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x05, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, + 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, + 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x06, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, - 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, - 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, - 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x05, 0x0a, 0x1b, 0x53, 0x65, - 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x1a, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, - 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x17, 0x6d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x45, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x53, 0x63, 0x69, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x12, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, + 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, + 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x11, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, + 0x90, 0xad, 0x0f, 0x5c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x5f, 0x73, 0x63, 0x69, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, + 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x22, 0x0a, 0x20, + 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, + 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, + 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x29, + 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0xaf, 0x05, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x48, 0x0a, 0x1a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, + 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x04, 0x48, 0x00, 0x52, 0x17, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x45, 0x78, 0x70, 0x6c, 0x69, + 0x63, 0x69, 0x74, 0x53, 0x63, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3d, 0x0a, 0x14, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x12, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, + 0x65, 0x63, 0x74, 0x61, 0x67, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x52, + 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, + 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, + 0x02, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, + 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x08, 0x48, 0x03, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, + 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x13, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, 0x52, 0x11, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, + 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, + 0x48, 0x05, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, + 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x02, 0x52, 0x1c, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, - 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x03, 0x52, 0x1c, 0x6d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x13, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, - 0x69, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, - 0x69, 0x74, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, 0x52, 0x11, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x05, 0x52, 0x10, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x1d, 0x0a, - 0x1b, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x69, 0x63, 0x69, - 0x74, 0x5f, 0x73, 0x63, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, - 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x61, 0x67, 0x5f, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, - 0x73, 0x75, 0x69, 0x74, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x53, - 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, - 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, - 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, - 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, - 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x22, 0xf0, 0x04, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, - 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, - 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x05, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, - 0x73, 0x63, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x61, 0x6e, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x02, 0x61, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x73, 0x61, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x73, 0x61, 0x6b, - 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x04, 0x73, 0x61, 0x6c, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, - 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, - 0x64, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, - 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x09, 0x48, 0x07, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x73, 0x63, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x53, 0x73, 0x63, 0x69, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5d, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x42, - 0x05, 0x0a, 0x03, 0x5f, 0x61, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x61, 0x6b, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x73, 0x61, 0x6c, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, - 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x16, - 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x5f, 0x73, 0x73, 0x63, 0x69, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x22, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x18, 0x0a, - 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, - 0x70, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x00, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, - 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, - 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, - 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, - 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, - 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, 0x47, 0x65, - 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, + 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xf0, 0x04, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, + 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x20, 0x0a, 0x05, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x73, 0x63, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x1b, 0x0a, 0x02, 0x61, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x02, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x73, 0x61, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x03, 0x73, 0x61, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, + 0x04, 0x73, 0x61, 0x6c, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x04, 0x73, 0x61, 0x6c, 0x74, 0x88, 0x01, 0x01, 0x12, 0x26, + 0x0a, 0x08, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, + 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, + 0x13, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, + 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x07, 0x52, 0x11, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, + 0x73, 0x63, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x08, 0x52, 0x0a, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x73, 0x63, 0x69, 0x88, + 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x5d, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x5f, 0x69, 0x64, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x61, 0x6e, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x73, 0x61, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x61, 0x6c, + 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x73, 0x63, 0x69, + 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x15, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, - 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x2a, 0x92, 0x08, 0x0a, 0x0a, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, - 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, - 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x4d, 0x41, 0x43, 0x53, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, + 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, + 0x64, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x00, 0x52, 0x13, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x01, 0x52, 0x11, 0x6d, 0x69, 0x6e, + 0x69, 0x6d, 0x75, 0x6d, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x58, 0x70, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x78, 0x70, 0x6e, 0x42, 0x16, 0x0a, 0x14, 0x5f, + 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, + 0x78, 0x70, 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, + 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, + 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x92, 0x08, 0x0a, 0x0a, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x01, 0x12, 0x34, 0x0a, 0x30, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x43, 0x55, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, 0x47, 0x48, 0x5f, 0x53, 0x55, 0x50, + 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x3a, 0x0a, 0x36, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, - 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x55, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x4f, 0x55, - 0x47, 0x48, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x3a, - 0x0a, 0x36, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, - 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x53, - 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, - 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x2f, 0x0a, 0x2b, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, - 0x52, 0x54, 0x45, 0x44, 0x10, 0x05, 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x43, 0x49, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, - 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x22, - 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4e, - 0x5f, 0x33, 0x32, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, - 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x58, 0x50, 0x4e, 0x5f, 0x36, 0x34, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, - 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x09, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, - 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x31, 0x32, - 0x38, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x24, 0x0a, - 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x43, 0x4d, - 0x5f, 0x41, 0x45, 0x53, 0x32, 0x35, 0x36, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, - 0x44, 0x10, 0x0b, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x41, 0x47, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, - 0x53, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x1f, 0x0a, - 0x1b, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, - 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0d, 0x12, 0x23, - 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, - 0x52, 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, - 0x44, 0x10, 0x0e, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x0f, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x10, - 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x44, 0x10, - 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x13, 0x12, 0x26, 0x0a, - 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x48, 0x59, - 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x45, 0x4e, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x14, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, - 0x16, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x17, 0x12, 0x23, 0x0a, 0x1f, - 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x10, - 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, - 0x43, 0x5f, 0x53, 0x41, 0x10, 0x19, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, - 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, - 0x52, 0x5f, 0x53, 0x43, 0x10, 0x1a, 0x2a, 0xe7, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x4d, - 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, - 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x04, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, - 0x2a, 0x9c, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, - 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, - 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x10, 0x03, 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, + 0x45, 0x41, 0x44, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, + 0x2f, 0x0a, 0x2b, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x5f, 0x43, + 0x4c, 0x45, 0x41, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x05, + 0x12, 0x29, 0x0a, 0x25, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x53, 0x43, 0x49, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, + 0x52, 0x54, 0x45, 0x44, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, + 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x22, 0x0a, 0x1e, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4e, 0x5f, 0x33, 0x32, 0x42, 0x49, 0x54, + 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x58, 0x50, 0x4e, 0x5f, + 0x36, 0x34, 0x42, 0x49, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, + 0x09, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x31, 0x32, 0x38, 0x5f, 0x53, 0x55, 0x50, 0x50, + 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x43, 0x4d, 0x5f, 0x41, 0x45, 0x53, 0x32, 0x35, + 0x36, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x28, 0x0a, + 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x43, + 0x54, 0x41, 0x47, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x53, 0x5f, 0x53, 0x55, 0x50, 0x50, + 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x49, + 0x44, 0x45, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0d, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, + 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x42, 0x4f, 0x4f, + 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x0e, 0x12, 0x20, 0x0a, + 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, + 0x4d, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0f, 0x12, + 0x19, 0x0a, 0x15, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, + 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x10, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x5f, 0x54, + 0x50, 0x49, 0x44, 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, + 0x47, 0x53, 0x5f, 0x50, 0x41, 0x52, 0x53, 0x45, 0x44, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x13, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x5f, + 0x42, 0x59, 0x50, 0x41, 0x53, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x14, 0x12, + 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, + 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0x15, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x16, 0x12, 0x19, 0x0a, 0x15, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x10, 0x17, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x10, 0x18, 0x12, 0x23, 0x0a, 0x1f, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x10, 0x19, + 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x4f, 0x43, + 0x49, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x10, 0x1a, + 0x2a, 0xbb, 0x02, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, - 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, - 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x2a, - 0xe0, 0x03, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, - 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, - 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x49, 0x44, 0x10, - 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x49, 0x10, 0x03, - 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x49, 0x43, - 0x49, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, - 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x41, 0x47, 0x5f, - 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, - 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x44, 0x10, 0x06, - 0x12, 0x32, 0x0a, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, - 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x07, 0x12, 0x32, 0x0a, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, - 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x09, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x43, 0x49, - 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x24, 0x0a, 0x20, - 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, - 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x0b, 0x2a, 0xe4, 0x02, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, - 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, + 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x2a, + 0x0a, 0x26, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x06, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x07, 0x2a, 0xf0, + 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, + 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, - 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x49, 0x44, - 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4b, 0x10, - 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, - 0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, 0x53, 0x45, - 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, - 0x55, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x58, 0x50, 0x4e, 0x10, - 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x58, 0x50, 0x4e, 0x10, - 0x08, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x47, 0x52, - 0x45, 0x53, 0x53, 0x5f, 0x58, 0x50, 0x4e, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, - 0x45, 0x43, 0x5f, 0x53, 0x53, 0x43, 0x49, 0x10, 0x0a, 0x32, 0x8e, 0x16, 0x0a, 0x06, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x12, - 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x65, - 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, + 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, + 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, + 0x1c, 0x0a, 0x18, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, 0x25, 0x0a, + 0x21, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x04, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x05, 0x2a, 0xe0, 0x03, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, + 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, 0x49, 0x52, 0x45, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, 0x43, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x49, + 0x44, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x49, + 0x10, 0x03, 0x12, 0x2d, 0x0a, 0x29, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x45, 0x58, 0x50, 0x4c, + 0x49, 0x43, 0x49, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x04, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x45, 0x43, 0x54, 0x41, + 0x47, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0x05, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x44, + 0x10, 0x06, 0x12, 0x32, 0x0a, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x52, 0x45, 0x50, 0x4c, + 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x07, 0x12, 0x32, 0x0a, 0x2e, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x57, 0x49, 0x4e, 0x44, 0x4f, 0x57, 0x10, 0x08, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x10, 0x09, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x53, 0x55, 0x49, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x24, + 0x0a, 0x20, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x45, 0x4e, 0x43, 0x52, 0x59, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, + 0x4c, 0x45, 0x10, 0x0b, 0x2a, 0xe4, 0x02, 0x0a, 0x0c, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, + 0x61, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, + 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x44, + 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x43, 0x5f, + 0x49, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, + 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, + 0x4b, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4c, 0x54, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, + 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x55, 0x54, 0x48, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x4d, 0x41, 0x43, + 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, + 0x49, 0x47, 0x55, 0x52, 0x45, 0x44, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x58, 0x50, + 0x4e, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x58, 0x50, + 0x4e, 0x10, 0x08, 0x12, 0x26, 0x0a, 0x22, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x58, 0x50, 0x4e, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x4d, + 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x53, 0x43, 0x49, 0x10, 0x0a, 0x32, 0x98, 0x17, 0x0a, 0x06, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, + 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, + 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, + 0x74, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, + 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, + 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x12, - 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, - 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, - 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x63, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, + 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, + 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, - 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, - 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, - 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, - 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x12, 0x2c, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x53, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, + 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, + 0x46, 0x6c, 0x6f, 0x77, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x30, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x46, + 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, - 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, - 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2c, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2c, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, - 0x63, 0x53, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, - 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x53, 0x63, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, + 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, }) var ( @@ -3594,7 +3819,7 @@ func file_dataplane_proto_sai_macsec_proto_rawDescGZIP() []byte { } var file_dataplane_proto_sai_macsec_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_dataplane_proto_sai_macsec_proto_msgTypes = make([]protoimpl.MessageInfo, 46) +var file_dataplane_proto_sai_macsec_proto_msgTypes = make([]protoimpl.MessageInfo, 48) var file_dataplane_proto_sai_macsec_proto_goTypes = []any{ (MacsecAttr)(0), // 0: lemming.dataplane.sai.MacsecAttr (MacsecPortAttr)(0), // 1: lemming.dataplane.sai.MacsecPortAttr @@ -3623,121 +3848,130 @@ var file_dataplane_proto_sai_macsec_proto_goTypes = []any{ (*CreateMacsecFlowResponse)(nil), // 24: lemming.dataplane.sai.CreateMacsecFlowResponse (*RemoveMacsecFlowRequest)(nil), // 25: lemming.dataplane.sai.RemoveMacsecFlowRequest (*RemoveMacsecFlowResponse)(nil), // 26: lemming.dataplane.sai.RemoveMacsecFlowResponse - (*GetMacsecFlowAttributeRequest)(nil), // 27: lemming.dataplane.sai.GetMacsecFlowAttributeRequest - (*GetMacsecFlowAttributeResponse)(nil), // 28: lemming.dataplane.sai.GetMacsecFlowAttributeResponse - (*GetMacsecFlowStatsRequest)(nil), // 29: lemming.dataplane.sai.GetMacsecFlowStatsRequest - (*GetMacsecFlowStatsResponse)(nil), // 30: lemming.dataplane.sai.GetMacsecFlowStatsResponse - (*CreateMacsecScRequest)(nil), // 31: lemming.dataplane.sai.CreateMacsecScRequest - (*CreateMacsecScResponse)(nil), // 32: lemming.dataplane.sai.CreateMacsecScResponse - (*RemoveMacsecScRequest)(nil), // 33: lemming.dataplane.sai.RemoveMacsecScRequest - (*RemoveMacsecScResponse)(nil), // 34: lemming.dataplane.sai.RemoveMacsecScResponse - (*SetMacsecScAttributeRequest)(nil), // 35: lemming.dataplane.sai.SetMacsecScAttributeRequest - (*SetMacsecScAttributeResponse)(nil), // 36: lemming.dataplane.sai.SetMacsecScAttributeResponse - (*GetMacsecScAttributeRequest)(nil), // 37: lemming.dataplane.sai.GetMacsecScAttributeRequest - (*GetMacsecScAttributeResponse)(nil), // 38: lemming.dataplane.sai.GetMacsecScAttributeResponse - (*GetMacsecScStatsRequest)(nil), // 39: lemming.dataplane.sai.GetMacsecScStatsRequest - (*GetMacsecScStatsResponse)(nil), // 40: lemming.dataplane.sai.GetMacsecScStatsResponse - (*CreateMacsecSaRequest)(nil), // 41: lemming.dataplane.sai.CreateMacsecSaRequest - (*CreateMacsecSaResponse)(nil), // 42: lemming.dataplane.sai.CreateMacsecSaResponse - (*RemoveMacsecSaRequest)(nil), // 43: lemming.dataplane.sai.RemoveMacsecSaRequest - (*RemoveMacsecSaResponse)(nil), // 44: lemming.dataplane.sai.RemoveMacsecSaResponse - (*SetMacsecSaAttributeRequest)(nil), // 45: lemming.dataplane.sai.SetMacsecSaAttributeRequest - (*SetMacsecSaAttributeResponse)(nil), // 46: lemming.dataplane.sai.SetMacsecSaAttributeResponse - (*GetMacsecSaAttributeRequest)(nil), // 47: lemming.dataplane.sai.GetMacsecSaAttributeRequest - (*GetMacsecSaAttributeResponse)(nil), // 48: lemming.dataplane.sai.GetMacsecSaAttributeResponse - (*GetMacsecSaStatsRequest)(nil), // 49: lemming.dataplane.sai.GetMacsecSaStatsRequest - (*GetMacsecSaStatsResponse)(nil), // 50: lemming.dataplane.sai.GetMacsecSaStatsResponse - (MacsecDirection)(0), // 51: lemming.dataplane.sai.MacsecDirection - (StatsMode)(0), // 52: lemming.dataplane.sai.StatsMode - (*MacsecAttribute)(nil), // 53: lemming.dataplane.sai.MacsecAttribute - (SwitchSwitchingMode)(0), // 54: lemming.dataplane.sai.SwitchSwitchingMode - (*MacsecPortAttribute)(nil), // 55: lemming.dataplane.sai.MacsecPortAttribute - (MacsecPortStat)(0), // 56: lemming.dataplane.sai.MacsecPortStat - (*MacsecFlowAttribute)(nil), // 57: lemming.dataplane.sai.MacsecFlowAttribute - (MacsecFlowStat)(0), // 58: lemming.dataplane.sai.MacsecFlowStat - (MacsecCipherSuite)(0), // 59: lemming.dataplane.sai.MacsecCipherSuite - (*MacsecScAttribute)(nil), // 60: lemming.dataplane.sai.MacsecScAttribute - (MacsecScStat)(0), // 61: lemming.dataplane.sai.MacsecScStat - (*MacsecSaAttribute)(nil), // 62: lemming.dataplane.sai.MacsecSaAttribute - (MacsecSaStat)(0), // 63: lemming.dataplane.sai.MacsecSaStat + (*SetMacsecFlowAttributeRequest)(nil), // 27: lemming.dataplane.sai.SetMacsecFlowAttributeRequest + (*SetMacsecFlowAttributeResponse)(nil), // 28: lemming.dataplane.sai.SetMacsecFlowAttributeResponse + (*GetMacsecFlowAttributeRequest)(nil), // 29: lemming.dataplane.sai.GetMacsecFlowAttributeRequest + (*GetMacsecFlowAttributeResponse)(nil), // 30: lemming.dataplane.sai.GetMacsecFlowAttributeResponse + (*GetMacsecFlowStatsRequest)(nil), // 31: lemming.dataplane.sai.GetMacsecFlowStatsRequest + (*GetMacsecFlowStatsResponse)(nil), // 32: lemming.dataplane.sai.GetMacsecFlowStatsResponse + (*CreateMacsecScRequest)(nil), // 33: lemming.dataplane.sai.CreateMacsecScRequest + (*CreateMacsecScResponse)(nil), // 34: lemming.dataplane.sai.CreateMacsecScResponse + (*RemoveMacsecScRequest)(nil), // 35: lemming.dataplane.sai.RemoveMacsecScRequest + (*RemoveMacsecScResponse)(nil), // 36: lemming.dataplane.sai.RemoveMacsecScResponse + (*SetMacsecScAttributeRequest)(nil), // 37: lemming.dataplane.sai.SetMacsecScAttributeRequest + (*SetMacsecScAttributeResponse)(nil), // 38: lemming.dataplane.sai.SetMacsecScAttributeResponse + (*GetMacsecScAttributeRequest)(nil), // 39: lemming.dataplane.sai.GetMacsecScAttributeRequest + (*GetMacsecScAttributeResponse)(nil), // 40: lemming.dataplane.sai.GetMacsecScAttributeResponse + (*GetMacsecScStatsRequest)(nil), // 41: lemming.dataplane.sai.GetMacsecScStatsRequest + (*GetMacsecScStatsResponse)(nil), // 42: lemming.dataplane.sai.GetMacsecScStatsResponse + (*CreateMacsecSaRequest)(nil), // 43: lemming.dataplane.sai.CreateMacsecSaRequest + (*CreateMacsecSaResponse)(nil), // 44: lemming.dataplane.sai.CreateMacsecSaResponse + (*RemoveMacsecSaRequest)(nil), // 45: lemming.dataplane.sai.RemoveMacsecSaRequest + (*RemoveMacsecSaResponse)(nil), // 46: lemming.dataplane.sai.RemoveMacsecSaResponse + (*SetMacsecSaAttributeRequest)(nil), // 47: lemming.dataplane.sai.SetMacsecSaAttributeRequest + (*SetMacsecSaAttributeResponse)(nil), // 48: lemming.dataplane.sai.SetMacsecSaAttributeResponse + (*GetMacsecSaAttributeRequest)(nil), // 49: lemming.dataplane.sai.GetMacsecSaAttributeRequest + (*GetMacsecSaAttributeResponse)(nil), // 50: lemming.dataplane.sai.GetMacsecSaAttributeResponse + (*GetMacsecSaStatsRequest)(nil), // 51: lemming.dataplane.sai.GetMacsecSaStatsRequest + (*GetMacsecSaStatsResponse)(nil), // 52: lemming.dataplane.sai.GetMacsecSaStatsResponse + (MacsecDirection)(0), // 53: lemming.dataplane.sai.MacsecDirection + (StatsMode)(0), // 54: lemming.dataplane.sai.StatsMode + (*MacsecAttribute)(nil), // 55: lemming.dataplane.sai.MacsecAttribute + (SwitchSwitchingMode)(0), // 56: lemming.dataplane.sai.SwitchSwitchingMode + (StatsCountMode)(0), // 57: lemming.dataplane.sai.StatsCountMode + (*MacsecPortAttribute)(nil), // 58: lemming.dataplane.sai.MacsecPortAttribute + (MacsecPortStat)(0), // 59: lemming.dataplane.sai.MacsecPortStat + (*MacsecFlowAttribute)(nil), // 60: lemming.dataplane.sai.MacsecFlowAttribute + (MacsecFlowStat)(0), // 61: lemming.dataplane.sai.MacsecFlowStat + (MacsecCipherSuite)(0), // 62: lemming.dataplane.sai.MacsecCipherSuite + (*MacsecScAttribute)(nil), // 63: lemming.dataplane.sai.MacsecScAttribute + (MacsecScStat)(0), // 64: lemming.dataplane.sai.MacsecScStat + (*MacsecSaAttribute)(nil), // 65: lemming.dataplane.sai.MacsecSaAttribute + (MacsecSaStat)(0), // 66: lemming.dataplane.sai.MacsecSaStat } var file_dataplane_proto_sai_macsec_proto_depIdxs = []int32{ - 51, // 0: lemming.dataplane.sai.CreateMacsecRequest.direction:type_name -> lemming.dataplane.sai.MacsecDirection - 52, // 1: lemming.dataplane.sai.CreateMacsecRequest.stats_mode:type_name -> lemming.dataplane.sai.StatsMode - 52, // 2: lemming.dataplane.sai.SetMacsecAttributeRequest.stats_mode:type_name -> lemming.dataplane.sai.StatsMode + 53, // 0: lemming.dataplane.sai.CreateMacsecRequest.direction:type_name -> lemming.dataplane.sai.MacsecDirection + 54, // 1: lemming.dataplane.sai.CreateMacsecRequest.stats_mode:type_name -> lemming.dataplane.sai.StatsMode + 54, // 2: lemming.dataplane.sai.SetMacsecAttributeRequest.stats_mode:type_name -> lemming.dataplane.sai.StatsMode 0, // 3: lemming.dataplane.sai.GetMacsecAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecAttr - 53, // 4: lemming.dataplane.sai.GetMacsecAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecAttribute - 51, // 5: lemming.dataplane.sai.CreateMacsecPortRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 54, // 6: lemming.dataplane.sai.CreateMacsecPortRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 54, // 7: lemming.dataplane.sai.SetMacsecPortAttributeRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 1, // 8: lemming.dataplane.sai.GetMacsecPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecPortAttr - 55, // 9: lemming.dataplane.sai.GetMacsecPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecPortAttribute - 56, // 10: lemming.dataplane.sai.GetMacsecPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecPortStat - 51, // 11: lemming.dataplane.sai.CreateMacsecFlowRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 2, // 12: lemming.dataplane.sai.GetMacsecFlowAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecFlowAttr - 57, // 13: lemming.dataplane.sai.GetMacsecFlowAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecFlowAttribute - 58, // 14: lemming.dataplane.sai.GetMacsecFlowStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecFlowStat - 51, // 15: lemming.dataplane.sai.CreateMacsecScRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 59, // 16: lemming.dataplane.sai.CreateMacsecScRequest.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 59, // 17: lemming.dataplane.sai.SetMacsecScAttributeRequest.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite - 3, // 18: lemming.dataplane.sai.GetMacsecScAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecScAttr - 60, // 19: lemming.dataplane.sai.GetMacsecScAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecScAttribute - 61, // 20: lemming.dataplane.sai.GetMacsecScStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecScStat - 51, // 21: lemming.dataplane.sai.CreateMacsecSaRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection - 4, // 22: lemming.dataplane.sai.GetMacsecSaAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecSaAttr - 62, // 23: lemming.dataplane.sai.GetMacsecSaAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecSaAttribute - 63, // 24: lemming.dataplane.sai.GetMacsecSaStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecSaStat - 5, // 25: lemming.dataplane.sai.Macsec.CreateMacsec:input_type -> lemming.dataplane.sai.CreateMacsecRequest - 7, // 26: lemming.dataplane.sai.Macsec.RemoveMacsec:input_type -> lemming.dataplane.sai.RemoveMacsecRequest - 9, // 27: lemming.dataplane.sai.Macsec.SetMacsecAttribute:input_type -> lemming.dataplane.sai.SetMacsecAttributeRequest - 11, // 28: lemming.dataplane.sai.Macsec.GetMacsecAttribute:input_type -> lemming.dataplane.sai.GetMacsecAttributeRequest - 13, // 29: lemming.dataplane.sai.Macsec.CreateMacsecPort:input_type -> lemming.dataplane.sai.CreateMacsecPortRequest - 15, // 30: lemming.dataplane.sai.Macsec.RemoveMacsecPort:input_type -> lemming.dataplane.sai.RemoveMacsecPortRequest - 17, // 31: lemming.dataplane.sai.Macsec.SetMacsecPortAttribute:input_type -> lemming.dataplane.sai.SetMacsecPortAttributeRequest - 19, // 32: lemming.dataplane.sai.Macsec.GetMacsecPortAttribute:input_type -> lemming.dataplane.sai.GetMacsecPortAttributeRequest - 21, // 33: lemming.dataplane.sai.Macsec.GetMacsecPortStats:input_type -> lemming.dataplane.sai.GetMacsecPortStatsRequest - 23, // 34: lemming.dataplane.sai.Macsec.CreateMacsecFlow:input_type -> lemming.dataplane.sai.CreateMacsecFlowRequest - 25, // 35: lemming.dataplane.sai.Macsec.RemoveMacsecFlow:input_type -> lemming.dataplane.sai.RemoveMacsecFlowRequest - 27, // 36: lemming.dataplane.sai.Macsec.GetMacsecFlowAttribute:input_type -> lemming.dataplane.sai.GetMacsecFlowAttributeRequest - 29, // 37: lemming.dataplane.sai.Macsec.GetMacsecFlowStats:input_type -> lemming.dataplane.sai.GetMacsecFlowStatsRequest - 31, // 38: lemming.dataplane.sai.Macsec.CreateMacsecSc:input_type -> lemming.dataplane.sai.CreateMacsecScRequest - 33, // 39: lemming.dataplane.sai.Macsec.RemoveMacsecSc:input_type -> lemming.dataplane.sai.RemoveMacsecScRequest - 35, // 40: lemming.dataplane.sai.Macsec.SetMacsecScAttribute:input_type -> lemming.dataplane.sai.SetMacsecScAttributeRequest - 37, // 41: lemming.dataplane.sai.Macsec.GetMacsecScAttribute:input_type -> lemming.dataplane.sai.GetMacsecScAttributeRequest - 39, // 42: lemming.dataplane.sai.Macsec.GetMacsecScStats:input_type -> lemming.dataplane.sai.GetMacsecScStatsRequest - 41, // 43: lemming.dataplane.sai.Macsec.CreateMacsecSa:input_type -> lemming.dataplane.sai.CreateMacsecSaRequest - 43, // 44: lemming.dataplane.sai.Macsec.RemoveMacsecSa:input_type -> lemming.dataplane.sai.RemoveMacsecSaRequest - 45, // 45: lemming.dataplane.sai.Macsec.SetMacsecSaAttribute:input_type -> lemming.dataplane.sai.SetMacsecSaAttributeRequest - 47, // 46: lemming.dataplane.sai.Macsec.GetMacsecSaAttribute:input_type -> lemming.dataplane.sai.GetMacsecSaAttributeRequest - 49, // 47: lemming.dataplane.sai.Macsec.GetMacsecSaStats:input_type -> lemming.dataplane.sai.GetMacsecSaStatsRequest - 6, // 48: lemming.dataplane.sai.Macsec.CreateMacsec:output_type -> lemming.dataplane.sai.CreateMacsecResponse - 8, // 49: lemming.dataplane.sai.Macsec.RemoveMacsec:output_type -> lemming.dataplane.sai.RemoveMacsecResponse - 10, // 50: lemming.dataplane.sai.Macsec.SetMacsecAttribute:output_type -> lemming.dataplane.sai.SetMacsecAttributeResponse - 12, // 51: lemming.dataplane.sai.Macsec.GetMacsecAttribute:output_type -> lemming.dataplane.sai.GetMacsecAttributeResponse - 14, // 52: lemming.dataplane.sai.Macsec.CreateMacsecPort:output_type -> lemming.dataplane.sai.CreateMacsecPortResponse - 16, // 53: lemming.dataplane.sai.Macsec.RemoveMacsecPort:output_type -> lemming.dataplane.sai.RemoveMacsecPortResponse - 18, // 54: lemming.dataplane.sai.Macsec.SetMacsecPortAttribute:output_type -> lemming.dataplane.sai.SetMacsecPortAttributeResponse - 20, // 55: lemming.dataplane.sai.Macsec.GetMacsecPortAttribute:output_type -> lemming.dataplane.sai.GetMacsecPortAttributeResponse - 22, // 56: lemming.dataplane.sai.Macsec.GetMacsecPortStats:output_type -> lemming.dataplane.sai.GetMacsecPortStatsResponse - 24, // 57: lemming.dataplane.sai.Macsec.CreateMacsecFlow:output_type -> lemming.dataplane.sai.CreateMacsecFlowResponse - 26, // 58: lemming.dataplane.sai.Macsec.RemoveMacsecFlow:output_type -> lemming.dataplane.sai.RemoveMacsecFlowResponse - 28, // 59: lemming.dataplane.sai.Macsec.GetMacsecFlowAttribute:output_type -> lemming.dataplane.sai.GetMacsecFlowAttributeResponse - 30, // 60: lemming.dataplane.sai.Macsec.GetMacsecFlowStats:output_type -> lemming.dataplane.sai.GetMacsecFlowStatsResponse - 32, // 61: lemming.dataplane.sai.Macsec.CreateMacsecSc:output_type -> lemming.dataplane.sai.CreateMacsecScResponse - 34, // 62: lemming.dataplane.sai.Macsec.RemoveMacsecSc:output_type -> lemming.dataplane.sai.RemoveMacsecScResponse - 36, // 63: lemming.dataplane.sai.Macsec.SetMacsecScAttribute:output_type -> lemming.dataplane.sai.SetMacsecScAttributeResponse - 38, // 64: lemming.dataplane.sai.Macsec.GetMacsecScAttribute:output_type -> lemming.dataplane.sai.GetMacsecScAttributeResponse - 40, // 65: lemming.dataplane.sai.Macsec.GetMacsecScStats:output_type -> lemming.dataplane.sai.GetMacsecScStatsResponse - 42, // 66: lemming.dataplane.sai.Macsec.CreateMacsecSa:output_type -> lemming.dataplane.sai.CreateMacsecSaResponse - 44, // 67: lemming.dataplane.sai.Macsec.RemoveMacsecSa:output_type -> lemming.dataplane.sai.RemoveMacsecSaResponse - 46, // 68: lemming.dataplane.sai.Macsec.SetMacsecSaAttribute:output_type -> lemming.dataplane.sai.SetMacsecSaAttributeResponse - 48, // 69: lemming.dataplane.sai.Macsec.GetMacsecSaAttribute:output_type -> lemming.dataplane.sai.GetMacsecSaAttributeResponse - 50, // 70: lemming.dataplane.sai.Macsec.GetMacsecSaStats:output_type -> lemming.dataplane.sai.GetMacsecSaStatsResponse - 48, // [48:71] is the sub-list for method output_type - 25, // [25:48] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 55, // 4: lemming.dataplane.sai.GetMacsecAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecAttribute + 53, // 5: lemming.dataplane.sai.CreateMacsecPortRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 56, // 6: lemming.dataplane.sai.CreateMacsecPortRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 57, // 7: lemming.dataplane.sai.CreateMacsecPortRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 56, // 8: lemming.dataplane.sai.SetMacsecPortAttributeRequest.switch_switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 57, // 9: lemming.dataplane.sai.SetMacsecPortAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 1, // 10: lemming.dataplane.sai.GetMacsecPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecPortAttr + 58, // 11: lemming.dataplane.sai.GetMacsecPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecPortAttribute + 59, // 12: lemming.dataplane.sai.GetMacsecPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecPortStat + 53, // 13: lemming.dataplane.sai.CreateMacsecFlowRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 57, // 14: lemming.dataplane.sai.CreateMacsecFlowRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 57, // 15: lemming.dataplane.sai.SetMacsecFlowAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 2, // 16: lemming.dataplane.sai.GetMacsecFlowAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecFlowAttr + 60, // 17: lemming.dataplane.sai.GetMacsecFlowAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecFlowAttribute + 61, // 18: lemming.dataplane.sai.GetMacsecFlowStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecFlowStat + 53, // 19: lemming.dataplane.sai.CreateMacsecScRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 62, // 20: lemming.dataplane.sai.CreateMacsecScRequest.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite + 62, // 21: lemming.dataplane.sai.SetMacsecScAttributeRequest.macsec_cipher_suite:type_name -> lemming.dataplane.sai.MacsecCipherSuite + 3, // 22: lemming.dataplane.sai.GetMacsecScAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecScAttr + 63, // 23: lemming.dataplane.sai.GetMacsecScAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecScAttribute + 64, // 24: lemming.dataplane.sai.GetMacsecScStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecScStat + 53, // 25: lemming.dataplane.sai.CreateMacsecSaRequest.macsec_direction:type_name -> lemming.dataplane.sai.MacsecDirection + 4, // 26: lemming.dataplane.sai.GetMacsecSaAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MacsecSaAttr + 65, // 27: lemming.dataplane.sai.GetMacsecSaAttributeResponse.attr:type_name -> lemming.dataplane.sai.MacsecSaAttribute + 66, // 28: lemming.dataplane.sai.GetMacsecSaStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.MacsecSaStat + 5, // 29: lemming.dataplane.sai.Macsec.CreateMacsec:input_type -> lemming.dataplane.sai.CreateMacsecRequest + 7, // 30: lemming.dataplane.sai.Macsec.RemoveMacsec:input_type -> lemming.dataplane.sai.RemoveMacsecRequest + 9, // 31: lemming.dataplane.sai.Macsec.SetMacsecAttribute:input_type -> lemming.dataplane.sai.SetMacsecAttributeRequest + 11, // 32: lemming.dataplane.sai.Macsec.GetMacsecAttribute:input_type -> lemming.dataplane.sai.GetMacsecAttributeRequest + 13, // 33: lemming.dataplane.sai.Macsec.CreateMacsecPort:input_type -> lemming.dataplane.sai.CreateMacsecPortRequest + 15, // 34: lemming.dataplane.sai.Macsec.RemoveMacsecPort:input_type -> lemming.dataplane.sai.RemoveMacsecPortRequest + 17, // 35: lemming.dataplane.sai.Macsec.SetMacsecPortAttribute:input_type -> lemming.dataplane.sai.SetMacsecPortAttributeRequest + 19, // 36: lemming.dataplane.sai.Macsec.GetMacsecPortAttribute:input_type -> lemming.dataplane.sai.GetMacsecPortAttributeRequest + 21, // 37: lemming.dataplane.sai.Macsec.GetMacsecPortStats:input_type -> lemming.dataplane.sai.GetMacsecPortStatsRequest + 23, // 38: lemming.dataplane.sai.Macsec.CreateMacsecFlow:input_type -> lemming.dataplane.sai.CreateMacsecFlowRequest + 25, // 39: lemming.dataplane.sai.Macsec.RemoveMacsecFlow:input_type -> lemming.dataplane.sai.RemoveMacsecFlowRequest + 27, // 40: lemming.dataplane.sai.Macsec.SetMacsecFlowAttribute:input_type -> lemming.dataplane.sai.SetMacsecFlowAttributeRequest + 29, // 41: lemming.dataplane.sai.Macsec.GetMacsecFlowAttribute:input_type -> lemming.dataplane.sai.GetMacsecFlowAttributeRequest + 31, // 42: lemming.dataplane.sai.Macsec.GetMacsecFlowStats:input_type -> lemming.dataplane.sai.GetMacsecFlowStatsRequest + 33, // 43: lemming.dataplane.sai.Macsec.CreateMacsecSc:input_type -> lemming.dataplane.sai.CreateMacsecScRequest + 35, // 44: lemming.dataplane.sai.Macsec.RemoveMacsecSc:input_type -> lemming.dataplane.sai.RemoveMacsecScRequest + 37, // 45: lemming.dataplane.sai.Macsec.SetMacsecScAttribute:input_type -> lemming.dataplane.sai.SetMacsecScAttributeRequest + 39, // 46: lemming.dataplane.sai.Macsec.GetMacsecScAttribute:input_type -> lemming.dataplane.sai.GetMacsecScAttributeRequest + 41, // 47: lemming.dataplane.sai.Macsec.GetMacsecScStats:input_type -> lemming.dataplane.sai.GetMacsecScStatsRequest + 43, // 48: lemming.dataplane.sai.Macsec.CreateMacsecSa:input_type -> lemming.dataplane.sai.CreateMacsecSaRequest + 45, // 49: lemming.dataplane.sai.Macsec.RemoveMacsecSa:input_type -> lemming.dataplane.sai.RemoveMacsecSaRequest + 47, // 50: lemming.dataplane.sai.Macsec.SetMacsecSaAttribute:input_type -> lemming.dataplane.sai.SetMacsecSaAttributeRequest + 49, // 51: lemming.dataplane.sai.Macsec.GetMacsecSaAttribute:input_type -> lemming.dataplane.sai.GetMacsecSaAttributeRequest + 51, // 52: lemming.dataplane.sai.Macsec.GetMacsecSaStats:input_type -> lemming.dataplane.sai.GetMacsecSaStatsRequest + 6, // 53: lemming.dataplane.sai.Macsec.CreateMacsec:output_type -> lemming.dataplane.sai.CreateMacsecResponse + 8, // 54: lemming.dataplane.sai.Macsec.RemoveMacsec:output_type -> lemming.dataplane.sai.RemoveMacsecResponse + 10, // 55: lemming.dataplane.sai.Macsec.SetMacsecAttribute:output_type -> lemming.dataplane.sai.SetMacsecAttributeResponse + 12, // 56: lemming.dataplane.sai.Macsec.GetMacsecAttribute:output_type -> lemming.dataplane.sai.GetMacsecAttributeResponse + 14, // 57: lemming.dataplane.sai.Macsec.CreateMacsecPort:output_type -> lemming.dataplane.sai.CreateMacsecPortResponse + 16, // 58: lemming.dataplane.sai.Macsec.RemoveMacsecPort:output_type -> lemming.dataplane.sai.RemoveMacsecPortResponse + 18, // 59: lemming.dataplane.sai.Macsec.SetMacsecPortAttribute:output_type -> lemming.dataplane.sai.SetMacsecPortAttributeResponse + 20, // 60: lemming.dataplane.sai.Macsec.GetMacsecPortAttribute:output_type -> lemming.dataplane.sai.GetMacsecPortAttributeResponse + 22, // 61: lemming.dataplane.sai.Macsec.GetMacsecPortStats:output_type -> lemming.dataplane.sai.GetMacsecPortStatsResponse + 24, // 62: lemming.dataplane.sai.Macsec.CreateMacsecFlow:output_type -> lemming.dataplane.sai.CreateMacsecFlowResponse + 26, // 63: lemming.dataplane.sai.Macsec.RemoveMacsecFlow:output_type -> lemming.dataplane.sai.RemoveMacsecFlowResponse + 28, // 64: lemming.dataplane.sai.Macsec.SetMacsecFlowAttribute:output_type -> lemming.dataplane.sai.SetMacsecFlowAttributeResponse + 30, // 65: lemming.dataplane.sai.Macsec.GetMacsecFlowAttribute:output_type -> lemming.dataplane.sai.GetMacsecFlowAttributeResponse + 32, // 66: lemming.dataplane.sai.Macsec.GetMacsecFlowStats:output_type -> lemming.dataplane.sai.GetMacsecFlowStatsResponse + 34, // 67: lemming.dataplane.sai.Macsec.CreateMacsecSc:output_type -> lemming.dataplane.sai.CreateMacsecScResponse + 36, // 68: lemming.dataplane.sai.Macsec.RemoveMacsecSc:output_type -> lemming.dataplane.sai.RemoveMacsecScResponse + 38, // 69: lemming.dataplane.sai.Macsec.SetMacsecScAttribute:output_type -> lemming.dataplane.sai.SetMacsecScAttributeResponse + 40, // 70: lemming.dataplane.sai.Macsec.GetMacsecScAttribute:output_type -> lemming.dataplane.sai.GetMacsecScAttributeResponse + 42, // 71: lemming.dataplane.sai.Macsec.GetMacsecScStats:output_type -> lemming.dataplane.sai.GetMacsecScStatsResponse + 44, // 72: lemming.dataplane.sai.Macsec.CreateMacsecSa:output_type -> lemming.dataplane.sai.CreateMacsecSaResponse + 46, // 73: lemming.dataplane.sai.Macsec.RemoveMacsecSa:output_type -> lemming.dataplane.sai.RemoveMacsecSaResponse + 48, // 74: lemming.dataplane.sai.Macsec.SetMacsecSaAttribute:output_type -> lemming.dataplane.sai.SetMacsecSaAttributeResponse + 50, // 75: lemming.dataplane.sai.Macsec.GetMacsecSaAttribute:output_type -> lemming.dataplane.sai.GetMacsecSaAttributeResponse + 52, // 76: lemming.dataplane.sai.Macsec.GetMacsecSaStats:output_type -> lemming.dataplane.sai.GetMacsecSaStatsResponse + 53, // [53:77] is the sub-list for method output_type + 29, // [29:53] is the sub-list for method input_type + 29, // [29:29] is the sub-list for extension type_name + 29, // [29:29] is the sub-list for extension extendee + 0, // [0:29] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_macsec_proto_init() } @@ -3751,17 +3985,18 @@ func file_dataplane_proto_sai_macsec_proto_init() { file_dataplane_proto_sai_macsec_proto_msgTypes[8].OneofWrappers = []any{} file_dataplane_proto_sai_macsec_proto_msgTypes[12].OneofWrappers = []any{} file_dataplane_proto_sai_macsec_proto_msgTypes[18].OneofWrappers = []any{} - file_dataplane_proto_sai_macsec_proto_msgTypes[26].OneofWrappers = []any{} - file_dataplane_proto_sai_macsec_proto_msgTypes[30].OneofWrappers = []any{} - file_dataplane_proto_sai_macsec_proto_msgTypes[36].OneofWrappers = []any{} - file_dataplane_proto_sai_macsec_proto_msgTypes[40].OneofWrappers = []any{} + file_dataplane_proto_sai_macsec_proto_msgTypes[22].OneofWrappers = []any{} + file_dataplane_proto_sai_macsec_proto_msgTypes[28].OneofWrappers = []any{} + file_dataplane_proto_sai_macsec_proto_msgTypes[32].OneofWrappers = []any{} + file_dataplane_proto_sai_macsec_proto_msgTypes[38].OneofWrappers = []any{} + file_dataplane_proto_sai_macsec_proto_msgTypes[42].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_dataplane_proto_sai_macsec_proto_rawDesc), len(file_dataplane_proto_sai_macsec_proto_rawDesc)), NumEnums: 5, - NumMessages: 46, + NumMessages: 48, NumExtensions: 0, NumServices: 1, }, diff --git a/dataplane/proto/sai/macsec.proto b/dataplane/proto/sai/macsec.proto index 03cdf0b77..2156d0c2c 100644 --- a/dataplane/proto/sai/macsec.proto +++ b/dataplane/proto/sai/macsec.proto @@ -7,342 +7,370 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum MacsecAttr { - MACSEC_ATTR_UNSPECIFIED = 0; - MACSEC_ATTR_DIRECTION = 1; - MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED = 2; - MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED = 3; - MACSEC_ATTR_STATS_MODE_READ_SUPPORTED = 4; - MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED = 5; - MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL = 6; - MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST = 7; - MACSEC_ATTR_PN_32BIT_SUPPORTED = 8; - MACSEC_ATTR_XPN_64BIT_SUPPORTED = 9; - MACSEC_ATTR_GCM_AES128_SUPPORTED = 10; - MACSEC_ATTR_GCM_AES256_SUPPORTED = 11; - MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED = 12; - MACSEC_ATTR_SYSTEM_SIDE_MTU = 13; - MACSEC_ATTR_WARM_BOOT_SUPPORTED = 14; - MACSEC_ATTR_WARM_BOOT_ENABLE = 15; - MACSEC_ATTR_CTAG_TPID = 16; - MACSEC_ATTR_STAG_TPID = 17; - MACSEC_ATTR_MAX_VLAN_TAGS_PARSED = 18; - MACSEC_ATTR_STATS_MODE = 19; - MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE = 20; - MACSEC_ATTR_SUPPORTED_PORT_LIST = 21; - MACSEC_ATTR_AVAILABLE_MACSEC_FLOW = 22; - MACSEC_ATTR_FLOW_LIST = 23; - MACSEC_ATTR_AVAILABLE_MACSEC_SC = 24; - MACSEC_ATTR_AVAILABLE_MACSEC_SA = 25; - MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC = 26; + MACSEC_ATTR_UNSPECIFIED = 0; + MACSEC_ATTR_DIRECTION = 1; + MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED = 2; + MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED = 3; + MACSEC_ATTR_STATS_MODE_READ_SUPPORTED = 4; + MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED = 5; + MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL = 6; + MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST = 7; + MACSEC_ATTR_PN_32BIT_SUPPORTED = 8; + MACSEC_ATTR_XPN_64BIT_SUPPORTED = 9; + MACSEC_ATTR_GCM_AES128_SUPPORTED = 10; + MACSEC_ATTR_GCM_AES256_SUPPORTED = 11; + MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED = 12; + MACSEC_ATTR_SYSTEM_SIDE_MTU = 13; + MACSEC_ATTR_WARM_BOOT_SUPPORTED = 14; + MACSEC_ATTR_WARM_BOOT_ENABLE = 15; + MACSEC_ATTR_CTAG_TPID = 16; + MACSEC_ATTR_STAG_TPID = 17; + MACSEC_ATTR_MAX_VLAN_TAGS_PARSED = 18; + MACSEC_ATTR_STATS_MODE = 19; + MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE = 20; + MACSEC_ATTR_SUPPORTED_PORT_LIST = 21; + MACSEC_ATTR_AVAILABLE_MACSEC_FLOW = 22; + MACSEC_ATTR_FLOW_LIST = 23; + MACSEC_ATTR_AVAILABLE_MACSEC_SC = 24; + MACSEC_ATTR_AVAILABLE_MACSEC_SA = 25; + MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC = 26; } enum MacsecPortAttr { - MACSEC_PORT_ATTR_UNSPECIFIED = 0; - MACSEC_PORT_ATTR_MACSEC_DIRECTION = 1; - MACSEC_PORT_ATTR_PORT_ID = 2; - MACSEC_PORT_ATTR_CTAG_ENABLE = 3; - MACSEC_PORT_ATTR_STAG_ENABLE = 4; - MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE = 5; + MACSEC_PORT_ATTR_UNSPECIFIED = 0; + MACSEC_PORT_ATTR_MACSEC_DIRECTION = 1; + MACSEC_PORT_ATTR_PORT_ID = 2; + MACSEC_PORT_ATTR_CTAG_ENABLE = 3; + MACSEC_PORT_ATTR_STAG_ENABLE = 4; + MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE = 5; + MACSEC_PORT_ATTR_STATS_COUNT_MODE = 6; + MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST = 7; } enum MacsecFlowAttr { - MACSEC_FLOW_ATTR_UNSPECIFIED = 0; - MACSEC_FLOW_ATTR_MACSEC_DIRECTION = 1; - MACSEC_FLOW_ATTR_ACL_ENTRY_LIST = 2; - MACSEC_FLOW_ATTR_SC_LIST = 3; + MACSEC_FLOW_ATTR_UNSPECIFIED = 0; + MACSEC_FLOW_ATTR_MACSEC_DIRECTION = 1; + MACSEC_FLOW_ATTR_ACL_ENTRY_LIST = 2; + MACSEC_FLOW_ATTR_SC_LIST = 3; + MACSEC_FLOW_ATTR_STATS_COUNT_MODE = 4; + MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST = 5; } enum MacsecScAttr { - MACSEC_SC_ATTR_UNSPECIFIED = 0; - MACSEC_SC_ATTR_MACSEC_DIRECTION = 1; - MACSEC_SC_ATTR_FLOW_ID = 2; - MACSEC_SC_ATTR_MACSEC_SCI = 3; - MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE = 4; - MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET = 5; - MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID = 6; - MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE = 7; - MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW = 8; - MACSEC_SC_ATTR_SA_LIST = 9; - MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE = 10; - MACSEC_SC_ATTR_ENCRYPTION_ENABLE = 11; + MACSEC_SC_ATTR_UNSPECIFIED = 0; + MACSEC_SC_ATTR_MACSEC_DIRECTION = 1; + MACSEC_SC_ATTR_FLOW_ID = 2; + MACSEC_SC_ATTR_MACSEC_SCI = 3; + MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE = 4; + MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET = 5; + MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID = 6; + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE = 7; + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW = 8; + MACSEC_SC_ATTR_SA_LIST = 9; + MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE = 10; + MACSEC_SC_ATTR_ENCRYPTION_ENABLE = 11; } enum MacsecSaAttr { - MACSEC_SA_ATTR_UNSPECIFIED = 0; - MACSEC_SA_ATTR_MACSEC_DIRECTION = 1; - MACSEC_SA_ATTR_SC_ID = 2; - MACSEC_SA_ATTR_AN = 3; - MACSEC_SA_ATTR_SAK = 4; - MACSEC_SA_ATTR_SALT = 5; - MACSEC_SA_ATTR_AUTH_KEY = 6; - MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN = 7; - MACSEC_SA_ATTR_CURRENT_XPN = 8; - MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN = 9; - MACSEC_SA_ATTR_MACSEC_SSCI = 10; + MACSEC_SA_ATTR_UNSPECIFIED = 0; + MACSEC_SA_ATTR_MACSEC_DIRECTION = 1; + MACSEC_SA_ATTR_SC_ID = 2; + MACSEC_SA_ATTR_AN = 3; + MACSEC_SA_ATTR_SAK = 4; + MACSEC_SA_ATTR_SALT = 5; + MACSEC_SA_ATTR_AUTH_KEY = 6; + MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN = 7; + MACSEC_SA_ATTR_CURRENT_XPN = 8; + MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN = 9; + MACSEC_SA_ATTR_MACSEC_SSCI = 10; } message CreateMacsecRequest { - option (sai_type) = OBJECT_TYPE_MACSEC; - uint64 switch = 1; - optional MacsecDirection direction = 2[(attr_enum_value) = 1]; - optional bool warm_boot_enable = 3[(attr_enum_value) = 15]; - optional uint32 ctag_tpid = 4[(attr_enum_value) = 16]; - optional uint32 stag_tpid = 5[(attr_enum_value) = 17]; - optional uint32 max_vlan_tags_parsed = 6[(attr_enum_value) = 18]; - optional StatsMode stats_mode = 7[(attr_enum_value) = 19]; - optional bool physical_bypass_enable = 8[(attr_enum_value) = 20]; + option (sai_type) = OBJECT_TYPE_MACSEC; + uint64 switch = 1; + optional MacsecDirection direction = 2 [(attr_enum_value) = 1]; + optional bool warm_boot_enable = 3 [(attr_enum_value) = 15]; + optional uint32 ctag_tpid = 4 [(attr_enum_value) = 16]; + optional uint32 stag_tpid = 5 [(attr_enum_value) = 17]; + optional uint32 max_vlan_tags_parsed = 6 [(attr_enum_value) = 18]; + optional StatsMode stats_mode = 7 [(attr_enum_value) = 19]; + optional bool physical_bypass_enable = 8 [(attr_enum_value) = 20]; } message CreateMacsecResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecResponse { -} +message RemoveMacsecResponse {} message SetMacsecAttributeRequest { - uint64 oid = 1; - optional bool warm_boot_enable = 2[(attr_enum_value) = 15]; - optional uint32 ctag_tpid = 3[(attr_enum_value) = 16]; - optional uint32 stag_tpid = 4[(attr_enum_value) = 17]; - optional uint32 max_vlan_tags_parsed = 5[(attr_enum_value) = 18]; - optional StatsMode stats_mode = 6[(attr_enum_value) = 19]; - optional bool physical_bypass_enable = 7[(attr_enum_value) = 20]; + uint64 oid = 1; + optional bool warm_boot_enable = 2 [(attr_enum_value) = 15]; + optional uint32 ctag_tpid = 3 [(attr_enum_value) = 16]; + optional uint32 stag_tpid = 4 [(attr_enum_value) = 17]; + optional uint32 max_vlan_tags_parsed = 5 [(attr_enum_value) = 18]; + optional StatsMode stats_mode = 6 [(attr_enum_value) = 19]; + optional bool physical_bypass_enable = 7 [(attr_enum_value) = 20]; } -message SetMacsecAttributeResponse { -} +message SetMacsecAttributeResponse {} message GetMacsecAttributeRequest { - uint64 oid = 1; - repeated MacsecAttr attr_type = 2; + uint64 oid = 1; + repeated MacsecAttr attr_type = 2; } message GetMacsecAttributeResponse { - MacsecAttribute attr = 1; + MacsecAttribute attr = 1; } message CreateMacsecPortRequest { - option (sai_type) = OBJECT_TYPE_MACSEC_PORT; - uint64 switch = 1; - optional MacsecDirection macsec_direction = 2[(attr_enum_value) = 1]; - optional uint64 port_id = 3[(attr_enum_value) = 2]; - optional bool ctag_enable = 4[(attr_enum_value) = 3]; - optional bool stag_enable = 5[(attr_enum_value) = 4]; - optional SwitchSwitchingMode switch_switching_mode = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_MACSEC_PORT; + uint64 switch = 1; + optional MacsecDirection macsec_direction = 2 [(attr_enum_value) = 1]; + optional uint64 port_id = 3 [(attr_enum_value) = 2]; + optional bool ctag_enable = 4 [(attr_enum_value) = 3]; + optional bool stag_enable = 5 [(attr_enum_value) = 4]; + optional SwitchSwitchingMode switch_switching_mode = 6 + [(attr_enum_value) = 5]; + optional StatsCountMode stats_count_mode = 7 [(attr_enum_value) = 6]; + repeated uint64 selective_counter_list = 8 [(attr_enum_value) = 7]; } message CreateMacsecPortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecPortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecPortResponse { -} +message RemoveMacsecPortResponse {} message SetMacsecPortAttributeRequest { - uint64 oid = 1; - optional bool ctag_enable = 2[(attr_enum_value) = 3]; - optional bool stag_enable = 3[(attr_enum_value) = 4]; - optional SwitchSwitchingMode switch_switching_mode = 4[(attr_enum_value) = 5]; + uint64 oid = 1; + optional bool ctag_enable = 2 [(attr_enum_value) = 3]; + optional bool stag_enable = 3 [(attr_enum_value) = 4]; + optional SwitchSwitchingMode switch_switching_mode = 4 + [(attr_enum_value) = 5]; + optional StatsCountMode stats_count_mode = 5 [(attr_enum_value) = 6]; + repeated uint64 selective_counter_list = 6 [(attr_enum_value) = 7]; } -message SetMacsecPortAttributeResponse { -} +message SetMacsecPortAttributeResponse {} message GetMacsecPortAttributeRequest { - uint64 oid = 1; - repeated MacsecPortAttr attr_type = 2; + uint64 oid = 1; + repeated MacsecPortAttr attr_type = 2; } message GetMacsecPortAttributeResponse { - MacsecPortAttribute attr = 1; + MacsecPortAttribute attr = 1; } message GetMacsecPortStatsRequest { - uint64 oid = 1; - repeated MacsecPortStat counter_ids = 2; + uint64 oid = 1; + repeated MacsecPortStat counter_ids = 2; } message GetMacsecPortStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateMacsecFlowRequest { - option (sai_type) = OBJECT_TYPE_MACSEC_FLOW; - uint64 switch = 1; - optional MacsecDirection macsec_direction = 2[(attr_enum_value) = 1]; + option (sai_type) = OBJECT_TYPE_MACSEC_FLOW; + uint64 switch = 1; + optional MacsecDirection macsec_direction = 2 [(attr_enum_value) = 1]; + optional StatsCountMode stats_count_mode = 3 [(attr_enum_value) = 4]; + repeated uint64 selective_counter_list = 4 [(attr_enum_value) = 5]; } message CreateMacsecFlowResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecFlowRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecFlowResponse { +message RemoveMacsecFlowResponse {} + +message SetMacsecFlowAttributeRequest { + uint64 oid = 1; + optional StatsCountMode stats_count_mode = 2 [(attr_enum_value) = 4]; + repeated uint64 selective_counter_list = 3 [(attr_enum_value) = 5]; } +message SetMacsecFlowAttributeResponse {} + message GetMacsecFlowAttributeRequest { - uint64 oid = 1; - repeated MacsecFlowAttr attr_type = 2; + uint64 oid = 1; + repeated MacsecFlowAttr attr_type = 2; } message GetMacsecFlowAttributeResponse { - MacsecFlowAttribute attr = 1; + MacsecFlowAttribute attr = 1; } message GetMacsecFlowStatsRequest { - uint64 oid = 1; - repeated MacsecFlowStat counter_ids = 2; + uint64 oid = 1; + repeated MacsecFlowStat counter_ids = 2; } message GetMacsecFlowStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateMacsecScRequest { - option (sai_type) = OBJECT_TYPE_MACSEC_SC; - uint64 switch = 1; - optional MacsecDirection macsec_direction = 2[(attr_enum_value) = 1]; - optional uint64 flow_id = 3[(attr_enum_value) = 2]; - optional uint64 macsec_sci = 4[(attr_enum_value) = 3]; - optional bool macsec_explicit_sci_enable = 5[(attr_enum_value) = 4]; - optional uint32 macsec_sectag_offset = 6[(attr_enum_value) = 5]; - optional bool macsec_replay_protection_enable = 7[(attr_enum_value) = 7]; - optional uint32 macsec_replay_protection_window = 8[(attr_enum_value) = 8]; - optional MacsecCipherSuite macsec_cipher_suite = 9[(attr_enum_value) = 10]; - optional bool encryption_enable = 10[(attr_enum_value) = 11]; + option (sai_type) = OBJECT_TYPE_MACSEC_SC; + uint64 switch = 1; + optional MacsecDirection macsec_direction = 2 [(attr_enum_value) = 1]; + optional uint64 flow_id = 3 [(attr_enum_value) = 2]; + optional uint64 macsec_sci = 4 [(attr_enum_value) = 3]; + optional bool macsec_explicit_sci_enable = 5 [(attr_enum_value) = 4]; + optional uint32 macsec_sectag_offset = 6 [(attr_enum_value) = 5]; + optional bool macsec_replay_protection_enable = 7 [(attr_enum_value) = 7]; + optional uint32 macsec_replay_protection_window = 8 [(attr_enum_value) = 8]; + optional MacsecCipherSuite macsec_cipher_suite = 9 [(attr_enum_value) = 10]; + optional bool encryption_enable = 10 [(attr_enum_value) = 11]; } message CreateMacsecScResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecScRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecScResponse { -} +message RemoveMacsecScResponse {} message SetMacsecScAttributeRequest { - uint64 oid = 1; - optional bool macsec_explicit_sci_enable = 2[(attr_enum_value) = 4]; - optional uint32 macsec_sectag_offset = 3[(attr_enum_value) = 5]; - optional bool macsec_replay_protection_enable = 4[(attr_enum_value) = 7]; - optional uint32 macsec_replay_protection_window = 5[(attr_enum_value) = 8]; - optional MacsecCipherSuite macsec_cipher_suite = 6[(attr_enum_value) = 10]; - optional bool encryption_enable = 7[(attr_enum_value) = 11]; + uint64 oid = 1; + optional bool macsec_explicit_sci_enable = 2 [(attr_enum_value) = 4]; + optional uint32 macsec_sectag_offset = 3 [(attr_enum_value) = 5]; + optional bool macsec_replay_protection_enable = 4 [(attr_enum_value) = 7]; + optional uint32 macsec_replay_protection_window = 5 [(attr_enum_value) = 8]; + optional MacsecCipherSuite macsec_cipher_suite = 6 [(attr_enum_value) = 10]; + optional bool encryption_enable = 7 [(attr_enum_value) = 11]; } -message SetMacsecScAttributeResponse { -} +message SetMacsecScAttributeResponse {} message GetMacsecScAttributeRequest { - uint64 oid = 1; - repeated MacsecScAttr attr_type = 2; + uint64 oid = 1; + repeated MacsecScAttr attr_type = 2; } message GetMacsecScAttributeResponse { - MacsecScAttribute attr = 1; + MacsecScAttribute attr = 1; } message GetMacsecScStatsRequest { - uint64 oid = 1; - repeated MacsecScStat counter_ids = 2; + uint64 oid = 1; + repeated MacsecScStat counter_ids = 2; } message GetMacsecScStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateMacsecSaRequest { - option (sai_type) = OBJECT_TYPE_MACSEC_SA; - uint64 switch = 1; - optional MacsecDirection macsec_direction = 2[(attr_enum_value) = 1]; - optional uint64 sc_id = 3[(attr_enum_value) = 2]; - optional uint32 an = 4[(attr_enum_value) = 3]; - optional bytes sak = 5[(attr_enum_value) = 4]; - optional bytes salt = 6[(attr_enum_value) = 5]; - optional bytes auth_key = 7[(attr_enum_value) = 6]; - optional uint64 configured_egress_xpn = 8[(attr_enum_value) = 7]; - optional uint64 minimum_ingress_xpn = 9[(attr_enum_value) = 9]; - optional uint32 macsec_ssci = 10[(attr_enum_value) = 10]; + option (sai_type) = OBJECT_TYPE_MACSEC_SA; + uint64 switch = 1; + optional MacsecDirection macsec_direction = 2 [(attr_enum_value) = 1]; + optional uint64 sc_id = 3 [(attr_enum_value) = 2]; + optional uint32 an = 4 [(attr_enum_value) = 3]; + optional bytes sak = 5 [(attr_enum_value) = 4]; + optional bytes salt = 6 [(attr_enum_value) = 5]; + optional bytes auth_key = 7 [(attr_enum_value) = 6]; + optional uint64 configured_egress_xpn = 8 [(attr_enum_value) = 7]; + optional uint64 minimum_ingress_xpn = 9 [(attr_enum_value) = 9]; + optional uint32 macsec_ssci = 10 [(attr_enum_value) = 10]; } message CreateMacsecSaResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMacsecSaRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMacsecSaResponse { -} +message RemoveMacsecSaResponse {} message SetMacsecSaAttributeRequest { - uint64 oid = 1; - optional uint64 configured_egress_xpn = 2[(attr_enum_value) = 7]; - optional uint64 minimum_ingress_xpn = 3[(attr_enum_value) = 9]; + uint64 oid = 1; + optional uint64 configured_egress_xpn = 2 [(attr_enum_value) = 7]; + optional uint64 minimum_ingress_xpn = 3 [(attr_enum_value) = 9]; } -message SetMacsecSaAttributeResponse { -} +message SetMacsecSaAttributeResponse {} message GetMacsecSaAttributeRequest { - uint64 oid = 1; - repeated MacsecSaAttr attr_type = 2; + uint64 oid = 1; + repeated MacsecSaAttr attr_type = 2; } message GetMacsecSaAttributeResponse { - MacsecSaAttribute attr = 1; + MacsecSaAttribute attr = 1; } message GetMacsecSaStatsRequest { - uint64 oid = 1; - repeated MacsecSaStat counter_ids = 2; + uint64 oid = 1; + repeated MacsecSaStat counter_ids = 2; } message GetMacsecSaStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Macsec { - rpc CreateMacsec (CreateMacsecRequest) returns (CreateMacsecResponse) {} - rpc RemoveMacsec (RemoveMacsecRequest) returns (RemoveMacsecResponse) {} - rpc SetMacsecAttribute (SetMacsecAttributeRequest) returns (SetMacsecAttributeResponse) {} - rpc GetMacsecAttribute (GetMacsecAttributeRequest) returns (GetMacsecAttributeResponse) {} - rpc CreateMacsecPort (CreateMacsecPortRequest) returns (CreateMacsecPortResponse) {} - rpc RemoveMacsecPort (RemoveMacsecPortRequest) returns (RemoveMacsecPortResponse) {} - rpc SetMacsecPortAttribute (SetMacsecPortAttributeRequest) returns (SetMacsecPortAttributeResponse) {} - rpc GetMacsecPortAttribute (GetMacsecPortAttributeRequest) returns (GetMacsecPortAttributeResponse) {} - rpc GetMacsecPortStats (GetMacsecPortStatsRequest) returns (GetMacsecPortStatsResponse) {} - rpc CreateMacsecFlow (CreateMacsecFlowRequest) returns (CreateMacsecFlowResponse) {} - rpc RemoveMacsecFlow (RemoveMacsecFlowRequest) returns (RemoveMacsecFlowResponse) {} - rpc GetMacsecFlowAttribute (GetMacsecFlowAttributeRequest) returns (GetMacsecFlowAttributeResponse) {} - rpc GetMacsecFlowStats (GetMacsecFlowStatsRequest) returns (GetMacsecFlowStatsResponse) {} - rpc CreateMacsecSc (CreateMacsecScRequest) returns (CreateMacsecScResponse) {} - rpc RemoveMacsecSc (RemoveMacsecScRequest) returns (RemoveMacsecScResponse) {} - rpc SetMacsecScAttribute (SetMacsecScAttributeRequest) returns (SetMacsecScAttributeResponse) {} - rpc GetMacsecScAttribute (GetMacsecScAttributeRequest) returns (GetMacsecScAttributeResponse) {} - rpc GetMacsecScStats (GetMacsecScStatsRequest) returns (GetMacsecScStatsResponse) {} - rpc CreateMacsecSa (CreateMacsecSaRequest) returns (CreateMacsecSaResponse) {} - rpc RemoveMacsecSa (RemoveMacsecSaRequest) returns (RemoveMacsecSaResponse) {} - rpc SetMacsecSaAttribute (SetMacsecSaAttributeRequest) returns (SetMacsecSaAttributeResponse) {} - rpc GetMacsecSaAttribute (GetMacsecSaAttributeRequest) returns (GetMacsecSaAttributeResponse) {} - rpc GetMacsecSaStats (GetMacsecSaStatsRequest) returns (GetMacsecSaStatsResponse) {} + rpc CreateMacsec(CreateMacsecRequest) returns (CreateMacsecResponse) {} + rpc RemoveMacsec(RemoveMacsecRequest) returns (RemoveMacsecResponse) {} + rpc SetMacsecAttribute(SetMacsecAttributeRequest) + returns (SetMacsecAttributeResponse) {} + rpc GetMacsecAttribute(GetMacsecAttributeRequest) + returns (GetMacsecAttributeResponse) {} + rpc CreateMacsecPort(CreateMacsecPortRequest) + returns (CreateMacsecPortResponse) {} + rpc RemoveMacsecPort(RemoveMacsecPortRequest) + returns (RemoveMacsecPortResponse) {} + rpc SetMacsecPortAttribute(SetMacsecPortAttributeRequest) + returns (SetMacsecPortAttributeResponse) {} + rpc GetMacsecPortAttribute(GetMacsecPortAttributeRequest) + returns (GetMacsecPortAttributeResponse) {} + rpc GetMacsecPortStats(GetMacsecPortStatsRequest) + returns (GetMacsecPortStatsResponse) {} + rpc CreateMacsecFlow(CreateMacsecFlowRequest) + returns (CreateMacsecFlowResponse) {} + rpc RemoveMacsecFlow(RemoveMacsecFlowRequest) + returns (RemoveMacsecFlowResponse) {} + rpc SetMacsecFlowAttribute(SetMacsecFlowAttributeRequest) + returns (SetMacsecFlowAttributeResponse) {} + rpc GetMacsecFlowAttribute(GetMacsecFlowAttributeRequest) + returns (GetMacsecFlowAttributeResponse) {} + rpc GetMacsecFlowStats(GetMacsecFlowStatsRequest) + returns (GetMacsecFlowStatsResponse) {} + rpc CreateMacsecSc(CreateMacsecScRequest) returns (CreateMacsecScResponse) {} + rpc RemoveMacsecSc(RemoveMacsecScRequest) returns (RemoveMacsecScResponse) {} + rpc SetMacsecScAttribute(SetMacsecScAttributeRequest) + returns (SetMacsecScAttributeResponse) {} + rpc GetMacsecScAttribute(GetMacsecScAttributeRequest) + returns (GetMacsecScAttributeResponse) {} + rpc GetMacsecScStats(GetMacsecScStatsRequest) + returns (GetMacsecScStatsResponse) {} + rpc CreateMacsecSa(CreateMacsecSaRequest) returns (CreateMacsecSaResponse) {} + rpc RemoveMacsecSa(RemoveMacsecSaRequest) returns (RemoveMacsecSaResponse) {} + rpc SetMacsecSaAttribute(SetMacsecSaAttributeRequest) + returns (SetMacsecSaAttributeResponse) {} + rpc GetMacsecSaAttribute(GetMacsecSaAttributeRequest) + returns (GetMacsecSaAttributeResponse) {} + rpc GetMacsecSaStats(GetMacsecSaStatsRequest) + returns (GetMacsecSaStatsResponse) {} } diff --git a/dataplane/proto/sai/macsec_grpc.pb.go b/dataplane/proto/sai/macsec_grpc.pb.go index a5b539b48..6361eb735 100755 --- a/dataplane/proto/sai/macsec_grpc.pb.go +++ b/dataplane/proto/sai/macsec_grpc.pb.go @@ -30,6 +30,7 @@ const ( Macsec_GetMacsecPortStats_FullMethodName = "/lemming.dataplane.sai.Macsec/GetMacsecPortStats" Macsec_CreateMacsecFlow_FullMethodName = "/lemming.dataplane.sai.Macsec/CreateMacsecFlow" Macsec_RemoveMacsecFlow_FullMethodName = "/lemming.dataplane.sai.Macsec/RemoveMacsecFlow" + Macsec_SetMacsecFlowAttribute_FullMethodName = "/lemming.dataplane.sai.Macsec/SetMacsecFlowAttribute" Macsec_GetMacsecFlowAttribute_FullMethodName = "/lemming.dataplane.sai.Macsec/GetMacsecFlowAttribute" Macsec_GetMacsecFlowStats_FullMethodName = "/lemming.dataplane.sai.Macsec/GetMacsecFlowStats" Macsec_CreateMacsecSc_FullMethodName = "/lemming.dataplane.sai.Macsec/CreateMacsecSc" @@ -59,6 +60,7 @@ type MacsecClient interface { GetMacsecPortStats(ctx context.Context, in *GetMacsecPortStatsRequest, opts ...grpc.CallOption) (*GetMacsecPortStatsResponse, error) CreateMacsecFlow(ctx context.Context, in *CreateMacsecFlowRequest, opts ...grpc.CallOption) (*CreateMacsecFlowResponse, error) RemoveMacsecFlow(ctx context.Context, in *RemoveMacsecFlowRequest, opts ...grpc.CallOption) (*RemoveMacsecFlowResponse, error) + SetMacsecFlowAttribute(ctx context.Context, in *SetMacsecFlowAttributeRequest, opts ...grpc.CallOption) (*SetMacsecFlowAttributeResponse, error) GetMacsecFlowAttribute(ctx context.Context, in *GetMacsecFlowAttributeRequest, opts ...grpc.CallOption) (*GetMacsecFlowAttributeResponse, error) GetMacsecFlowStats(ctx context.Context, in *GetMacsecFlowStatsRequest, opts ...grpc.CallOption) (*GetMacsecFlowStatsResponse, error) CreateMacsecSc(ctx context.Context, in *CreateMacsecScRequest, opts ...grpc.CallOption) (*CreateMacsecScResponse, error) @@ -191,6 +193,16 @@ func (c *macsecClient) RemoveMacsecFlow(ctx context.Context, in *RemoveMacsecFlo return out, nil } +func (c *macsecClient) SetMacsecFlowAttribute(ctx context.Context, in *SetMacsecFlowAttributeRequest, opts ...grpc.CallOption) (*SetMacsecFlowAttributeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SetMacsecFlowAttributeResponse) + err := c.cc.Invoke(ctx, Macsec_SetMacsecFlowAttribute_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *macsecClient) GetMacsecFlowAttribute(ctx context.Context, in *GetMacsecFlowAttributeRequest, opts ...grpc.CallOption) (*GetMacsecFlowAttributeResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetMacsecFlowAttributeResponse) @@ -326,6 +338,7 @@ type MacsecServer interface { GetMacsecPortStats(context.Context, *GetMacsecPortStatsRequest) (*GetMacsecPortStatsResponse, error) CreateMacsecFlow(context.Context, *CreateMacsecFlowRequest) (*CreateMacsecFlowResponse, error) RemoveMacsecFlow(context.Context, *RemoveMacsecFlowRequest) (*RemoveMacsecFlowResponse, error) + SetMacsecFlowAttribute(context.Context, *SetMacsecFlowAttributeRequest) (*SetMacsecFlowAttributeResponse, error) GetMacsecFlowAttribute(context.Context, *GetMacsecFlowAttributeRequest) (*GetMacsecFlowAttributeResponse, error) GetMacsecFlowStats(context.Context, *GetMacsecFlowStatsRequest) (*GetMacsecFlowStatsResponse, error) CreateMacsecSc(context.Context, *CreateMacsecScRequest) (*CreateMacsecScResponse, error) @@ -380,6 +393,9 @@ func (UnimplementedMacsecServer) CreateMacsecFlow(context.Context, *CreateMacsec func (UnimplementedMacsecServer) RemoveMacsecFlow(context.Context, *RemoveMacsecFlowRequest) (*RemoveMacsecFlowResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveMacsecFlow not implemented") } +func (UnimplementedMacsecServer) SetMacsecFlowAttribute(context.Context, *SetMacsecFlowAttributeRequest) (*SetMacsecFlowAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetMacsecFlowAttribute not implemented") +} func (UnimplementedMacsecServer) GetMacsecFlowAttribute(context.Context, *GetMacsecFlowAttributeRequest) (*GetMacsecFlowAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMacsecFlowAttribute not implemented") } @@ -634,6 +650,24 @@ func _Macsec_RemoveMacsecFlow_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _Macsec_SetMacsecFlowAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SetMacsecFlowAttributeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MacsecServer).SetMacsecFlowAttribute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Macsec_SetMacsecFlowAttribute_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MacsecServer).SetMacsecFlowAttribute(ctx, req.(*SetMacsecFlowAttributeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Macsec_GetMacsecFlowAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetMacsecFlowAttributeRequest) if err := dec(in); err != nil { @@ -901,6 +935,10 @@ var Macsec_ServiceDesc = grpc.ServiceDesc{ MethodName: "RemoveMacsecFlow", Handler: _Macsec_RemoveMacsecFlow_Handler, }, + { + MethodName: "SetMacsecFlowAttribute", + Handler: _Macsec_SetMacsecFlowAttribute_Handler, + }, { MethodName: "GetMacsecFlowAttribute", Handler: _Macsec_GetMacsecFlowAttribute_Handler, diff --git a/dataplane/proto/sai/mcast_fdb.proto b/dataplane/proto/sai/mcast_fdb.proto index b8e9850fa..2e142efcd 100644 --- a/dataplane/proto/sai/mcast_fdb.proto +++ b/dataplane/proto/sai/mcast_fdb.proto @@ -7,55 +7,54 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum McastFdbEntryAttr { - MCAST_FDB_ENTRY_ATTR_UNSPECIFIED = 0; - MCAST_FDB_ENTRY_ATTR_GROUP_ID = 1; - MCAST_FDB_ENTRY_ATTR_PACKET_ACTION = 2; - MCAST_FDB_ENTRY_ATTR_META_DATA = 3; + MCAST_FDB_ENTRY_ATTR_UNSPECIFIED = 0; + MCAST_FDB_ENTRY_ATTR_GROUP_ID = 1; + MCAST_FDB_ENTRY_ATTR_PACKET_ACTION = 2; + MCAST_FDB_ENTRY_ATTR_META_DATA = 3; } message CreateMcastFdbEntryRequest { - option (sai_type) = OBJECT_TYPE_MCAST_FDB_ENTRY; - McastFdbEntry entry = 1; - optional uint64 group_id = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint32 meta_data = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_MCAST_FDB_ENTRY; + McastFdbEntry entry = 1; + optional uint64 group_id = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint32 meta_data = 4 [(attr_enum_value) = 3]; } -message CreateMcastFdbEntryResponse { -} +message CreateMcastFdbEntryResponse {} message RemoveMcastFdbEntryRequest { - McastFdbEntry entry = 1; + McastFdbEntry entry = 1; } -message RemoveMcastFdbEntryResponse { -} +message RemoveMcastFdbEntryResponse {} message SetMcastFdbEntryAttributeRequest { - McastFdbEntry entry = 1; - optional uint64 group_id = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint32 meta_data = 4[(attr_enum_value) = 3]; + McastFdbEntry entry = 1; + optional uint64 group_id = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint32 meta_data = 4 [(attr_enum_value) = 3]; } -message SetMcastFdbEntryAttributeResponse { -} +message SetMcastFdbEntryAttributeResponse {} message GetMcastFdbEntryAttributeRequest { - McastFdbEntry entry = 1; - repeated McastFdbEntryAttr attr_type = 2; + McastFdbEntry entry = 1; + repeated McastFdbEntryAttr attr_type = 2; } message GetMcastFdbEntryAttributeResponse { - McastFdbEntryAttribute attr = 1; + McastFdbEntryAttribute attr = 1; } - service McastFdb { - rpc CreateMcastFdbEntry (CreateMcastFdbEntryRequest) returns (CreateMcastFdbEntryResponse) {} - rpc RemoveMcastFdbEntry (RemoveMcastFdbEntryRequest) returns (RemoveMcastFdbEntryResponse) {} - rpc SetMcastFdbEntryAttribute (SetMcastFdbEntryAttributeRequest) returns (SetMcastFdbEntryAttributeResponse) {} - rpc GetMcastFdbEntryAttribute (GetMcastFdbEntryAttributeRequest) returns (GetMcastFdbEntryAttributeResponse) {} + rpc CreateMcastFdbEntry(CreateMcastFdbEntryRequest) + returns (CreateMcastFdbEntryResponse) {} + rpc RemoveMcastFdbEntry(RemoveMcastFdbEntryRequest) + returns (RemoveMcastFdbEntryResponse) {} + rpc SetMcastFdbEntryAttribute(SetMcastFdbEntryAttributeRequest) + returns (SetMcastFdbEntryAttributeResponse) {} + rpc GetMcastFdbEntryAttribute(GetMcastFdbEntryAttributeRequest) + returns (GetMcastFdbEntryAttributeResponse) {} } diff --git a/dataplane/proto/sai/mirror.proto b/dataplane/proto/sai/mirror.proto index 3b14b9497..646a96ffb 100644 --- a/dataplane/proto/sai/mirror.proto +++ b/dataplane/proto/sai/mirror.proto @@ -7,122 +7,125 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum MirrorSessionAttr { - MIRROR_SESSION_ATTR_UNSPECIFIED = 0; - MIRROR_SESSION_ATTR_TYPE = 1; - MIRROR_SESSION_ATTR_MONITOR_PORT = 2; - MIRROR_SESSION_ATTR_TRUNCATE_SIZE = 3; - MIRROR_SESSION_ATTR_SAMPLE_RATE = 4; - MIRROR_SESSION_ATTR_CONGESTION_MODE = 5; - MIRROR_SESSION_ATTR_TC = 6; - MIRROR_SESSION_ATTR_VLAN_TPID = 7; - MIRROR_SESSION_ATTR_VLAN_ID = 8; - MIRROR_SESSION_ATTR_VLAN_PRI = 9; - MIRROR_SESSION_ATTR_VLAN_CFI = 10; - MIRROR_SESSION_ATTR_VLAN_HEADER_VALID = 11; - MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE = 12; - MIRROR_SESSION_ATTR_IPHDR_VERSION = 13; - MIRROR_SESSION_ATTR_TOS = 14; - MIRROR_SESSION_ATTR_TTL = 15; - MIRROR_SESSION_ATTR_SRC_IP_ADDRESS = 16; - MIRROR_SESSION_ATTR_DST_IP_ADDRESS = 17; - MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS = 18; - MIRROR_SESSION_ATTR_DST_MAC_ADDRESS = 19; - MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE = 20; - MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID = 21; - MIRROR_SESSION_ATTR_MONITOR_PORTLIST = 22; - MIRROR_SESSION_ATTR_POLICER = 23; - MIRROR_SESSION_ATTR_UDP_SRC_PORT = 24; - MIRROR_SESSION_ATTR_UDP_DST_PORT = 25; - MIRROR_SESSION_ATTR_COUNTER_ID = 26; + MIRROR_SESSION_ATTR_UNSPECIFIED = 0; + MIRROR_SESSION_ATTR_TYPE = 1; + MIRROR_SESSION_ATTR_MONITOR_PORT = 2; + MIRROR_SESSION_ATTR_TRUNCATE_SIZE = 3; + MIRROR_SESSION_ATTR_SAMPLE_RATE = 4; + MIRROR_SESSION_ATTR_CONGESTION_MODE = 5; + MIRROR_SESSION_ATTR_TC = 6; + MIRROR_SESSION_ATTR_VLAN_TPID = 7; + MIRROR_SESSION_ATTR_VLAN_ID = 8; + MIRROR_SESSION_ATTR_VLAN_PRI = 9; + MIRROR_SESSION_ATTR_VLAN_CFI = 10; + MIRROR_SESSION_ATTR_VLAN_HEADER_VALID = 11; + MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE = 12; + MIRROR_SESSION_ATTR_IPHDR_VERSION = 13; + MIRROR_SESSION_ATTR_TOS = 14; + MIRROR_SESSION_ATTR_TTL = 15; + MIRROR_SESSION_ATTR_SRC_IP_ADDRESS = 16; + MIRROR_SESSION_ATTR_DST_IP_ADDRESS = 17; + MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS = 18; + MIRROR_SESSION_ATTR_DST_MAC_ADDRESS = 19; + MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE = 20; + MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID = 21; + MIRROR_SESSION_ATTR_MONITOR_PORTLIST = 22; + MIRROR_SESSION_ATTR_POLICER = 23; + MIRROR_SESSION_ATTR_UDP_SRC_PORT = 24; + MIRROR_SESSION_ATTR_UDP_DST_PORT = 25; + MIRROR_SESSION_ATTR_COUNTER_ID = 26; } message CreateMirrorSessionRequest { - option (sai_type) = OBJECT_TYPE_MIRROR_SESSION; - uint64 switch = 1; - optional MirrorSessionType type = 2[(attr_enum_value) = 1]; - optional uint64 monitor_port = 3[(attr_enum_value) = 2]; - optional uint32 truncate_size = 4[(attr_enum_value) = 3]; - optional uint32 sample_rate = 5[(attr_enum_value) = 4]; - optional MirrorSessionCongestionMode congestion_mode = 6[(attr_enum_value) = 5]; - optional uint32 tc = 7[(attr_enum_value) = 6]; - optional uint32 vlan_tpid = 8[(attr_enum_value) = 7]; - optional uint32 vlan_id = 9[(attr_enum_value) = 8]; - optional uint32 vlan_pri = 10[(attr_enum_value) = 9]; - optional uint32 vlan_cfi = 11[(attr_enum_value) = 10]; - optional bool vlan_header_valid = 12[(attr_enum_value) = 11]; - optional ErspanEncapsulationType erspan_encapsulation_type = 13[(attr_enum_value) = 12]; - optional uint32 iphdr_version = 14[(attr_enum_value) = 13]; - optional uint32 tos = 15[(attr_enum_value) = 14]; - optional uint32 ttl = 16[(attr_enum_value) = 15]; - optional bytes src_ip_address = 17[(attr_enum_value) = 16]; - optional bytes dst_ip_address = 18[(attr_enum_value) = 17]; - optional bytes src_mac_address = 19[(attr_enum_value) = 18]; - optional bytes dst_mac_address = 20[(attr_enum_value) = 19]; - optional uint32 gre_protocol_type = 21[(attr_enum_value) = 20]; - optional bool monitor_portlist_valid = 22[(attr_enum_value) = 21]; - repeated uint64 monitor_portlist = 23[(attr_enum_value) = 22]; - optional uint64 policer = 24[(attr_enum_value) = 23]; - optional uint32 udp_src_port = 25[(attr_enum_value) = 24]; - optional uint32 udp_dst_port = 26[(attr_enum_value) = 25]; - optional uint64 counter_id = 27[(attr_enum_value) = 26]; + option (sai_type) = OBJECT_TYPE_MIRROR_SESSION; + uint64 switch = 1; + optional MirrorSessionType type = 2 [(attr_enum_value) = 1]; + optional uint64 monitor_port = 3 [(attr_enum_value) = 2]; + optional uint32 truncate_size = 4 [(attr_enum_value) = 3]; + optional uint32 sample_rate = 5 [(attr_enum_value) = 4]; + optional MirrorSessionCongestionMode congestion_mode = 6 + [(attr_enum_value) = 5]; + optional uint32 tc = 7 [(attr_enum_value) = 6]; + optional uint32 vlan_tpid = 8 [(attr_enum_value) = 7]; + optional uint32 vlan_id = 9 [(attr_enum_value) = 8]; + optional uint32 vlan_pri = 10 [(attr_enum_value) = 9]; + optional uint32 vlan_cfi = 11 [(attr_enum_value) = 10]; + optional bool vlan_header_valid = 12 [(attr_enum_value) = 11]; + optional ErspanEncapsulationType erspan_encapsulation_type = 13 + [(attr_enum_value) = 12]; + optional uint32 iphdr_version = 14 [(attr_enum_value) = 13]; + optional uint32 tos = 15 [(attr_enum_value) = 14]; + optional uint32 ttl = 16 [(attr_enum_value) = 15]; + optional bytes src_ip_address = 17 [(attr_enum_value) = 16]; + optional bytes dst_ip_address = 18 [(attr_enum_value) = 17]; + optional bytes src_mac_address = 19 [(attr_enum_value) = 18]; + optional bytes dst_mac_address = 20 [(attr_enum_value) = 19]; + optional uint32 gre_protocol_type = 21 [(attr_enum_value) = 20]; + optional bool monitor_portlist_valid = 22 [(attr_enum_value) = 21]; + repeated uint64 monitor_portlist = 23 [(attr_enum_value) = 22]; + optional uint64 policer = 24 [(attr_enum_value) = 23]; + optional uint32 udp_src_port = 25 [(attr_enum_value) = 24]; + optional uint32 udp_dst_port = 26 [(attr_enum_value) = 25]; + optional uint64 counter_id = 27 [(attr_enum_value) = 26]; } message CreateMirrorSessionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMirrorSessionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMirrorSessionResponse { -} +message RemoveMirrorSessionResponse {} message SetMirrorSessionAttributeRequest { - uint64 oid = 1; - optional uint64 monitor_port = 2[(attr_enum_value) = 2]; - optional uint32 truncate_size = 3[(attr_enum_value) = 3]; - optional uint32 sample_rate = 4[(attr_enum_value) = 4]; - optional MirrorSessionCongestionMode congestion_mode = 5[(attr_enum_value) = 5]; - optional uint32 tc = 6[(attr_enum_value) = 6]; - optional uint32 vlan_tpid = 7[(attr_enum_value) = 7]; - optional uint32 vlan_id = 8[(attr_enum_value) = 8]; - optional uint32 vlan_pri = 9[(attr_enum_value) = 9]; - optional uint32 vlan_cfi = 10[(attr_enum_value) = 10]; - optional bool vlan_header_valid = 11[(attr_enum_value) = 11]; - optional uint32 iphdr_version = 12[(attr_enum_value) = 13]; - optional uint32 tos = 13[(attr_enum_value) = 14]; - optional uint32 ttl = 14[(attr_enum_value) = 15]; - optional bytes src_ip_address = 15[(attr_enum_value) = 16]; - optional bytes dst_ip_address = 16[(attr_enum_value) = 17]; - optional bytes src_mac_address = 17[(attr_enum_value) = 18]; - optional bytes dst_mac_address = 18[(attr_enum_value) = 19]; - optional uint32 gre_protocol_type = 19[(attr_enum_value) = 20]; - repeated uint64 monitor_portlist = 20[(attr_enum_value) = 22]; - optional uint64 policer = 21[(attr_enum_value) = 23]; - optional uint32 udp_src_port = 22[(attr_enum_value) = 24]; - optional uint32 udp_dst_port = 23[(attr_enum_value) = 25]; - optional uint64 counter_id = 24[(attr_enum_value) = 26]; + uint64 oid = 1; + optional uint64 monitor_port = 2 [(attr_enum_value) = 2]; + optional uint32 truncate_size = 3 [(attr_enum_value) = 3]; + optional uint32 sample_rate = 4 [(attr_enum_value) = 4]; + optional MirrorSessionCongestionMode congestion_mode = 5 + [(attr_enum_value) = 5]; + optional uint32 tc = 6 [(attr_enum_value) = 6]; + optional uint32 vlan_tpid = 7 [(attr_enum_value) = 7]; + optional uint32 vlan_id = 8 [(attr_enum_value) = 8]; + optional uint32 vlan_pri = 9 [(attr_enum_value) = 9]; + optional uint32 vlan_cfi = 10 [(attr_enum_value) = 10]; + optional bool vlan_header_valid = 11 [(attr_enum_value) = 11]; + optional uint32 iphdr_version = 12 [(attr_enum_value) = 13]; + optional uint32 tos = 13 [(attr_enum_value) = 14]; + optional uint32 ttl = 14 [(attr_enum_value) = 15]; + optional bytes src_ip_address = 15 [(attr_enum_value) = 16]; + optional bytes dst_ip_address = 16 [(attr_enum_value) = 17]; + optional bytes src_mac_address = 17 [(attr_enum_value) = 18]; + optional bytes dst_mac_address = 18 [(attr_enum_value) = 19]; + optional uint32 gre_protocol_type = 19 [(attr_enum_value) = 20]; + repeated uint64 monitor_portlist = 20 [(attr_enum_value) = 22]; + optional uint64 policer = 21 [(attr_enum_value) = 23]; + optional uint32 udp_src_port = 22 [(attr_enum_value) = 24]; + optional uint32 udp_dst_port = 23 [(attr_enum_value) = 25]; + optional uint64 counter_id = 24 [(attr_enum_value) = 26]; } -message SetMirrorSessionAttributeResponse { -} +message SetMirrorSessionAttributeResponse {} message GetMirrorSessionAttributeRequest { - uint64 oid = 1; - repeated MirrorSessionAttr attr_type = 2; + uint64 oid = 1; + repeated MirrorSessionAttr attr_type = 2; } message GetMirrorSessionAttributeResponse { - MirrorSessionAttribute attr = 1; + MirrorSessionAttribute attr = 1; } - service Mirror { - rpc CreateMirrorSession (CreateMirrorSessionRequest) returns (CreateMirrorSessionResponse) {} - rpc RemoveMirrorSession (RemoveMirrorSessionRequest) returns (RemoveMirrorSessionResponse) {} - rpc SetMirrorSessionAttribute (SetMirrorSessionAttributeRequest) returns (SetMirrorSessionAttributeResponse) {} - rpc GetMirrorSessionAttribute (GetMirrorSessionAttributeRequest) returns (GetMirrorSessionAttributeResponse) {} + rpc CreateMirrorSession(CreateMirrorSessionRequest) + returns (CreateMirrorSessionResponse) {} + rpc RemoveMirrorSession(RemoveMirrorSessionRequest) + returns (RemoveMirrorSessionResponse) {} + rpc SetMirrorSessionAttribute(SetMirrorSessionAttributeRequest) + returns (SetMirrorSessionAttributeResponse) {} + rpc GetMirrorSessionAttribute(GetMirrorSessionAttributeRequest) + returns (GetMirrorSessionAttributeResponse) {} } diff --git a/dataplane/proto/sai/mpls.proto b/dataplane/proto/sai/mpls.proto index ad2b9f1cf..3bc42d957 100644 --- a/dataplane/proto/sai/mpls.proto +++ b/dataplane/proto/sai/mpls.proto @@ -7,97 +7,98 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum InsegEntryAttr { - INSEG_ENTRY_ATTR_UNSPECIFIED = 0; - INSEG_ENTRY_ATTR_NUM_OF_POP = 1; - INSEG_ENTRY_ATTR_PACKET_ACTION = 2; - INSEG_ENTRY_ATTR_TRAP_PRIORITY = 3; - INSEG_ENTRY_ATTR_NEXT_HOP_ID = 4; - INSEG_ENTRY_ATTR_PSC_TYPE = 5; - INSEG_ENTRY_ATTR_QOS_TC = 6; - INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP = 7; - INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP = 8; - INSEG_ENTRY_ATTR_POP_TTL_MODE = 9; - INSEG_ENTRY_ATTR_POP_QOS_MODE = 10; - INSEG_ENTRY_ATTR_COUNTER_ID = 11; + INSEG_ENTRY_ATTR_UNSPECIFIED = 0; + INSEG_ENTRY_ATTR_NUM_OF_POP = 1; + INSEG_ENTRY_ATTR_PACKET_ACTION = 2; + INSEG_ENTRY_ATTR_TRAP_PRIORITY = 3; + INSEG_ENTRY_ATTR_NEXT_HOP_ID = 4; + INSEG_ENTRY_ATTR_PSC_TYPE = 5; + INSEG_ENTRY_ATTR_QOS_TC = 6; + INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP = 7; + INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP = 8; + INSEG_ENTRY_ATTR_POP_TTL_MODE = 9; + INSEG_ENTRY_ATTR_POP_QOS_MODE = 10; + INSEG_ENTRY_ATTR_COUNTER_ID = 11; } message CreateInsegEntryRequest { - option (sai_type) = OBJECT_TYPE_INSEG_ENTRY; - InsegEntry entry = 1; - optional uint32 num_of_pop = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint32 trap_priority = 4[(attr_enum_value) = 3]; - optional uint64 next_hop_id = 5[(attr_enum_value) = 4]; - optional InsegEntryPscType psc_type = 6[(attr_enum_value) = 5]; - optional uint32 qos_tc = 7[(attr_enum_value) = 6]; - optional uint64 mpls_exp_to_tc_map = 8[(attr_enum_value) = 7]; - optional uint64 mpls_exp_to_color_map = 9[(attr_enum_value) = 8]; - optional InsegEntryPopTtlMode pop_ttl_mode = 10[(attr_enum_value) = 9]; - optional InsegEntryPopQosMode pop_qos_mode = 11[(attr_enum_value) = 10]; - optional uint64 counter_id = 12[(attr_enum_value) = 11]; + option (sai_type) = OBJECT_TYPE_INSEG_ENTRY; + InsegEntry entry = 1; + optional uint32 num_of_pop = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 4 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 5 [(attr_enum_value) = 4]; + optional InsegEntryPscType psc_type = 6 [(attr_enum_value) = 5]; + optional uint32 qos_tc = 7 [(attr_enum_value) = 6]; + optional uint64 mpls_exp_to_tc_map = 8 [(attr_enum_value) = 7]; + optional uint64 mpls_exp_to_color_map = 9 [(attr_enum_value) = 8]; + optional InsegEntryPopTtlMode pop_ttl_mode = 10 [(attr_enum_value) = 9]; + optional InsegEntryPopQosMode pop_qos_mode = 11 [(attr_enum_value) = 10]; + optional uint64 counter_id = 12 [(attr_enum_value) = 11]; } -message CreateInsegEntryResponse { -} +message CreateInsegEntryResponse {} message RemoveInsegEntryRequest { - InsegEntry entry = 1; + InsegEntry entry = 1; } -message RemoveInsegEntryResponse { -} +message RemoveInsegEntryResponse {} message SetInsegEntryAttributeRequest { - InsegEntry entry = 1; - optional uint32 num_of_pop = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint32 trap_priority = 4[(attr_enum_value) = 3]; - optional uint64 next_hop_id = 5[(attr_enum_value) = 4]; - optional InsegEntryPscType psc_type = 6[(attr_enum_value) = 5]; - optional uint32 qos_tc = 7[(attr_enum_value) = 6]; - optional uint64 mpls_exp_to_tc_map = 8[(attr_enum_value) = 7]; - optional uint64 mpls_exp_to_color_map = 9[(attr_enum_value) = 8]; - optional InsegEntryPopTtlMode pop_ttl_mode = 10[(attr_enum_value) = 9]; - optional InsegEntryPopQosMode pop_qos_mode = 11[(attr_enum_value) = 10]; - optional uint64 counter_id = 12[(attr_enum_value) = 11]; + InsegEntry entry = 1; + optional uint32 num_of_pop = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint32 trap_priority = 4 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 5 [(attr_enum_value) = 4]; + optional InsegEntryPscType psc_type = 6 [(attr_enum_value) = 5]; + optional uint32 qos_tc = 7 [(attr_enum_value) = 6]; + optional uint64 mpls_exp_to_tc_map = 8 [(attr_enum_value) = 7]; + optional uint64 mpls_exp_to_color_map = 9 [(attr_enum_value) = 8]; + optional InsegEntryPopTtlMode pop_ttl_mode = 10 [(attr_enum_value) = 9]; + optional InsegEntryPopQosMode pop_qos_mode = 11 [(attr_enum_value) = 10]; + optional uint64 counter_id = 12 [(attr_enum_value) = 11]; } -message SetInsegEntryAttributeResponse { -} +message SetInsegEntryAttributeResponse {} message GetInsegEntryAttributeRequest { - InsegEntry entry = 1; - repeated InsegEntryAttr attr_type = 2; + InsegEntry entry = 1; + repeated InsegEntryAttr attr_type = 2; } message GetInsegEntryAttributeResponse { - InsegEntryAttribute attr = 1; + InsegEntryAttribute attr = 1; } message CreateInsegEntriesRequest { - repeated CreateInsegEntryRequest reqs = 1; + repeated CreateInsegEntryRequest reqs = 1; } message CreateInsegEntriesResponse { - repeated CreateInsegEntryResponse resps = 1; + repeated CreateInsegEntryResponse resps = 1; } message RemoveInsegEntriesRequest { - repeated RemoveInsegEntryRequest reqs = 1; + repeated RemoveInsegEntryRequest reqs = 1; } message RemoveInsegEntriesResponse { - repeated RemoveInsegEntryResponse resps = 1; + repeated RemoveInsegEntryResponse resps = 1; } - service Mpls { - rpc CreateInsegEntry (CreateInsegEntryRequest) returns (CreateInsegEntryResponse) {} - rpc RemoveInsegEntry (RemoveInsegEntryRequest) returns (RemoveInsegEntryResponse) {} - rpc SetInsegEntryAttribute (SetInsegEntryAttributeRequest) returns (SetInsegEntryAttributeResponse) {} - rpc GetInsegEntryAttribute (GetInsegEntryAttributeRequest) returns (GetInsegEntryAttributeResponse) {} - rpc CreateInsegEntries (CreateInsegEntriesRequest) returns (CreateInsegEntriesResponse) {} - rpc RemoveInsegEntries (RemoveInsegEntriesRequest) returns (RemoveInsegEntriesResponse) {} + rpc CreateInsegEntry(CreateInsegEntryRequest) + returns (CreateInsegEntryResponse) {} + rpc RemoveInsegEntry(RemoveInsegEntryRequest) + returns (RemoveInsegEntryResponse) {} + rpc SetInsegEntryAttribute(SetInsegEntryAttributeRequest) + returns (SetInsegEntryAttributeResponse) {} + rpc GetInsegEntryAttribute(GetInsegEntryAttributeRequest) + returns (GetInsegEntryAttributeResponse) {} + rpc CreateInsegEntries(CreateInsegEntriesRequest) + returns (CreateInsegEntriesResponse) {} + rpc RemoveInsegEntries(RemoveInsegEntriesRequest) + returns (RemoveInsegEntriesResponse) {} } diff --git a/dataplane/proto/sai/my_mac.proto b/dataplane/proto/sai/my_mac.proto index 86eac57e3..cc95455ee 100644 --- a/dataplane/proto/sai/my_mac.proto +++ b/dataplane/proto/sai/my_mac.proto @@ -7,58 +7,56 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum MyMacAttr { - MY_MAC_ATTR_UNSPECIFIED = 0; - MY_MAC_ATTR_PRIORITY = 1; - MY_MAC_ATTR_PORT_ID = 2; - MY_MAC_ATTR_VLAN_ID = 3; - MY_MAC_ATTR_MAC_ADDRESS = 4; - MY_MAC_ATTR_MAC_ADDRESS_MASK = 5; + MY_MAC_ATTR_UNSPECIFIED = 0; + MY_MAC_ATTR_PRIORITY = 1; + MY_MAC_ATTR_PORT_ID = 2; + MY_MAC_ATTR_VLAN_ID = 3; + MY_MAC_ATTR_MAC_ADDRESS = 4; + MY_MAC_ATTR_MAC_ADDRESS_MASK = 5; } message CreateMyMacRequest { - option (sai_type) = OBJECT_TYPE_MY_MAC; - uint64 switch = 1; - optional uint32 priority = 2[(attr_enum_value) = 1]; - optional uint64 port_id = 3[(attr_enum_value) = 2]; - optional uint32 vlan_id = 4[(attr_enum_value) = 3]; - optional bytes mac_address = 5[(attr_enum_value) = 4]; - optional bytes mac_address_mask = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_MY_MAC; + uint64 switch = 1; + optional uint32 priority = 2 [(attr_enum_value) = 1]; + optional uint64 port_id = 3 [(attr_enum_value) = 2]; + optional uint32 vlan_id = 4 [(attr_enum_value) = 3]; + optional bytes mac_address = 5 [(attr_enum_value) = 4]; + optional bytes mac_address_mask = 6 [(attr_enum_value) = 5]; } message CreateMyMacResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveMyMacRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveMyMacResponse { -} +message RemoveMyMacResponse {} message SetMyMacAttributeRequest { - uint64 oid = 1; - optional uint32 priority = 2[(attr_enum_value) = 1]; + uint64 oid = 1; + optional uint32 priority = 2 [(attr_enum_value) = 1]; } -message SetMyMacAttributeResponse { -} +message SetMyMacAttributeResponse {} message GetMyMacAttributeRequest { - uint64 oid = 1; - repeated MyMacAttr attr_type = 2; + uint64 oid = 1; + repeated MyMacAttr attr_type = 2; } message GetMyMacAttributeResponse { - MyMacAttribute attr = 1; + MyMacAttribute attr = 1; } - service MyMac { - rpc CreateMyMac (CreateMyMacRequest) returns (CreateMyMacResponse) {} - rpc RemoveMyMac (RemoveMyMacRequest) returns (RemoveMyMacResponse) {} - rpc SetMyMacAttribute (SetMyMacAttributeRequest) returns (SetMyMacAttributeResponse) {} - rpc GetMyMacAttribute (GetMyMacAttributeRequest) returns (GetMyMacAttributeResponse) {} + rpc CreateMyMac(CreateMyMacRequest) returns (CreateMyMacResponse) {} + rpc RemoveMyMac(RemoveMyMacRequest) returns (RemoveMyMacResponse) {} + rpc SetMyMacAttribute(SetMyMacAttributeRequest) + returns (SetMyMacAttributeResponse) {} + rpc GetMyMacAttribute(GetMyMacAttributeRequest) + returns (GetMyMacAttributeResponse) {} } diff --git a/dataplane/proto/sai/nat.proto b/dataplane/proto/sai/nat.proto index 2a10854ec..4e078b742 100644 --- a/dataplane/proto/sai/nat.proto +++ b/dataplane/proto/sai/nat.proto @@ -7,170 +7,171 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum NatEntryAttr { - NAT_ENTRY_ATTR_UNSPECIFIED = 0; - NAT_ENTRY_ATTR_NAT_TYPE = 1; - NAT_ENTRY_ATTR_SRC_IP = 2; - NAT_ENTRY_ATTR_SRC_IP_MASK = 3; - NAT_ENTRY_ATTR_VR_ID = 4; - NAT_ENTRY_ATTR_DST_IP = 5; - NAT_ENTRY_ATTR_DST_IP_MASK = 6; - NAT_ENTRY_ATTR_L4_SRC_PORT = 7; - NAT_ENTRY_ATTR_L4_DST_PORT = 8; - NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT = 9; - NAT_ENTRY_ATTR_PACKET_COUNT = 10; - NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT = 11; - NAT_ENTRY_ATTR_BYTE_COUNT = 12; - NAT_ENTRY_ATTR_HIT_BIT_COR = 13; - NAT_ENTRY_ATTR_HIT_BIT = 14; - NAT_ENTRY_ATTR_AGING_TIME = 15; + NAT_ENTRY_ATTR_UNSPECIFIED = 0; + NAT_ENTRY_ATTR_NAT_TYPE = 1; + NAT_ENTRY_ATTR_SRC_IP = 2; + NAT_ENTRY_ATTR_SRC_IP_MASK = 3; + NAT_ENTRY_ATTR_VR_ID = 4; + NAT_ENTRY_ATTR_DST_IP = 5; + NAT_ENTRY_ATTR_DST_IP_MASK = 6; + NAT_ENTRY_ATTR_L4_SRC_PORT = 7; + NAT_ENTRY_ATTR_L4_DST_PORT = 8; + NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT = 9; + NAT_ENTRY_ATTR_PACKET_COUNT = 10; + NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT = 11; + NAT_ENTRY_ATTR_BYTE_COUNT = 12; + NAT_ENTRY_ATTR_HIT_BIT_COR = 13; + NAT_ENTRY_ATTR_HIT_BIT = 14; + NAT_ENTRY_ATTR_AGING_TIME = 15; } enum NatZoneCounterAttr { - NAT_ZONE_COUNTER_ATTR_UNSPECIFIED = 0; - NAT_ZONE_COUNTER_ATTR_NAT_TYPE = 1; - NAT_ZONE_COUNTER_ATTR_ZONE_ID = 2; - NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD = 3; - NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT = 4; - NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED = 5; - NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT = 6; - NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS = 7; - NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT = 8; + NAT_ZONE_COUNTER_ATTR_UNSPECIFIED = 0; + NAT_ZONE_COUNTER_ATTR_NAT_TYPE = 1; + NAT_ZONE_COUNTER_ATTR_ZONE_ID = 2; + NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD = 3; + NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT = 4; + NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED = 5; + NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT = 6; + NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS = 7; + NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT = 8; } message CreateNatEntryRequest { - option (sai_type) = OBJECT_TYPE_NAT_ENTRY; - NatEntry entry = 1; - optional NatType nat_type = 2[(attr_enum_value) = 1]; - optional bytes src_ip = 3[(attr_enum_value) = 2]; - optional bytes src_ip_mask = 4[(attr_enum_value) = 3]; - optional uint64 vr_id = 5[(attr_enum_value) = 4]; - optional bytes dst_ip = 6[(attr_enum_value) = 5]; - optional bytes dst_ip_mask = 7[(attr_enum_value) = 6]; - optional uint32 l4_src_port = 8[(attr_enum_value) = 7]; - optional uint32 l4_dst_port = 9[(attr_enum_value) = 8]; - optional bool enable_packet_count = 10[(attr_enum_value) = 9]; - optional uint64 packet_count = 11[(attr_enum_value) = 10]; - optional bool enable_byte_count = 12[(attr_enum_value) = 11]; - optional uint64 byte_count = 13[(attr_enum_value) = 12]; - optional bool hit_bit_cor = 14[(attr_enum_value) = 13]; - optional bool hit_bit = 15[(attr_enum_value) = 14]; - optional uint32 aging_time = 16[(attr_enum_value) = 15]; -} - -message CreateNatEntryResponse { -} + option (sai_type) = OBJECT_TYPE_NAT_ENTRY; + NatEntry entry = 1; + optional NatType nat_type = 2 [(attr_enum_value) = 1]; + optional bytes src_ip = 3 [(attr_enum_value) = 2]; + optional bytes src_ip_mask = 4 [(attr_enum_value) = 3]; + optional uint64 vr_id = 5 [(attr_enum_value) = 4]; + optional bytes dst_ip = 6 [(attr_enum_value) = 5]; + optional bytes dst_ip_mask = 7 [(attr_enum_value) = 6]; + optional uint32 l4_src_port = 8 [(attr_enum_value) = 7]; + optional uint32 l4_dst_port = 9 [(attr_enum_value) = 8]; + optional bool enable_packet_count = 10 [(attr_enum_value) = 9]; + optional uint64 packet_count = 11 [(attr_enum_value) = 10]; + optional bool enable_byte_count = 12 [(attr_enum_value) = 11]; + optional uint64 byte_count = 13 [(attr_enum_value) = 12]; + optional bool hit_bit_cor = 14 [(attr_enum_value) = 13]; + optional bool hit_bit = 15 [(attr_enum_value) = 14]; + optional uint32 aging_time = 16 [(attr_enum_value) = 15]; +} + +message CreateNatEntryResponse {} message RemoveNatEntryRequest { - NatEntry entry = 1; + NatEntry entry = 1; } -message RemoveNatEntryResponse { -} +message RemoveNatEntryResponse {} message SetNatEntryAttributeRequest { - NatEntry entry = 1; - optional NatType nat_type = 2[(attr_enum_value) = 1]; - optional bytes src_ip = 3[(attr_enum_value) = 2]; - optional bytes src_ip_mask = 4[(attr_enum_value) = 3]; - optional uint64 vr_id = 5[(attr_enum_value) = 4]; - optional bytes dst_ip = 6[(attr_enum_value) = 5]; - optional bytes dst_ip_mask = 7[(attr_enum_value) = 6]; - optional uint32 l4_src_port = 8[(attr_enum_value) = 7]; - optional uint32 l4_dst_port = 9[(attr_enum_value) = 8]; - optional bool enable_packet_count = 10[(attr_enum_value) = 9]; - optional uint64 packet_count = 11[(attr_enum_value) = 10]; - optional bool enable_byte_count = 12[(attr_enum_value) = 11]; - optional uint64 byte_count = 13[(attr_enum_value) = 12]; - optional bool hit_bit_cor = 14[(attr_enum_value) = 13]; - optional bool hit_bit = 15[(attr_enum_value) = 14]; - optional uint32 aging_time = 16[(attr_enum_value) = 15]; -} - -message SetNatEntryAttributeResponse { -} + NatEntry entry = 1; + optional NatType nat_type = 2 [(attr_enum_value) = 1]; + optional bytes src_ip = 3 [(attr_enum_value) = 2]; + optional bytes src_ip_mask = 4 [(attr_enum_value) = 3]; + optional uint64 vr_id = 5 [(attr_enum_value) = 4]; + optional bytes dst_ip = 6 [(attr_enum_value) = 5]; + optional bytes dst_ip_mask = 7 [(attr_enum_value) = 6]; + optional uint32 l4_src_port = 8 [(attr_enum_value) = 7]; + optional uint32 l4_dst_port = 9 [(attr_enum_value) = 8]; + optional bool enable_packet_count = 10 [(attr_enum_value) = 9]; + optional uint64 packet_count = 11 [(attr_enum_value) = 10]; + optional bool enable_byte_count = 12 [(attr_enum_value) = 11]; + optional uint64 byte_count = 13 [(attr_enum_value) = 12]; + optional bool hit_bit_cor = 14 [(attr_enum_value) = 13]; + optional bool hit_bit = 15 [(attr_enum_value) = 14]; + optional uint32 aging_time = 16 [(attr_enum_value) = 15]; +} + +message SetNatEntryAttributeResponse {} message GetNatEntryAttributeRequest { - NatEntry entry = 1; - repeated NatEntryAttr attr_type = 2; + NatEntry entry = 1; + repeated NatEntryAttr attr_type = 2; } message GetNatEntryAttributeResponse { - NatEntryAttribute attr = 1; + NatEntryAttribute attr = 1; } message CreateNatEntriesRequest { - repeated CreateNatEntryRequest reqs = 1; + repeated CreateNatEntryRequest reqs = 1; } message CreateNatEntriesResponse { - repeated CreateNatEntryResponse resps = 1; + repeated CreateNatEntryResponse resps = 1; } message RemoveNatEntriesRequest { - repeated RemoveNatEntryRequest reqs = 1; + repeated RemoveNatEntryRequest reqs = 1; } message RemoveNatEntriesResponse { - repeated RemoveNatEntryResponse resps = 1; + repeated RemoveNatEntryResponse resps = 1; } message CreateNatZoneCounterRequest { - option (sai_type) = OBJECT_TYPE_NAT_ZONE_COUNTER; - uint64 switch = 1; - optional NatType nat_type = 2[(attr_enum_value) = 1]; - optional uint32 zone_id = 3[(attr_enum_value) = 2]; - optional bool enable_discard = 4[(attr_enum_value) = 3]; - optional uint64 discard_packet_count = 5[(attr_enum_value) = 4]; - optional bool enable_translation_needed = 6[(attr_enum_value) = 5]; - optional uint64 translation_needed_packet_count = 7[(attr_enum_value) = 6]; - optional bool enable_translations = 8[(attr_enum_value) = 7]; - optional uint64 translations_packet_count = 9[(attr_enum_value) = 8]; + option (sai_type) = OBJECT_TYPE_NAT_ZONE_COUNTER; + uint64 switch = 1; + optional NatType nat_type = 2 [(attr_enum_value) = 1]; + optional uint32 zone_id = 3 [(attr_enum_value) = 2]; + optional bool enable_discard = 4 [(attr_enum_value) = 3]; + optional uint64 discard_packet_count = 5 [(attr_enum_value) = 4]; + optional bool enable_translation_needed = 6 [(attr_enum_value) = 5]; + optional uint64 translation_needed_packet_count = 7 [(attr_enum_value) = 6]; + optional bool enable_translations = 8 [(attr_enum_value) = 7]; + optional uint64 translations_packet_count = 9 [(attr_enum_value) = 8]; } message CreateNatZoneCounterResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveNatZoneCounterRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveNatZoneCounterResponse { -} +message RemoveNatZoneCounterResponse {} message SetNatZoneCounterAttributeRequest { - uint64 oid = 1; - optional NatType nat_type = 2[(attr_enum_value) = 1]; - optional uint32 zone_id = 3[(attr_enum_value) = 2]; - optional uint64 discard_packet_count = 4[(attr_enum_value) = 4]; - optional uint64 translation_needed_packet_count = 5[(attr_enum_value) = 6]; - optional uint64 translations_packet_count = 6[(attr_enum_value) = 8]; + uint64 oid = 1; + optional NatType nat_type = 2 [(attr_enum_value) = 1]; + optional uint32 zone_id = 3 [(attr_enum_value) = 2]; + optional uint64 discard_packet_count = 4 [(attr_enum_value) = 4]; + optional uint64 translation_needed_packet_count = 5 [(attr_enum_value) = 6]; + optional uint64 translations_packet_count = 6 [(attr_enum_value) = 8]; } -message SetNatZoneCounterAttributeResponse { -} +message SetNatZoneCounterAttributeResponse {} message GetNatZoneCounterAttributeRequest { - uint64 oid = 1; - repeated NatZoneCounterAttr attr_type = 2; + uint64 oid = 1; + repeated NatZoneCounterAttr attr_type = 2; } message GetNatZoneCounterAttributeResponse { - NatZoneCounterAttribute attr = 1; + NatZoneCounterAttribute attr = 1; } - service Nat { - rpc CreateNatEntry (CreateNatEntryRequest) returns (CreateNatEntryResponse) {} - rpc RemoveNatEntry (RemoveNatEntryRequest) returns (RemoveNatEntryResponse) {} - rpc SetNatEntryAttribute (SetNatEntryAttributeRequest) returns (SetNatEntryAttributeResponse) {} - rpc GetNatEntryAttribute (GetNatEntryAttributeRequest) returns (GetNatEntryAttributeResponse) {} - rpc CreateNatEntries (CreateNatEntriesRequest) returns (CreateNatEntriesResponse) {} - rpc RemoveNatEntries (RemoveNatEntriesRequest) returns (RemoveNatEntriesResponse) {} - rpc CreateNatZoneCounter (CreateNatZoneCounterRequest) returns (CreateNatZoneCounterResponse) {} - rpc RemoveNatZoneCounter (RemoveNatZoneCounterRequest) returns (RemoveNatZoneCounterResponse) {} - rpc SetNatZoneCounterAttribute (SetNatZoneCounterAttributeRequest) returns (SetNatZoneCounterAttributeResponse) {} - rpc GetNatZoneCounterAttribute (GetNatZoneCounterAttributeRequest) returns (GetNatZoneCounterAttributeResponse) {} + rpc CreateNatEntry(CreateNatEntryRequest) returns (CreateNatEntryResponse) {} + rpc RemoveNatEntry(RemoveNatEntryRequest) returns (RemoveNatEntryResponse) {} + rpc SetNatEntryAttribute(SetNatEntryAttributeRequest) + returns (SetNatEntryAttributeResponse) {} + rpc GetNatEntryAttribute(GetNatEntryAttributeRequest) + returns (GetNatEntryAttributeResponse) {} + rpc CreateNatEntries(CreateNatEntriesRequest) + returns (CreateNatEntriesResponse) {} + rpc RemoveNatEntries(RemoveNatEntriesRequest) + returns (RemoveNatEntriesResponse) {} + rpc CreateNatZoneCounter(CreateNatZoneCounterRequest) + returns (CreateNatZoneCounterResponse) {} + rpc RemoveNatZoneCounter(RemoveNatZoneCounterRequest) + returns (RemoveNatZoneCounterResponse) {} + rpc SetNatZoneCounterAttribute(SetNatZoneCounterAttributeRequest) + returns (SetNatZoneCounterAttributeResponse) {} + rpc GetNatZoneCounterAttribute(GetNatZoneCounterAttributeRequest) + returns (GetNatZoneCounterAttributeResponse) {} } diff --git a/dataplane/proto/sai/neighbor.proto b/dataplane/proto/sai/neighbor.proto index 38f360fc8..152369275 100644 --- a/dataplane/proto/sai/neighbor.proto +++ b/dataplane/proto/sai/neighbor.proto @@ -7,92 +7,93 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum NeighborEntryAttr { - NEIGHBOR_ENTRY_ATTR_UNSPECIFIED = 0; - NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS = 1; - NEIGHBOR_ENTRY_ATTR_PACKET_ACTION = 2; - NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID = 3; - NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE = 4; - NEIGHBOR_ENTRY_ATTR_META_DATA = 5; - NEIGHBOR_ENTRY_ATTR_COUNTER_ID = 6; - NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX = 7; - NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX = 8; - NEIGHBOR_ENTRY_ATTR_IS_LOCAL = 9; - NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY = 10; + NEIGHBOR_ENTRY_ATTR_UNSPECIFIED = 0; + NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS = 1; + NEIGHBOR_ENTRY_ATTR_PACKET_ACTION = 2; + NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID = 3; + NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE = 4; + NEIGHBOR_ENTRY_ATTR_META_DATA = 5; + NEIGHBOR_ENTRY_ATTR_COUNTER_ID = 6; + NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX = 7; + NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX = 8; + NEIGHBOR_ENTRY_ATTR_IS_LOCAL = 9; + NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY = 10; } message CreateNeighborEntryRequest { - option (sai_type) = OBJECT_TYPE_NEIGHBOR_ENTRY; - NeighborEntry entry = 1; - optional bytes dst_mac_address = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint64 user_trap_id = 4[(attr_enum_value) = 3]; - optional bool no_host_route = 5[(attr_enum_value) = 4]; - optional uint32 meta_data = 6[(attr_enum_value) = 5]; - optional uint64 counter_id = 7[(attr_enum_value) = 6]; - optional uint32 encap_index = 8[(attr_enum_value) = 7]; - optional bool encap_impose_index = 9[(attr_enum_value) = 8]; - optional bool is_local = 10[(attr_enum_value) = 9]; + option (sai_type) = OBJECT_TYPE_NEIGHBOR_ENTRY; + NeighborEntry entry = 1; + optional bytes dst_mac_address = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 4 [(attr_enum_value) = 3]; + optional bool no_host_route = 5 [(attr_enum_value) = 4]; + optional uint32 meta_data = 6 [(attr_enum_value) = 5]; + optional uint64 counter_id = 7 [(attr_enum_value) = 6]; + optional uint32 encap_index = 8 [(attr_enum_value) = 7]; + optional bool encap_impose_index = 9 [(attr_enum_value) = 8]; + optional bool is_local = 10 [(attr_enum_value) = 9]; } -message CreateNeighborEntryResponse { -} +message CreateNeighborEntryResponse {} message RemoveNeighborEntryRequest { - NeighborEntry entry = 1; + NeighborEntry entry = 1; } -message RemoveNeighborEntryResponse { -} +message RemoveNeighborEntryResponse {} message SetNeighborEntryAttributeRequest { - NeighborEntry entry = 1; - optional bytes dst_mac_address = 2[(attr_enum_value) = 1]; - optional PacketAction packet_action = 3[(attr_enum_value) = 2]; - optional uint64 user_trap_id = 4[(attr_enum_value) = 3]; - optional bool no_host_route = 5[(attr_enum_value) = 4]; - optional uint32 meta_data = 6[(attr_enum_value) = 5]; - optional uint64 counter_id = 7[(attr_enum_value) = 6]; - optional uint32 encap_index = 8[(attr_enum_value) = 7]; - optional bool encap_impose_index = 9[(attr_enum_value) = 8]; - optional bool is_local = 10[(attr_enum_value) = 9]; + NeighborEntry entry = 1; + optional bytes dst_mac_address = 2 [(attr_enum_value) = 1]; + optional PacketAction packet_action = 3 [(attr_enum_value) = 2]; + optional uint64 user_trap_id = 4 [(attr_enum_value) = 3]; + optional bool no_host_route = 5 [(attr_enum_value) = 4]; + optional uint32 meta_data = 6 [(attr_enum_value) = 5]; + optional uint64 counter_id = 7 [(attr_enum_value) = 6]; + optional uint32 encap_index = 8 [(attr_enum_value) = 7]; + optional bool encap_impose_index = 9 [(attr_enum_value) = 8]; + optional bool is_local = 10 [(attr_enum_value) = 9]; } -message SetNeighborEntryAttributeResponse { -} +message SetNeighborEntryAttributeResponse {} message GetNeighborEntryAttributeRequest { - NeighborEntry entry = 1; - repeated NeighborEntryAttr attr_type = 2; + NeighborEntry entry = 1; + repeated NeighborEntryAttr attr_type = 2; } message GetNeighborEntryAttributeResponse { - NeighborEntryAttribute attr = 1; + NeighborEntryAttribute attr = 1; } message CreateNeighborEntriesRequest { - repeated CreateNeighborEntryRequest reqs = 1; + repeated CreateNeighborEntryRequest reqs = 1; } message CreateNeighborEntriesResponse { - repeated CreateNeighborEntryResponse resps = 1; + repeated CreateNeighborEntryResponse resps = 1; } message RemoveNeighborEntriesRequest { - repeated RemoveNeighborEntryRequest reqs = 1; + repeated RemoveNeighborEntryRequest reqs = 1; } message RemoveNeighborEntriesResponse { - repeated RemoveNeighborEntryResponse resps = 1; + repeated RemoveNeighborEntryResponse resps = 1; } - service Neighbor { - rpc CreateNeighborEntry (CreateNeighborEntryRequest) returns (CreateNeighborEntryResponse) {} - rpc RemoveNeighborEntry (RemoveNeighborEntryRequest) returns (RemoveNeighborEntryResponse) {} - rpc SetNeighborEntryAttribute (SetNeighborEntryAttributeRequest) returns (SetNeighborEntryAttributeResponse) {} - rpc GetNeighborEntryAttribute (GetNeighborEntryAttributeRequest) returns (GetNeighborEntryAttributeResponse) {} - rpc CreateNeighborEntries (CreateNeighborEntriesRequest) returns (CreateNeighborEntriesResponse) {} - rpc RemoveNeighborEntries (RemoveNeighborEntriesRequest) returns (RemoveNeighborEntriesResponse) {} + rpc CreateNeighborEntry(CreateNeighborEntryRequest) + returns (CreateNeighborEntryResponse) {} + rpc RemoveNeighborEntry(RemoveNeighborEntryRequest) + returns (RemoveNeighborEntryResponse) {} + rpc SetNeighborEntryAttribute(SetNeighborEntryAttributeRequest) + returns (SetNeighborEntryAttributeResponse) {} + rpc GetNeighborEntryAttribute(GetNeighborEntryAttributeRequest) + returns (GetNeighborEntryAttributeResponse) {} + rpc CreateNeighborEntries(CreateNeighborEntriesRequest) + returns (CreateNeighborEntriesResponse) {} + rpc RemoveNeighborEntries(RemoveNeighborEntriesRequest) + returns (RemoveNeighborEntriesResponse) {} } diff --git a/dataplane/proto/sai/next_hop.proto b/dataplane/proto/sai/next_hop.proto index 4e4c8eecf..0b13d034f 100644 --- a/dataplane/proto/sai/next_hop.proto +++ b/dataplane/proto/sai/next_hop.proto @@ -7,116 +7,116 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum NextHopAttr { - NEXT_HOP_ATTR_UNSPECIFIED = 0; - NEXT_HOP_ATTR_TYPE = 1; - NEXT_HOP_ATTR_IP = 2; - NEXT_HOP_ATTR_ROUTER_INTERFACE_ID = 3; - NEXT_HOP_ATTR_TUNNEL_ID = 4; - NEXT_HOP_ATTR_TUNNEL_VNI = 5; - NEXT_HOP_ATTR_TUNNEL_MAC = 6; - NEXT_HOP_ATTR_SRV6_SIDLIST_ID = 7; - NEXT_HOP_ATTR_LABELSTACK = 8; - NEXT_HOP_ATTR_COUNTER_ID = 9; - NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL = 10; - NEXT_HOP_ATTR_OUTSEG_TYPE = 11; - NEXT_HOP_ATTR_OUTSEG_TTL_MODE = 12; - NEXT_HOP_ATTR_OUTSEG_TTL_VALUE = 13; - NEXT_HOP_ATTR_OUTSEG_EXP_MODE = 14; - NEXT_HOP_ATTR_OUTSEG_EXP_VALUE = 15; - NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 16; - NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE = 17; - NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE = 18; - NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE = 19; + NEXT_HOP_ATTR_UNSPECIFIED = 0; + NEXT_HOP_ATTR_TYPE = 1; + NEXT_HOP_ATTR_IP = 2; + NEXT_HOP_ATTR_ROUTER_INTERFACE_ID = 3; + NEXT_HOP_ATTR_TUNNEL_ID = 4; + NEXT_HOP_ATTR_TUNNEL_VNI = 5; + NEXT_HOP_ATTR_TUNNEL_MAC = 6; + NEXT_HOP_ATTR_SRV6_SIDLIST_ID = 7; + NEXT_HOP_ATTR_LABELSTACK = 8; + NEXT_HOP_ATTR_COUNTER_ID = 9; + NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL = 10; + NEXT_HOP_ATTR_OUTSEG_TYPE = 11; + NEXT_HOP_ATTR_OUTSEG_TTL_MODE = 12; + NEXT_HOP_ATTR_OUTSEG_TTL_VALUE = 13; + NEXT_HOP_ATTR_OUTSEG_EXP_MODE = 14; + NEXT_HOP_ATTR_OUTSEG_EXP_VALUE = 15; + NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 16; + NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE = 17; + NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE = 18; + NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE = 19; } message CreateNextHopRequest { - option (sai_type) = OBJECT_TYPE_NEXT_HOP; - uint64 switch = 1; - optional NextHopType type = 2[(attr_enum_value) = 1]; - optional bytes ip = 3[(attr_enum_value) = 2]; - optional uint64 router_interface_id = 4[(attr_enum_value) = 3]; - optional uint64 tunnel_id = 5[(attr_enum_value) = 4]; - optional uint32 tunnel_vni = 6[(attr_enum_value) = 5]; - optional bytes tunnel_mac = 7[(attr_enum_value) = 6]; - optional uint64 srv6_sidlist_id = 8[(attr_enum_value) = 7]; - repeated uint32 labelstack = 9[(attr_enum_value) = 8]; - optional uint64 counter_id = 10[(attr_enum_value) = 9]; - optional bool disable_decrement_ttl = 11[(attr_enum_value) = 10]; - optional OutsegType outseg_type = 12[(attr_enum_value) = 11]; - optional OutsegTtlMode outseg_ttl_mode = 13[(attr_enum_value) = 12]; - optional uint32 outseg_ttl_value = 14[(attr_enum_value) = 13]; - optional OutsegExpMode outseg_exp_mode = 15[(attr_enum_value) = 14]; - optional uint32 outseg_exp_value = 16[(attr_enum_value) = 15]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 17[(attr_enum_value) = 16]; - optional bool disable_src_mac_rewrite = 18[(attr_enum_value) = 17]; - optional bool disable_dst_mac_rewrite = 19[(attr_enum_value) = 18]; - optional bool disable_vlan_rewrite = 20[(attr_enum_value) = 19]; + option (sai_type) = OBJECT_TYPE_NEXT_HOP; + uint64 switch = 1; + optional NextHopType type = 2 [(attr_enum_value) = 1]; + optional bytes ip = 3 [(attr_enum_value) = 2]; + optional uint64 router_interface_id = 4 [(attr_enum_value) = 3]; + optional uint64 tunnel_id = 5 [(attr_enum_value) = 4]; + optional uint32 tunnel_vni = 6 [(attr_enum_value) = 5]; + optional bytes tunnel_mac = 7 [(attr_enum_value) = 6]; + optional uint64 srv6_sidlist_id = 8 [(attr_enum_value) = 7]; + repeated uint32 labelstack = 9 [(attr_enum_value) = 8]; + optional uint64 counter_id = 10 [(attr_enum_value) = 9]; + optional bool disable_decrement_ttl = 11 [(attr_enum_value) = 10]; + optional OutsegType outseg_type = 12 [(attr_enum_value) = 11]; + optional OutsegTtlMode outseg_ttl_mode = 13 [(attr_enum_value) = 12]; + optional uint32 outseg_ttl_value = 14 [(attr_enum_value) = 13]; + optional OutsegExpMode outseg_exp_mode = 15 [(attr_enum_value) = 14]; + optional uint32 outseg_exp_value = 16 [(attr_enum_value) = 15]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 17 + [(attr_enum_value) = 16]; + optional bool disable_src_mac_rewrite = 18 [(attr_enum_value) = 17]; + optional bool disable_dst_mac_rewrite = 19 [(attr_enum_value) = 18]; + optional bool disable_vlan_rewrite = 20 [(attr_enum_value) = 19]; } message CreateNextHopResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveNextHopRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveNextHopResponse { -} +message RemoveNextHopResponse {} message SetNextHopAttributeRequest { - uint64 oid = 1; - optional uint32 tunnel_vni = 2[(attr_enum_value) = 5]; - optional bytes tunnel_mac = 3[(attr_enum_value) = 6]; - optional uint64 counter_id = 4[(attr_enum_value) = 9]; - optional bool disable_decrement_ttl = 5[(attr_enum_value) = 10]; - optional OutsegType outseg_type = 6[(attr_enum_value) = 11]; - optional OutsegTtlMode outseg_ttl_mode = 7[(attr_enum_value) = 12]; - optional uint32 outseg_ttl_value = 8[(attr_enum_value) = 13]; - optional OutsegExpMode outseg_exp_mode = 9[(attr_enum_value) = 14]; - optional uint32 outseg_exp_value = 10[(attr_enum_value) = 15]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 11[(attr_enum_value) = 16]; - optional bool disable_src_mac_rewrite = 12[(attr_enum_value) = 17]; - optional bool disable_dst_mac_rewrite = 13[(attr_enum_value) = 18]; - optional bool disable_vlan_rewrite = 14[(attr_enum_value) = 19]; + uint64 oid = 1; + optional uint32 tunnel_vni = 2 [(attr_enum_value) = 5]; + optional bytes tunnel_mac = 3 [(attr_enum_value) = 6]; + optional uint64 counter_id = 4 [(attr_enum_value) = 9]; + optional bool disable_decrement_ttl = 5 [(attr_enum_value) = 10]; + optional OutsegType outseg_type = 6 [(attr_enum_value) = 11]; + optional OutsegTtlMode outseg_ttl_mode = 7 [(attr_enum_value) = 12]; + optional uint32 outseg_ttl_value = 8 [(attr_enum_value) = 13]; + optional OutsegExpMode outseg_exp_mode = 9 [(attr_enum_value) = 14]; + optional uint32 outseg_exp_value = 10 [(attr_enum_value) = 15]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 11 + [(attr_enum_value) = 16]; + optional bool disable_src_mac_rewrite = 12 [(attr_enum_value) = 17]; + optional bool disable_dst_mac_rewrite = 13 [(attr_enum_value) = 18]; + optional bool disable_vlan_rewrite = 14 [(attr_enum_value) = 19]; } -message SetNextHopAttributeResponse { -} +message SetNextHopAttributeResponse {} message GetNextHopAttributeRequest { - uint64 oid = 1; - repeated NextHopAttr attr_type = 2; + uint64 oid = 1; + repeated NextHopAttr attr_type = 2; } message GetNextHopAttributeResponse { - NextHopAttribute attr = 1; + NextHopAttribute attr = 1; } message CreateNextHopsRequest { - repeated CreateNextHopRequest reqs = 1; + repeated CreateNextHopRequest reqs = 1; } message CreateNextHopsResponse { - repeated CreateNextHopResponse resps = 1; + repeated CreateNextHopResponse resps = 1; } message RemoveNextHopsRequest { - repeated RemoveNextHopRequest reqs = 1; + repeated RemoveNextHopRequest reqs = 1; } message RemoveNextHopsResponse { - repeated RemoveNextHopResponse resps = 1; + repeated RemoveNextHopResponse resps = 1; } - service NextHop { - rpc CreateNextHop (CreateNextHopRequest) returns (CreateNextHopResponse) {} - rpc RemoveNextHop (RemoveNextHopRequest) returns (RemoveNextHopResponse) {} - rpc SetNextHopAttribute (SetNextHopAttributeRequest) returns (SetNextHopAttributeResponse) {} - rpc GetNextHopAttribute (GetNextHopAttributeRequest) returns (GetNextHopAttributeResponse) {} - rpc CreateNextHops (CreateNextHopsRequest) returns (CreateNextHopsResponse) {} - rpc RemoveNextHops (RemoveNextHopsRequest) returns (RemoveNextHopsResponse) {} + rpc CreateNextHop(CreateNextHopRequest) returns (CreateNextHopResponse) {} + rpc RemoveNextHop(RemoveNextHopRequest) returns (RemoveNextHopResponse) {} + rpc SetNextHopAttribute(SetNextHopAttributeRequest) + returns (SetNextHopAttributeResponse) {} + rpc GetNextHopAttribute(GetNextHopAttributeRequest) + returns (GetNextHopAttributeResponse) {} + rpc CreateNextHops(CreateNextHopsRequest) returns (CreateNextHopsResponse) {} + rpc RemoveNextHops(RemoveNextHopsRequest) returns (RemoveNextHopsResponse) {} } diff --git a/dataplane/proto/sai/next_hop_group.proto b/dataplane/proto/sai/next_hop_group.proto index c049ba999..f584f8fb0 100644 --- a/dataplane/proto/sai/next_hop_group.proto +++ b/dataplane/proto/sai/next_hop_group.proto @@ -7,226 +7,235 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum NextHopGroupAttr { - NEXT_HOP_GROUP_ATTR_UNSPECIFIED = 0; - NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT = 1; - NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST = 2; - NEXT_HOP_GROUP_ATTR_TYPE = 3; - NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER = 4; - NEXT_HOP_GROUP_ATTR_COUNTER_ID = 5; - NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE = 6; - NEXT_HOP_GROUP_ATTR_REAL_SIZE = 7; - NEXT_HOP_GROUP_ATTR_SELECTION_MAP = 8; - NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP = 9; - NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID = 10; - NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS = 11; - NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS = 12; - NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS = 13; - NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST = 14; - NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST = 15; - NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST = 16; + NEXT_HOP_GROUP_ATTR_UNSPECIFIED = 0; + NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT = 1; + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST = 2; + NEXT_HOP_GROUP_ATTR_TYPE = 3; + NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER = 4; + NEXT_HOP_GROUP_ATTR_COUNTER_ID = 5; + NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE = 6; + NEXT_HOP_GROUP_ATTR_REAL_SIZE = 7; + NEXT_HOP_GROUP_ATTR_SELECTION_MAP = 8; + NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP = 9; + NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID = 10; + NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS = 11; + NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS = 12; + NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS = 13; + NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST = 14; + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST = 15; + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST = 16; } enum NextHopGroupMemberAttr { - NEXT_HOP_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID = 1; - NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID = 2; - NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT = 3; - NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE = 4; - NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE = 5; - NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT = 6; - NEXT_HOP_GROUP_MEMBER_ATTR_INDEX = 7; - NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID = 8; - NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID = 9; - NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH = 10; + NEXT_HOP_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID = 1; + NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID = 2; + NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT = 3; + NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE = 4; + NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE = 5; + NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT = 6; + NEXT_HOP_GROUP_MEMBER_ATTR_INDEX = 7; + NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID = 8; + NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID = 9; + NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH = 10; } enum NextHopGroupMapAttr { - NEXT_HOP_GROUP_MAP_ATTR_UNSPECIFIED = 0; - NEXT_HOP_GROUP_MAP_ATTR_TYPE = 1; - NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST = 2; + NEXT_HOP_GROUP_MAP_ATTR_UNSPECIFIED = 0; + NEXT_HOP_GROUP_MAP_ATTR_TYPE = 1; + NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST = 2; } message CreateNextHopGroupRequest { - option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP; - uint64 switch = 1; - optional NextHopGroupType type = 2[(attr_enum_value) = 3]; - optional bool set_switchover = 3[(attr_enum_value) = 4]; - optional uint64 counter_id = 4[(attr_enum_value) = 5]; - optional uint32 configured_size = 5[(attr_enum_value) = 6]; - optional uint64 selection_map = 6[(attr_enum_value) = 8]; - optional bool hierarchical_nexthop = 7[(attr_enum_value) = 9]; - optional uint64 ars_object_id = 8[(attr_enum_value) = 10]; - repeated uint64 next_hop_list = 9[(attr_enum_value) = 14]; - repeated uint32 next_hop_member_weight_list = 10[(attr_enum_value) = 15]; - repeated uint64 next_hop_member_counter_list = 11[(attr_enum_value) = 16]; + option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP; + uint64 switch = 1; + optional NextHopGroupType type = 2 [(attr_enum_value) = 3]; + optional bool set_switchover = 3 [(attr_enum_value) = 4]; + optional uint64 counter_id = 4 [(attr_enum_value) = 5]; + optional uint32 configured_size = 5 [(attr_enum_value) = 6]; + optional uint64 selection_map = 6 [(attr_enum_value) = 8]; + optional bool hierarchical_nexthop = 7 [(attr_enum_value) = 9]; + optional uint64 ars_object_id = 8 [(attr_enum_value) = 10]; + repeated uint64 next_hop_list = 9 [(attr_enum_value) = 14]; + repeated uint32 next_hop_member_weight_list = 10 [(attr_enum_value) = 15]; + repeated uint64 next_hop_member_counter_list = 11 [(attr_enum_value) = 16]; } message CreateNextHopGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveNextHopGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveNextHopGroupResponse { -} +message RemoveNextHopGroupResponse {} message SetNextHopGroupAttributeRequest { - uint64 oid = 1; - optional bool set_switchover = 2[(attr_enum_value) = 4]; - optional uint64 counter_id = 3[(attr_enum_value) = 5]; - optional uint64 selection_map = 4[(attr_enum_value) = 8]; - optional uint64 ars_object_id = 5[(attr_enum_value) = 10]; - repeated uint64 next_hop_list = 6[(attr_enum_value) = 14]; - repeated uint32 next_hop_member_weight_list = 7[(attr_enum_value) = 15]; - repeated uint64 next_hop_member_counter_list = 8[(attr_enum_value) = 16]; + uint64 oid = 1; + optional bool set_switchover = 2 [(attr_enum_value) = 4]; + optional uint64 counter_id = 3 [(attr_enum_value) = 5]; + optional uint64 selection_map = 4 [(attr_enum_value) = 8]; + optional uint64 ars_object_id = 5 [(attr_enum_value) = 10]; + repeated uint64 next_hop_list = 6 [(attr_enum_value) = 14]; + repeated uint32 next_hop_member_weight_list = 7 [(attr_enum_value) = 15]; + repeated uint64 next_hop_member_counter_list = 8 [(attr_enum_value) = 16]; } -message SetNextHopGroupAttributeResponse { -} +message SetNextHopGroupAttributeResponse {} message GetNextHopGroupAttributeRequest { - uint64 oid = 1; - repeated NextHopGroupAttr attr_type = 2; + uint64 oid = 1; + repeated NextHopGroupAttr attr_type = 2; } message GetNextHopGroupAttributeResponse { - NextHopGroupAttribute attr = 1; + NextHopGroupAttribute attr = 1; } message CreateNextHopGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 next_hop_group_id = 2[(attr_enum_value) = 1]; - optional uint64 next_hop_id = 3[(attr_enum_value) = 2]; - optional uint32 weight = 4[(attr_enum_value) = 3]; - optional NextHopGroupMemberConfiguredRole configured_role = 5[(attr_enum_value) = 4]; - optional uint64 monitored_object = 6[(attr_enum_value) = 6]; - optional uint32 index = 7[(attr_enum_value) = 7]; - optional uint32 sequence_id = 8[(attr_enum_value) = 8]; - optional uint64 counter_id = 9[(attr_enum_value) = 9]; - optional bool ars_alternate_path = 10[(attr_enum_value) = 10]; + option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 next_hop_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 next_hop_id = 3 [(attr_enum_value) = 2]; + optional uint32 weight = 4 [(attr_enum_value) = 3]; + optional NextHopGroupMemberConfiguredRole configured_role = 5 + [(attr_enum_value) = 4]; + optional uint64 monitored_object = 6 [(attr_enum_value) = 6]; + optional uint32 index = 7 [(attr_enum_value) = 7]; + optional uint32 sequence_id = 8 [(attr_enum_value) = 8]; + optional uint64 counter_id = 9 [(attr_enum_value) = 9]; + optional bool ars_alternate_path = 10 [(attr_enum_value) = 10]; } message CreateNextHopGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveNextHopGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveNextHopGroupMemberResponse { -} +message RemoveNextHopGroupMemberResponse {} message SetNextHopGroupMemberAttributeRequest { - uint64 oid = 1; - optional uint64 next_hop_id = 2[(attr_enum_value) = 2]; - optional uint32 weight = 3[(attr_enum_value) = 3]; - optional uint64 monitored_object = 4[(attr_enum_value) = 6]; - optional uint32 sequence_id = 5[(attr_enum_value) = 8]; - optional uint64 counter_id = 6[(attr_enum_value) = 9]; - optional bool ars_alternate_path = 7[(attr_enum_value) = 10]; + uint64 oid = 1; + optional uint64 next_hop_id = 2 [(attr_enum_value) = 2]; + optional uint32 weight = 3 [(attr_enum_value) = 3]; + optional uint64 monitored_object = 4 [(attr_enum_value) = 6]; + optional uint32 sequence_id = 5 [(attr_enum_value) = 8]; + optional uint64 counter_id = 6 [(attr_enum_value) = 9]; + optional bool ars_alternate_path = 7 [(attr_enum_value) = 10]; } -message SetNextHopGroupMemberAttributeResponse { -} +message SetNextHopGroupMemberAttributeResponse {} message GetNextHopGroupMemberAttributeRequest { - uint64 oid = 1; - repeated NextHopGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated NextHopGroupMemberAttr attr_type = 2; } message GetNextHopGroupMemberAttributeResponse { - NextHopGroupMemberAttribute attr = 1; + NextHopGroupMemberAttribute attr = 1; } message CreateNextHopGroupMembersRequest { - repeated CreateNextHopGroupMemberRequest reqs = 1; + repeated CreateNextHopGroupMemberRequest reqs = 1; } message CreateNextHopGroupMembersResponse { - repeated CreateNextHopGroupMemberResponse resps = 1; + repeated CreateNextHopGroupMemberResponse resps = 1; } message RemoveNextHopGroupMembersRequest { - repeated RemoveNextHopGroupMemberRequest reqs = 1; + repeated RemoveNextHopGroupMemberRequest reqs = 1; } message RemoveNextHopGroupMembersResponse { - repeated RemoveNextHopGroupMemberResponse resps = 1; + repeated RemoveNextHopGroupMemberResponse resps = 1; } message CreateNextHopGroupMapRequest { - option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP_MAP; - uint64 switch = 1; - optional NextHopGroupMapType type = 2[(attr_enum_value) = 1]; - repeated UintMap map_to_value_list = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_NEXT_HOP_GROUP_MAP; + uint64 switch = 1; + optional NextHopGroupMapType type = 2 [(attr_enum_value) = 1]; + repeated UintMap map_to_value_list = 3 [(attr_enum_value) = 2]; } message CreateNextHopGroupMapResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveNextHopGroupMapRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveNextHopGroupMapResponse { -} +message RemoveNextHopGroupMapResponse {} message SetNextHopGroupMapAttributeRequest { - uint64 oid = 1; - repeated UintMap map_to_value_list = 2[(attr_enum_value) = 2]; + uint64 oid = 1; + repeated UintMap map_to_value_list = 2 [(attr_enum_value) = 2]; } -message SetNextHopGroupMapAttributeResponse { -} +message SetNextHopGroupMapAttributeResponse {} message GetNextHopGroupMapAttributeRequest { - uint64 oid = 1; - repeated NextHopGroupMapAttr attr_type = 2; + uint64 oid = 1; + repeated NextHopGroupMapAttr attr_type = 2; } message GetNextHopGroupMapAttributeResponse { - NextHopGroupMapAttribute attr = 1; + NextHopGroupMapAttribute attr = 1; } message CreateNextHopGroupsRequest { - repeated CreateNextHopGroupRequest reqs = 1; + repeated CreateNextHopGroupRequest reqs = 1; } message CreateNextHopGroupsResponse { - repeated CreateNextHopGroupResponse resps = 1; + repeated CreateNextHopGroupResponse resps = 1; } message RemoveNextHopGroupsRequest { - repeated RemoveNextHopGroupRequest reqs = 1; + repeated RemoveNextHopGroupRequest reqs = 1; } message RemoveNextHopGroupsResponse { - repeated RemoveNextHopGroupResponse resps = 1; + repeated RemoveNextHopGroupResponse resps = 1; } - service NextHopGroup { - rpc CreateNextHopGroup (CreateNextHopGroupRequest) returns (CreateNextHopGroupResponse) {} - rpc RemoveNextHopGroup (RemoveNextHopGroupRequest) returns (RemoveNextHopGroupResponse) {} - rpc SetNextHopGroupAttribute (SetNextHopGroupAttributeRequest) returns (SetNextHopGroupAttributeResponse) {} - rpc GetNextHopGroupAttribute (GetNextHopGroupAttributeRequest) returns (GetNextHopGroupAttributeResponse) {} - rpc CreateNextHopGroupMember (CreateNextHopGroupMemberRequest) returns (CreateNextHopGroupMemberResponse) {} - rpc RemoveNextHopGroupMember (RemoveNextHopGroupMemberRequest) returns (RemoveNextHopGroupMemberResponse) {} - rpc SetNextHopGroupMemberAttribute (SetNextHopGroupMemberAttributeRequest) returns (SetNextHopGroupMemberAttributeResponse) {} - rpc GetNextHopGroupMemberAttribute (GetNextHopGroupMemberAttributeRequest) returns (GetNextHopGroupMemberAttributeResponse) {} - rpc CreateNextHopGroupMembers (CreateNextHopGroupMembersRequest) returns (CreateNextHopGroupMembersResponse) {} - rpc RemoveNextHopGroupMembers (RemoveNextHopGroupMembersRequest) returns (RemoveNextHopGroupMembersResponse) {} - rpc CreateNextHopGroupMap (CreateNextHopGroupMapRequest) returns (CreateNextHopGroupMapResponse) {} - rpc RemoveNextHopGroupMap (RemoveNextHopGroupMapRequest) returns (RemoveNextHopGroupMapResponse) {} - rpc SetNextHopGroupMapAttribute (SetNextHopGroupMapAttributeRequest) returns (SetNextHopGroupMapAttributeResponse) {} - rpc GetNextHopGroupMapAttribute (GetNextHopGroupMapAttributeRequest) returns (GetNextHopGroupMapAttributeResponse) {} - rpc CreateNextHopGroups (CreateNextHopGroupsRequest) returns (CreateNextHopGroupsResponse) {} - rpc RemoveNextHopGroups (RemoveNextHopGroupsRequest) returns (RemoveNextHopGroupsResponse) {} + rpc CreateNextHopGroup(CreateNextHopGroupRequest) + returns (CreateNextHopGroupResponse) {} + rpc RemoveNextHopGroup(RemoveNextHopGroupRequest) + returns (RemoveNextHopGroupResponse) {} + rpc SetNextHopGroupAttribute(SetNextHopGroupAttributeRequest) + returns (SetNextHopGroupAttributeResponse) {} + rpc GetNextHopGroupAttribute(GetNextHopGroupAttributeRequest) + returns (GetNextHopGroupAttributeResponse) {} + rpc CreateNextHopGroupMember(CreateNextHopGroupMemberRequest) + returns (CreateNextHopGroupMemberResponse) {} + rpc RemoveNextHopGroupMember(RemoveNextHopGroupMemberRequest) + returns (RemoveNextHopGroupMemberResponse) {} + rpc SetNextHopGroupMemberAttribute(SetNextHopGroupMemberAttributeRequest) + returns (SetNextHopGroupMemberAttributeResponse) {} + rpc GetNextHopGroupMemberAttribute(GetNextHopGroupMemberAttributeRequest) + returns (GetNextHopGroupMemberAttributeResponse) {} + rpc CreateNextHopGroupMembers(CreateNextHopGroupMembersRequest) + returns (CreateNextHopGroupMembersResponse) {} + rpc RemoveNextHopGroupMembers(RemoveNextHopGroupMembersRequest) + returns (RemoveNextHopGroupMembersResponse) {} + rpc CreateNextHopGroupMap(CreateNextHopGroupMapRequest) + returns (CreateNextHopGroupMapResponse) {} + rpc RemoveNextHopGroupMap(RemoveNextHopGroupMapRequest) + returns (RemoveNextHopGroupMapResponse) {} + rpc SetNextHopGroupMapAttribute(SetNextHopGroupMapAttributeRequest) + returns (SetNextHopGroupMapAttributeResponse) {} + rpc GetNextHopGroupMapAttribute(GetNextHopGroupMapAttributeRequest) + returns (GetNextHopGroupMapAttributeResponse) {} + rpc CreateNextHopGroups(CreateNextHopGroupsRequest) + returns (CreateNextHopGroupsResponse) {} + rpc RemoveNextHopGroups(RemoveNextHopGroupsRequest) + returns (RemoveNextHopGroupsResponse) {} } diff --git a/dataplane/proto/sai/poe.proto b/dataplane/proto/sai/poe.proto index 97c80acf7..ba4d17cf2 100644 --- a/dataplane/proto/sai/poe.proto +++ b/dataplane/proto/sai/poe.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service Poe { -} +service Poe {} diff --git a/dataplane/proto/sai/policer.pb.go b/dataplane/proto/sai/policer.pb.go index 25bdb1e4d..4a518614c 100644 --- a/dataplane/proto/sai/policer.pb.go +++ b/dataplane/proto/sai/policer.pb.go @@ -37,6 +37,8 @@ const ( PolicerAttr_POLICER_ATTR_RED_PACKET_ACTION PolicerAttr = 10 PolicerAttr_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST PolicerAttr = 11 PolicerAttr_POLICER_ATTR_OBJECT_STAGE PolicerAttr = 12 + PolicerAttr_POLICER_ATTR_STATS_COUNT_MODE PolicerAttr = 13 + PolicerAttr_POLICER_ATTR_SELECTIVE_COUNTER_LIST PolicerAttr = 14 ) // Enum value maps for PolicerAttr. @@ -55,6 +57,8 @@ var ( 10: "POLICER_ATTR_RED_PACKET_ACTION", 11: "POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST", 12: "POLICER_ATTR_OBJECT_STAGE", + 13: "POLICER_ATTR_STATS_COUNT_MODE", + 14: "POLICER_ATTR_SELECTIVE_COUNTER_LIST", } PolicerAttr_value = map[string]int32{ "POLICER_ATTR_UNSPECIFIED": 0, @@ -70,6 +74,8 @@ var ( "POLICER_ATTR_RED_PACKET_ACTION": 10, "POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST": 11, "POLICER_ATTR_OBJECT_STAGE": 12, + "POLICER_ATTR_STATS_COUNT_MODE": 13, + "POLICER_ATTR_SELECTIVE_COUNTER_LIST": 14, } ) @@ -115,6 +121,8 @@ type CreatePolicerRequest struct { RedPacketAction *PacketAction `protobuf:"varint,11,opt,name=red_packet_action,json=redPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"red_packet_action,omitempty"` EnableCounterPacketActionList []PacketAction `protobuf:"varint,12,rep,packed,name=enable_counter_packet_action_list,json=enableCounterPacketActionList,proto3,enum=lemming.dataplane.sai.PacketAction" json:"enable_counter_packet_action_list,omitempty"` ObjectStage *ObjectStage `protobuf:"varint,13,opt,name=object_stage,json=objectStage,proto3,enum=lemming.dataplane.sai.ObjectStage,oneof" json:"object_stage,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,14,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,15,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -240,6 +248,20 @@ func (x *CreatePolicerRequest) GetObjectStage() ObjectStage { return ObjectStage_OBJECT_STAGE_UNSPECIFIED } +func (x *CreatePolicerRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreatePolicerRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreatePolicerResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -375,6 +397,8 @@ type SetPolicerAttributeRequest struct { YellowPacketAction *PacketAction `protobuf:"varint,7,opt,name=yellow_packet_action,json=yellowPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"yellow_packet_action,omitempty"` RedPacketAction *PacketAction `protobuf:"varint,8,opt,name=red_packet_action,json=redPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"red_packet_action,omitempty"` EnableCounterPacketActionList []PacketAction `protobuf:"varint,9,rep,packed,name=enable_counter_packet_action_list,json=enableCounterPacketActionList,proto3,enum=lemming.dataplane.sai.PacketAction" json:"enable_counter_packet_action_list,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,10,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,11,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -472,6 +496,20 @@ func (x *SetPolicerAttributeRequest) GetEnableCounterPacketActionList() []Packet return nil } +func (x *SetPolicerAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetPolicerAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetPolicerAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -708,7 +746,7 @@ var file_dataplane_proto_sai_policer_proto_rawDesc = string([]byte{ 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x08, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x09, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x4c, 0x0a, @@ -765,160 +803,186 @@ var file_dataplane_proto_sai_policer_proto_rawDesc = string([]byte{ 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x67, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0a, 0x52, 0x0b, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x74, - 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x13, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, - 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, - 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x17, 0x0a, 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x22, - 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xac, 0x05, - 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x1d, - 0x0a, 0x03, 0x63, 0x62, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x03, 0x63, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, - 0x03, 0x63, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x01, 0x52, 0x03, 0x63, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, - 0x70, 0x62, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x06, 0x48, 0x02, 0x52, 0x03, 0x70, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x70, - 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, - 0x48, 0x03, 0x52, 0x03, 0x70, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x67, 0x72, - 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x14, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x0b, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0f, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x14, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x13, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x63, 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x70, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x29, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x28, 0x0a, 0x14, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdd, + 0x06, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, + 0x1d, 0x0a, 0x03, 0x63, 0x62, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x03, 0x63, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, + 0x0a, 0x03, 0x63, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x03, 0x63, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, + 0x03, 0x70, 0x62, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x06, 0x48, 0x02, 0x52, 0x03, 0x70, 0x62, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, + 0x70, 0x69, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x07, 0x48, 0x03, 0x52, 0x03, 0x70, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x13, 0x67, + 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x04, 0x52, 0x11, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, + 0x14, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, 0x12, 0x79, 0x65, 0x6c, 0x6c, + 0x6f, 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x12, 0x5c, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x64, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x75, 0x0a, 0x21, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x05, 0x52, 0x12, 0x79, 0x65, 0x6c, 0x6c, 0x6f, - 0x77, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, - 0x12, 0x5c, 0x0a, 0x11, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, + 0x07, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x14, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, + 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, + 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x79, + 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1d, + 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, + 0x1a, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, + 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x64, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x75, - 0x0a, 0x21, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x62, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x63, 0x69, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x70, 0x62, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x70, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x65, 0x65, 0x6e, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x79, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x72, 0x65, 0x64, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, - 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6f, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x1b, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x9a, 0x03, 0x0a, - 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1c, 0x0a, 0x18, - 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x4c, 0x49, 0x43, - 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x12, 0x1d, - 0x0a, 0x19, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, - 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, - 0x10, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x42, - 0x53, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x43, 0x49, 0x52, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x4c, - 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x42, 0x53, 0x10, 0x06, 0x12, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6f, 0x0a, 0x16, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x31, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0xe6, + 0x03, 0x0a, 0x0b, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1c, + 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, + 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x4f, 0x4c, + 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x02, + 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x49, 0x52, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x25, 0x0a, 0x21, 0x50, - 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x59, 0x45, 0x4c, 0x4c, - 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x09, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, - 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, - 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x32, 0xd9, 0x04, 0x0a, 0x07, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x6c, + 0x43, 0x42, 0x53, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x49, 0x52, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x50, + 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x42, 0x53, 0x10, + 0x06, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x50, 0x49, 0x52, 0x10, 0x07, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x4c, 0x49, 0x43, + 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x25, 0x0a, + 0x21, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x59, 0x45, + 0x4c, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x09, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x4c, 0x49, + 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, + 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x10, 0x0c, 0x12, 0x21, 0x0a, 0x1d, 0x50, + 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0d, 0x12, 0x27, + 0x0a, 0x23, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, + 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0e, 0x32, 0xd9, 0x04, 0x0a, 0x07, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x65, 0x72, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x7e, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x72, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -952,8 +1016,9 @@ var file_dataplane_proto_sai_policer_proto_goTypes = []any{ (PolicerColorSource)(0), // 13: lemming.dataplane.sai.PolicerColorSource (PacketAction)(0), // 14: lemming.dataplane.sai.PacketAction (ObjectStage)(0), // 15: lemming.dataplane.sai.ObjectStage - (*PolicerAttribute)(nil), // 16: lemming.dataplane.sai.PolicerAttribute - (PolicerStat)(0), // 17: lemming.dataplane.sai.PolicerStat + (StatsCountMode)(0), // 16: lemming.dataplane.sai.StatsCountMode + (*PolicerAttribute)(nil), // 17: lemming.dataplane.sai.PolicerAttribute + (PolicerStat)(0), // 18: lemming.dataplane.sai.PolicerStat } var file_dataplane_proto_sai_policer_proto_depIdxs = []int32{ 11, // 0: lemming.dataplane.sai.CreatePolicerRequest.meter_type:type_name -> lemming.dataplane.sai.MeterType @@ -964,28 +1029,30 @@ var file_dataplane_proto_sai_policer_proto_depIdxs = []int32{ 14, // 5: lemming.dataplane.sai.CreatePolicerRequest.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction 14, // 6: lemming.dataplane.sai.CreatePolicerRequest.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction 15, // 7: lemming.dataplane.sai.CreatePolicerRequest.object_stage:type_name -> lemming.dataplane.sai.ObjectStage - 14, // 8: lemming.dataplane.sai.SetPolicerAttributeRequest.green_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 14, // 9: lemming.dataplane.sai.SetPolicerAttributeRequest.yellow_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 14, // 10: lemming.dataplane.sai.SetPolicerAttributeRequest.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 14, // 11: lemming.dataplane.sai.SetPolicerAttributeRequest.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction - 0, // 12: lemming.dataplane.sai.GetPolicerAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PolicerAttr - 16, // 13: lemming.dataplane.sai.GetPolicerAttributeResponse.attr:type_name -> lemming.dataplane.sai.PolicerAttribute - 17, // 14: lemming.dataplane.sai.GetPolicerStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PolicerStat - 1, // 15: lemming.dataplane.sai.Policer.CreatePolicer:input_type -> lemming.dataplane.sai.CreatePolicerRequest - 3, // 16: lemming.dataplane.sai.Policer.RemovePolicer:input_type -> lemming.dataplane.sai.RemovePolicerRequest - 5, // 17: lemming.dataplane.sai.Policer.SetPolicerAttribute:input_type -> lemming.dataplane.sai.SetPolicerAttributeRequest - 7, // 18: lemming.dataplane.sai.Policer.GetPolicerAttribute:input_type -> lemming.dataplane.sai.GetPolicerAttributeRequest - 9, // 19: lemming.dataplane.sai.Policer.GetPolicerStats:input_type -> lemming.dataplane.sai.GetPolicerStatsRequest - 2, // 20: lemming.dataplane.sai.Policer.CreatePolicer:output_type -> lemming.dataplane.sai.CreatePolicerResponse - 4, // 21: lemming.dataplane.sai.Policer.RemovePolicer:output_type -> lemming.dataplane.sai.RemovePolicerResponse - 6, // 22: lemming.dataplane.sai.Policer.SetPolicerAttribute:output_type -> lemming.dataplane.sai.SetPolicerAttributeResponse - 8, // 23: lemming.dataplane.sai.Policer.GetPolicerAttribute:output_type -> lemming.dataplane.sai.GetPolicerAttributeResponse - 10, // 24: lemming.dataplane.sai.Policer.GetPolicerStats:output_type -> lemming.dataplane.sai.GetPolicerStatsResponse - 20, // [20:25] is the sub-list for method output_type - 15, // [15:20] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 16, // 8: lemming.dataplane.sai.CreatePolicerRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 14, // 9: lemming.dataplane.sai.SetPolicerAttributeRequest.green_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 14, // 10: lemming.dataplane.sai.SetPolicerAttributeRequest.yellow_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 14, // 11: lemming.dataplane.sai.SetPolicerAttributeRequest.red_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 14, // 12: lemming.dataplane.sai.SetPolicerAttributeRequest.enable_counter_packet_action_list:type_name -> lemming.dataplane.sai.PacketAction + 16, // 13: lemming.dataplane.sai.SetPolicerAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 14: lemming.dataplane.sai.GetPolicerAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PolicerAttr + 17, // 15: lemming.dataplane.sai.GetPolicerAttributeResponse.attr:type_name -> lemming.dataplane.sai.PolicerAttribute + 18, // 16: lemming.dataplane.sai.GetPolicerStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PolicerStat + 1, // 17: lemming.dataplane.sai.Policer.CreatePolicer:input_type -> lemming.dataplane.sai.CreatePolicerRequest + 3, // 18: lemming.dataplane.sai.Policer.RemovePolicer:input_type -> lemming.dataplane.sai.RemovePolicerRequest + 5, // 19: lemming.dataplane.sai.Policer.SetPolicerAttribute:input_type -> lemming.dataplane.sai.SetPolicerAttributeRequest + 7, // 20: lemming.dataplane.sai.Policer.GetPolicerAttribute:input_type -> lemming.dataplane.sai.GetPolicerAttributeRequest + 9, // 21: lemming.dataplane.sai.Policer.GetPolicerStats:input_type -> lemming.dataplane.sai.GetPolicerStatsRequest + 2, // 22: lemming.dataplane.sai.Policer.CreatePolicer:output_type -> lemming.dataplane.sai.CreatePolicerResponse + 4, // 23: lemming.dataplane.sai.Policer.RemovePolicer:output_type -> lemming.dataplane.sai.RemovePolicerResponse + 6, // 24: lemming.dataplane.sai.Policer.SetPolicerAttribute:output_type -> lemming.dataplane.sai.SetPolicerAttributeResponse + 8, // 25: lemming.dataplane.sai.Policer.GetPolicerAttribute:output_type -> lemming.dataplane.sai.GetPolicerAttributeResponse + 10, // 26: lemming.dataplane.sai.Policer.GetPolicerStats:output_type -> lemming.dataplane.sai.GetPolicerStatsResponse + 22, // [22:27] is the sub-list for method output_type + 17, // [17:22] is the sub-list for method input_type + 17, // [17:17] is the sub-list for extension type_name + 17, // [17:17] is the sub-list for extension extendee + 0, // [0:17] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_policer_proto_init() } diff --git a/dataplane/proto/sai/policer.proto b/dataplane/proto/sai/policer.proto index d45966c76..ce4f92322 100644 --- a/dataplane/proto/sai/policer.proto +++ b/dataplane/proto/sai/policer.proto @@ -7,89 +7,96 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum PolicerAttr { - POLICER_ATTR_UNSPECIFIED = 0; - POLICER_ATTR_METER_TYPE = 1; - POLICER_ATTR_MODE = 2; - POLICER_ATTR_COLOR_SOURCE = 3; - POLICER_ATTR_CBS = 4; - POLICER_ATTR_CIR = 5; - POLICER_ATTR_PBS = 6; - POLICER_ATTR_PIR = 7; - POLICER_ATTR_GREEN_PACKET_ACTION = 8; - POLICER_ATTR_YELLOW_PACKET_ACTION = 9; - POLICER_ATTR_RED_PACKET_ACTION = 10; - POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST = 11; - POLICER_ATTR_OBJECT_STAGE = 12; + POLICER_ATTR_UNSPECIFIED = 0; + POLICER_ATTR_METER_TYPE = 1; + POLICER_ATTR_MODE = 2; + POLICER_ATTR_COLOR_SOURCE = 3; + POLICER_ATTR_CBS = 4; + POLICER_ATTR_CIR = 5; + POLICER_ATTR_PBS = 6; + POLICER_ATTR_PIR = 7; + POLICER_ATTR_GREEN_PACKET_ACTION = 8; + POLICER_ATTR_YELLOW_PACKET_ACTION = 9; + POLICER_ATTR_RED_PACKET_ACTION = 10; + POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST = 11; + POLICER_ATTR_OBJECT_STAGE = 12; + POLICER_ATTR_STATS_COUNT_MODE = 13; + POLICER_ATTR_SELECTIVE_COUNTER_LIST = 14; } message CreatePolicerRequest { - option (sai_type) = OBJECT_TYPE_POLICER; - uint64 switch = 1; - optional MeterType meter_type = 2[(attr_enum_value) = 1]; - optional PolicerMode mode = 3[(attr_enum_value) = 2]; - optional PolicerColorSource color_source = 4[(attr_enum_value) = 3]; - optional uint64 cbs = 5[(attr_enum_value) = 4]; - optional uint64 cir = 6[(attr_enum_value) = 5]; - optional uint64 pbs = 7[(attr_enum_value) = 6]; - optional uint64 pir = 8[(attr_enum_value) = 7]; - optional PacketAction green_packet_action = 9[(attr_enum_value) = 8]; - optional PacketAction yellow_packet_action = 10[(attr_enum_value) = 9]; - optional PacketAction red_packet_action = 11[(attr_enum_value) = 10]; - repeated PacketAction enable_counter_packet_action_list = 12[(attr_enum_value) = 11]; - optional ObjectStage object_stage = 13[(attr_enum_value) = 12]; + option (sai_type) = OBJECT_TYPE_POLICER; + uint64 switch = 1; + optional MeterType meter_type = 2 [(attr_enum_value) = 1]; + optional PolicerMode mode = 3 [(attr_enum_value) = 2]; + optional PolicerColorSource color_source = 4 [(attr_enum_value) = 3]; + optional uint64 cbs = 5 [(attr_enum_value) = 4]; + optional uint64 cir = 6 [(attr_enum_value) = 5]; + optional uint64 pbs = 7 [(attr_enum_value) = 6]; + optional uint64 pir = 8 [(attr_enum_value) = 7]; + optional PacketAction green_packet_action = 9 [(attr_enum_value) = 8]; + optional PacketAction yellow_packet_action = 10 [(attr_enum_value) = 9]; + optional PacketAction red_packet_action = 11 [(attr_enum_value) = 10]; + repeated PacketAction enable_counter_packet_action_list = 12 + [(attr_enum_value) = 11]; + optional ObjectStage object_stage = 13 [(attr_enum_value) = 12]; + optional StatsCountMode stats_count_mode = 14 [(attr_enum_value) = 13]; + repeated uint64 selective_counter_list = 15 [(attr_enum_value) = 14]; } message CreatePolicerResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemovePolicerRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemovePolicerResponse { -} +message RemovePolicerResponse {} message SetPolicerAttributeRequest { - uint64 oid = 1; - optional uint64 cbs = 2[(attr_enum_value) = 4]; - optional uint64 cir = 3[(attr_enum_value) = 5]; - optional uint64 pbs = 4[(attr_enum_value) = 6]; - optional uint64 pir = 5[(attr_enum_value) = 7]; - optional PacketAction green_packet_action = 6[(attr_enum_value) = 8]; - optional PacketAction yellow_packet_action = 7[(attr_enum_value) = 9]; - optional PacketAction red_packet_action = 8[(attr_enum_value) = 10]; - repeated PacketAction enable_counter_packet_action_list = 9[(attr_enum_value) = 11]; + uint64 oid = 1; + optional uint64 cbs = 2 [(attr_enum_value) = 4]; + optional uint64 cir = 3 [(attr_enum_value) = 5]; + optional uint64 pbs = 4 [(attr_enum_value) = 6]; + optional uint64 pir = 5 [(attr_enum_value) = 7]; + optional PacketAction green_packet_action = 6 [(attr_enum_value) = 8]; + optional PacketAction yellow_packet_action = 7 [(attr_enum_value) = 9]; + optional PacketAction red_packet_action = 8 [(attr_enum_value) = 10]; + repeated PacketAction enable_counter_packet_action_list = 9 + [(attr_enum_value) = 11]; + optional StatsCountMode stats_count_mode = 10 [(attr_enum_value) = 13]; + repeated uint64 selective_counter_list = 11 [(attr_enum_value) = 14]; } -message SetPolicerAttributeResponse { -} +message SetPolicerAttributeResponse {} message GetPolicerAttributeRequest { - uint64 oid = 1; - repeated PolicerAttr attr_type = 2; + uint64 oid = 1; + repeated PolicerAttr attr_type = 2; } message GetPolicerAttributeResponse { - PolicerAttribute attr = 1; + PolicerAttribute attr = 1; } message GetPolicerStatsRequest { - uint64 oid = 1; - repeated PolicerStat counter_ids = 2; + uint64 oid = 1; + repeated PolicerStat counter_ids = 2; } message GetPolicerStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Policer { - rpc CreatePolicer (CreatePolicerRequest) returns (CreatePolicerResponse) {} - rpc RemovePolicer (RemovePolicerRequest) returns (RemovePolicerResponse) {} - rpc SetPolicerAttribute (SetPolicerAttributeRequest) returns (SetPolicerAttributeResponse) {} - rpc GetPolicerAttribute (GetPolicerAttributeRequest) returns (GetPolicerAttributeResponse) {} - rpc GetPolicerStats (GetPolicerStatsRequest) returns (GetPolicerStatsResponse) {} + rpc CreatePolicer(CreatePolicerRequest) returns (CreatePolicerResponse) {} + rpc RemovePolicer(RemovePolicerRequest) returns (RemovePolicerResponse) {} + rpc SetPolicerAttribute(SetPolicerAttributeRequest) + returns (SetPolicerAttributeResponse) {} + rpc GetPolicerAttribute(GetPolicerAttributeRequest) + returns (GetPolicerAttributeResponse) {} + rpc GetPolicerStats(GetPolicerStatsRequest) + returns (GetPolicerStatsResponse) {} } diff --git a/dataplane/proto/sai/port.pb.go b/dataplane/proto/sai/port.pb.go index 50d8ee420..cfd6fee34 100644 --- a/dataplane/proto/sai/port.pb.go +++ b/dataplane/proto/sai/port.pb.go @@ -203,6 +203,11 @@ const ( PortAttr_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT PortAttr = 176 PortAttr_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT PortAttr = 177 PortAttr_PORT_ATTR_POE_PORT_ID PortAttr = 178 + PortAttr_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE PortAttr = 179 + PortAttr_PORT_ATTR_UNRELIABLE_LOS PortAttr = 180 + PortAttr_PORT_ATTR_ERROR_STATUS PortAttr = 181 + PortAttr_PORT_ATTR_STATS_COUNT_MODE PortAttr = 182 + PortAttr_PORT_ATTR_SELECTIVE_COUNTER_LIST PortAttr = 183 ) // Enum value maps for PortAttr. @@ -387,6 +392,11 @@ var ( 176: "PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT", 177: "PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT", 178: "PORT_ATTR_POE_PORT_ID", + 179: "PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE", + 180: "PORT_ATTR_UNRELIABLE_LOS", + 181: "PORT_ATTR_ERROR_STATUS", + 182: "PORT_ATTR_STATS_COUNT_MODE", + 183: "PORT_ATTR_SELECTIVE_COUNTER_LIST", } PortAttr_value = map[string]int32{ "PORT_ATTR_UNSPECIFIED": 0, @@ -568,6 +578,11 @@ var ( "PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT": 176, "PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT": 177, "PORT_ATTR_POE_PORT_ID": 178, + "PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE": 179, + "PORT_ATTR_UNRELIABLE_LOS": 180, + "PORT_ATTR_ERROR_STATUS": 181, + "PORT_ATTR_STATS_COUNT_MODE": 182, + "PORT_ATTR_SELECTIVE_COUNTER_LIST": 183, } ) @@ -926,6 +941,9 @@ type CreatePortRequest struct { CableType *PortCableType `protobuf:"varint,111,opt,name=cable_type,json=cableType,proto3,enum=lemming.dataplane.sai.PortCableType,oneof" json:"cable_type,omitempty"` ArsPortLoadPastWeight *uint32 `protobuf:"varint,112,opt,name=ars_port_load_past_weight,json=arsPortLoadPastWeight,proto3,oneof" json:"ars_port_load_past_weight,omitempty"` ArsPortLoadFutureWeight *uint32 `protobuf:"varint,113,opt,name=ars_port_load_future_weight,json=arsPortLoadFutureWeight,proto3,oneof" json:"ars_port_load_future_weight,omitempty"` + UnreliableLos *bool `protobuf:"varint,114,opt,name=unreliable_los,json=unreliableLos,proto3,oneof" json:"unreliable_los,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,115,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,116,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1751,6 +1769,27 @@ func (x *CreatePortRequest) GetArsPortLoadFutureWeight() uint32 { return 0 } +func (x *CreatePortRequest) GetUnreliableLos() bool { + if x != nil && x.UnreliableLos != nil { + return *x.UnreliableLos + } + return false +} + +func (x *CreatePortRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreatePortRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreatePortResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1987,6 +2026,9 @@ type SetPortAttributeRequest struct { CableType *PortCableType `protobuf:"varint,108,opt,name=cable_type,json=cableType,proto3,enum=lemming.dataplane.sai.PortCableType,oneof" json:"cable_type,omitempty"` ArsPortLoadPastWeight *uint32 `protobuf:"varint,109,opt,name=ars_port_load_past_weight,json=arsPortLoadPastWeight,proto3,oneof" json:"ars_port_load_past_weight,omitempty"` ArsPortLoadFutureWeight *uint32 `protobuf:"varint,110,opt,name=ars_port_load_future_weight,json=arsPortLoadFutureWeight,proto3,oneof" json:"ars_port_load_future_weight,omitempty"` + UnreliableLos *bool `protobuf:"varint,111,opt,name=unreliable_los,json=unreliableLos,proto3,oneof" json:"unreliable_los,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,112,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,113,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2791,6 +2833,27 @@ func (x *SetPortAttributeRequest) GetArsPortLoadFutureWeight() uint32 { return 0 } +func (x *SetPortAttributeRequest) GetUnreliableLos() bool { + if x != nil && x.UnreliableLos != nil { + return *x.UnreliableLos + } + return false +} + +func (x *SetPortAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetPortAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetPortAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -4491,7 +4554,7 @@ var file_dataplane_proto_sai_port_proto_rawDesc = string([]byte{ 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, 0x4f, 0x0a, 0x11, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x51, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x0c, 0x68, 0x77, 0x5f, 0x6c, 0x61, @@ -4985,93 +5048,750 @@ var file_dataplane_proto_sai_port_proto_rawDesc = string([]byte{ 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x71, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb1, 0x01, 0x48, 0x5c, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x57, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x02, 0x42, 0x08, 0x0a, - 0x06, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, 0x75, 0x6c, 0x6c, - 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, - 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1b, 0x0a, - 0x19, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, - 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, - 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, - 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, - 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, - 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, - 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, - 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, - 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x14, - 0x0a, 0x12, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, - 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, - 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, + 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x5d, 0x52, 0x0d, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x73, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xb6, 0x01, 0x48, 0x5e, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x74, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xb7, 0x01, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x02, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x66, + 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, + 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, 0x0a, + 0x1d, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, + 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x23, + 0x0a, 0x21, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, + 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, + 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, + 0x65, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, + 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, + 0x65, 0x63, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x21, 0x0a, + 0x1f, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, + 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, + 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, + 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, + 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, + 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, + 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, + 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, + 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x6c, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x77, + 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, 0x0a, 0x0e, + 0x5f, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, + 0x0a, 0x15, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x74, 0x70, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, + 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, + 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, + 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, + 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, + 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x20, 0x0a, 0x1e, 0x58, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, + 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, + 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x69, 0x70, 0x67, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, + 0x27, 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x61, 0x62, + 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, + 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, + 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, + 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, + 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, + 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, + 0x72, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x72, + 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, + 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, + 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, + 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, + 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, + 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6c, 0x6f, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x26, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd5, + 0x4f, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x05, + 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x20, 0x48, 0x00, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x2f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x22, 0x48, 0x01, + 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x23, 0x48, 0x02, 0x52, + 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x50, + 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x24, + 0x48, 0x03, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x31, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x73, + 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x25, 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x53, 0x70, + 0x65, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, + 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x26, 0x52, 0x11, 0x61, 0x64, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x12, + 0x73, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, + 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, + 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, + 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x5f, 0x73, + 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x28, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x48, 0x61, + 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x44, 0x0a, + 0x18, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, + 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x04, 0x52, 0x15, 0x61, 0x64, 0x76, 0x65, 0x72, + 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, + 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2a, 0x48, 0x05, 0x52, + 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x77, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, + 0x20, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x79, 0x6d, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, + 0x06, 0x52, 0x1d, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x73, 0x79, + 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, + 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, + 0x48, 0x07, 0x52, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4d, 0x65, + 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x61, 0x64, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2d, 0x48, + 0x08, 0x52, 0x11, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x4f, 0x75, 0x69, + 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x09, 0x52, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x56, 0x6c, 0x61, + 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2f, 0x48, 0x0a, 0x52, + 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x50, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x64, 0x72, 0x6f, 0x70, 0x5f, + 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x30, 0x48, 0x0b, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x55, 0x6e, + 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x64, 0x72, 0x6f, + 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x31, 0x48, 0x0c, 0x52, 0x0a, 0x64, 0x72, 0x6f, 0x70, 0x54, 0x61, + 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x16, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x6f, 0x70, + 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x32, + 0x48, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x4c, 0x6f, 0x6f, 0x70, + 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x75, + 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x33, 0x48, 0x0e, 0x52, + 0x0e, 0x75, 0x73, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x46, 0x65, 0x63, 0x88, + 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x15, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x34, + 0x48, 0x0f, 0x52, 0x07, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x63, + 0x0a, 0x11, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, + 0x64, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x35, 0x48, 0x10, 0x52, + 0x0f, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x36, + 0x48, 0x11, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x73, 0x63, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, 0x48, 0x12, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, + 0x12, 0x4f, 0x0a, 0x1e, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x38, + 0x48, 0x13, 0x52, 0x1a, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x57, 0x0a, 0x22, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, + 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, 0x14, 0x52, 0x1e, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3a, 0x48, 0x15, + 0x52, 0x1e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x6d, + 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x18, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x16, 0x52, 0x15, 0x67, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, + 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x3c, 0x48, 0x17, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, + 0x6c, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3d, 0x48, + 0x18, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x39, 0x0a, 0x12, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, + 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x3e, 0x48, 0x19, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, + 0x20, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3f, 0x48, 0x1a, 0x52, + 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, + 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x21, 0x20, + 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, 0x52, 0x14, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x3a, 0x0a, 0x15, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x69, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, + 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x23, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, 0x1b, 0x52, 0x19, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1a, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x1c, 0x52, 0x18, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1d, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x45, 0x52, 0x1a, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x47, 0x0a, 0x1c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x26, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x46, 0x52, 0x19, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, + 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x0a, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x1d, 0x52, 0x09, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x1e, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, + 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x29, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x1f, 0x52, + 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2a, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, 0x48, 0x20, 0x52, 0x12, 0x71, + 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x21, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, + 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, + 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x22, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, + 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, + 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x4d, 0x48, 0x23, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, + 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x24, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, + 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x4f, 0x48, 0x25, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x4a, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x30, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x50, 0x48, 0x26, 0x52, + 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x26, 0x71, + 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, - 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x1d, 0x0a, 0x1b, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x77, 0x61, 0x6b, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6b, - 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, - 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x62, + 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x31, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x51, 0x48, 0x27, 0x52, 0x20, 0x71, 0x6f, 0x73, 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1d, 0x71, 0x6f, + 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x32, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x28, 0x52, 0x18, 0x71, 0x6f, 0x73, + 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x71, 0x6f, 0x73, 0x5f, + 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x33, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x53, 0x48, 0x29, 0x52, 0x15, 0x71, 0x6f, 0x73, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x1f, 0x71, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x34, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x52, + 0x1b, 0x71, 0x6f, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x1e, + 0x71, 0x6f, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, + 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x35, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x52, 0x1a, 0x71, 0x6f, + 0x73, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, 0x1a, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x2a, 0x52, 0x17, 0x70, 0x72, 0x69, 0x6f, + 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x18, + 0x37, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x2b, 0x52, + 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x5f, 0x72, 0x78, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x58, 0x48, 0x2c, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, + 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x78, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, + 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x2d, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, + 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x78, + 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, 0x2e, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, + 0x16, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x0d, 0x68, 0x77, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x3c, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x2f, 0x52, 0x0b, 0x68, 0x77, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, + 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x48, 0x30, 0x52, 0x09, 0x65, 0x65, 0x65, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x65, 0x65, 0x5f, 0x69, + 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x31, 0x52, 0x0b, 0x65, 0x65, 0x65, 0x49, 0x64, 0x6c, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x65, 0x65, 0x5f, + 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x32, 0x52, 0x0b, 0x65, 0x65, 0x65, 0x57, 0x61, + 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, 0x73, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x40, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x33, 0x52, 0x0e, 0x69, 0x73, + 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, + 0x2f, 0x0a, 0x0d, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x41, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, 0x48, 0x34, + 0x52, 0x0b, 0x70, 0x6b, 0x74, 0x54, 0x78, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x42, + 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x52, 0x09, 0x74, 0x61, + 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x64, 0x65, + 0x73, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, 0x43, 0x20, + 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x52, 0x11, 0x73, 0x65, 0x72, + 0x64, 0x65, 0x73, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x12, 0x2d, + 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, + 0x18, 0x44, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x52, 0x0d, + 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x33, 0x0a, + 0x11, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, + 0x52, 0x10, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x14, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x46, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x35, 0x52, 0x12, 0x6c, 0x69, 0x6e, 0x6b, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x47, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x50, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, + 0x36, 0x52, 0x07, 0x70, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, + 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x48, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x37, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x19, 0x61, + 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, + 0x52, 0x17, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x62, + 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x18, 0x4a, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x38, 0x52, 0x0e, 0x70, 0x72, + 0x62, 0x73, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, + 0x53, 0x0a, 0x0b, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x4b, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x70, 0x48, 0x39, 0x52, 0x0a, 0x70, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x4c, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, 0x48, 0x3a, 0x52, 0x13, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, + 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x4d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x77, 0x48, 0x3b, 0x52, + 0x11, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, + 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, + 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x78, + 0x48, 0x3c, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, + 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x20, 0x71, + 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x4f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x79, 0x48, 0x3d, 0x52, + 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, + 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, + 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x7a, 0x48, 0x3e, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x48, + 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x51, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, 0x48, 0x3f, 0x52, 0x16, 0x61, + 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x4f, 0x76, 0x65, + 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0d, 0x6c, 0x6f, 0x6f, 0x70, + 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x6f, 0x70, + 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x83, + 0x01, 0x48, 0x40, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x10, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x64, 0x69, 0x78, 0x4d, + 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x85, 0x01, 0x48, 0x41, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x5f, + 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x54, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, + 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, + 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, 0x01, 0x48, 0x42, 0x52, 0x11, + 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x78, 0x5f, 0x73, + 0x67, 0x6d, 0x69, 0x69, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x64, + 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x55, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x87, 0x01, 0x48, 0x43, 0x52, 0x19, 0x31, 0x30, 0x30, 0x30, 0x78, 0x53, 0x67, 0x6d, + 0x69, 0x69, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x41, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x48, 0x44, 0x52, 0x0a, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x0a, 0x64, 0x75, + 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x75, 0x61, 0x6c, 0x4d, + 0x65, 0x64, 0x69, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x45, 0x52, + 0x09, 0x64, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, + 0x03, 0x69, 0x70, 0x67, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x8b, 0x01, 0x48, 0x46, 0x52, 0x03, 0x69, 0x70, 0x67, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, + 0x1b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x59, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x47, 0x52, 0x18, 0x67, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x1d, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x18, 0x5a, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, 0x48, 0x52, 0x1a, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x71, + 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, + 0x5b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8e, 0x01, 0x48, 0x49, + 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x5a, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x4a, 0x52, 0x1e, 0x71, 0x6f, 0x73, 0x4d, 0x70, + 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x13, + 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x92, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, + 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x5e, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, + 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, + 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x33, 0x0a, 0x0e, + 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x5f, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, 0x48, 0x4b, 0x52, + 0x0d, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, + 0x60, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9c, 0x01, 0x48, 0x4c, + 0x52, 0x09, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4c, + 0x0a, 0x1c, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, + 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x61, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9d, 0x01, 0x48, 0x4d, 0x52, + 0x18, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x53, 0x63, 0x61, 0x6c, + 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, + 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, + 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x4e, 0x52, 0x15, 0x61, 0x72, 0x73, 0x50, + 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x9f, 0x01, 0x48, 0x4f, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, + 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3a, 0x0a, 0x12, 0x61, 0x72, 0x73, 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, + 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x64, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x50, 0x52, 0x10, 0x61, 0x72, 0x73, 0x41, 0x6c, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x13, + 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, + 0x74, 0x68, 0x6d, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x51, 0x52, 0x11, 0x65, 0x63, 0x6d, 0x70, + 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, + 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, + 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa3, + 0x01, 0x48, 0x52, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa4, 0x01, 0x48, 0x53, 0x52, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x48, + 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, + 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x54, 0x52, 0x12, 0x68, 0x6f, 0x73, 0x74, 0x54, 0x78, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x11, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, + 0x74, 0x66, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa8, + 0x01, 0x48, 0x55, 0x52, 0x0f, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x49, 0x6e, 0x74, 0x66, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x1b, 0x70, 0x61, 0x74, 0x68, + 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x61, 0x74, 0x68, 0x54, 0x72, + 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x56, 0x52, 0x18, 0x70, + 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x0f, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x6b, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x44, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x57, 0x52, 0x0e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x0a, + 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaf, 0x01, 0x48, + 0x58, 0x52, 0x09, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x46, 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x6d, 0x20, 0x01, + 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, 0x48, 0x59, 0x52, 0x15, 0x61, + 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, 0x57, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, + 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xb1, 0x01, 0x48, 0x5a, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, + 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6c, 0x6f, 0x73, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x5b, 0x52, 0x0d, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x4c, 0x6f, 0x73, 0x88, 0x01, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x70, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xb6, 0x01, 0x48, 0x5c, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x71, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb7, 0x01, + 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, + 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1f, + 0x0a, 0x1d, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, + 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x61, + 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x16, + 0x0a, 0x14, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, + 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, + 0x67, 0x65, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x5f, + 0x66, 0x65, 0x63, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x21, + 0x0a, 0x1f, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, + 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, + 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, 0x13, 0x5f, + 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, + 0x63, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, + 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, 0x6e, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, + 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, + 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, + 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, + 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, + 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, + 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, + 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, 0x0a, 0x19, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, + 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, + 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x73, + 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x74, 0x70, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, @@ -5125,1519 +5845,904 @@ var file_dataplane_proto_sai_port_proto_rawDesc = string([]byte{ 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x26, - 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x14, 0x0a, - 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xda, 0x4d, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x12, 0x21, 0x0a, 0x05, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x48, 0x00, 0x52, 0x05, 0x73, 0x70, 0x65, 0x65, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x22, 0x48, 0x01, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x23, 0x48, 0x02, 0x52, 0x0a, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0a, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x24, 0x48, 0x03, 0x52, 0x09, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x10, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x25, 0x52, 0x0f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x26, 0x52, 0x11, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x73, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, - 0x65, 0x64, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x64, 0x65, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, - 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x27, 0x52, 0x19, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, - 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x47, 0x0a, 0x1c, 0x61, 0x64, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x64, 0x75, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x28, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x48, 0x61, 0x6c, 0x66, 0x44, 0x75, 0x70, 0x6c, 0x65, 0x78, 0x53, 0x70, 0x65, - 0x65, 0x64, 0x12, 0x44, 0x0a, 0x18, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x29, 0x48, 0x04, 0x52, 0x15, - 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, - 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x1c, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x2a, 0x48, 0x05, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x54, 0x0a, 0x20, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x06, 0x52, 0x1d, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, - 0x65, 0x64, 0x41, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x61, 0x75, 0x73, - 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x15, 0x61, 0x64, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x11, + 0x0a, 0x0f, 0x5f, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, + 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, + 0x3c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x07, 0x52, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x73, 0x65, 0x64, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x3b, 0x0a, 0x13, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6f, 0x75, - 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x2d, 0x48, 0x08, 0x52, 0x11, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, - 0x65, 0x64, 0x4f, 0x75, 0x69, 0x43, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2e, 0x48, 0x09, 0x52, 0x0a, 0x70, 0x6f, - 0x72, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x2f, 0x48, 0x0a, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x6c, 0x61, - 0x6e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, - 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x11, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x30, 0x48, 0x0b, 0x52, 0x0c, 0x64, - 0x72, 0x6f, 0x70, 0x55, 0x6e, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, - 0x0a, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x65, 0x64, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x31, 0x48, 0x0c, 0x52, 0x0a, 0x64, - 0x72, 0x6f, 0x70, 0x54, 0x61, 0x67, 0x67, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x72, 0x0a, 0x16, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, - 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, + 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2e, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x83, + 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, + 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, + 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, + 0x52, 0x10, 0x71, 0x6f, 0x73, 0x57, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3f, 0x42, 0x0a, 0x0a, + 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, + 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2a, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x22, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, + 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x77, + 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x10, + 0x71, 0x6f, 0x73, 0x57, 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x53, + 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, + 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x32, 0x48, 0x0d, 0x52, 0x14, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x35, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x5f, 0x66, 0x65, 0x63, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x33, 0x48, 0x0e, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x46, 0x65, 0x63, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x65, 0x63, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x34, 0x48, 0x0f, 0x52, 0x07, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x63, 0x0a, 0x11, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x35, 0x48, 0x10, 0x52, 0x0f, 0x66, 0x65, 0x63, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x78, 0x74, - 0x65, 0x6e, 0x64, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x36, 0x48, 0x11, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, - 0x73, 0x63, 0x70, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x18, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x37, 0x48, 0x12, 0x52, 0x03, 0x6d, - 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x1e, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, - 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x38, 0x48, 0x13, 0x52, 0x1a, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x53, 0x74, - 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, - 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x22, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x39, 0x48, 0x14, 0x52, 0x1e, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x57, 0x0a, 0x22, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, - 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x3a, 0x48, 0x15, 0x52, 0x1e, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, - 0x53, 0x74, 0x6f, 0x72, 0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x18, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, - 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3b, 0x48, 0x16, - 0x52, 0x15, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3c, 0x48, 0x17, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x3d, 0x48, 0x18, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x12, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x3e, 0x48, 0x19, 0x52, 0x10, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x37, 0x0a, 0x11, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x3f, 0x48, 0x1a, 0x52, 0x0f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x21, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x41, - 0x52, 0x14, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x15, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x22, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x42, 0x52, 0x13, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x1b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x43, 0x48, - 0x1b, 0x52, 0x19, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x49, 0x0a, 0x1a, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x24, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x44, 0x48, 0x1c, 0x52, 0x18, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1d, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, - 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x03, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x45, 0x52, 0x1a, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x1c, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x26, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x46, 0x52, 0x19, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, - 0x65, 0x4d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, - 0x0a, 0x0a, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x27, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x47, 0x48, 0x1d, 0x52, 0x09, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x18, 0x28, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x1e, 0x52, 0x0c, 0x71, 0x6f, - 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, - 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x29, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x49, 0x48, 0x1f, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, - 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, - 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4a, - 0x48, 0x20, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, 0x6f, 0x73, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x2b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4b, 0x48, 0x21, 0x52, - 0x0e, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, - 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2c, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4c, 0x48, 0x22, 0x52, 0x11, 0x71, 0x6f, 0x73, - 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4d, 0x48, 0x23, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, - 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1d, - 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2e, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4e, 0x48, 0x24, 0x52, 0x17, 0x71, - 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x6f, - 0x74, 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, 0x6f, 0x73, - 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x4f, 0x48, 0x25, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x54, 0x63, - 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, - 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x30, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x50, 0x48, 0x26, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x5d, 0x0a, 0x26, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x31, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x51, 0x48, 0x27, 0x52, 0x20, 0x71, 0x6f, 0x73, 0x50, - 0x66, 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x4c, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x32, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x28, - 0x52, 0x18, 0x71, 0x6f, 0x73, 0x50, 0x66, 0x63, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, - 0x18, 0x71, 0x6f, 0x73, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x33, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, 0x29, 0x52, 0x15, 0x71, 0x6f, 0x73, 0x53, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1f, 0x71, 0x6f, 0x73, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x34, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x54, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x4a, 0x0a, 0x1e, 0x71, 0x6f, 0x73, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, - 0x69, 0x73, 0x74, 0x18, 0x35, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x55, 0x52, 0x1a, 0x71, 0x6f, 0x73, 0x45, 0x67, 0x72, 0x65, 0x73, 0x73, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x7c, 0x0a, - 0x1a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x36, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, 0x2a, 0x52, - 0x17, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, - 0x74, 0x72, 0x6f, 0x6c, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x57, 0x48, 0x2b, 0x52, 0x13, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, - 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x18, 0x38, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, 0x2c, 0x52, 0x15, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x78, 0x88, - 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, - 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x18, 0x39, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x2d, 0x52, 0x15, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x54, 0x78, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x5a, 0x48, 0x2e, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, - 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x16, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x3b, 0x20, 0x03, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x52, 0x13, 0x65, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x2f, 0x0a, 0x0d, 0x68, 0x77, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x3c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x2f, - 0x52, 0x0b, 0x68, 0x77, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x65, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x3d, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x48, 0x30, 0x52, 0x09, - 0x65, 0x65, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, - 0x65, 0x65, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3e, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x31, 0x52, 0x0b, 0x65, - 0x65, 0x65, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, - 0x0d, 0x65, 0x65, 0x65, 0x5f, 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3f, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x32, 0x52, 0x0b, - 0x65, 0x65, 0x65, 0x57, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, - 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x18, 0x40, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, - 0x33, 0x52, 0x0e, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x41, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x62, 0x48, 0x34, 0x52, 0x0b, 0x70, 0x6b, 0x74, 0x54, 0x78, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x63, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x12, - 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, - 0x69, 0x73, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, - 0x52, 0x11, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x50, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, - 0x73, 0x69, 0x73, 0x12, 0x2d, 0x0a, 0x0e, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x64, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x65, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x64, 0x72, 0x69, 0x76, - 0x65, 0x72, 0x12, 0x33, 0x0a, 0x11, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x5f, 0x69, 0x70, 0x72, - 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x52, 0x10, 0x73, 0x65, 0x72, 0x64, 0x65, 0x73, 0x49, 0x70, 0x72, - 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x3d, 0x0a, 0x14, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, - 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x46, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x35, 0x52, - 0x12, 0x6c, 0x69, 0x6e, 0x6b, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x74, 0x70, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x68, 0x48, 0x36, 0x52, 0x07, 0x70, 0x74, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, 0x37, 0x52, 0x0d, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x6c, 0x0a, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x49, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x52, 0x17, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, - 0x0a, 0x0f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, - 0x6c, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, - 0x38, 0x52, 0x0e, 0x70, 0x72, 0x62, 0x73, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, - 0x6c, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0b, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x62, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x39, 0x52, 0x0a, 0x70, 0x72, 0x62, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, - 0x74, 0x6c, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x76, - 0x48, 0x3a, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x16, 0x71, 0x6f, - 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x77, 0x48, 0x3b, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, - 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x71, 0x6f, - 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x78, 0x48, 0x3c, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, - 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x50, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x79, 0x48, 0x3d, 0x52, 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, - 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, - 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x70, 0x69, 0x64, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0d, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7a, 0x48, 0x3e, 0x52, 0x04, 0x74, 0x70, 0x69, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x1a, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, - 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x18, 0x51, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x82, 0x01, - 0x48, 0x3f, 0x52, 0x16, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x46, 0x65, 0x63, 0x4d, 0x6f, - 0x64, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, - 0x0d, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x52, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x40, 0x52, 0x0c, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x61, 0x0a, 0x10, 0x6d, 0x64, 0x69, - 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x53, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x4d, 0x64, 0x69, 0x78, 0x4d, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, 0x01, 0x48, 0x41, 0x52, 0x0e, 0x6d, 0x64, 0x69, 0x78, 0x4d, - 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x12, 0x6b, 0x0a, 0x14, - 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x54, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x86, - 0x01, 0x48, 0x42, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x4e, 0x65, 0x67, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x1d, 0x5f, 0x31, 0x30, - 0x30, 0x30, 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, 0x5f, 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, - 0x61, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x18, 0x55, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x48, 0x43, 0x52, 0x19, 0x31, 0x30, 0x30, - 0x30, 0x78, 0x53, 0x67, 0x6d, 0x69, 0x69, 0x53, 0x6c, 0x61, 0x76, 0x65, 0x41, 0x75, 0x74, 0x6f, - 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0b, 0x6d, 0x6f, 0x64, - 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x75, 0x6c, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x88, 0x01, 0x48, 0x44, - 0x52, 0x0a, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x51, 0x0a, 0x0a, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x18, 0x57, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, - 0x44, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x89, 0x01, 0x48, 0x45, 0x52, 0x09, 0x64, 0x75, 0x61, 0x6c, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x88, - 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x03, 0x69, 0x70, 0x67, 0x18, 0x58, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x46, 0x52, 0x03, 0x69, 0x70, 0x67, 0x88, - 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1b, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x18, 0x59, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, - 0x48, 0x47, 0x52, 0x18, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x77, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x4f, 0x0a, 0x1d, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x18, 0x5a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8d, 0x01, 0x48, - 0x48, 0x52, 0x1a, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x6c, 0x6f, 0x77, 0x43, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x53, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x8e, 0x01, 0x48, 0x49, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, - 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, - 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, - 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x5c, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8f, 0x01, 0x48, 0x4a, 0x52, 0x1e, - 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x92, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, - 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, - 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x18, 0x5e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, - 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x94, 0x01, 0x52, - 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x33, 0x0a, 0x0e, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, - 0x61, 0x74, 0x65, 0x18, 0x5f, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x9a, 0x01, 0x48, 0x4b, 0x52, 0x0d, 0x66, 0x61, 0x62, 0x72, 0x69, 0x63, 0x49, 0x73, 0x6f, 0x6c, - 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x61, 0x72, 0x73, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x60, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x9c, 0x01, 0x48, 0x4c, 0x52, 0x09, 0x61, 0x72, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x9d, 0x01, 0x48, 0x4d, 0x52, 0x18, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, - 0x64, 0x53, 0x63, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x46, 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x62, - 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x4e, 0x52, - 0x15, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x61, 0x73, 0x74, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x61, 0x72, 0x73, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x4f, 0x52, 0x17, 0x61, 0x72, 0x73, 0x50, 0x6f, - 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x45, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, 0x61, 0x72, 0x73, 0x5f, 0x61, 0x6c, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x64, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x50, 0x52, 0x10, 0x61, 0x72, - 0x73, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, - 0x01, 0x12, 0x62, 0x0a, 0x13, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, - 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, - 0x69, 0x74, 0x68, 0x6d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa2, 0x01, 0x48, 0x51, 0x52, - 0x11, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, - 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xa3, 0x01, 0x48, 0x52, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, - 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x65, 0x63, 0x6d, - 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x67, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa4, 0x01, 0x48, 0x53, 0x52, 0x0e, - 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, - 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x68, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa6, 0x01, 0x48, 0x54, 0x52, 0x12, 0x68, 0x6f, 0x73, - 0x74, 0x54, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, - 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xa8, 0x01, 0x48, 0x55, 0x52, 0x0f, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x66, 0x88, 0x01, 0x01, 0x12, 0x80, 0x01, 0x0a, - 0x1b, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x6a, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, - 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, - 0x48, 0x56, 0x52, 0x18, 0x70, 0x61, 0x74, 0x68, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x60, 0x0a, 0x0f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xac, 0x01, 0x48, 0x57, 0x52, 0x0e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x51, 0x0a, 0x0a, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x6c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x43, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xaf, 0x01, 0x48, 0x58, 0x52, 0x09, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x19, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb0, 0x01, - 0x48, 0x59, 0x52, 0x15, 0x61, 0x72, 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x50, - 0x61, 0x73, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, - 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, - 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x6e, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb1, 0x01, 0x48, 0x5a, 0x52, 0x17, 0x61, 0x72, - 0x73, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x46, 0x75, 0x74, 0x75, 0x72, 0x65, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x65, - 0x65, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x73, - 0x74, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, - 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, - 0x5f, 0x61, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x70, 0x61, 0x75, 0x73, - 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x5f, - 0x6f, 0x75, 0x69, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x75, 0x6e, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x74, - 0x61, 0x67, 0x67, 0x65, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, - 0x64, 0x5f, 0x66, 0x65, 0x63, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x66, 0x65, 0x63, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, - 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x75, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, - 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, - 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x6d, 0x5f, 0x63, - 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, - 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, - 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, - 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, - 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, - 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, - 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, - 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, - 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x70, - 0x66, 0x63, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x6f, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x72, 0x78, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x78, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x68, 0x77, 0x5f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x65, 0x65, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, 0x65, 0x5f, - 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x65, - 0x65, 0x5f, 0x77, 0x61, 0x6b, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x6b, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x69, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, - 0x74, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, - 0x72, 0x62, 0x73, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x6e, 0x6f, 0x6d, 0x69, 0x61, 0x6c, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x70, 0x72, 0x62, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, - 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, - 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, - 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x42, - 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x67, 0x5f, 0x66, 0x65, 0x63, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x64, 0x69, 0x78, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x6e, - 0x65, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x20, - 0x0a, 0x1e, 0x58, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x78, 0x5f, 0x73, 0x67, 0x6d, 0x69, 0x69, 0x5f, - 0x73, 0x6c, 0x61, 0x76, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x75, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x42, - 0x06, 0x0a, 0x04, 0x5f, 0x69, 0x70, 0x67, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x70, 0x72, 0x69, 0x6f, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x27, - 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x61, 0x62, 0x72, - 0x69, 0x63, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x61, - 0x72, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x61, 0x72, - 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x73, 0x63, 0x61, 0x6c, - 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, - 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, - 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, - 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x61, 0x72, 0x73, - 0x5f, 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, - 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x65, - 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x66, 0x42, - 0x1e, 0x0a, 0x1c, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x70, 0x61, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x6f, - 0x61, 0x64, 0x5f, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, + 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x74, 0x74, - 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, - 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x69, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x15, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, + 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x22, 0xaa, 0x04, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x31, 0x0a, 0x0e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, - 0x48, 0x01, 0x52, 0x0c, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, - 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x10, 0x71, 0x6f, 0x73, 0x57, - 0x72, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, - 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3f, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, - 0x6f, 0x6f, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, - 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x2a, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x29, 0x0a, 0x15, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x83, 0x01, 0x0a, 0x1b, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x3a, 0x0a, 0x13, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x10, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, + 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x69, 0x6e, + 0x65, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, + 0x0a, 0x1c, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x18, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x6c, + 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x16, 0x6c, 0x69, 0x6e, 0x65, 0x53, + 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x57, + 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, + 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x69, 0x6e, + 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1f, + 0x0a, 0x1d, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, + 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, + 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, + 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x2f, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x12, 0x3a, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x10, 0x71, 0x6f, 0x73, 0x57, 0x72, 0x65, - 0x64, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, - 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x71, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, - 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, - 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x71, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, - 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xaa, 0x04, - 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x12, 0x3a, 0x0a, 0x13, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, - 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x53, 0x69, 0x64, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x36, 0x0a, 0x11, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x0e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x69, 0x64, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1c, 0x73, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x18, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x1a, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, - 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x04, 0x48, 0x03, 0x52, 0x16, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x69, 0x64, 0x65, 0x46, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x62, - 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, - 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, - 0x04, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x57, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x73, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, - 0x72, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x69, - 0x6e, 0x65, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x69, - 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2f, 0x0a, 0x1b, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2e, 0x0a, 0x1a, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x53, - 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x64, 0x22, 0x2e, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x12, 0x62, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, - 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x23, 0x0a, 0x21, 0x53, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x20, - 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x66, 0x0a, 0x21, 0x47, 0x65, 0x74, - 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0xac, 0x07, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, - 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x70, - 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, - 0x68, 0x61, 0x73, 0x69, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x07, - 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x52, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x31, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x52, 0x09, 0x74, 0x78, - 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x31, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, - 0x72, 0x5f, 0x70, 0x72, 0x65, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x06, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x32, 0x12, - 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x33, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x52, 0x09, 0x74, 0x78, - 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, - 0x72, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x12, - 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x31, 0x18, - 0x0a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x52, 0x0a, 0x74, - 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x31, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, - 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x32, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, - 0x73, 0x74, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, - 0x73, 0x74, 0x33, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0b, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x33, 0x12, 0x26, 0x0a, - 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x61, 0x74, 0x74, 0x6e, 0x18, 0x0d, 0x20, 0x03, - 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, - 0x72, 0x41, 0x74, 0x74, 0x6e, 0x12, 0x2a, 0x0a, 0x0d, 0x74, 0x78, 0x5f, 0x70, 0x61, 0x6d, 0x34, - 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0d, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x61, 0x6d, 0x34, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x12, 0x33, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x0f, 0x74, 0x78, 0x4f, 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, - 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, - 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x10, 0x74, 0x78, 0x50, - 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, - 0x13, 0x74, 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x10, 0x52, 0x10, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, - 0x76, 0x6c, 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x12, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x52, 0x0d, 0x74, 0x78, 0x50, 0x6d, 0x6f, 0x73, 0x56, 0x6c, - 0x74, 0x67, 0x52, 0x65, 0x67, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, - 0x5f, 0x76, 0x6c, 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x13, 0x20, 0x03, 0x28, 0x05, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x52, 0x0d, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x56, - 0x6c, 0x74, 0x67, 0x52, 0x65, 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x70, 0x72, 0x65, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x13, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x72, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, - 0x0b, 0x72, 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x06, 0xa0, 0xa9, - 0x90, 0xad, 0x0f, 0x58, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, - 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, - 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, - 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x50, 0x6f, - 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, - 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, - 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xaa, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x62, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x6f, + 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, - 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, - 0x22, 0x52, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, - 0x72, 0x65, 0x71, 0x73, 0x22, 0x56, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x72, - 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, + 0x6f, 0x76, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x23, 0x0a, + 0x21, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x45, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x66, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xac, 0x07, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x28, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x0b, + 0x70, 0x72, 0x65, 0x65, 0x6d, 0x70, 0x68, 0x61, 0x73, 0x69, 0x73, 0x12, 0x20, 0x0a, 0x07, 0x69, + 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x03, 0x52, 0x07, 0x69, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, + 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0a, 0x69, 0x70, 0x72, 0x65, 0x64, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, + 0x70, 0x72, 0x65, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x05, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x31, 0x12, 0x26, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x72, 0x65, 0x32, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, + 0x72, 0x50, 0x72, 0x65, 0x32, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, + 0x70, 0x72, 0x65, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x07, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x72, 0x65, 0x33, 0x12, 0x26, 0x0a, + 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, + 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, + 0x70, 0x6f, 0x73, 0x74, 0x31, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x09, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x31, 0x12, + 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x32, 0x18, + 0x0b, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x52, 0x0a, 0x74, + 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, 0x73, 0x74, 0x32, 0x12, 0x28, 0x0a, 0x0c, 0x74, 0x78, 0x5f, + 0x66, 0x69, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x74, 0x33, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x0a, 0x74, 0x78, 0x46, 0x69, 0x72, 0x50, 0x6f, + 0x73, 0x74, 0x33, 0x12, 0x26, 0x0a, 0x0b, 0x74, 0x78, 0x5f, 0x66, 0x69, 0x72, 0x5f, 0x61, 0x74, + 0x74, 0x6e, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, + 0x52, 0x09, 0x74, 0x78, 0x46, 0x69, 0x72, 0x41, 0x74, 0x74, 0x6e, 0x12, 0x2a, 0x0a, 0x0d, 0x74, + 0x78, 0x5f, 0x70, 0x61, 0x6d, 0x34, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0e, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x61, + 0x6d, 0x34, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x33, 0x0a, 0x12, 0x74, 0x78, 0x5f, 0x6f, 0x75, + 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, + 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x52, 0x0f, 0x74, 0x78, 0x4f, + 0x75, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, + 0x74, 0x78, 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0f, 0x52, 0x10, 0x74, 0x78, 0x50, 0x6d, 0x6f, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x74, 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x52, 0x10, 0x74, 0x78, 0x4e, 0x6d, 0x6f, 0x73, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x10, 0x74, 0x78, + 0x5f, 0x70, 0x6d, 0x6f, 0x73, 0x5f, 0x76, 0x6c, 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, 0x12, + 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x52, 0x0d, 0x74, 0x78, + 0x50, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, 0x67, 0x52, 0x65, 0x67, 0x12, 0x2f, 0x0a, 0x10, 0x74, + 0x78, 0x5f, 0x6e, 0x6d, 0x6f, 0x73, 0x5f, 0x76, 0x6c, 0x74, 0x67, 0x5f, 0x72, 0x65, 0x67, 0x18, + 0x13, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x52, 0x0d, 0x74, + 0x78, 0x4e, 0x6d, 0x6f, 0x73, 0x56, 0x6c, 0x74, 0x67, 0x52, 0x65, 0x67, 0x12, 0x29, 0x0a, 0x0c, + 0x74, 0x78, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x14, 0x20, 0x03, + 0x28, 0x05, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x52, 0x0b, 0x74, 0x78, 0x50, 0x72, + 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x0c, 0x72, 0x78, 0x5f, 0x70, 0x72, + 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x52, 0x0b, 0x72, 0x78, 0x50, 0x72, 0x65, 0x63, 0x6f, 0x64, 0x69, + 0x6e, 0x67, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x58, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, + 0x1d, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, + 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x52, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, + 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x52, 0x0a, 0x12, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, - 0x22, 0x56, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x56, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, + 0x70, 0x73, 0x22, 0x52, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xfb, 0x32, 0x0a, 0x08, 0x50, 0x6f, 0x72, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x02, 0x12, - 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, - 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, - 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, - 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, - 0x4f, 0x46, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x53, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, - 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, - 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, - 0x53, 0x49, 0x5a, 0x45, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x53, 0x50, - 0x45, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0b, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x46, - 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, - 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x44, - 0x55, 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x25, 0x0a, - 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, - 0x52, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, - 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, - 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, - 0x43, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x10, 0x12, 0x22, - 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, - 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, - 0x44, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x12, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x56, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, + 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xae, + 0x34, 0x0a, 0x08, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x19, 0x0a, 0x15, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x52, 0x45, + 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x03, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, + 0x55, 0x52, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x4f, 0x55, 0x54, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4e, 0x55, 0x4d, + 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x05, 0x12, + 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, + 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x2c, 0x0a, + 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4e, + 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, + 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x53, 0x43, 0x48, + 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x08, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x48, 0x45, 0x41, + 0x44, 0x52, 0x4f, 0x4f, 0x4d, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, + 0x54, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x20, 0x0a, 0x1c, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0b, 0x12, 0x29, 0x0a, + 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, + 0x52, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, + 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, + 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x53, 0x50, 0x45, 0x45, + 0x44, 0x10, 0x0d, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, + 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, + 0x44, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x59, + 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x10, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, + 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, + 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x12, 0x12, + 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, + 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x13, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x10, 0x13, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, - 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, - 0x4e, 0x44, 0x45, 0x44, 0x10, 0x14, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, - 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x45, - 0x58, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x15, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, - 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, - 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x16, 0x12, 0x31, 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x14, 0x12, 0x31, 0x0a, 0x2d, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, + 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x48, 0x41, 0x4c, 0x46, + 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x15, 0x12, + 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, + 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, + 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x16, 0x12, 0x31, + 0x0a, 0x2d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, + 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x4c, + 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x17, 0x12, 0x35, 0x0a, 0x31, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, + 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, + 0x5f, 0x41, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x55, 0x53, + 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x18, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, - 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, - 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x35, 0x0a, 0x31, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, - 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x59, 0x4d, 0x4d, - 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x18, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, - 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x19, 0x12, 0x28, - 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, - 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x55, - 0x49, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x1a, 0x12, 0x2f, 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, - 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x1b, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, - 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x10, 0x1d, 0x12, 0x18, - 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, - 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x1e, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0x1f, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x20, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x44, 0x55, 0x50, 0x4c, - 0x45, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x21, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x22, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, - 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, - 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x24, 0x12, 0x1e, 0x0a, 0x1a, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, - 0x53, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, - 0x53, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x26, 0x12, 0x2a, - 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, - 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x27, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, - 0x45, 0x44, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x53, - 0x50, 0x45, 0x45, 0x44, 0x10, 0x28, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, - 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x29, 0x12, 0x2a, - 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, - 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x2a, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, - 0x45, 0x44, 0x5f, 0x41, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, - 0x55, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x2b, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, - 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x2c, 0x12, - 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, - 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x49, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x10, 0x2d, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x2e, 0x12, 0x23, - 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, - 0x59, 0x10, 0x2f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x30, - 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, - 0x4f, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, 0x31, 0x12, 0x24, 0x0a, 0x20, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, - 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, - 0x32, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, - 0x53, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x10, - 0x33, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x34, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x35, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x44, - 0x53, 0x43, 0x50, 0x10, 0x36, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x37, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, - 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, - 0x52, 0x5f, 0x49, 0x44, 0x10, 0x38, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x54, - 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, - 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x39, 0x12, 0x30, 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, - 0x53, 0x54, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4f, - 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x3a, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x46, - 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x3b, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3c, 0x12, 0x18, 0x0a, - 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, - 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3d, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, - 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3e, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, - 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3f, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x40, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x41, - 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x42, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, - 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x43, - 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, - 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x44, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x45, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, - 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, - 0x4e, 0x10, 0x46, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x47, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, - 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x43, 0x10, 0x48, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, - 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x49, 0x12, 0x24, - 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, - 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, - 0x41, 0x50, 0x10, 0x4a, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, - 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4b, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, - 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4c, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, - 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4d, 0x12, 0x2b, - 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, - 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, - 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4e, 0x12, 0x2a, 0x0a, 0x26, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, - 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4f, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, - 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, - 0x50, 0x10, 0x50, 0x12, 0x34, 0x0a, 0x30, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, - 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x51, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, + 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0x19, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x54, 0x45, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, + 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x49, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x1a, 0x12, 0x2f, + 0x0a, 0x2b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x1b, 0x12, + 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x59, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x55, + 0x45, 0x53, 0x10, 0x1d, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x1e, 0x12, 0x1a, + 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, 0x4c, + 0x41, 0x4e, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x1f, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x20, 0x12, + 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x55, 0x4c, + 0x4c, 0x5f, 0x44, 0x55, 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x21, 0x12, + 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, + 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x22, 0x12, 0x19, 0x0a, 0x15, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x23, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, + 0x24, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, + 0x25, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x26, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x45, 0x43, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x27, + 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, + 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x48, 0x41, 0x4c, 0x46, 0x5f, 0x44, 0x55, + 0x50, 0x4c, 0x45, 0x58, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x28, 0x12, 0x26, 0x0a, 0x22, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, + 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x29, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x2a, + 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, + 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x41, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, + 0x52, 0x49, 0x43, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x2b, + 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, + 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x2c, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x4f, 0x55, + 0x49, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x2d, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x49, 0x44, 0x10, 0x2e, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x50, + 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x2f, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x55, 0x4e, 0x54, 0x41, + 0x47, 0x47, 0x45, 0x44, 0x10, 0x30, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x45, 0x44, 0x10, + 0x31, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, + 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x32, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, + 0x44, 0x5f, 0x46, 0x45, 0x43, 0x10, 0x33, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x34, 0x12, + 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x45, 0x43, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x35, + 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x10, 0x36, 0x12, 0x11, 0x0a, 0x0d, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x37, 0x12, 0x2c, + 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, + 0x44, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x38, 0x12, 0x30, 0x0a, 0x2c, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, + 0x41, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x39, 0x12, 0x30, + 0x0a, 0x2c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x3a, + 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x4c, + 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x3b, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, + 0x4c, 0x10, 0x3c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3d, 0x12, 0x20, 0x0a, + 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3e, 0x12, + 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x3f, + 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, + 0x43, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x40, + 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, + 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x42, 0x12, 0x29, 0x0a, 0x25, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x43, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, + 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x44, + 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x45, 0x12, 0x2a, 0x0a, + 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x46, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x45, 0x52, 0x5f, 0x49, + 0x44, 0x10, 0x47, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x43, 0x10, + 0x48, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, + 0x41, 0x50, 0x10, 0x49, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, + 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4a, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, + 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4b, 0x12, 0x23, 0x0a, 0x1f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, + 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, + 0x4c, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, + 0x41, 0x50, 0x10, 0x4d, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, + 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, + 0x4e, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, + 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x4f, 0x12, 0x2a, 0x0a, + 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, + 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x50, 0x12, 0x34, 0x0a, 0x30, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, - 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x52, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, - 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x53, 0x12, 0x2d, - 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, - 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, - 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x54, 0x12, 0x2c, 0x0a, - 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x45, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, - 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x55, 0x12, 0x28, 0x0a, 0x24, 0x50, + 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, + 0x49, 0x54, 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x51, 0x12, + 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x4f, + 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x52, 0x12, 0x26, 0x0a, 0x22, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x53, 0x43, + 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x49, 0x44, 0x10, 0x53, 0x12, 0x2d, 0x0a, 0x29, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, + 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x54, 0x12, 0x2c, 0x0a, 0x28, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, + 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x55, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, + 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x56, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, - 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x10, 0x56, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, - 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x57, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x52, 0x58, - 0x10, 0x58, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, - 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x58, 0x10, 0x59, 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x10, 0x5a, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x5b, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x5f, 0x49, 0x44, 0x10, 0x5c, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x5d, - 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x45, - 0x45, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x5e, 0x12, 0x1b, 0x0a, - 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x57, - 0x41, 0x4b, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x5f, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, - 0x4c, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x60, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x61, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x62, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x63, 0x12, 0x20, - 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x52, 0x44, - 0x45, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x48, 0x41, 0x53, 0x49, 0x53, 0x10, 0x64, - 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, - 0x52, 0x44, 0x45, 0x53, 0x5f, 0x49, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x65, 0x12, 0x1f, - 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x52, 0x44, - 0x45, 0x53, 0x5f, 0x49, 0x50, 0x52, 0x45, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x66, 0x12, - 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, - 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0x67, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x68, 0x12, 0x1c, 0x0a, 0x18, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x69, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, - 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x10, 0x6a, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x43, 0x4b, 0x10, - 0x6b, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x52, 0x42, 0x53, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x4e, 0x4f, 0x4d, 0x49, 0x41, 0x4c, 0x10, 0x6c, + 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x57, + 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x52, 0x58, 0x10, 0x58, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, + 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x58, 0x10, 0x59, + 0x12, 0x17, 0x0a, 0x13, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x5a, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x4c, + 0x4f, 0x43, 0x4b, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x5b, 0x12, + 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x57, 0x5f, + 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x5c, 0x12, 0x18, 0x0a, 0x14, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x5d, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x5f, 0x54, 0x49, 0x4d, + 0x45, 0x10, 0x5e, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x45, 0x45, 0x45, 0x5f, 0x57, 0x41, 0x4b, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x5f, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x49, 0x44, 0x10, 0x6d, 0x12, 0x2a, - 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, - 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x6e, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, - 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, - 0x6f, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x70, 0x12, 0x1e, 0x0a, 0x1a, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x71, 0x12, 0x23, 0x0a, 0x1f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x4c, - 0x4f, 0x43, 0x4b, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, - 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x73, 0x12, - 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, - 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x74, 0x12, 0x1d, 0x0a, 0x19, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, - 0x45, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x75, 0x12, 0x23, 0x0a, 0x1f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x76, - 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, - 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, - 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x77, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x60, 0x12, 0x1d, + 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x53, 0x4f, 0x4c, + 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x61, 0x12, 0x1b, 0x0a, + 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4b, 0x54, 0x5f, 0x54, + 0x58, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x62, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x10, 0x63, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x48, + 0x41, 0x53, 0x49, 0x53, 0x10, 0x64, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x49, 0x44, 0x52, 0x49, 0x56, + 0x45, 0x52, 0x10, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x49, 0x50, 0x52, 0x45, 0x44, 0x52, 0x49, + 0x56, 0x45, 0x52, 0x10, 0x66, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x67, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x54, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x68, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, + 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x69, 0x12, + 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x56, + 0x45, 0x52, 0x54, 0x49, 0x53, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x6a, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x46, 0x45, 0x52, 0x45, 0x4e, 0x43, 0x45, 0x5f, + 0x43, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x6b, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x4e, 0x4f, + 0x4d, 0x49, 0x41, 0x4c, 0x10, 0x6c, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, + 0x49, 0x44, 0x10, 0x6d, 0x12, 0x2a, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, + 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x6e, + 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, + 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x58, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x6f, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, + 0x10, 0x70, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x50, 0x52, 0x42, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x10, 0x71, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x50, 0x52, 0x42, 0x53, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x72, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x50, 0x52, 0x42, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x10, 0x74, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, + 0x75, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, + 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x76, 0x12, 0x24, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, - 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x78, 0x12, - 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, - 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, - 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x79, 0x12, - 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x50, 0x49, - 0x44, 0x10, 0x7a, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0x7b, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x10, - 0x7c, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x7d, 0x12, 0x27, 0x0a, 0x23, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, - 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x49, 0x44, 0x10, 0x7e, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, - 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x7f, 0x12, - 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, - 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, - 0x10, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x81, 0x01, 0x12, - 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, - 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, - 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x10, 0x82, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x83, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x84, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x44, 0x49, 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x85, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, - 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x86, 0x01, 0x12, - 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x31, 0x30, 0x30, - 0x30, 0x58, 0x5f, 0x53, 0x47, 0x4d, 0x49, 0x49, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x41, - 0x55, 0x54, 0x4f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x10, 0x87, 0x01, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x88, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x55, 0x41, 0x4c, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, - 0x10, 0x89, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x8a, 0x01, 0x12, 0x12, - 0x0a, 0x0d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x47, 0x10, - 0x8b, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, - 0x52, 0x4f, 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x8c, 0x01, 0x12, 0x2c, - 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, - 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, 0x8d, 0x01, 0x12, 0x2f, 0x0a, 0x2a, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, - 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, - 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x8e, 0x01, 0x12, 0x33, 0x0a, - 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, - 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, - 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, - 0x8f, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x90, 0x01, 0x12, 0x28, 0x0a, - 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, - 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, - 0x41, 0x4e, 0x47, 0x45, 0x10, 0x91, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x92, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, + 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x77, 0x12, 0x27, 0x0a, 0x23, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, + 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, + 0x4d, 0x41, 0x50, 0x10, 0x78, 0x12, 0x2e, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, + 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, + 0x4d, 0x41, 0x50, 0x10, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0x7a, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x7b, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, + 0x41, 0x43, 0x48, 0x45, 0x44, 0x10, 0x7c, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x41, + 0x43, 0x48, 0x45, 0x44, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x7d, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5f, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x44, 0x10, 0x7e, 0x12, 0x28, 0x0a, 0x24, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, + 0x41, 0x54, 0x54, 0x41, 0x43, 0x48, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x4e, + 0x44, 0x45, 0x58, 0x10, 0x7f, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x48, 0x41, + 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x80, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, + 0x52, 0x54, 0x10, 0x81, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x46, 0x45, 0x43, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x10, 0x82, 0x01, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, + 0x4f, 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x83, 0x01, 0x12, 0x1f, + 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x44, 0x49, 0x58, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x84, 0x01, 0x12, + 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x44, 0x49, + 0x58, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x85, 0x01, + 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, + 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0x86, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x58, 0x5f, 0x53, 0x47, 0x4d, 0x49, 0x49, 0x5f, 0x53, + 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x10, + 0x87, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4d, 0x4f, 0x44, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x88, 0x01, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x55, 0x41, 0x4c, + 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x10, 0x89, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x50, 0x4f, 0x52, + 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x4e, 0x45, 0x47, 0x5f, + 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, + 0x44, 0x10, 0x8a, 0x01, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x49, 0x50, 0x47, 0x10, 0x8b, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x47, 0x4c, 0x4f, 0x42, 0x41, 0x4c, 0x5f, 0x46, 0x4c, 0x4f, + 0x57, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, + 0x44, 0x10, 0x8c, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x46, 0x4c, 0x4f, 0x57, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x10, + 0x8d, 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, + 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, + 0x10, 0x8e, 0x01, 0x12, 0x33, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, + 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, + 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x8f, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x10, 0x90, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x91, 0x01, 0x12, 0x22, 0x0a, + 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, + 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x92, + 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, + 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, + 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, - 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x4e, - 0x47, 0x45, 0x10, 0x93, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x94, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, - 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x10, 0x95, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x45, - 0x54, 0x45, 0x43, 0x54, 0x10, 0x96, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x10, 0x97, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x50, 0x43, 0x53, 0x5f, 0x52, 0x58, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x98, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, - 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x99, 0x01, 0x12, 0x1d, 0x0a, 0x18, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, - 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x9a, 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x46, 0x45, 0x43, - 0x5f, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x44, - 0x45, 0x54, 0x45, 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9b, 0x01, 0x12, 0x19, 0x0a, 0x14, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x45, 0x4e, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9c, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, - 0x41, 0x44, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, - 0x52, 0x10, 0x9d, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x94, 0x01, 0x12, + 0x2b, 0x0a, 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, + 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x54, 0x52, 0x41, 0x49, + 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x95, 0x01, 0x12, 0x1f, 0x0a, 0x1a, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x49, 0x47, + 0x4e, 0x41, 0x4c, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x10, 0x96, 0x01, 0x12, 0x1d, 0x0a, + 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x4c, 0x4f, + 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x97, 0x01, 0x12, 0x21, 0x0a, 0x1c, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x43, 0x53, 0x5f, 0x52, 0x58, + 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x98, 0x01, 0x12, + 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x45, 0x43, + 0x5f, 0x41, 0x4c, 0x49, 0x47, 0x4e, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x10, + 0x99, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x9a, + 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, + 0x41, 0x58, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x5f, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x53, 0x5f, 0x44, 0x45, 0x54, 0x45, 0x43, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x9b, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x52, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9c, 0x01, 0x12, 0x2b, 0x0a, + 0x26, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x43, 0x41, 0x4c, 0x49, 0x4e, 0x47, + 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x10, 0x9d, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x50, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x9e, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x50, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9e, 0x01, 0x12, 0x2a, - 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9f, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x41, 0x4c, 0x54, 0x45, - 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x10, 0xa0, 0x01, 0x12, 0x28, 0x0a, - 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, - 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, - 0x44, 0x41, 0x54, 0x41, 0x10, 0xa1, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, - 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x10, 0xa2, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, - 0x53, 0x48, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x10, 0xa3, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0xa4, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xa5, 0x01, 0x12, 0x24, - 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, - 0x5f, 0x54, 0x58, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, - 0x45, 0x10, 0xa6, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xa7, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, - 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x54, 0x46, 0x10, 0xa8, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x10, 0xa9, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x46, 0x52, 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, - 0x59, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x50, 0x50, 0x4d, 0x10, 0xaa, 0x01, 0x12, - 0x15, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, - 0x53, 0x4e, 0x52, 0x10, 0xab, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0xac, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x45, 0x10, 0xad, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, - 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0xae, 0x01, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0xaf, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x9f, 0x01, + 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, + 0x53, 0x5f, 0x41, 0x4c, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, + 0x10, 0xa0, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x44, 0x5f, + 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0xa1, 0x01, 0x12, 0x22, 0x0a, + 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, + 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x10, 0xa2, + 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, + 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x10, 0xa3, 0x01, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, + 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0xa4, + 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, + 0x50, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x45, 0x43, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x10, 0xa5, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x4c, + 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xa6, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xa7, 0x01, 0x12, + 0x20, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x54, + 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x54, 0x46, 0x10, 0xa8, + 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, + 0x41, 0x54, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x53, 0x54, 0x41, 0x4d, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0xa9, 0x01, 0x12, 0x26, 0x0a, + 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x46, 0x52, + 0x45, 0x51, 0x55, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x5f, 0x50, + 0x50, 0x4d, 0x10, 0xaa, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x53, 0x4e, 0x52, 0x10, 0xab, 0x01, 0x12, 0x1e, 0x0a, 0x19, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x50, 0x41, + 0x54, 0x48, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xac, 0x01, 0x12, 0x1f, 0x0a, 0x1a, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x50, 0x41, 0x49, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xad, 0x01, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x50, 0x41, 0x49, 0x52, 0x5f, 0x4c, 0x45, 0x4e, 0x47, 0x54, 0x48, 0x10, 0xae, 0x01, 0x12, + 0x19, 0x0a, 0x14, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0xaf, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x50, 0x41, 0x53, 0x54, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, + 0x54, 0x10, 0xb0, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, - 0x50, 0x41, 0x53, 0x54, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x10, 0xb0, 0x01, 0x12, 0x2a, - 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, - 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x10, 0xb1, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x49, 0x44, 0x10, 0xb2, 0x01, 0x2a, 0x95, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x50, - 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, - 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, - 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x57, 0x52, 0x45, - 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x2a, 0xa1, - 0x02, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x41, 0x74, 0x74, 0x72, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, - 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, - 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, - 0x4e, 0x45, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, - 0x02, 0x12, 0x34, 0x0a, 0x30, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, - 0x53, 0x49, 0x44, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, - 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, - 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x05, 0x2a, 0xf9, 0x05, 0x0a, 0x0e, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, - 0x73, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, - 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, - 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, - 0x48, 0x41, 0x53, 0x49, 0x53, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x44, 0x52, 0x49, - 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, - 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x52, 0x45, 0x44, 0x52, - 0x49, 0x56, 0x45, 0x52, 0x10, 0x04, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, - 0x52, 0x5f, 0x50, 0x52, 0x45, 0x31, 0x10, 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, - 0x46, 0x49, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x32, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x33, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, - 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x08, 0x12, 0x21, - 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x31, 0x10, - 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x4f, 0x53, - 0x54, 0x32, 0x10, 0x0a, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, - 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, - 0x50, 0x4f, 0x53, 0x54, 0x33, 0x10, 0x0b, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x57, 0x45, 0x49, 0x47, 0x48, 0x54, 0x10, 0xb1, 0x01, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, + 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0xb2, 0x01, 0x12, 0x2d, 0x0a, 0x28, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x54, 0x45, 0x44, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0xb3, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x50, + 0x4f, 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x4c, 0x49, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x4f, 0x53, 0x10, 0xb4, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x55, 0x53, 0x10, 0xb5, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xb6, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb7, 0x01, 0x2a, + 0x95, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, + 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, + 0x26, 0x0a, 0x22, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x57, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, + 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x2a, 0xa1, 0x02, 0x0a, 0x11, 0x50, 0x6f, 0x72, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x23, 0x0a, + 0x1f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, + 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, + 0x29, 0x0a, 0x25, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, + 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x49, 0x44, 0x45, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x34, 0x0a, 0x30, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x46, 0x41, + 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, + 0x12, 0x32, 0x0a, 0x2e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x53, 0x49, 0x44, + 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, + 0x49, 0x44, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, + 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, + 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x2a, 0xf9, 0x05, 0x0a, 0x0e, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, + 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x20, + 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x48, 0x41, 0x53, 0x49, 0x53, 0x10, 0x02, + 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x03, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x49, 0x50, 0x52, 0x45, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x04, 0x12, + 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x31, 0x10, + 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x52, 0x45, + 0x32, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, + 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, + 0x52, 0x45, 0x33, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, + 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, + 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x08, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, - 0x49, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x4e, 0x10, 0x0c, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, + 0x49, 0x52, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x31, 0x10, 0x09, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, + 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x32, 0x10, 0x0a, 0x12, 0x21, 0x0a, + 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x33, 0x10, 0x0b, + 0x12, 0x20, 0x0a, 0x1c, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x46, 0x49, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x4e, + 0x10, 0x0c, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, + 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x41, 0x4d, 0x34, 0x5f, 0x52, + 0x41, 0x54, 0x49, 0x4f, 0x10, 0x0d, 0x12, 0x27, 0x0a, 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, + 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4f, 0x55, + 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0e, 0x12, + 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4d, 0x4f, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, + 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, - 0x5f, 0x50, 0x41, 0x4d, 0x34, 0x5f, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x10, 0x0d, 0x12, 0x27, 0x0a, - 0x23, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, - 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0e, 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4d, - 0x4f, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, - 0x12, 0x28, 0x0a, 0x24, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4e, 0x4d, 0x4f, 0x53, 0x5f, 0x43, 0x4f, 0x4d, - 0x4d, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x10, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, + 0x5f, 0x4e, 0x4d, 0x4f, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x10, 0x10, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, + 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x4d, 0x4f, 0x53, 0x5f, + 0x56, 0x4c, 0x54, 0x47, 0x5f, 0x52, 0x45, 0x47, 0x10, 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x58, 0x5f, 0x50, 0x4d, 0x4f, 0x53, 0x5f, 0x56, 0x4c, 0x54, 0x47, 0x5f, 0x52, 0x45, 0x47, 0x10, - 0x11, 0x12, 0x25, 0x0a, 0x21, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x4e, 0x4d, 0x4f, 0x53, 0x5f, 0x56, 0x4c, - 0x54, 0x47, 0x5f, 0x52, 0x45, 0x47, 0x10, 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, - 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, - 0x50, 0x52, 0x45, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x13, 0x12, 0x21, 0x0a, 0x1d, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x52, 0x58, 0x5f, 0x50, 0x52, 0x45, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x32, 0xf8, - 0x11, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x63, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, - 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0a, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x75, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x58, 0x5f, 0x4e, 0x4d, 0x4f, 0x53, 0x5f, 0x56, 0x4c, 0x54, 0x47, 0x5f, 0x52, 0x45, 0x47, 0x10, + 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, 0x44, 0x45, 0x53, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x58, 0x5f, 0x50, 0x52, 0x45, 0x43, 0x4f, 0x44, 0x49, + 0x4e, 0x47, 0x10, 0x13, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x52, + 0x44, 0x45, 0x53, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x58, 0x5f, 0x50, 0x52, 0x45, 0x43, + 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x14, 0x32, 0xf8, 0x11, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, + 0x12, 0x63, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x53, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, - 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, - 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, - 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, - 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, - 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, - 0x14, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, - 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, - 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, - 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, - 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x32, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, + 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, + 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x31, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, - 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x90, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x12, 0x2e, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, + 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x12, 0x2e, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, + 0x73, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x53, - 0x65, 0x72, 0x64, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, - 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, - 0x53, 0x65, 0x72, 0x64, 0x65, 0x73, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, - 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, - 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -6716,13 +6821,14 @@ var file_dataplane_proto_sai_port_proto_goTypes = []any{ (PortPathTracingTimestampType)(0), // 58: lemming.dataplane.sai.PortPathTracingTimestampType (PortDatapathEnable)(0), // 59: lemming.dataplane.sai.PortDatapathEnable (PortCableType)(0), // 60: lemming.dataplane.sai.PortCableType - (*PortAttribute)(nil), // 61: lemming.dataplane.sai.PortAttribute - (PortStat)(0), // 62: lemming.dataplane.sai.PortStat - (*PortPoolAttribute)(nil), // 63: lemming.dataplane.sai.PortPoolAttribute - (PortPoolStat)(0), // 64: lemming.dataplane.sai.PortPoolStat - (PortConnectorFailoverMode)(0), // 65: lemming.dataplane.sai.PortConnectorFailoverMode - (*PortConnectorAttribute)(nil), // 66: lemming.dataplane.sai.PortConnectorAttribute - (*PortSerdesAttribute)(nil), // 67: lemming.dataplane.sai.PortSerdesAttribute + (StatsCountMode)(0), // 61: lemming.dataplane.sai.StatsCountMode + (*PortAttribute)(nil), // 62: lemming.dataplane.sai.PortAttribute + (PortStat)(0), // 63: lemming.dataplane.sai.PortStat + (*PortPoolAttribute)(nil), // 64: lemming.dataplane.sai.PortPoolAttribute + (PortPoolStat)(0), // 65: lemming.dataplane.sai.PortPoolStat + (PortConnectorFailoverMode)(0), // 66: lemming.dataplane.sai.PortConnectorFailoverMode + (*PortConnectorAttribute)(nil), // 67: lemming.dataplane.sai.PortConnectorAttribute + (*PortSerdesAttribute)(nil), // 68: lemming.dataplane.sai.PortSerdesAttribute } var file_dataplane_proto_sai_port_proto_depIdxs = []int32{ 42, // 0: lemming.dataplane.sai.CreatePortRequest.media_type:type_name -> lemming.dataplane.sai.PortMediaType @@ -6750,90 +6856,92 @@ var file_dataplane_proto_sai_port_proto_depIdxs = []int32{ 58, // 22: lemming.dataplane.sai.CreatePortRequest.path_tracing_timestamp_type:type_name -> lemming.dataplane.sai.PortPathTracingTimestampType 59, // 23: lemming.dataplane.sai.CreatePortRequest.datapath_enable:type_name -> lemming.dataplane.sai.PortDatapathEnable 60, // 24: lemming.dataplane.sai.CreatePortRequest.cable_type:type_name -> lemming.dataplane.sai.PortCableType - 42, // 25: lemming.dataplane.sai.SetPortAttributeRequest.media_type:type_name -> lemming.dataplane.sai.PortMediaType - 43, // 26: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 44, // 27: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 45, // 28: lemming.dataplane.sai.SetPortAttributeRequest.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 42, // 29: lemming.dataplane.sai.SetPortAttributeRequest.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType - 46, // 30: lemming.dataplane.sai.SetPortAttributeRequest.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode - 43, // 31: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode - 44, // 32: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended - 45, // 33: lemming.dataplane.sai.SetPortAttributeRequest.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode - 47, // 34: lemming.dataplane.sai.SetPortAttributeRequest.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode - 48, // 35: lemming.dataplane.sai.SetPortAttributeRequest.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode - 49, // 36: lemming.dataplane.sai.SetPortAttributeRequest.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 49, // 37: lemming.dataplane.sai.SetPortAttributeRequest.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType - 50, // 38: lemming.dataplane.sai.SetPortAttributeRequest.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig - 51, // 39: lemming.dataplane.sai.SetPortAttributeRequest.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode - 52, // 40: lemming.dataplane.sai.SetPortAttributeRequest.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig - 53, // 41: lemming.dataplane.sai.SetPortAttributeRequest.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode - 54, // 42: lemming.dataplane.sai.SetPortAttributeRequest.module_type:type_name -> lemming.dataplane.sai.PortModuleType - 55, // 43: lemming.dataplane.sai.SetPortAttributeRequest.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia - 56, // 44: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 56, // 45: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 57, // 46: lemming.dataplane.sai.SetPortAttributeRequest.ecmp_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 58, // 47: lemming.dataplane.sai.SetPortAttributeRequest.path_tracing_timestamp_type:type_name -> lemming.dataplane.sai.PortPathTracingTimestampType - 59, // 48: lemming.dataplane.sai.SetPortAttributeRequest.datapath_enable:type_name -> lemming.dataplane.sai.PortDatapathEnable - 60, // 49: lemming.dataplane.sai.SetPortAttributeRequest.cable_type:type_name -> lemming.dataplane.sai.PortCableType - 0, // 50: lemming.dataplane.sai.GetPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortAttr - 61, // 51: lemming.dataplane.sai.GetPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortAttribute - 62, // 52: lemming.dataplane.sai.GetPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortStat - 1, // 53: lemming.dataplane.sai.GetPortPoolAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortPoolAttr - 63, // 54: lemming.dataplane.sai.GetPortPoolAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortPoolAttribute - 64, // 55: lemming.dataplane.sai.GetPortPoolStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortPoolStat - 65, // 56: lemming.dataplane.sai.CreatePortConnectorRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 65, // 57: lemming.dataplane.sai.SetPortConnectorAttributeRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode - 2, // 58: lemming.dataplane.sai.GetPortConnectorAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortConnectorAttr - 66, // 59: lemming.dataplane.sai.GetPortConnectorAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortConnectorAttribute - 3, // 60: lemming.dataplane.sai.GetPortSerdesAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortSerdesAttr - 67, // 61: lemming.dataplane.sai.GetPortSerdesAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortSerdesAttribute - 4, // 62: lemming.dataplane.sai.CreatePortsRequest.reqs:type_name -> lemming.dataplane.sai.CreatePortRequest - 5, // 63: lemming.dataplane.sai.CreatePortsResponse.resps:type_name -> lemming.dataplane.sai.CreatePortResponse - 6, // 64: lemming.dataplane.sai.RemovePortsRequest.reqs:type_name -> lemming.dataplane.sai.RemovePortRequest - 7, // 65: lemming.dataplane.sai.RemovePortsResponse.resps:type_name -> lemming.dataplane.sai.RemovePortResponse - 4, // 66: lemming.dataplane.sai.Port.CreatePort:input_type -> lemming.dataplane.sai.CreatePortRequest - 6, // 67: lemming.dataplane.sai.Port.RemovePort:input_type -> lemming.dataplane.sai.RemovePortRequest - 8, // 68: lemming.dataplane.sai.Port.SetPortAttribute:input_type -> lemming.dataplane.sai.SetPortAttributeRequest - 10, // 69: lemming.dataplane.sai.Port.GetPortAttribute:input_type -> lemming.dataplane.sai.GetPortAttributeRequest - 12, // 70: lemming.dataplane.sai.Port.GetPortStats:input_type -> lemming.dataplane.sai.GetPortStatsRequest - 14, // 71: lemming.dataplane.sai.Port.CreatePortPool:input_type -> lemming.dataplane.sai.CreatePortPoolRequest - 16, // 72: lemming.dataplane.sai.Port.RemovePortPool:input_type -> lemming.dataplane.sai.RemovePortPoolRequest - 18, // 73: lemming.dataplane.sai.Port.SetPortPoolAttribute:input_type -> lemming.dataplane.sai.SetPortPoolAttributeRequest - 20, // 74: lemming.dataplane.sai.Port.GetPortPoolAttribute:input_type -> lemming.dataplane.sai.GetPortPoolAttributeRequest - 22, // 75: lemming.dataplane.sai.Port.GetPortPoolStats:input_type -> lemming.dataplane.sai.GetPortPoolStatsRequest - 24, // 76: lemming.dataplane.sai.Port.CreatePortConnector:input_type -> lemming.dataplane.sai.CreatePortConnectorRequest - 26, // 77: lemming.dataplane.sai.Port.RemovePortConnector:input_type -> lemming.dataplane.sai.RemovePortConnectorRequest - 28, // 78: lemming.dataplane.sai.Port.SetPortConnectorAttribute:input_type -> lemming.dataplane.sai.SetPortConnectorAttributeRequest - 30, // 79: lemming.dataplane.sai.Port.GetPortConnectorAttribute:input_type -> lemming.dataplane.sai.GetPortConnectorAttributeRequest - 32, // 80: lemming.dataplane.sai.Port.CreatePortSerdes:input_type -> lemming.dataplane.sai.CreatePortSerdesRequest - 34, // 81: lemming.dataplane.sai.Port.RemovePortSerdes:input_type -> lemming.dataplane.sai.RemovePortSerdesRequest - 36, // 82: lemming.dataplane.sai.Port.GetPortSerdesAttribute:input_type -> lemming.dataplane.sai.GetPortSerdesAttributeRequest - 38, // 83: lemming.dataplane.sai.Port.CreatePorts:input_type -> lemming.dataplane.sai.CreatePortsRequest - 40, // 84: lemming.dataplane.sai.Port.RemovePorts:input_type -> lemming.dataplane.sai.RemovePortsRequest - 5, // 85: lemming.dataplane.sai.Port.CreatePort:output_type -> lemming.dataplane.sai.CreatePortResponse - 7, // 86: lemming.dataplane.sai.Port.RemovePort:output_type -> lemming.dataplane.sai.RemovePortResponse - 9, // 87: lemming.dataplane.sai.Port.SetPortAttribute:output_type -> lemming.dataplane.sai.SetPortAttributeResponse - 11, // 88: lemming.dataplane.sai.Port.GetPortAttribute:output_type -> lemming.dataplane.sai.GetPortAttributeResponse - 13, // 89: lemming.dataplane.sai.Port.GetPortStats:output_type -> lemming.dataplane.sai.GetPortStatsResponse - 15, // 90: lemming.dataplane.sai.Port.CreatePortPool:output_type -> lemming.dataplane.sai.CreatePortPoolResponse - 17, // 91: lemming.dataplane.sai.Port.RemovePortPool:output_type -> lemming.dataplane.sai.RemovePortPoolResponse - 19, // 92: lemming.dataplane.sai.Port.SetPortPoolAttribute:output_type -> lemming.dataplane.sai.SetPortPoolAttributeResponse - 21, // 93: lemming.dataplane.sai.Port.GetPortPoolAttribute:output_type -> lemming.dataplane.sai.GetPortPoolAttributeResponse - 23, // 94: lemming.dataplane.sai.Port.GetPortPoolStats:output_type -> lemming.dataplane.sai.GetPortPoolStatsResponse - 25, // 95: lemming.dataplane.sai.Port.CreatePortConnector:output_type -> lemming.dataplane.sai.CreatePortConnectorResponse - 27, // 96: lemming.dataplane.sai.Port.RemovePortConnector:output_type -> lemming.dataplane.sai.RemovePortConnectorResponse - 29, // 97: lemming.dataplane.sai.Port.SetPortConnectorAttribute:output_type -> lemming.dataplane.sai.SetPortConnectorAttributeResponse - 31, // 98: lemming.dataplane.sai.Port.GetPortConnectorAttribute:output_type -> lemming.dataplane.sai.GetPortConnectorAttributeResponse - 33, // 99: lemming.dataplane.sai.Port.CreatePortSerdes:output_type -> lemming.dataplane.sai.CreatePortSerdesResponse - 35, // 100: lemming.dataplane.sai.Port.RemovePortSerdes:output_type -> lemming.dataplane.sai.RemovePortSerdesResponse - 37, // 101: lemming.dataplane.sai.Port.GetPortSerdesAttribute:output_type -> lemming.dataplane.sai.GetPortSerdesAttributeResponse - 39, // 102: lemming.dataplane.sai.Port.CreatePorts:output_type -> lemming.dataplane.sai.CreatePortsResponse - 41, // 103: lemming.dataplane.sai.Port.RemovePorts:output_type -> lemming.dataplane.sai.RemovePortsResponse - 85, // [85:104] is the sub-list for method output_type - 66, // [66:85] is the sub-list for method input_type - 66, // [66:66] is the sub-list for extension type_name - 66, // [66:66] is the sub-list for extension extendee - 0, // [0:66] is the sub-list for field type_name + 61, // 25: lemming.dataplane.sai.CreatePortRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 42, // 26: lemming.dataplane.sai.SetPortAttributeRequest.media_type:type_name -> lemming.dataplane.sai.PortMediaType + 43, // 27: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 44, // 28: lemming.dataplane.sai.SetPortAttributeRequest.advertised_fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 45, // 29: lemming.dataplane.sai.SetPortAttributeRequest.advertised_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 42, // 30: lemming.dataplane.sai.SetPortAttributeRequest.advertised_media_type:type_name -> lemming.dataplane.sai.PortMediaType + 46, // 31: lemming.dataplane.sai.SetPortAttributeRequest.internal_loopback_mode:type_name -> lemming.dataplane.sai.PortInternalLoopbackMode + 43, // 32: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode:type_name -> lemming.dataplane.sai.PortFecMode + 44, // 33: lemming.dataplane.sai.SetPortAttributeRequest.fec_mode_extended:type_name -> lemming.dataplane.sai.PortFecModeExtended + 45, // 34: lemming.dataplane.sai.SetPortAttributeRequest.global_flow_control_mode:type_name -> lemming.dataplane.sai.PortFlowControlMode + 47, // 35: lemming.dataplane.sai.SetPortAttributeRequest.priority_flow_control_mode:type_name -> lemming.dataplane.sai.PortPriorityFlowControlMode + 48, // 36: lemming.dataplane.sai.SetPortAttributeRequest.ptp_mode:type_name -> lemming.dataplane.sai.PortPtpMode + 49, // 37: lemming.dataplane.sai.SetPortAttributeRequest.interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType + 49, // 38: lemming.dataplane.sai.SetPortAttributeRequest.advertised_interface_type:type_name -> lemming.dataplane.sai.PortInterfaceType + 50, // 39: lemming.dataplane.sai.SetPortAttributeRequest.prbs_config:type_name -> lemming.dataplane.sai.PortPrbsConfig + 51, // 40: lemming.dataplane.sai.SetPortAttributeRequest.loopback_mode:type_name -> lemming.dataplane.sai.PortLoopbackMode + 52, // 41: lemming.dataplane.sai.SetPortAttributeRequest.mdix_mode_config:type_name -> lemming.dataplane.sai.PortMdixModeConfig + 53, // 42: lemming.dataplane.sai.SetPortAttributeRequest.auto_neg_config_mode:type_name -> lemming.dataplane.sai.PortAutoNegConfigMode + 54, // 43: lemming.dataplane.sai.SetPortAttributeRequest.module_type:type_name -> lemming.dataplane.sai.PortModuleType + 55, // 44: lemming.dataplane.sai.SetPortAttributeRequest.dual_media:type_name -> lemming.dataplane.sai.PortDualMedia + 56, // 45: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap + 56, // 46: lemming.dataplane.sai.SetPortAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap + 57, // 47: lemming.dataplane.sai.SetPortAttributeRequest.ecmp_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 58, // 48: lemming.dataplane.sai.SetPortAttributeRequest.path_tracing_timestamp_type:type_name -> lemming.dataplane.sai.PortPathTracingTimestampType + 59, // 49: lemming.dataplane.sai.SetPortAttributeRequest.datapath_enable:type_name -> lemming.dataplane.sai.PortDatapathEnable + 60, // 50: lemming.dataplane.sai.SetPortAttributeRequest.cable_type:type_name -> lemming.dataplane.sai.PortCableType + 61, // 51: lemming.dataplane.sai.SetPortAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 52: lemming.dataplane.sai.GetPortAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortAttr + 62, // 53: lemming.dataplane.sai.GetPortAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortAttribute + 63, // 54: lemming.dataplane.sai.GetPortStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortStat + 1, // 55: lemming.dataplane.sai.GetPortPoolAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortPoolAttr + 64, // 56: lemming.dataplane.sai.GetPortPoolAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortPoolAttribute + 65, // 57: lemming.dataplane.sai.GetPortPoolStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.PortPoolStat + 66, // 58: lemming.dataplane.sai.CreatePortConnectorRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode + 66, // 59: lemming.dataplane.sai.SetPortConnectorAttributeRequest.failover_mode:type_name -> lemming.dataplane.sai.PortConnectorFailoverMode + 2, // 60: lemming.dataplane.sai.GetPortConnectorAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortConnectorAttr + 67, // 61: lemming.dataplane.sai.GetPortConnectorAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortConnectorAttribute + 3, // 62: lemming.dataplane.sai.GetPortSerdesAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.PortSerdesAttr + 68, // 63: lemming.dataplane.sai.GetPortSerdesAttributeResponse.attr:type_name -> lemming.dataplane.sai.PortSerdesAttribute + 4, // 64: lemming.dataplane.sai.CreatePortsRequest.reqs:type_name -> lemming.dataplane.sai.CreatePortRequest + 5, // 65: lemming.dataplane.sai.CreatePortsResponse.resps:type_name -> lemming.dataplane.sai.CreatePortResponse + 6, // 66: lemming.dataplane.sai.RemovePortsRequest.reqs:type_name -> lemming.dataplane.sai.RemovePortRequest + 7, // 67: lemming.dataplane.sai.RemovePortsResponse.resps:type_name -> lemming.dataplane.sai.RemovePortResponse + 4, // 68: lemming.dataplane.sai.Port.CreatePort:input_type -> lemming.dataplane.sai.CreatePortRequest + 6, // 69: lemming.dataplane.sai.Port.RemovePort:input_type -> lemming.dataplane.sai.RemovePortRequest + 8, // 70: lemming.dataplane.sai.Port.SetPortAttribute:input_type -> lemming.dataplane.sai.SetPortAttributeRequest + 10, // 71: lemming.dataplane.sai.Port.GetPortAttribute:input_type -> lemming.dataplane.sai.GetPortAttributeRequest + 12, // 72: lemming.dataplane.sai.Port.GetPortStats:input_type -> lemming.dataplane.sai.GetPortStatsRequest + 14, // 73: lemming.dataplane.sai.Port.CreatePortPool:input_type -> lemming.dataplane.sai.CreatePortPoolRequest + 16, // 74: lemming.dataplane.sai.Port.RemovePortPool:input_type -> lemming.dataplane.sai.RemovePortPoolRequest + 18, // 75: lemming.dataplane.sai.Port.SetPortPoolAttribute:input_type -> lemming.dataplane.sai.SetPortPoolAttributeRequest + 20, // 76: lemming.dataplane.sai.Port.GetPortPoolAttribute:input_type -> lemming.dataplane.sai.GetPortPoolAttributeRequest + 22, // 77: lemming.dataplane.sai.Port.GetPortPoolStats:input_type -> lemming.dataplane.sai.GetPortPoolStatsRequest + 24, // 78: lemming.dataplane.sai.Port.CreatePortConnector:input_type -> lemming.dataplane.sai.CreatePortConnectorRequest + 26, // 79: lemming.dataplane.sai.Port.RemovePortConnector:input_type -> lemming.dataplane.sai.RemovePortConnectorRequest + 28, // 80: lemming.dataplane.sai.Port.SetPortConnectorAttribute:input_type -> lemming.dataplane.sai.SetPortConnectorAttributeRequest + 30, // 81: lemming.dataplane.sai.Port.GetPortConnectorAttribute:input_type -> lemming.dataplane.sai.GetPortConnectorAttributeRequest + 32, // 82: lemming.dataplane.sai.Port.CreatePortSerdes:input_type -> lemming.dataplane.sai.CreatePortSerdesRequest + 34, // 83: lemming.dataplane.sai.Port.RemovePortSerdes:input_type -> lemming.dataplane.sai.RemovePortSerdesRequest + 36, // 84: lemming.dataplane.sai.Port.GetPortSerdesAttribute:input_type -> lemming.dataplane.sai.GetPortSerdesAttributeRequest + 38, // 85: lemming.dataplane.sai.Port.CreatePorts:input_type -> lemming.dataplane.sai.CreatePortsRequest + 40, // 86: lemming.dataplane.sai.Port.RemovePorts:input_type -> lemming.dataplane.sai.RemovePortsRequest + 5, // 87: lemming.dataplane.sai.Port.CreatePort:output_type -> lemming.dataplane.sai.CreatePortResponse + 7, // 88: lemming.dataplane.sai.Port.RemovePort:output_type -> lemming.dataplane.sai.RemovePortResponse + 9, // 89: lemming.dataplane.sai.Port.SetPortAttribute:output_type -> lemming.dataplane.sai.SetPortAttributeResponse + 11, // 90: lemming.dataplane.sai.Port.GetPortAttribute:output_type -> lemming.dataplane.sai.GetPortAttributeResponse + 13, // 91: lemming.dataplane.sai.Port.GetPortStats:output_type -> lemming.dataplane.sai.GetPortStatsResponse + 15, // 92: lemming.dataplane.sai.Port.CreatePortPool:output_type -> lemming.dataplane.sai.CreatePortPoolResponse + 17, // 93: lemming.dataplane.sai.Port.RemovePortPool:output_type -> lemming.dataplane.sai.RemovePortPoolResponse + 19, // 94: lemming.dataplane.sai.Port.SetPortPoolAttribute:output_type -> lemming.dataplane.sai.SetPortPoolAttributeResponse + 21, // 95: lemming.dataplane.sai.Port.GetPortPoolAttribute:output_type -> lemming.dataplane.sai.GetPortPoolAttributeResponse + 23, // 96: lemming.dataplane.sai.Port.GetPortPoolStats:output_type -> lemming.dataplane.sai.GetPortPoolStatsResponse + 25, // 97: lemming.dataplane.sai.Port.CreatePortConnector:output_type -> lemming.dataplane.sai.CreatePortConnectorResponse + 27, // 98: lemming.dataplane.sai.Port.RemovePortConnector:output_type -> lemming.dataplane.sai.RemovePortConnectorResponse + 29, // 99: lemming.dataplane.sai.Port.SetPortConnectorAttribute:output_type -> lemming.dataplane.sai.SetPortConnectorAttributeResponse + 31, // 100: lemming.dataplane.sai.Port.GetPortConnectorAttribute:output_type -> lemming.dataplane.sai.GetPortConnectorAttributeResponse + 33, // 101: lemming.dataplane.sai.Port.CreatePortSerdes:output_type -> lemming.dataplane.sai.CreatePortSerdesResponse + 35, // 102: lemming.dataplane.sai.Port.RemovePortSerdes:output_type -> lemming.dataplane.sai.RemovePortSerdesResponse + 37, // 103: lemming.dataplane.sai.Port.GetPortSerdesAttribute:output_type -> lemming.dataplane.sai.GetPortSerdesAttributeResponse + 39, // 104: lemming.dataplane.sai.Port.CreatePorts:output_type -> lemming.dataplane.sai.CreatePortsResponse + 41, // 105: lemming.dataplane.sai.Port.RemovePorts:output_type -> lemming.dataplane.sai.RemovePortsResponse + 87, // [87:106] is the sub-list for method output_type + 68, // [68:87] is the sub-list for method input_type + 68, // [68:68] is the sub-list for extension type_name + 68, // [68:68] is the sub-list for extension extendee + 0, // [0:68] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_port_proto_init() } diff --git a/dataplane/proto/sai/port.proto b/dataplane/proto/sai/port.proto index 7539dc4d5..8254bbd2a 100644 --- a/dataplane/proto/sai/port.proto +++ b/dataplane/proto/sai/port.proto @@ -7,654 +7,696 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum PortAttr { - PORT_ATTR_UNSPECIFIED = 0; - PORT_ATTR_TYPE = 1; - PORT_ATTR_OPER_STATUS = 2; - PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE = 3; - PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE = 4; - PORT_ATTR_QOS_NUMBER_OF_QUEUES = 5; - PORT_ATTR_QOS_QUEUE_LIST = 6; - PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS = 7; - PORT_ATTR_QOS_SCHEDULER_GROUP_LIST = 8; - PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE = 9; - PORT_ATTR_SUPPORTED_SPEED = 10; - PORT_ATTR_SUPPORTED_FEC_MODE = 11; - PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED = 12; - PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED = 13; - PORT_ATTR_SUPPORTED_AUTO_NEG_MODE = 14; - PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE = 15; - PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE = 16; - PORT_ATTR_SUPPORTED_MEDIA_TYPE = 17; - PORT_ATTR_REMOTE_ADVERTISED_SPEED = 18; - PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE = 19; - PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED = 20; - PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED = 21; - PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE = 22; - PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE = 23; - PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE = 24; - PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE = 25; - PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE = 26; - PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS = 27; - PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST = 28; - PORT_ATTR_EYE_VALUES = 29; - PORT_ATTR_OPER_SPEED = 30; - PORT_ATTR_HW_LANE_LIST = 31; - PORT_ATTR_SPEED = 32; - PORT_ATTR_FULL_DUPLEX_MODE = 33; - PORT_ATTR_AUTO_NEG_MODE = 34; - PORT_ATTR_ADMIN_STATE = 35; - PORT_ATTR_MEDIA_TYPE = 36; - PORT_ATTR_ADVERTISED_SPEED = 37; - PORT_ATTR_ADVERTISED_FEC_MODE = 38; - PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED = 39; - PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED = 40; - PORT_ATTR_ADVERTISED_AUTO_NEG_MODE = 41; - PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE = 42; - PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE = 43; - PORT_ATTR_ADVERTISED_MEDIA_TYPE = 44; - PORT_ATTR_ADVERTISED_OUI_CODE = 45; - PORT_ATTR_PORT_VLAN_ID = 46; - PORT_ATTR_DEFAULT_VLAN_PRIORITY = 47; - PORT_ATTR_DROP_UNTAGGED = 48; - PORT_ATTR_DROP_TAGGED = 49; - PORT_ATTR_INTERNAL_LOOPBACK_MODE = 50; - PORT_ATTR_USE_EXTENDED_FEC = 51; - PORT_ATTR_FEC_MODE = 52; - PORT_ATTR_FEC_MODE_EXTENDED = 53; - PORT_ATTR_UPDATE_DSCP = 54; - PORT_ATTR_MTU = 55; - PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID = 56; - PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID = 57; - PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID = 58; - PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE = 59; - PORT_ATTR_INGRESS_ACL = 60; - PORT_ATTR_EGRESS_ACL = 61; - PORT_ATTR_INGRESS_MACSEC_ACL = 62; - PORT_ATTR_EGRESS_MACSEC_ACL = 63; - PORT_ATTR_MACSEC_PORT_LIST = 64; - PORT_ATTR_INGRESS_MIRROR_SESSION = 65; - PORT_ATTR_EGRESS_MIRROR_SESSION = 66; - PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE = 67; - PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE = 68; - PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION = 69; - PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION = 70; - PORT_ATTR_POLICER_ID = 71; - PORT_ATTR_QOS_DEFAULT_TC = 72; - PORT_ATTR_QOS_DOT1P_TO_TC_MAP = 73; - PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP = 74; - PORT_ATTR_QOS_DSCP_TO_TC_MAP = 75; - PORT_ATTR_QOS_DSCP_TO_COLOR_MAP = 76; - PORT_ATTR_QOS_TC_TO_QUEUE_MAP = 77; - PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP = 78; - PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP = 79; - PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP = 80; - PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP = 81; - PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP = 82; - PORT_ATTR_QOS_SCHEDULER_PROFILE_ID = 83; - PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST = 84; - PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST = 85; - PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE = 86; - PORT_ATTR_PRIORITY_FLOW_CONTROL = 87; - PORT_ATTR_PRIORITY_FLOW_CONTROL_RX = 88; - PORT_ATTR_PRIORITY_FLOW_CONTROL_TX = 89; - PORT_ATTR_META_DATA = 90; - PORT_ATTR_EGRESS_BLOCK_PORT_LIST = 91; - PORT_ATTR_HW_PROFILE_ID = 92; - PORT_ATTR_EEE_ENABLE = 93; - PORT_ATTR_EEE_IDLE_TIME = 94; - PORT_ATTR_EEE_WAKE_TIME = 95; - PORT_ATTR_PORT_POOL_LIST = 96; - PORT_ATTR_ISOLATION_GROUP = 97; - PORT_ATTR_PKT_TX_ENABLE = 98; - PORT_ATTR_TAM_OBJECT = 99; - PORT_ATTR_SERDES_PREEMPHASIS = 100; - PORT_ATTR_SERDES_IDRIVER = 101; - PORT_ATTR_SERDES_IPREDRIVER = 102; - PORT_ATTR_LINK_TRAINING_ENABLE = 103; - PORT_ATTR_PTP_MODE = 104; - PORT_ATTR_INTERFACE_TYPE = 105; - PORT_ATTR_ADVERTISED_INTERFACE_TYPE = 106; - PORT_ATTR_REFERENCE_CLOCK = 107; - PORT_ATTR_PRBS_POLYNOMIAL = 108; - PORT_ATTR_PORT_SERDES_ID = 109; - PORT_ATTR_LINK_TRAINING_FAILURE_STATUS = 110; - PORT_ATTR_LINK_TRAINING_RX_STATUS = 111; - PORT_ATTR_PRBS_CONFIG = 112; - PORT_ATTR_PRBS_LOCK_STATUS = 113; - PORT_ATTR_PRBS_LOCK_LOSS_STATUS = 114; - PORT_ATTR_PRBS_RX_STATUS = 115; - PORT_ATTR_PRBS_RX_STATE = 116; - PORT_ATTR_AUTO_NEG_STATUS = 117; - PORT_ATTR_DISABLE_DECREMENT_TTL = 118; - PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP = 119; - PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP = 120; - PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 121; - PORT_ATTR_TPID = 122; - PORT_ATTR_ERR_STATUS_LIST = 123; - PORT_ATTR_FABRIC_ATTACHED = 124; - PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE = 125; - PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID = 126; - PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX = 127; - PORT_ATTR_FABRIC_REACHABILITY = 128; - PORT_ATTR_SYSTEM_PORT = 129; - PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE = 130; - PORT_ATTR_LOOPBACK_MODE = 131; - PORT_ATTR_MDIX_MODE_STATUS = 132; - PORT_ATTR_MDIX_MODE_CONFIG = 133; - PORT_ATTR_AUTO_NEG_CONFIG_MODE = 134; - PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT = 135; - PORT_ATTR_MODULE_TYPE = 136; - PORT_ATTR_DUAL_MEDIA = 137; - PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED = 138; - PORT_ATTR_IPG = 139; - PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD = 140; - PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD = 141; - PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP = 142; - PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP = 143; - PORT_ATTR_IPSEC_PORT = 144; - PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE = 145; - PORT_ATTR_PFC_TC_DLD_INTERVAL = 146; - PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE = 147; - PORT_ATTR_PFC_TC_DLR_INTERVAL = 148; - PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE = 149; - PORT_ATTR_RX_SIGNAL_DETECT = 150; - PORT_ATTR_RX_LOCK_STATUS = 151; - PORT_ATTR_PCS_RX_LINK_STATUS = 152; - PORT_ATTR_FEC_ALIGNMENT_LOCK = 153; - PORT_ATTR_FABRIC_ISOLATE = 154; - PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE = 155; - PORT_ATTR_ARS_ENABLE = 156; - PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR = 157; - PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE = 158; - PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE = 159; - PORT_ATTR_ARS_ALTERNATE_PATH = 160; - PORT_ATTR_JSON_FORMATTED_DEBUG_DATA = 161; - PORT_ATTR_ECMP_HASH_ALGORITHM = 162; - PORT_ATTR_ECMP_HASH_SEED = 163; - PORT_ATTR_ECMP_HASH_OFFSET = 164; - PORT_ATTR_OPER_PORT_FEC_MODE = 165; - PORT_ATTR_HOST_TX_SIGNAL_ENABLE = 166; - PORT_ATTR_HOST_TX_READY_STATUS = 167; - PORT_ATTR_PATH_TRACING_INTF = 168; - PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE = 169; - PORT_ATTR_RX_FREQUENCY_OFFSET_PPM = 170; - PORT_ATTR_RX_SNR = 171; - PORT_ATTR_DATAPATH_ENABLE = 172; - PORT_ATTR_CABLE_PAIR_STATE = 173; - PORT_ATTR_CABLE_PAIR_LENGTH = 174; - PORT_ATTR_CABLE_TYPE = 175; - PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT = 176; - PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT = 177; - PORT_ATTR_POE_PORT_ID = 178; + PORT_ATTR_UNSPECIFIED = 0; + PORT_ATTR_TYPE = 1; + PORT_ATTR_OPER_STATUS = 2; + PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE = 3; + PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE = 4; + PORT_ATTR_QOS_NUMBER_OF_QUEUES = 5; + PORT_ATTR_QOS_QUEUE_LIST = 6; + PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS = 7; + PORT_ATTR_QOS_SCHEDULER_GROUP_LIST = 8; + PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE = 9; + PORT_ATTR_SUPPORTED_SPEED = 10; + PORT_ATTR_SUPPORTED_FEC_MODE = 11; + PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED = 12; + PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED = 13; + PORT_ATTR_SUPPORTED_AUTO_NEG_MODE = 14; + PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE = 15; + PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE = 16; + PORT_ATTR_SUPPORTED_MEDIA_TYPE = 17; + PORT_ATTR_REMOTE_ADVERTISED_SPEED = 18; + PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE = 19; + PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED = 20; + PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED = 21; + PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE = 22; + PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE = 23; + PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE = 24; + PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE = 25; + PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE = 26; + PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS = 27; + PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST = 28; + PORT_ATTR_EYE_VALUES = 29; + PORT_ATTR_OPER_SPEED = 30; + PORT_ATTR_HW_LANE_LIST = 31; + PORT_ATTR_SPEED = 32; + PORT_ATTR_FULL_DUPLEX_MODE = 33; + PORT_ATTR_AUTO_NEG_MODE = 34; + PORT_ATTR_ADMIN_STATE = 35; + PORT_ATTR_MEDIA_TYPE = 36; + PORT_ATTR_ADVERTISED_SPEED = 37; + PORT_ATTR_ADVERTISED_FEC_MODE = 38; + PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED = 39; + PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED = 40; + PORT_ATTR_ADVERTISED_AUTO_NEG_MODE = 41; + PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE = 42; + PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE = 43; + PORT_ATTR_ADVERTISED_MEDIA_TYPE = 44; + PORT_ATTR_ADVERTISED_OUI_CODE = 45; + PORT_ATTR_PORT_VLAN_ID = 46; + PORT_ATTR_DEFAULT_VLAN_PRIORITY = 47; + PORT_ATTR_DROP_UNTAGGED = 48; + PORT_ATTR_DROP_TAGGED = 49; + PORT_ATTR_INTERNAL_LOOPBACK_MODE = 50; + PORT_ATTR_USE_EXTENDED_FEC = 51; + PORT_ATTR_FEC_MODE = 52; + PORT_ATTR_FEC_MODE_EXTENDED = 53; + PORT_ATTR_UPDATE_DSCP = 54; + PORT_ATTR_MTU = 55; + PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID = 56; + PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID = 57; + PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID = 58; + PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE = 59; + PORT_ATTR_INGRESS_ACL = 60; + PORT_ATTR_EGRESS_ACL = 61; + PORT_ATTR_INGRESS_MACSEC_ACL = 62; + PORT_ATTR_EGRESS_MACSEC_ACL = 63; + PORT_ATTR_MACSEC_PORT_LIST = 64; + PORT_ATTR_INGRESS_MIRROR_SESSION = 65; + PORT_ATTR_EGRESS_MIRROR_SESSION = 66; + PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE = 67; + PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE = 68; + PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION = 69; + PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION = 70; + PORT_ATTR_POLICER_ID = 71; + PORT_ATTR_QOS_DEFAULT_TC = 72; + PORT_ATTR_QOS_DOT1P_TO_TC_MAP = 73; + PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP = 74; + PORT_ATTR_QOS_DSCP_TO_TC_MAP = 75; + PORT_ATTR_QOS_DSCP_TO_COLOR_MAP = 76; + PORT_ATTR_QOS_TC_TO_QUEUE_MAP = 77; + PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP = 78; + PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP = 79; + PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP = 80; + PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP = 81; + PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP = 82; + PORT_ATTR_QOS_SCHEDULER_PROFILE_ID = 83; + PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST = 84; + PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST = 85; + PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE = 86; + PORT_ATTR_PRIORITY_FLOW_CONTROL = 87; + PORT_ATTR_PRIORITY_FLOW_CONTROL_RX = 88; + PORT_ATTR_PRIORITY_FLOW_CONTROL_TX = 89; + PORT_ATTR_META_DATA = 90; + PORT_ATTR_EGRESS_BLOCK_PORT_LIST = 91; + PORT_ATTR_HW_PROFILE_ID = 92; + PORT_ATTR_EEE_ENABLE = 93; + PORT_ATTR_EEE_IDLE_TIME = 94; + PORT_ATTR_EEE_WAKE_TIME = 95; + PORT_ATTR_PORT_POOL_LIST = 96; + PORT_ATTR_ISOLATION_GROUP = 97; + PORT_ATTR_PKT_TX_ENABLE = 98; + PORT_ATTR_TAM_OBJECT = 99; + PORT_ATTR_SERDES_PREEMPHASIS = 100; + PORT_ATTR_SERDES_IDRIVER = 101; + PORT_ATTR_SERDES_IPREDRIVER = 102; + PORT_ATTR_LINK_TRAINING_ENABLE = 103; + PORT_ATTR_PTP_MODE = 104; + PORT_ATTR_INTERFACE_TYPE = 105; + PORT_ATTR_ADVERTISED_INTERFACE_TYPE = 106; + PORT_ATTR_REFERENCE_CLOCK = 107; + PORT_ATTR_PRBS_POLYNOMIAL = 108; + PORT_ATTR_PORT_SERDES_ID = 109; + PORT_ATTR_LINK_TRAINING_FAILURE_STATUS = 110; + PORT_ATTR_LINK_TRAINING_RX_STATUS = 111; + PORT_ATTR_PRBS_CONFIG = 112; + PORT_ATTR_PRBS_LOCK_STATUS = 113; + PORT_ATTR_PRBS_LOCK_LOSS_STATUS = 114; + PORT_ATTR_PRBS_RX_STATUS = 115; + PORT_ATTR_PRBS_RX_STATE = 116; + PORT_ATTR_AUTO_NEG_STATUS = 117; + PORT_ATTR_DISABLE_DECREMENT_TTL = 118; + PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP = 119; + PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP = 120; + PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 121; + PORT_ATTR_TPID = 122; + PORT_ATTR_ERR_STATUS_LIST = 123; + PORT_ATTR_FABRIC_ATTACHED = 124; + PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE = 125; + PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID = 126; + PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX = 127; + PORT_ATTR_FABRIC_REACHABILITY = 128; + PORT_ATTR_SYSTEM_PORT = 129; + PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE = 130; + PORT_ATTR_LOOPBACK_MODE = 131; + PORT_ATTR_MDIX_MODE_STATUS = 132; + PORT_ATTR_MDIX_MODE_CONFIG = 133; + PORT_ATTR_AUTO_NEG_CONFIG_MODE = 134; + PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT = 135; + PORT_ATTR_MODULE_TYPE = 136; + PORT_ATTR_DUAL_MEDIA = 137; + PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED = 138; + PORT_ATTR_IPG = 139; + PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD = 140; + PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD = 141; + PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP = 142; + PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP = 143; + PORT_ATTR_IPSEC_PORT = 144; + PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE = 145; + PORT_ATTR_PFC_TC_DLD_INTERVAL = 146; + PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE = 147; + PORT_ATTR_PFC_TC_DLR_INTERVAL = 148; + PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE = 149; + PORT_ATTR_RX_SIGNAL_DETECT = 150; + PORT_ATTR_RX_LOCK_STATUS = 151; + PORT_ATTR_PCS_RX_LINK_STATUS = 152; + PORT_ATTR_FEC_ALIGNMENT_LOCK = 153; + PORT_ATTR_FABRIC_ISOLATE = 154; + PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE = 155; + PORT_ATTR_ARS_ENABLE = 156; + PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR = 157; + PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE = 158; + PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE = 159; + PORT_ATTR_ARS_ALTERNATE_PATH = 160; + PORT_ATTR_JSON_FORMATTED_DEBUG_DATA = 161; + PORT_ATTR_ECMP_HASH_ALGORITHM = 162; + PORT_ATTR_ECMP_HASH_SEED = 163; + PORT_ATTR_ECMP_HASH_OFFSET = 164; + PORT_ATTR_OPER_PORT_FEC_MODE = 165; + PORT_ATTR_HOST_TX_SIGNAL_ENABLE = 166; + PORT_ATTR_HOST_TX_READY_STATUS = 167; + PORT_ATTR_PATH_TRACING_INTF = 168; + PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE = 169; + PORT_ATTR_RX_FREQUENCY_OFFSET_PPM = 170; + PORT_ATTR_RX_SNR = 171; + PORT_ATTR_DATAPATH_ENABLE = 172; + PORT_ATTR_CABLE_PAIR_STATE = 173; + PORT_ATTR_CABLE_PAIR_LENGTH = 174; + PORT_ATTR_CABLE_TYPE = 175; + PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT = 176; + PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT = 177; + PORT_ATTR_POE_PORT_ID = 178; + PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE = 179; + PORT_ATTR_UNRELIABLE_LOS = 180; + PORT_ATTR_ERROR_STATUS = 181; + PORT_ATTR_STATS_COUNT_MODE = 182; + PORT_ATTR_SELECTIVE_COUNTER_LIST = 183; } enum PortPoolAttr { - PORT_POOL_ATTR_UNSPECIFIED = 0; - PORT_POOL_ATTR_PORT_ID = 1; - PORT_POOL_ATTR_BUFFER_POOL_ID = 2; - PORT_POOL_ATTR_QOS_WRED_PROFILE_ID = 3; + PORT_POOL_ATTR_UNSPECIFIED = 0; + PORT_POOL_ATTR_PORT_ID = 1; + PORT_POOL_ATTR_BUFFER_POOL_ID = 2; + PORT_POOL_ATTR_QOS_WRED_PROFILE_ID = 3; } enum PortConnectorAttr { - PORT_CONNECTOR_ATTR_UNSPECIFIED = 0; - PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID = 1; - PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID = 2; - PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID = 3; - PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID = 4; - PORT_CONNECTOR_ATTR_FAILOVER_MODE = 5; + PORT_CONNECTOR_ATTR_UNSPECIFIED = 0; + PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID = 1; + PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID = 2; + PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID = 3; + PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID = 4; + PORT_CONNECTOR_ATTR_FAILOVER_MODE = 5; } enum PortSerdesAttr { - PORT_SERDES_ATTR_UNSPECIFIED = 0; - PORT_SERDES_ATTR_PORT_ID = 1; - PORT_SERDES_ATTR_PREEMPHASIS = 2; - PORT_SERDES_ATTR_IDRIVER = 3; - PORT_SERDES_ATTR_IPREDRIVER = 4; - PORT_SERDES_ATTR_TX_FIR_PRE1 = 5; - PORT_SERDES_ATTR_TX_FIR_PRE2 = 6; - PORT_SERDES_ATTR_TX_FIR_PRE3 = 7; - PORT_SERDES_ATTR_TX_FIR_MAIN = 8; - PORT_SERDES_ATTR_TX_FIR_POST1 = 9; - PORT_SERDES_ATTR_TX_FIR_POST2 = 10; - PORT_SERDES_ATTR_TX_FIR_POST3 = 11; - PORT_SERDES_ATTR_TX_FIR_ATTN = 12; - PORT_SERDES_ATTR_TX_PAM4_RATIO = 13; - PORT_SERDES_ATTR_TX_OUT_COMMON_MODE = 14; - PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE = 15; - PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE = 16; - PORT_SERDES_ATTR_TX_PMOS_VLTG_REG = 17; - PORT_SERDES_ATTR_TX_NMOS_VLTG_REG = 18; - PORT_SERDES_ATTR_TX_PRECODING = 19; - PORT_SERDES_ATTR_RX_PRECODING = 20; + PORT_SERDES_ATTR_UNSPECIFIED = 0; + PORT_SERDES_ATTR_PORT_ID = 1; + PORT_SERDES_ATTR_PREEMPHASIS = 2; + PORT_SERDES_ATTR_IDRIVER = 3; + PORT_SERDES_ATTR_IPREDRIVER = 4; + PORT_SERDES_ATTR_TX_FIR_PRE1 = 5; + PORT_SERDES_ATTR_TX_FIR_PRE2 = 6; + PORT_SERDES_ATTR_TX_FIR_PRE3 = 7; + PORT_SERDES_ATTR_TX_FIR_MAIN = 8; + PORT_SERDES_ATTR_TX_FIR_POST1 = 9; + PORT_SERDES_ATTR_TX_FIR_POST2 = 10; + PORT_SERDES_ATTR_TX_FIR_POST3 = 11; + PORT_SERDES_ATTR_TX_FIR_ATTN = 12; + PORT_SERDES_ATTR_TX_PAM4_RATIO = 13; + PORT_SERDES_ATTR_TX_OUT_COMMON_MODE = 14; + PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE = 15; + PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE = 16; + PORT_SERDES_ATTR_TX_PMOS_VLTG_REG = 17; + PORT_SERDES_ATTR_TX_NMOS_VLTG_REG = 18; + PORT_SERDES_ATTR_TX_PRECODING = 19; + PORT_SERDES_ATTR_RX_PRECODING = 20; } message CreatePortRequest { - option (sai_type) = OBJECT_TYPE_PORT; - uint64 switch = 1; - repeated uint32 hw_lane_list = 2[(attr_enum_value) = 31]; - optional uint32 speed = 3[(attr_enum_value) = 32]; - optional bool full_duplex_mode = 4[(attr_enum_value) = 33]; - optional bool auto_neg_mode = 5[(attr_enum_value) = 34]; - optional bool admin_state = 6[(attr_enum_value) = 35]; - optional PortMediaType media_type = 7[(attr_enum_value) = 36]; - repeated uint32 advertised_speed = 8[(attr_enum_value) = 37]; - repeated PortFecMode advertised_fec_mode = 9[(attr_enum_value) = 38]; - repeated PortFecModeExtended advertised_fec_mode_extended = 10[(attr_enum_value) = 39]; - repeated uint32 advertised_half_duplex_speed = 11[(attr_enum_value) = 40]; - optional bool advertised_auto_neg_mode = 12[(attr_enum_value) = 41]; - optional PortFlowControlMode advertised_flow_control_mode = 13[(attr_enum_value) = 42]; - optional bool advertised_asymmetric_pause_mode = 14[(attr_enum_value) = 43]; - optional PortMediaType advertised_media_type = 15[(attr_enum_value) = 44]; - optional uint32 advertised_oui_code = 16[(attr_enum_value) = 45]; - optional uint32 port_vlan_id = 17[(attr_enum_value) = 46]; - optional uint32 default_vlan_priority = 18[(attr_enum_value) = 47]; - optional bool drop_untagged = 19[(attr_enum_value) = 48]; - optional bool drop_tagged = 20[(attr_enum_value) = 49]; - optional PortInternalLoopbackMode internal_loopback_mode = 21[(attr_enum_value) = 50]; - optional bool use_extended_fec = 22[(attr_enum_value) = 51]; - optional PortFecMode fec_mode = 23[(attr_enum_value) = 52]; - optional PortFecModeExtended fec_mode_extended = 24[(attr_enum_value) = 53]; - optional bool update_dscp = 25[(attr_enum_value) = 54]; - optional uint32 mtu = 26[(attr_enum_value) = 55]; - optional uint64 flood_storm_control_policer_id = 27[(attr_enum_value) = 56]; - optional uint64 broadcast_storm_control_policer_id = 28[(attr_enum_value) = 57]; - optional uint64 multicast_storm_control_policer_id = 29[(attr_enum_value) = 58]; - optional PortFlowControlMode global_flow_control_mode = 30[(attr_enum_value) = 59]; - optional uint64 ingress_acl = 31[(attr_enum_value) = 60]; - optional uint64 egress_acl = 32[(attr_enum_value) = 61]; - optional uint64 ingress_macsec_acl = 33[(attr_enum_value) = 62]; - optional uint64 egress_macsec_acl = 34[(attr_enum_value) = 63]; - repeated uint64 ingress_mirror_session = 35[(attr_enum_value) = 65]; - repeated uint64 egress_mirror_session = 36[(attr_enum_value) = 66]; - optional uint64 ingress_samplepacket_enable = 37[(attr_enum_value) = 67]; - optional uint64 egress_samplepacket_enable = 38[(attr_enum_value) = 68]; - repeated uint64 ingress_sample_mirror_session = 39[(attr_enum_value) = 69]; - repeated uint64 egress_sample_mirror_session = 40[(attr_enum_value) = 70]; - optional uint64 policer_id = 41[(attr_enum_value) = 71]; - optional uint32 qos_default_tc = 42[(attr_enum_value) = 72]; - optional uint64 qos_dot1p_to_tc_map = 43[(attr_enum_value) = 73]; - optional uint64 qos_dot1p_to_color_map = 44[(attr_enum_value) = 74]; - optional uint64 qos_dscp_to_tc_map = 45[(attr_enum_value) = 75]; - optional uint64 qos_dscp_to_color_map = 46[(attr_enum_value) = 76]; - optional uint64 qos_tc_to_queue_map = 47[(attr_enum_value) = 77]; - optional uint64 qos_tc_and_color_to_dot1p_map = 48[(attr_enum_value) = 78]; - optional uint64 qos_tc_and_color_to_dscp_map = 49[(attr_enum_value) = 79]; - optional uint64 qos_tc_to_priority_group_map = 50[(attr_enum_value) = 80]; - optional uint64 qos_pfc_priority_to_priority_group_map = 51[(attr_enum_value) = 81]; - optional uint64 qos_pfc_priority_to_queue_map = 52[(attr_enum_value) = 82]; - optional uint64 qos_scheduler_profile_id = 53[(attr_enum_value) = 83]; - repeated uint64 qos_ingress_buffer_profile_list = 54[(attr_enum_value) = 84]; - repeated uint64 qos_egress_buffer_profile_list = 55[(attr_enum_value) = 85]; - optional PortPriorityFlowControlMode priority_flow_control_mode = 56[(attr_enum_value) = 86]; - optional uint32 priority_flow_control = 57[(attr_enum_value) = 87]; - optional uint32 priority_flow_control_rx = 58[(attr_enum_value) = 88]; - optional uint32 priority_flow_control_tx = 59[(attr_enum_value) = 89]; - optional uint32 meta_data = 60[(attr_enum_value) = 90]; - repeated uint64 egress_block_port_list = 61[(attr_enum_value) = 91]; - optional uint64 hw_profile_id = 62[(attr_enum_value) = 92]; - optional bool eee_enable = 63[(attr_enum_value) = 93]; - optional uint32 eee_idle_time = 64[(attr_enum_value) = 94]; - optional uint32 eee_wake_time = 65[(attr_enum_value) = 95]; - optional uint64 isolation_group = 66[(attr_enum_value) = 97]; - optional bool pkt_tx_enable = 67[(attr_enum_value) = 98]; - repeated uint64 tam_object = 68[(attr_enum_value) = 99]; - repeated uint32 serdes_preemphasis = 69[(attr_enum_value) = 100]; - repeated uint32 serdes_idriver = 70[(attr_enum_value) = 101]; - repeated uint32 serdes_ipredriver = 71[(attr_enum_value) = 102]; - optional bool link_training_enable = 72[(attr_enum_value) = 103]; - optional PortPtpMode ptp_mode = 73[(attr_enum_value) = 104]; - optional PortInterfaceType interface_type = 74[(attr_enum_value) = 105]; - repeated PortInterfaceType advertised_interface_type = 75[(attr_enum_value) = 106]; - optional uint64 reference_clock = 76[(attr_enum_value) = 107]; - optional uint32 prbs_polynomial = 77[(attr_enum_value) = 108]; - optional PortPrbsConfig prbs_config = 78[(attr_enum_value) = 112]; - optional bool disable_decrement_ttl = 79[(attr_enum_value) = 118]; - optional uint64 qos_mpls_exp_to_tc_map = 80[(attr_enum_value) = 119]; - optional uint64 qos_mpls_exp_to_color_map = 81[(attr_enum_value) = 120]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 82[(attr_enum_value) = 121]; - optional uint32 tpid = 83[(attr_enum_value) = 122]; - optional bool auto_neg_fec_mode_override = 84[(attr_enum_value) = 130]; - optional PortLoopbackMode loopback_mode = 85[(attr_enum_value) = 131]; - optional PortMdixModeConfig mdix_mode_config = 86[(attr_enum_value) = 133]; - optional PortAutoNegConfigMode auto_neg_config_mode = 87[(attr_enum_value) = 134]; - optional bool _1000x_sgmii_slave_autodetect = 88[(attr_enum_value) = 135]; - optional PortModuleType module_type = 89[(attr_enum_value) = 136]; - optional PortDualMedia dual_media = 90[(attr_enum_value) = 137]; - optional uint32 ipg = 91[(attr_enum_value) = 139]; - optional bool global_flow_control_forward = 92[(attr_enum_value) = 140]; - optional bool priority_flow_control_forward = 93[(attr_enum_value) = 141]; - optional uint64 qos_dscp_to_forwarding_class_map = 94[(attr_enum_value) = 142]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 95[(attr_enum_value) = 143]; - repeated UintMap pfc_tc_dld_interval = 96[(attr_enum_value) = 146]; - repeated UintMap pfc_tc_dlr_interval = 97[(attr_enum_value) = 148]; - optional bool fabric_isolate = 98[(attr_enum_value) = 154]; - optional bool ars_enable = 99[(attr_enum_value) = 156]; - optional uint32 ars_port_load_scaling_factor = 100[(attr_enum_value) = 157]; - optional bool ars_port_load_past_enable = 101[(attr_enum_value) = 158]; - optional bool ars_port_load_future_enable = 102[(attr_enum_value) = 159]; - optional bool ars_alternate_path = 103[(attr_enum_value) = 160]; - optional HashAlgorithm ecmp_hash_algorithm = 104[(attr_enum_value) = 162]; - optional uint32 ecmp_hash_seed = 105[(attr_enum_value) = 163]; - optional uint32 ecmp_hash_offset = 106[(attr_enum_value) = 164]; - optional bool host_tx_signal_enable = 107[(attr_enum_value) = 166]; - optional uint32 path_tracing_intf = 108[(attr_enum_value) = 168]; - optional PortPathTracingTimestampType path_tracing_timestamp_type = 109[(attr_enum_value) = 169]; - optional PortDatapathEnable datapath_enable = 110[(attr_enum_value) = 172]; - optional PortCableType cable_type = 111[(attr_enum_value) = 175]; - optional uint32 ars_port_load_past_weight = 112[(attr_enum_value) = 176]; - optional uint32 ars_port_load_future_weight = 113[(attr_enum_value) = 177]; + option (sai_type) = OBJECT_TYPE_PORT; + uint64 switch = 1; + repeated uint32 hw_lane_list = 2 [(attr_enum_value) = 31]; + optional uint32 speed = 3 [(attr_enum_value) = 32]; + optional bool full_duplex_mode = 4 [(attr_enum_value) = 33]; + optional bool auto_neg_mode = 5 [(attr_enum_value) = 34]; + optional bool admin_state = 6 [(attr_enum_value) = 35]; + optional PortMediaType media_type = 7 [(attr_enum_value) = 36]; + repeated uint32 advertised_speed = 8 [(attr_enum_value) = 37]; + repeated PortFecMode advertised_fec_mode = 9 [(attr_enum_value) = 38]; + repeated PortFecModeExtended advertised_fec_mode_extended = 10 + [(attr_enum_value) = 39]; + repeated uint32 advertised_half_duplex_speed = 11 [(attr_enum_value) = 40]; + optional bool advertised_auto_neg_mode = 12 [(attr_enum_value) = 41]; + optional PortFlowControlMode advertised_flow_control_mode = 13 + [(attr_enum_value) = 42]; + optional bool advertised_asymmetric_pause_mode = 14 [(attr_enum_value) = 43]; + optional PortMediaType advertised_media_type = 15 [(attr_enum_value) = 44]; + optional uint32 advertised_oui_code = 16 [(attr_enum_value) = 45]; + optional uint32 port_vlan_id = 17 [(attr_enum_value) = 46]; + optional uint32 default_vlan_priority = 18 [(attr_enum_value) = 47]; + optional bool drop_untagged = 19 [(attr_enum_value) = 48]; + optional bool drop_tagged = 20 [(attr_enum_value) = 49]; + optional PortInternalLoopbackMode internal_loopback_mode = 21 + [(attr_enum_value) = 50]; + optional bool use_extended_fec = 22 [(attr_enum_value) = 51]; + optional PortFecMode fec_mode = 23 [(attr_enum_value) = 52]; + optional PortFecModeExtended fec_mode_extended = 24 [(attr_enum_value) = 53]; + optional bool update_dscp = 25 [(attr_enum_value) = 54]; + optional uint32 mtu = 26 [(attr_enum_value) = 55]; + optional uint64 flood_storm_control_policer_id = 27 [(attr_enum_value) = 56]; + optional uint64 broadcast_storm_control_policer_id = 28 + [(attr_enum_value) = 57]; + optional uint64 multicast_storm_control_policer_id = 29 + [(attr_enum_value) = 58]; + optional PortFlowControlMode global_flow_control_mode = 30 + [(attr_enum_value) = 59]; + optional uint64 ingress_acl = 31 [(attr_enum_value) = 60]; + optional uint64 egress_acl = 32 [(attr_enum_value) = 61]; + optional uint64 ingress_macsec_acl = 33 [(attr_enum_value) = 62]; + optional uint64 egress_macsec_acl = 34 [(attr_enum_value) = 63]; + repeated uint64 ingress_mirror_session = 35 [(attr_enum_value) = 65]; + repeated uint64 egress_mirror_session = 36 [(attr_enum_value) = 66]; + optional uint64 ingress_samplepacket_enable = 37 [(attr_enum_value) = 67]; + optional uint64 egress_samplepacket_enable = 38 [(attr_enum_value) = 68]; + repeated uint64 ingress_sample_mirror_session = 39 [(attr_enum_value) = 69]; + repeated uint64 egress_sample_mirror_session = 40 [(attr_enum_value) = 70]; + optional uint64 policer_id = 41 [(attr_enum_value) = 71]; + optional uint32 qos_default_tc = 42 [(attr_enum_value) = 72]; + optional uint64 qos_dot1p_to_tc_map = 43 [(attr_enum_value) = 73]; + optional uint64 qos_dot1p_to_color_map = 44 [(attr_enum_value) = 74]; + optional uint64 qos_dscp_to_tc_map = 45 [(attr_enum_value) = 75]; + optional uint64 qos_dscp_to_color_map = 46 [(attr_enum_value) = 76]; + optional uint64 qos_tc_to_queue_map = 47 [(attr_enum_value) = 77]; + optional uint64 qos_tc_and_color_to_dot1p_map = 48 [(attr_enum_value) = 78]; + optional uint64 qos_tc_and_color_to_dscp_map = 49 [(attr_enum_value) = 79]; + optional uint64 qos_tc_to_priority_group_map = 50 [(attr_enum_value) = 80]; + optional uint64 qos_pfc_priority_to_priority_group_map = 51 + [(attr_enum_value) = 81]; + optional uint64 qos_pfc_priority_to_queue_map = 52 [(attr_enum_value) = 82]; + optional uint64 qos_scheduler_profile_id = 53 [(attr_enum_value) = 83]; + repeated uint64 qos_ingress_buffer_profile_list = 54 [(attr_enum_value) = 84]; + repeated uint64 qos_egress_buffer_profile_list = 55 [(attr_enum_value) = 85]; + optional PortPriorityFlowControlMode priority_flow_control_mode = 56 + [(attr_enum_value) = 86]; + optional uint32 priority_flow_control = 57 [(attr_enum_value) = 87]; + optional uint32 priority_flow_control_rx = 58 [(attr_enum_value) = 88]; + optional uint32 priority_flow_control_tx = 59 [(attr_enum_value) = 89]; + optional uint32 meta_data = 60 [(attr_enum_value) = 90]; + repeated uint64 egress_block_port_list = 61 [(attr_enum_value) = 91]; + optional uint64 hw_profile_id = 62 [(attr_enum_value) = 92]; + optional bool eee_enable = 63 [(attr_enum_value) = 93]; + optional uint32 eee_idle_time = 64 [(attr_enum_value) = 94]; + optional uint32 eee_wake_time = 65 [(attr_enum_value) = 95]; + optional uint64 isolation_group = 66 [(attr_enum_value) = 97]; + optional bool pkt_tx_enable = 67 [(attr_enum_value) = 98]; + repeated uint64 tam_object = 68 [(attr_enum_value) = 99]; + repeated uint32 serdes_preemphasis = 69 [(attr_enum_value) = 100]; + repeated uint32 serdes_idriver = 70 [(attr_enum_value) = 101]; + repeated uint32 serdes_ipredriver = 71 [(attr_enum_value) = 102]; + optional bool link_training_enable = 72 [(attr_enum_value) = 103]; + optional PortPtpMode ptp_mode = 73 [(attr_enum_value) = 104]; + optional PortInterfaceType interface_type = 74 [(attr_enum_value) = 105]; + repeated PortInterfaceType advertised_interface_type = 75 + [(attr_enum_value) = 106]; + optional uint64 reference_clock = 76 [(attr_enum_value) = 107]; + optional uint32 prbs_polynomial = 77 [(attr_enum_value) = 108]; + optional PortPrbsConfig prbs_config = 78 [(attr_enum_value) = 112]; + optional bool disable_decrement_ttl = 79 [(attr_enum_value) = 118]; + optional uint64 qos_mpls_exp_to_tc_map = 80 [(attr_enum_value) = 119]; + optional uint64 qos_mpls_exp_to_color_map = 81 [(attr_enum_value) = 120]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 82 + [(attr_enum_value) = 121]; + optional uint32 tpid = 83 [(attr_enum_value) = 122]; + optional bool auto_neg_fec_mode_override = 84 [(attr_enum_value) = 130]; + optional PortLoopbackMode loopback_mode = 85 [(attr_enum_value) = 131]; + optional PortMdixModeConfig mdix_mode_config = 86 [(attr_enum_value) = 133]; + optional PortAutoNegConfigMode auto_neg_config_mode = 87 + [(attr_enum_value) = 134]; + optional bool _1000x_sgmii_slave_autodetect = 88 [(attr_enum_value) = 135]; + optional PortModuleType module_type = 89 [(attr_enum_value) = 136]; + optional PortDualMedia dual_media = 90 [(attr_enum_value) = 137]; + optional uint32 ipg = 91 [(attr_enum_value) = 139]; + optional bool global_flow_control_forward = 92 [(attr_enum_value) = 140]; + optional bool priority_flow_control_forward = 93 [(attr_enum_value) = 141]; + optional uint64 qos_dscp_to_forwarding_class_map = 94 + [(attr_enum_value) = 142]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 95 + [(attr_enum_value) = 143]; + repeated UintMap pfc_tc_dld_interval = 96 [(attr_enum_value) = 146]; + repeated UintMap pfc_tc_dlr_interval = 97 [(attr_enum_value) = 148]; + optional bool fabric_isolate = 98 [(attr_enum_value) = 154]; + optional bool ars_enable = 99 [(attr_enum_value) = 156]; + optional uint32 ars_port_load_scaling_factor = 100 [(attr_enum_value) = 157]; + optional bool ars_port_load_past_enable = 101 [(attr_enum_value) = 158]; + optional bool ars_port_load_future_enable = 102 [(attr_enum_value) = 159]; + optional bool ars_alternate_path = 103 [(attr_enum_value) = 160]; + optional HashAlgorithm ecmp_hash_algorithm = 104 [(attr_enum_value) = 162]; + optional uint32 ecmp_hash_seed = 105 [(attr_enum_value) = 163]; + optional uint32 ecmp_hash_offset = 106 [(attr_enum_value) = 164]; + optional bool host_tx_signal_enable = 107 [(attr_enum_value) = 166]; + optional uint32 path_tracing_intf = 108 [(attr_enum_value) = 168]; + optional PortPathTracingTimestampType path_tracing_timestamp_type = 109 + [(attr_enum_value) = 169]; + optional PortDatapathEnable datapath_enable = 110 [(attr_enum_value) = 172]; + optional PortCableType cable_type = 111 [(attr_enum_value) = 175]; + optional uint32 ars_port_load_past_weight = 112 [(attr_enum_value) = 176]; + optional uint32 ars_port_load_future_weight = 113 [(attr_enum_value) = 177]; + optional bool unreliable_los = 114 [(attr_enum_value) = 180]; + optional StatsCountMode stats_count_mode = 115 [(attr_enum_value) = 182]; + repeated uint64 selective_counter_list = 116 [(attr_enum_value) = 183]; } message CreatePortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemovePortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemovePortResponse { -} +message RemovePortResponse {} message SetPortAttributeRequest { - uint64 oid = 1; - optional uint32 speed = 2[(attr_enum_value) = 32]; - optional bool auto_neg_mode = 3[(attr_enum_value) = 34]; - optional bool admin_state = 4[(attr_enum_value) = 35]; - optional PortMediaType media_type = 5[(attr_enum_value) = 36]; - repeated uint32 advertised_speed = 6[(attr_enum_value) = 37]; - repeated PortFecMode advertised_fec_mode = 7[(attr_enum_value) = 38]; - repeated PortFecModeExtended advertised_fec_mode_extended = 8[(attr_enum_value) = 39]; - repeated uint32 advertised_half_duplex_speed = 9[(attr_enum_value) = 40]; - optional bool advertised_auto_neg_mode = 10[(attr_enum_value) = 41]; - optional PortFlowControlMode advertised_flow_control_mode = 11[(attr_enum_value) = 42]; - optional bool advertised_asymmetric_pause_mode = 12[(attr_enum_value) = 43]; - optional PortMediaType advertised_media_type = 13[(attr_enum_value) = 44]; - optional uint32 advertised_oui_code = 14[(attr_enum_value) = 45]; - optional uint32 port_vlan_id = 15[(attr_enum_value) = 46]; - optional uint32 default_vlan_priority = 16[(attr_enum_value) = 47]; - optional bool drop_untagged = 17[(attr_enum_value) = 48]; - optional bool drop_tagged = 18[(attr_enum_value) = 49]; - optional PortInternalLoopbackMode internal_loopback_mode = 19[(attr_enum_value) = 50]; - optional bool use_extended_fec = 20[(attr_enum_value) = 51]; - optional PortFecMode fec_mode = 21[(attr_enum_value) = 52]; - optional PortFecModeExtended fec_mode_extended = 22[(attr_enum_value) = 53]; - optional bool update_dscp = 23[(attr_enum_value) = 54]; - optional uint32 mtu = 24[(attr_enum_value) = 55]; - optional uint64 flood_storm_control_policer_id = 25[(attr_enum_value) = 56]; - optional uint64 broadcast_storm_control_policer_id = 26[(attr_enum_value) = 57]; - optional uint64 multicast_storm_control_policer_id = 27[(attr_enum_value) = 58]; - optional PortFlowControlMode global_flow_control_mode = 28[(attr_enum_value) = 59]; - optional uint64 ingress_acl = 29[(attr_enum_value) = 60]; - optional uint64 egress_acl = 30[(attr_enum_value) = 61]; - optional uint64 ingress_macsec_acl = 31[(attr_enum_value) = 62]; - optional uint64 egress_macsec_acl = 32[(attr_enum_value) = 63]; - repeated uint64 ingress_mirror_session = 33[(attr_enum_value) = 65]; - repeated uint64 egress_mirror_session = 34[(attr_enum_value) = 66]; - optional uint64 ingress_samplepacket_enable = 35[(attr_enum_value) = 67]; - optional uint64 egress_samplepacket_enable = 36[(attr_enum_value) = 68]; - repeated uint64 ingress_sample_mirror_session = 37[(attr_enum_value) = 69]; - repeated uint64 egress_sample_mirror_session = 38[(attr_enum_value) = 70]; - optional uint64 policer_id = 39[(attr_enum_value) = 71]; - optional uint32 qos_default_tc = 40[(attr_enum_value) = 72]; - optional uint64 qos_dot1p_to_tc_map = 41[(attr_enum_value) = 73]; - optional uint64 qos_dot1p_to_color_map = 42[(attr_enum_value) = 74]; - optional uint64 qos_dscp_to_tc_map = 43[(attr_enum_value) = 75]; - optional uint64 qos_dscp_to_color_map = 44[(attr_enum_value) = 76]; - optional uint64 qos_tc_to_queue_map = 45[(attr_enum_value) = 77]; - optional uint64 qos_tc_and_color_to_dot1p_map = 46[(attr_enum_value) = 78]; - optional uint64 qos_tc_and_color_to_dscp_map = 47[(attr_enum_value) = 79]; - optional uint64 qos_tc_to_priority_group_map = 48[(attr_enum_value) = 80]; - optional uint64 qos_pfc_priority_to_priority_group_map = 49[(attr_enum_value) = 81]; - optional uint64 qos_pfc_priority_to_queue_map = 50[(attr_enum_value) = 82]; - optional uint64 qos_scheduler_profile_id = 51[(attr_enum_value) = 83]; - repeated uint64 qos_ingress_buffer_profile_list = 52[(attr_enum_value) = 84]; - repeated uint64 qos_egress_buffer_profile_list = 53[(attr_enum_value) = 85]; - optional PortPriorityFlowControlMode priority_flow_control_mode = 54[(attr_enum_value) = 86]; - optional uint32 priority_flow_control = 55[(attr_enum_value) = 87]; - optional uint32 priority_flow_control_rx = 56[(attr_enum_value) = 88]; - optional uint32 priority_flow_control_tx = 57[(attr_enum_value) = 89]; - optional uint32 meta_data = 58[(attr_enum_value) = 90]; - repeated uint64 egress_block_port_list = 59[(attr_enum_value) = 91]; - optional uint64 hw_profile_id = 60[(attr_enum_value) = 92]; - optional bool eee_enable = 61[(attr_enum_value) = 93]; - optional uint32 eee_idle_time = 62[(attr_enum_value) = 94]; - optional uint32 eee_wake_time = 63[(attr_enum_value) = 95]; - optional uint64 isolation_group = 64[(attr_enum_value) = 97]; - optional bool pkt_tx_enable = 65[(attr_enum_value) = 98]; - repeated uint64 tam_object = 66[(attr_enum_value) = 99]; - repeated uint32 serdes_preemphasis = 67[(attr_enum_value) = 100]; - repeated uint32 serdes_idriver = 68[(attr_enum_value) = 101]; - repeated uint32 serdes_ipredriver = 69[(attr_enum_value) = 102]; - optional bool link_training_enable = 70[(attr_enum_value) = 103]; - optional PortPtpMode ptp_mode = 71[(attr_enum_value) = 104]; - optional PortInterfaceType interface_type = 72[(attr_enum_value) = 105]; - repeated PortInterfaceType advertised_interface_type = 73[(attr_enum_value) = 106]; - optional uint32 prbs_polynomial = 74[(attr_enum_value) = 108]; - optional PortPrbsConfig prbs_config = 75[(attr_enum_value) = 112]; - optional bool disable_decrement_ttl = 76[(attr_enum_value) = 118]; - optional uint64 qos_mpls_exp_to_tc_map = 77[(attr_enum_value) = 119]; - optional uint64 qos_mpls_exp_to_color_map = 78[(attr_enum_value) = 120]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 79[(attr_enum_value) = 121]; - optional uint32 tpid = 80[(attr_enum_value) = 122]; - optional bool auto_neg_fec_mode_override = 81[(attr_enum_value) = 130]; - optional PortLoopbackMode loopback_mode = 82[(attr_enum_value) = 131]; - optional PortMdixModeConfig mdix_mode_config = 83[(attr_enum_value) = 133]; - optional PortAutoNegConfigMode auto_neg_config_mode = 84[(attr_enum_value) = 134]; - optional bool _1000x_sgmii_slave_autodetect = 85[(attr_enum_value) = 135]; - optional PortModuleType module_type = 86[(attr_enum_value) = 136]; - optional PortDualMedia dual_media = 87[(attr_enum_value) = 137]; - optional uint32 ipg = 88[(attr_enum_value) = 139]; - optional bool global_flow_control_forward = 89[(attr_enum_value) = 140]; - optional bool priority_flow_control_forward = 90[(attr_enum_value) = 141]; - optional uint64 qos_dscp_to_forwarding_class_map = 91[(attr_enum_value) = 142]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 92[(attr_enum_value) = 143]; - repeated UintMap pfc_tc_dld_interval = 93[(attr_enum_value) = 146]; - repeated UintMap pfc_tc_dlr_interval = 94[(attr_enum_value) = 148]; - optional bool fabric_isolate = 95[(attr_enum_value) = 154]; - optional bool ars_enable = 96[(attr_enum_value) = 156]; - optional uint32 ars_port_load_scaling_factor = 97[(attr_enum_value) = 157]; - optional bool ars_port_load_past_enable = 98[(attr_enum_value) = 158]; - optional bool ars_port_load_future_enable = 99[(attr_enum_value) = 159]; - optional bool ars_alternate_path = 100[(attr_enum_value) = 160]; - optional HashAlgorithm ecmp_hash_algorithm = 101[(attr_enum_value) = 162]; - optional uint32 ecmp_hash_seed = 102[(attr_enum_value) = 163]; - optional uint32 ecmp_hash_offset = 103[(attr_enum_value) = 164]; - optional bool host_tx_signal_enable = 104[(attr_enum_value) = 166]; - optional uint32 path_tracing_intf = 105[(attr_enum_value) = 168]; - optional PortPathTracingTimestampType path_tracing_timestamp_type = 106[(attr_enum_value) = 169]; - optional PortDatapathEnable datapath_enable = 107[(attr_enum_value) = 172]; - optional PortCableType cable_type = 108[(attr_enum_value) = 175]; - optional uint32 ars_port_load_past_weight = 109[(attr_enum_value) = 176]; - optional uint32 ars_port_load_future_weight = 110[(attr_enum_value) = 177]; -} - -message SetPortAttributeResponse { -} + uint64 oid = 1; + optional uint32 speed = 2 [(attr_enum_value) = 32]; + optional bool auto_neg_mode = 3 [(attr_enum_value) = 34]; + optional bool admin_state = 4 [(attr_enum_value) = 35]; + optional PortMediaType media_type = 5 [(attr_enum_value) = 36]; + repeated uint32 advertised_speed = 6 [(attr_enum_value) = 37]; + repeated PortFecMode advertised_fec_mode = 7 [(attr_enum_value) = 38]; + repeated PortFecModeExtended advertised_fec_mode_extended = 8 + [(attr_enum_value) = 39]; + repeated uint32 advertised_half_duplex_speed = 9 [(attr_enum_value) = 40]; + optional bool advertised_auto_neg_mode = 10 [(attr_enum_value) = 41]; + optional PortFlowControlMode advertised_flow_control_mode = 11 + [(attr_enum_value) = 42]; + optional bool advertised_asymmetric_pause_mode = 12 [(attr_enum_value) = 43]; + optional PortMediaType advertised_media_type = 13 [(attr_enum_value) = 44]; + optional uint32 advertised_oui_code = 14 [(attr_enum_value) = 45]; + optional uint32 port_vlan_id = 15 [(attr_enum_value) = 46]; + optional uint32 default_vlan_priority = 16 [(attr_enum_value) = 47]; + optional bool drop_untagged = 17 [(attr_enum_value) = 48]; + optional bool drop_tagged = 18 [(attr_enum_value) = 49]; + optional PortInternalLoopbackMode internal_loopback_mode = 19 + [(attr_enum_value) = 50]; + optional bool use_extended_fec = 20 [(attr_enum_value) = 51]; + optional PortFecMode fec_mode = 21 [(attr_enum_value) = 52]; + optional PortFecModeExtended fec_mode_extended = 22 [(attr_enum_value) = 53]; + optional bool update_dscp = 23 [(attr_enum_value) = 54]; + optional uint32 mtu = 24 [(attr_enum_value) = 55]; + optional uint64 flood_storm_control_policer_id = 25 [(attr_enum_value) = 56]; + optional uint64 broadcast_storm_control_policer_id = 26 + [(attr_enum_value) = 57]; + optional uint64 multicast_storm_control_policer_id = 27 + [(attr_enum_value) = 58]; + optional PortFlowControlMode global_flow_control_mode = 28 + [(attr_enum_value) = 59]; + optional uint64 ingress_acl = 29 [(attr_enum_value) = 60]; + optional uint64 egress_acl = 30 [(attr_enum_value) = 61]; + optional uint64 ingress_macsec_acl = 31 [(attr_enum_value) = 62]; + optional uint64 egress_macsec_acl = 32 [(attr_enum_value) = 63]; + repeated uint64 ingress_mirror_session = 33 [(attr_enum_value) = 65]; + repeated uint64 egress_mirror_session = 34 [(attr_enum_value) = 66]; + optional uint64 ingress_samplepacket_enable = 35 [(attr_enum_value) = 67]; + optional uint64 egress_samplepacket_enable = 36 [(attr_enum_value) = 68]; + repeated uint64 ingress_sample_mirror_session = 37 [(attr_enum_value) = 69]; + repeated uint64 egress_sample_mirror_session = 38 [(attr_enum_value) = 70]; + optional uint64 policer_id = 39 [(attr_enum_value) = 71]; + optional uint32 qos_default_tc = 40 [(attr_enum_value) = 72]; + optional uint64 qos_dot1p_to_tc_map = 41 [(attr_enum_value) = 73]; + optional uint64 qos_dot1p_to_color_map = 42 [(attr_enum_value) = 74]; + optional uint64 qos_dscp_to_tc_map = 43 [(attr_enum_value) = 75]; + optional uint64 qos_dscp_to_color_map = 44 [(attr_enum_value) = 76]; + optional uint64 qos_tc_to_queue_map = 45 [(attr_enum_value) = 77]; + optional uint64 qos_tc_and_color_to_dot1p_map = 46 [(attr_enum_value) = 78]; + optional uint64 qos_tc_and_color_to_dscp_map = 47 [(attr_enum_value) = 79]; + optional uint64 qos_tc_to_priority_group_map = 48 [(attr_enum_value) = 80]; + optional uint64 qos_pfc_priority_to_priority_group_map = 49 + [(attr_enum_value) = 81]; + optional uint64 qos_pfc_priority_to_queue_map = 50 [(attr_enum_value) = 82]; + optional uint64 qos_scheduler_profile_id = 51 [(attr_enum_value) = 83]; + repeated uint64 qos_ingress_buffer_profile_list = 52 [(attr_enum_value) = 84]; + repeated uint64 qos_egress_buffer_profile_list = 53 [(attr_enum_value) = 85]; + optional PortPriorityFlowControlMode priority_flow_control_mode = 54 + [(attr_enum_value) = 86]; + optional uint32 priority_flow_control = 55 [(attr_enum_value) = 87]; + optional uint32 priority_flow_control_rx = 56 [(attr_enum_value) = 88]; + optional uint32 priority_flow_control_tx = 57 [(attr_enum_value) = 89]; + optional uint32 meta_data = 58 [(attr_enum_value) = 90]; + repeated uint64 egress_block_port_list = 59 [(attr_enum_value) = 91]; + optional uint64 hw_profile_id = 60 [(attr_enum_value) = 92]; + optional bool eee_enable = 61 [(attr_enum_value) = 93]; + optional uint32 eee_idle_time = 62 [(attr_enum_value) = 94]; + optional uint32 eee_wake_time = 63 [(attr_enum_value) = 95]; + optional uint64 isolation_group = 64 [(attr_enum_value) = 97]; + optional bool pkt_tx_enable = 65 [(attr_enum_value) = 98]; + repeated uint64 tam_object = 66 [(attr_enum_value) = 99]; + repeated uint32 serdes_preemphasis = 67 [(attr_enum_value) = 100]; + repeated uint32 serdes_idriver = 68 [(attr_enum_value) = 101]; + repeated uint32 serdes_ipredriver = 69 [(attr_enum_value) = 102]; + optional bool link_training_enable = 70 [(attr_enum_value) = 103]; + optional PortPtpMode ptp_mode = 71 [(attr_enum_value) = 104]; + optional PortInterfaceType interface_type = 72 [(attr_enum_value) = 105]; + repeated PortInterfaceType advertised_interface_type = 73 + [(attr_enum_value) = 106]; + optional uint32 prbs_polynomial = 74 [(attr_enum_value) = 108]; + optional PortPrbsConfig prbs_config = 75 [(attr_enum_value) = 112]; + optional bool disable_decrement_ttl = 76 [(attr_enum_value) = 118]; + optional uint64 qos_mpls_exp_to_tc_map = 77 [(attr_enum_value) = 119]; + optional uint64 qos_mpls_exp_to_color_map = 78 [(attr_enum_value) = 120]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 79 + [(attr_enum_value) = 121]; + optional uint32 tpid = 80 [(attr_enum_value) = 122]; + optional bool auto_neg_fec_mode_override = 81 [(attr_enum_value) = 130]; + optional PortLoopbackMode loopback_mode = 82 [(attr_enum_value) = 131]; + optional PortMdixModeConfig mdix_mode_config = 83 [(attr_enum_value) = 133]; + optional PortAutoNegConfigMode auto_neg_config_mode = 84 + [(attr_enum_value) = 134]; + optional bool _1000x_sgmii_slave_autodetect = 85 [(attr_enum_value) = 135]; + optional PortModuleType module_type = 86 [(attr_enum_value) = 136]; + optional PortDualMedia dual_media = 87 [(attr_enum_value) = 137]; + optional uint32 ipg = 88 [(attr_enum_value) = 139]; + optional bool global_flow_control_forward = 89 [(attr_enum_value) = 140]; + optional bool priority_flow_control_forward = 90 [(attr_enum_value) = 141]; + optional uint64 qos_dscp_to_forwarding_class_map = 91 + [(attr_enum_value) = 142]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 92 + [(attr_enum_value) = 143]; + repeated UintMap pfc_tc_dld_interval = 93 [(attr_enum_value) = 146]; + repeated UintMap pfc_tc_dlr_interval = 94 [(attr_enum_value) = 148]; + optional bool fabric_isolate = 95 [(attr_enum_value) = 154]; + optional bool ars_enable = 96 [(attr_enum_value) = 156]; + optional uint32 ars_port_load_scaling_factor = 97 [(attr_enum_value) = 157]; + optional bool ars_port_load_past_enable = 98 [(attr_enum_value) = 158]; + optional bool ars_port_load_future_enable = 99 [(attr_enum_value) = 159]; + optional bool ars_alternate_path = 100 [(attr_enum_value) = 160]; + optional HashAlgorithm ecmp_hash_algorithm = 101 [(attr_enum_value) = 162]; + optional uint32 ecmp_hash_seed = 102 [(attr_enum_value) = 163]; + optional uint32 ecmp_hash_offset = 103 [(attr_enum_value) = 164]; + optional bool host_tx_signal_enable = 104 [(attr_enum_value) = 166]; + optional uint32 path_tracing_intf = 105 [(attr_enum_value) = 168]; + optional PortPathTracingTimestampType path_tracing_timestamp_type = 106 + [(attr_enum_value) = 169]; + optional PortDatapathEnable datapath_enable = 107 [(attr_enum_value) = 172]; + optional PortCableType cable_type = 108 [(attr_enum_value) = 175]; + optional uint32 ars_port_load_past_weight = 109 [(attr_enum_value) = 176]; + optional uint32 ars_port_load_future_weight = 110 [(attr_enum_value) = 177]; + optional bool unreliable_los = 111 [(attr_enum_value) = 180]; + optional StatsCountMode stats_count_mode = 112 [(attr_enum_value) = 182]; + repeated uint64 selective_counter_list = 113 [(attr_enum_value) = 183]; +} + +message SetPortAttributeResponse {} message GetPortAttributeRequest { - uint64 oid = 1; - repeated PortAttr attr_type = 2; + uint64 oid = 1; + repeated PortAttr attr_type = 2; } message GetPortAttributeResponse { - PortAttribute attr = 1; + PortAttribute attr = 1; } message GetPortStatsRequest { - uint64 oid = 1; - repeated PortStat counter_ids = 2; + uint64 oid = 1; + repeated PortStat counter_ids = 2; } message GetPortStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreatePortPoolRequest { - option (sai_type) = OBJECT_TYPE_PORT_POOL; - uint64 switch = 1; - optional uint64 port_id = 2[(attr_enum_value) = 1]; - optional uint64 buffer_pool_id = 3[(attr_enum_value) = 2]; - optional uint64 qos_wred_profile_id = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_PORT_POOL; + uint64 switch = 1; + optional uint64 port_id = 2 [(attr_enum_value) = 1]; + optional uint64 buffer_pool_id = 3 [(attr_enum_value) = 2]; + optional uint64 qos_wred_profile_id = 4 [(attr_enum_value) = 3]; } message CreatePortPoolResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemovePortPoolRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemovePortPoolResponse { -} +message RemovePortPoolResponse {} message SetPortPoolAttributeRequest { - uint64 oid = 1; - optional uint64 qos_wred_profile_id = 2[(attr_enum_value) = 3]; + uint64 oid = 1; + optional uint64 qos_wred_profile_id = 2 [(attr_enum_value) = 3]; } -message SetPortPoolAttributeResponse { -} +message SetPortPoolAttributeResponse {} message GetPortPoolAttributeRequest { - uint64 oid = 1; - repeated PortPoolAttr attr_type = 2; + uint64 oid = 1; + repeated PortPoolAttr attr_type = 2; } message GetPortPoolAttributeResponse { - PortPoolAttribute attr = 1; + PortPoolAttribute attr = 1; } message GetPortPoolStatsRequest { - uint64 oid = 1; - repeated PortPoolStat counter_ids = 2; + uint64 oid = 1; + repeated PortPoolStat counter_ids = 2; } message GetPortPoolStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreatePortConnectorRequest { - option (sai_type) = OBJECT_TYPE_PORT_CONNECTOR; - uint64 switch = 1; - optional uint64 system_side_port_id = 2[(attr_enum_value) = 1]; - optional uint64 line_side_port_id = 3[(attr_enum_value) = 2]; - optional uint64 system_side_failover_port_id = 4[(attr_enum_value) = 3]; - optional uint64 line_side_failover_port_id = 5[(attr_enum_value) = 4]; - optional PortConnectorFailoverMode failover_mode = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_PORT_CONNECTOR; + uint64 switch = 1; + optional uint64 system_side_port_id = 2 [(attr_enum_value) = 1]; + optional uint64 line_side_port_id = 3 [(attr_enum_value) = 2]; + optional uint64 system_side_failover_port_id = 4 [(attr_enum_value) = 3]; + optional uint64 line_side_failover_port_id = 5 [(attr_enum_value) = 4]; + optional PortConnectorFailoverMode failover_mode = 6 [(attr_enum_value) = 5]; } message CreatePortConnectorResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemovePortConnectorRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemovePortConnectorResponse { -} +message RemovePortConnectorResponse {} message SetPortConnectorAttributeRequest { - uint64 oid = 1; - optional PortConnectorFailoverMode failover_mode = 2[(attr_enum_value) = 5]; + uint64 oid = 1; + optional PortConnectorFailoverMode failover_mode = 2 [(attr_enum_value) = 5]; } -message SetPortConnectorAttributeResponse { -} +message SetPortConnectorAttributeResponse {} message GetPortConnectorAttributeRequest { - uint64 oid = 1; - repeated PortConnectorAttr attr_type = 2; + uint64 oid = 1; + repeated PortConnectorAttr attr_type = 2; } message GetPortConnectorAttributeResponse { - PortConnectorAttribute attr = 1; + PortConnectorAttribute attr = 1; } message CreatePortSerdesRequest { - option (sai_type) = OBJECT_TYPE_PORT_SERDES; - uint64 switch = 1; - optional uint64 port_id = 2[(attr_enum_value) = 1]; - repeated int32 preemphasis = 3[(attr_enum_value) = 2]; - repeated int32 idriver = 4[(attr_enum_value) = 3]; - repeated int32 ipredriver = 5[(attr_enum_value) = 4]; - repeated int32 tx_fir_pre1 = 6[(attr_enum_value) = 5]; - repeated int32 tx_fir_pre2 = 7[(attr_enum_value) = 6]; - repeated int32 tx_fir_pre3 = 8[(attr_enum_value) = 7]; - repeated int32 tx_fir_main = 9[(attr_enum_value) = 8]; - repeated int32 tx_fir_post1 = 10[(attr_enum_value) = 9]; - repeated int32 tx_fir_post2 = 11[(attr_enum_value) = 10]; - repeated int32 tx_fir_post3 = 12[(attr_enum_value) = 11]; - repeated int32 tx_fir_attn = 13[(attr_enum_value) = 12]; - repeated int32 tx_pam4_ratio = 14[(attr_enum_value) = 13]; - repeated int32 tx_out_common_mode = 15[(attr_enum_value) = 14]; - repeated int32 tx_pmos_common_mode = 16[(attr_enum_value) = 15]; - repeated int32 tx_nmos_common_mode = 17[(attr_enum_value) = 16]; - repeated int32 tx_pmos_vltg_reg = 18[(attr_enum_value) = 17]; - repeated int32 tx_nmos_vltg_reg = 19[(attr_enum_value) = 18]; - repeated int32 tx_precoding = 20[(attr_enum_value) = 19]; - repeated int32 rx_precoding = 21[(attr_enum_value) = 20]; + option (sai_type) = OBJECT_TYPE_PORT_SERDES; + uint64 switch = 1; + optional uint64 port_id = 2 [(attr_enum_value) = 1]; + repeated int32 preemphasis = 3 [(attr_enum_value) = 2]; + repeated int32 idriver = 4 [(attr_enum_value) = 3]; + repeated int32 ipredriver = 5 [(attr_enum_value) = 4]; + repeated int32 tx_fir_pre1 = 6 [(attr_enum_value) = 5]; + repeated int32 tx_fir_pre2 = 7 [(attr_enum_value) = 6]; + repeated int32 tx_fir_pre3 = 8 [(attr_enum_value) = 7]; + repeated int32 tx_fir_main = 9 [(attr_enum_value) = 8]; + repeated int32 tx_fir_post1 = 10 [(attr_enum_value) = 9]; + repeated int32 tx_fir_post2 = 11 [(attr_enum_value) = 10]; + repeated int32 tx_fir_post3 = 12 [(attr_enum_value) = 11]; + repeated int32 tx_fir_attn = 13 [(attr_enum_value) = 12]; + repeated int32 tx_pam4_ratio = 14 [(attr_enum_value) = 13]; + repeated int32 tx_out_common_mode = 15 [(attr_enum_value) = 14]; + repeated int32 tx_pmos_common_mode = 16 [(attr_enum_value) = 15]; + repeated int32 tx_nmos_common_mode = 17 [(attr_enum_value) = 16]; + repeated int32 tx_pmos_vltg_reg = 18 [(attr_enum_value) = 17]; + repeated int32 tx_nmos_vltg_reg = 19 [(attr_enum_value) = 18]; + repeated int32 tx_precoding = 20 [(attr_enum_value) = 19]; + repeated int32 rx_precoding = 21 [(attr_enum_value) = 20]; } message CreatePortSerdesResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemovePortSerdesRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemovePortSerdesResponse { -} +message RemovePortSerdesResponse {} message GetPortSerdesAttributeRequest { - uint64 oid = 1; - repeated PortSerdesAttr attr_type = 2; + uint64 oid = 1; + repeated PortSerdesAttr attr_type = 2; } message GetPortSerdesAttributeResponse { - PortSerdesAttribute attr = 1; + PortSerdesAttribute attr = 1; } message CreatePortsRequest { - repeated CreatePortRequest reqs = 1; + repeated CreatePortRequest reqs = 1; } message CreatePortsResponse { - repeated CreatePortResponse resps = 1; + repeated CreatePortResponse resps = 1; } message RemovePortsRequest { - repeated RemovePortRequest reqs = 1; + repeated RemovePortRequest reqs = 1; } message RemovePortsResponse { - repeated RemovePortResponse resps = 1; + repeated RemovePortResponse resps = 1; } - service Port { - rpc CreatePort (CreatePortRequest) returns (CreatePortResponse) {} - rpc RemovePort (RemovePortRequest) returns (RemovePortResponse) {} - rpc SetPortAttribute (SetPortAttributeRequest) returns (SetPortAttributeResponse) {} - rpc GetPortAttribute (GetPortAttributeRequest) returns (GetPortAttributeResponse) {} - rpc GetPortStats (GetPortStatsRequest) returns (GetPortStatsResponse) {} - rpc CreatePortPool (CreatePortPoolRequest) returns (CreatePortPoolResponse) {} - rpc RemovePortPool (RemovePortPoolRequest) returns (RemovePortPoolResponse) {} - rpc SetPortPoolAttribute (SetPortPoolAttributeRequest) returns (SetPortPoolAttributeResponse) {} - rpc GetPortPoolAttribute (GetPortPoolAttributeRequest) returns (GetPortPoolAttributeResponse) {} - rpc GetPortPoolStats (GetPortPoolStatsRequest) returns (GetPortPoolStatsResponse) {} - rpc CreatePortConnector (CreatePortConnectorRequest) returns (CreatePortConnectorResponse) {} - rpc RemovePortConnector (RemovePortConnectorRequest) returns (RemovePortConnectorResponse) {} - rpc SetPortConnectorAttribute (SetPortConnectorAttributeRequest) returns (SetPortConnectorAttributeResponse) {} - rpc GetPortConnectorAttribute (GetPortConnectorAttributeRequest) returns (GetPortConnectorAttributeResponse) {} - rpc CreatePortSerdes (CreatePortSerdesRequest) returns (CreatePortSerdesResponse) {} - rpc RemovePortSerdes (RemovePortSerdesRequest) returns (RemovePortSerdesResponse) {} - rpc GetPortSerdesAttribute (GetPortSerdesAttributeRequest) returns (GetPortSerdesAttributeResponse) {} - rpc CreatePorts (CreatePortsRequest) returns (CreatePortsResponse) {} - rpc RemovePorts (RemovePortsRequest) returns (RemovePortsResponse) {} + rpc CreatePort(CreatePortRequest) returns (CreatePortResponse) {} + rpc RemovePort(RemovePortRequest) returns (RemovePortResponse) {} + rpc SetPortAttribute(SetPortAttributeRequest) + returns (SetPortAttributeResponse) {} + rpc GetPortAttribute(GetPortAttributeRequest) + returns (GetPortAttributeResponse) {} + rpc GetPortStats(GetPortStatsRequest) returns (GetPortStatsResponse) {} + rpc CreatePortPool(CreatePortPoolRequest) returns (CreatePortPoolResponse) {} + rpc RemovePortPool(RemovePortPoolRequest) returns (RemovePortPoolResponse) {} + rpc SetPortPoolAttribute(SetPortPoolAttributeRequest) + returns (SetPortPoolAttributeResponse) {} + rpc GetPortPoolAttribute(GetPortPoolAttributeRequest) + returns (GetPortPoolAttributeResponse) {} + rpc GetPortPoolStats(GetPortPoolStatsRequest) + returns (GetPortPoolStatsResponse) {} + rpc CreatePortConnector(CreatePortConnectorRequest) + returns (CreatePortConnectorResponse) {} + rpc RemovePortConnector(RemovePortConnectorRequest) + returns (RemovePortConnectorResponse) {} + rpc SetPortConnectorAttribute(SetPortConnectorAttributeRequest) + returns (SetPortConnectorAttributeResponse) {} + rpc GetPortConnectorAttribute(GetPortConnectorAttributeRequest) + returns (GetPortConnectorAttributeResponse) {} + rpc CreatePortSerdes(CreatePortSerdesRequest) + returns (CreatePortSerdesResponse) {} + rpc RemovePortSerdes(RemovePortSerdesRequest) + returns (RemovePortSerdesResponse) {} + rpc GetPortSerdesAttribute(GetPortSerdesAttributeRequest) + returns (GetPortSerdesAttributeResponse) {} + rpc CreatePorts(CreatePortsRequest) returns (CreatePortsResponse) {} + rpc RemovePorts(RemovePortsRequest) returns (RemovePortsResponse) {} } diff --git a/dataplane/proto/sai/qos_map.proto b/dataplane/proto/sai/qos_map.proto index d01ffaae9..bc178e8d2 100644 --- a/dataplane/proto/sai/qos_map.proto +++ b/dataplane/proto/sai/qos_map.proto @@ -7,52 +7,50 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum QosMapAttr { - QOS_MAP_ATTR_UNSPECIFIED = 0; - QOS_MAP_ATTR_TYPE = 1; - QOS_MAP_ATTR_MAP_TO_VALUE_LIST = 2; + QOS_MAP_ATTR_UNSPECIFIED = 0; + QOS_MAP_ATTR_TYPE = 1; + QOS_MAP_ATTR_MAP_TO_VALUE_LIST = 2; } message CreateQosMapRequest { - option (sai_type) = OBJECT_TYPE_QOS_MAP; - uint64 switch = 1; - optional QosMapType type = 2[(attr_enum_value) = 1]; - repeated QOSMap map_to_value_list = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_QOS_MAP; + uint64 switch = 1; + optional QosMapType type = 2 [(attr_enum_value) = 1]; + repeated QOSMap map_to_value_list = 3 [(attr_enum_value) = 2]; } message CreateQosMapResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveQosMapRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveQosMapResponse { -} +message RemoveQosMapResponse {} message SetQosMapAttributeRequest { - uint64 oid = 1; - repeated QOSMap map_to_value_list = 2[(attr_enum_value) = 2]; + uint64 oid = 1; + repeated QOSMap map_to_value_list = 2 [(attr_enum_value) = 2]; } -message SetQosMapAttributeResponse { -} +message SetQosMapAttributeResponse {} message GetQosMapAttributeRequest { - uint64 oid = 1; - repeated QosMapAttr attr_type = 2; + uint64 oid = 1; + repeated QosMapAttr attr_type = 2; } message GetQosMapAttributeResponse { - QosMapAttribute attr = 1; + QosMapAttribute attr = 1; } - service QosMap { - rpc CreateQosMap (CreateQosMapRequest) returns (CreateQosMapResponse) {} - rpc RemoveQosMap (RemoveQosMapRequest) returns (RemoveQosMapResponse) {} - rpc SetQosMapAttribute (SetQosMapAttributeRequest) returns (SetQosMapAttributeResponse) {} - rpc GetQosMapAttribute (GetQosMapAttributeRequest) returns (GetQosMapAttributeResponse) {} + rpc CreateQosMap(CreateQosMapRequest) returns (CreateQosMapResponse) {} + rpc RemoveQosMap(RemoveQosMapRequest) returns (RemoveQosMapResponse) {} + rpc SetQosMapAttribute(SetQosMapAttributeRequest) + returns (SetQosMapAttributeResponse) {} + rpc GetQosMapAttribute(GetQosMapAttributeRequest) + returns (GetQosMapAttributeResponse) {} } diff --git a/dataplane/proto/sai/queue.pb.go b/dataplane/proto/sai/queue.pb.go index fb6a32c7d..323a721a9 100644 --- a/dataplane/proto/sai/queue.pb.go +++ b/dataplane/proto/sai/queue.pb.go @@ -38,6 +38,8 @@ const ( QueueAttr_QUEUE_ATTR_TAM_OBJECT QueueAttr = 11 QueueAttr_QUEUE_ATTR_PFC_DLR_PACKET_ACTION QueueAttr = 12 QueueAttr_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE QueueAttr = 13 + QueueAttr_QUEUE_ATTR_STATS_COUNT_MODE QueueAttr = 14 + QueueAttr_QUEUE_ATTR_SELECTIVE_COUNTER_LIST QueueAttr = 15 ) // Enum value maps for QueueAttr. @@ -57,6 +59,8 @@ var ( 11: "QUEUE_ATTR_TAM_OBJECT", 12: "QUEUE_ATTR_PFC_DLR_PACKET_ACTION", 13: "QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE", + 14: "QUEUE_ATTR_STATS_COUNT_MODE", + 15: "QUEUE_ATTR_SELECTIVE_COUNTER_LIST", } QueueAttr_value = map[string]int32{ "QUEUE_ATTR_UNSPECIFIED": 0, @@ -73,6 +77,8 @@ var ( "QUEUE_ATTR_TAM_OBJECT": 11, "QUEUE_ATTR_PFC_DLR_PACKET_ACTION": 12, "QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE": 13, + "QUEUE_ATTR_STATS_COUNT_MODE": 14, + "QUEUE_ATTR_SELECTIVE_COUNTER_LIST": 15, } ) @@ -104,21 +110,23 @@ func (QueueAttr) EnumDescriptor() ([]byte, []int) { } type CreateQueueRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - Type *QueueType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.QueueType,oneof" json:"type,omitempty"` - Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` - Index *uint32 `protobuf:"varint,4,opt,name=index,proto3,oneof" json:"index,omitempty"` - ParentSchedulerNode *uint64 `protobuf:"varint,5,opt,name=parent_scheduler_node,json=parentSchedulerNode,proto3,oneof" json:"parent_scheduler_node,omitempty"` - WredProfileId *uint64 `protobuf:"varint,6,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` - BufferProfileId *uint64 `protobuf:"varint,7,opt,name=buffer_profile_id,json=bufferProfileId,proto3,oneof" json:"buffer_profile_id,omitempty"` - SchedulerProfileId *uint64 `protobuf:"varint,8,opt,name=scheduler_profile_id,json=schedulerProfileId,proto3,oneof" json:"scheduler_profile_id,omitempty"` - EnablePfcDldr *bool `protobuf:"varint,9,opt,name=enable_pfc_dldr,json=enablePfcDldr,proto3,oneof" json:"enable_pfc_dldr,omitempty"` - PfcDlrInit *bool `protobuf:"varint,10,opt,name=pfc_dlr_init,json=pfcDlrInit,proto3,oneof" json:"pfc_dlr_init,omitempty"` - TamObject []uint64 `protobuf:"varint,11,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` - PfcDlrPacketAction *PacketAction `protobuf:"varint,12,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + Type *QueueType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.QueueType,oneof" json:"type,omitempty"` + Port *uint64 `protobuf:"varint,3,opt,name=port,proto3,oneof" json:"port,omitempty"` + Index *uint32 `protobuf:"varint,4,opt,name=index,proto3,oneof" json:"index,omitempty"` + ParentSchedulerNode *uint64 `protobuf:"varint,5,opt,name=parent_scheduler_node,json=parentSchedulerNode,proto3,oneof" json:"parent_scheduler_node,omitempty"` + WredProfileId *uint64 `protobuf:"varint,6,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` + BufferProfileId *uint64 `protobuf:"varint,7,opt,name=buffer_profile_id,json=bufferProfileId,proto3,oneof" json:"buffer_profile_id,omitempty"` + SchedulerProfileId *uint64 `protobuf:"varint,8,opt,name=scheduler_profile_id,json=schedulerProfileId,proto3,oneof" json:"scheduler_profile_id,omitempty"` + EnablePfcDldr *bool `protobuf:"varint,9,opt,name=enable_pfc_dldr,json=enablePfcDldr,proto3,oneof" json:"enable_pfc_dldr,omitempty"` + PfcDlrInit *bool `protobuf:"varint,10,opt,name=pfc_dlr_init,json=pfcDlrInit,proto3,oneof" json:"pfc_dlr_init,omitempty"` + TamObject []uint64 `protobuf:"varint,11,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + PfcDlrPacketAction *PacketAction `protobuf:"varint,12,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,13,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,14,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateQueueRequest) Reset() { @@ -235,6 +243,20 @@ func (x *CreateQueueRequest) GetPfcDlrPacketAction() PacketAction { return PacketAction_PACKET_ACTION_UNSPECIFIED } +func (x *CreateQueueRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateQueueRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateQueueResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -360,18 +382,20 @@ func (*RemoveQueueResponse) Descriptor() ([]byte, []int) { } type SetQueueAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - ParentSchedulerNode *uint64 `protobuf:"varint,2,opt,name=parent_scheduler_node,json=parentSchedulerNode,proto3,oneof" json:"parent_scheduler_node,omitempty"` - WredProfileId *uint64 `protobuf:"varint,3,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` - BufferProfileId *uint64 `protobuf:"varint,4,opt,name=buffer_profile_id,json=bufferProfileId,proto3,oneof" json:"buffer_profile_id,omitempty"` - SchedulerProfileId *uint64 `protobuf:"varint,5,opt,name=scheduler_profile_id,json=schedulerProfileId,proto3,oneof" json:"scheduler_profile_id,omitempty"` - EnablePfcDldr *bool `protobuf:"varint,6,opt,name=enable_pfc_dldr,json=enablePfcDldr,proto3,oneof" json:"enable_pfc_dldr,omitempty"` - PfcDlrInit *bool `protobuf:"varint,7,opt,name=pfc_dlr_init,json=pfcDlrInit,proto3,oneof" json:"pfc_dlr_init,omitempty"` - TamObject []uint64 `protobuf:"varint,8,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` - PfcDlrPacketAction *PacketAction `protobuf:"varint,9,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + ParentSchedulerNode *uint64 `protobuf:"varint,2,opt,name=parent_scheduler_node,json=parentSchedulerNode,proto3,oneof" json:"parent_scheduler_node,omitempty"` + WredProfileId *uint64 `protobuf:"varint,3,opt,name=wred_profile_id,json=wredProfileId,proto3,oneof" json:"wred_profile_id,omitempty"` + BufferProfileId *uint64 `protobuf:"varint,4,opt,name=buffer_profile_id,json=bufferProfileId,proto3,oneof" json:"buffer_profile_id,omitempty"` + SchedulerProfileId *uint64 `protobuf:"varint,5,opt,name=scheduler_profile_id,json=schedulerProfileId,proto3,oneof" json:"scheduler_profile_id,omitempty"` + EnablePfcDldr *bool `protobuf:"varint,6,opt,name=enable_pfc_dldr,json=enablePfcDldr,proto3,oneof" json:"enable_pfc_dldr,omitempty"` + PfcDlrInit *bool `protobuf:"varint,7,opt,name=pfc_dlr_init,json=pfcDlrInit,proto3,oneof" json:"pfc_dlr_init,omitempty"` + TamObject []uint64 `protobuf:"varint,8,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + PfcDlrPacketAction *PacketAction `protobuf:"varint,9,opt,name=pfc_dlr_packet_action,json=pfcDlrPacketAction,proto3,enum=lemming.dataplane.sai.PacketAction,oneof" json:"pfc_dlr_packet_action,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,10,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,11,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetQueueAttributeRequest) Reset() { @@ -467,6 +491,20 @@ func (x *SetQueueAttributeRequest) GetPfcDlrPacketAction() PacketAction { return PacketAction_PACKET_ACTION_UNSPECIFIED } +func (x *SetQueueAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetQueueAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetQueueAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -703,7 +741,7 @@ var file_dataplane_proto_sai_queue_proto_rawDesc = string([]byte{ 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd1, 0x06, 0x0a, 0x12, 0x43, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x08, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x04, 0x74, 0x79, 0x70, @@ -744,160 +782,187 @@ var file_dataplane_proto_sai_queue_proto_rawDesc = string([]byte{ 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x3a, 0x06, - 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x16, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, - 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, - 0x6c, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, - 0x69, 0x6e, 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, - 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, - 0x15, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa6, 0x05, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, - 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, 0x13, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x4e, - 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x62, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x02, - 0x52, 0x0f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 0x52, 0x12, 0x73, 0x63, - 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, - 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x09, 0x48, 0x04, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x66, - 0x63, 0x44, 0x6c, 0x64, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x66, 0x63, 0x5f, - 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x05, 0x52, 0x0a, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, - 0x49, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0b, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x63, - 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, 0x52, 0x12, 0x70, 0x66, - 0x63, 0x44, 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x77, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, - 0x64, 0x6c, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, - 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, - 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x1b, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, - 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x22, 0x6b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, - 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2f, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, - 0xbd, 0x03, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1a, 0x0a, - 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, 0x5f, 0x53, - 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, - 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x52, - 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, - 0x20, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x55, - 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, - 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x4c, 0x44, - 0x52, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, 0x0a, - 0x12, 0x19, 0x0a, 0x15, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0b, 0x12, 0x24, 0x0a, 0x20, 0x51, - 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x4c, - 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x0c, 0x12, 0x2c, 0x0a, 0x28, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, 0x5f, 0x44, - 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0d, 0x32, - 0xb9, 0x04, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, - 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x65, 0x74, - 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0a, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x16, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x70, 0x6f, 0x72, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, 0x72, 0x65, + 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x72, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, + 0x27, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x26, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd7, 0x06, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x15, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x00, 0x52, + 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, + 0x4e, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x77, 0x72, 0x65, 0x64, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x77, 0x72, 0x65, 0x64, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, + 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, + 0x02, 0x52, 0x0f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x14, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x03, 0x52, 0x12, 0x73, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, + 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x04, 0x52, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, + 0x66, 0x63, 0x44, 0x6c, 0x64, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x70, 0x66, 0x63, + 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x05, 0x52, 0x0a, 0x70, 0x66, 0x63, 0x44, 0x6c, + 0x72, 0x49, 0x6e, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0b, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x63, 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, 0x52, 0x12, 0x70, + 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x07, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0b, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x77, + 0x72, 0x65, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x14, + 0x0a, 0x12, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x64, + 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, + 0x69, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6b, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3d, 0x0a, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x22, 0x6b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x41, 0x0a, + 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x22, 0x2f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x2a, 0x85, 0x04, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x1a, 0x0a, 0x16, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, + 0x4f, 0x52, 0x54, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x52, 0x45, 0x4e, 0x54, + 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x10, + 0x04, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x57, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, + 0x05, 0x12, 0x20, 0x0a, 0x1c, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, + 0x44, 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x46, + 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x08, 0x12, 0x1e, 0x0a, 0x1a, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, + 0x4c, 0x44, 0x52, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x49, 0x54, + 0x10, 0x0a, 0x12, 0x19, 0x0a, 0x15, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x0b, 0x12, 0x24, 0x0a, + 0x20, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, + 0x44, 0x4c, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, + 0x4e, 0x10, 0x0c, 0x12, 0x2c, 0x0a, 0x28, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x55, 0x4f, 0x55, 0x53, + 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, + 0x0d, 0x12, 0x1f, 0x0a, 0x1b, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, + 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x0f, 0x32, 0xb9, 0x04, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x12, 0x66, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, + 0x75, 0x65, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0b, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x12, 0x29, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x51, 0x75, 0x65, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, - 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2b, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x2e, 0x53, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, + 0x11, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x51, + 0x75, 0x65, 0x75, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x51, 0x75, 0x65, 0x75, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, }) var ( @@ -928,31 +993,34 @@ var file_dataplane_proto_sai_queue_proto_goTypes = []any{ (*GetQueueStatsResponse)(nil), // 10: lemming.dataplane.sai.GetQueueStatsResponse (QueueType)(0), // 11: lemming.dataplane.sai.QueueType (PacketAction)(0), // 12: lemming.dataplane.sai.PacketAction - (*QueueAttribute)(nil), // 13: lemming.dataplane.sai.QueueAttribute - (QueueStat)(0), // 14: lemming.dataplane.sai.QueueStat + (StatsCountMode)(0), // 13: lemming.dataplane.sai.StatsCountMode + (*QueueAttribute)(nil), // 14: lemming.dataplane.sai.QueueAttribute + (QueueStat)(0), // 15: lemming.dataplane.sai.QueueStat } var file_dataplane_proto_sai_queue_proto_depIdxs = []int32{ 11, // 0: lemming.dataplane.sai.CreateQueueRequest.type:type_name -> lemming.dataplane.sai.QueueType 12, // 1: lemming.dataplane.sai.CreateQueueRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 12, // 2: lemming.dataplane.sai.SetQueueAttributeRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 0, // 3: lemming.dataplane.sai.GetQueueAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.QueueAttr - 13, // 4: lemming.dataplane.sai.GetQueueAttributeResponse.attr:type_name -> lemming.dataplane.sai.QueueAttribute - 14, // 5: lemming.dataplane.sai.GetQueueStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.QueueStat - 1, // 6: lemming.dataplane.sai.Queue.CreateQueue:input_type -> lemming.dataplane.sai.CreateQueueRequest - 3, // 7: lemming.dataplane.sai.Queue.RemoveQueue:input_type -> lemming.dataplane.sai.RemoveQueueRequest - 5, // 8: lemming.dataplane.sai.Queue.SetQueueAttribute:input_type -> lemming.dataplane.sai.SetQueueAttributeRequest - 7, // 9: lemming.dataplane.sai.Queue.GetQueueAttribute:input_type -> lemming.dataplane.sai.GetQueueAttributeRequest - 9, // 10: lemming.dataplane.sai.Queue.GetQueueStats:input_type -> lemming.dataplane.sai.GetQueueStatsRequest - 2, // 11: lemming.dataplane.sai.Queue.CreateQueue:output_type -> lemming.dataplane.sai.CreateQueueResponse - 4, // 12: lemming.dataplane.sai.Queue.RemoveQueue:output_type -> lemming.dataplane.sai.RemoveQueueResponse - 6, // 13: lemming.dataplane.sai.Queue.SetQueueAttribute:output_type -> lemming.dataplane.sai.SetQueueAttributeResponse - 8, // 14: lemming.dataplane.sai.Queue.GetQueueAttribute:output_type -> lemming.dataplane.sai.GetQueueAttributeResponse - 10, // 15: lemming.dataplane.sai.Queue.GetQueueStats:output_type -> lemming.dataplane.sai.GetQueueStatsResponse - 11, // [11:16] is the sub-list for method output_type - 6, // [6:11] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 13, // 2: lemming.dataplane.sai.CreateQueueRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 12, // 3: lemming.dataplane.sai.SetQueueAttributeRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 13, // 4: lemming.dataplane.sai.SetQueueAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 5: lemming.dataplane.sai.GetQueueAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.QueueAttr + 14, // 6: lemming.dataplane.sai.GetQueueAttributeResponse.attr:type_name -> lemming.dataplane.sai.QueueAttribute + 15, // 7: lemming.dataplane.sai.GetQueueStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.QueueStat + 1, // 8: lemming.dataplane.sai.Queue.CreateQueue:input_type -> lemming.dataplane.sai.CreateQueueRequest + 3, // 9: lemming.dataplane.sai.Queue.RemoveQueue:input_type -> lemming.dataplane.sai.RemoveQueueRequest + 5, // 10: lemming.dataplane.sai.Queue.SetQueueAttribute:input_type -> lemming.dataplane.sai.SetQueueAttributeRequest + 7, // 11: lemming.dataplane.sai.Queue.GetQueueAttribute:input_type -> lemming.dataplane.sai.GetQueueAttributeRequest + 9, // 12: lemming.dataplane.sai.Queue.GetQueueStats:input_type -> lemming.dataplane.sai.GetQueueStatsRequest + 2, // 13: lemming.dataplane.sai.Queue.CreateQueue:output_type -> lemming.dataplane.sai.CreateQueueResponse + 4, // 14: lemming.dataplane.sai.Queue.RemoveQueue:output_type -> lemming.dataplane.sai.RemoveQueueResponse + 6, // 15: lemming.dataplane.sai.Queue.SetQueueAttribute:output_type -> lemming.dataplane.sai.SetQueueAttributeResponse + 8, // 16: lemming.dataplane.sai.Queue.GetQueueAttribute:output_type -> lemming.dataplane.sai.GetQueueAttributeResponse + 10, // 17: lemming.dataplane.sai.Queue.GetQueueStats:output_type -> lemming.dataplane.sai.GetQueueStatsResponse + 13, // [13:18] is the sub-list for method output_type + 8, // [8:13] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_queue_proto_init() } diff --git a/dataplane/proto/sai/queue.proto b/dataplane/proto/sai/queue.proto index 80bb46df3..1709ec10c 100644 --- a/dataplane/proto/sai/queue.proto +++ b/dataplane/proto/sai/queue.proto @@ -7,89 +7,93 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum QueueAttr { - QUEUE_ATTR_UNSPECIFIED = 0; - QUEUE_ATTR_TYPE = 1; - QUEUE_ATTR_PORT = 2; - QUEUE_ATTR_INDEX = 3; - QUEUE_ATTR_PARENT_SCHEDULER_NODE = 4; - QUEUE_ATTR_WRED_PROFILE_ID = 5; - QUEUE_ATTR_BUFFER_PROFILE_ID = 6; - QUEUE_ATTR_SCHEDULER_PROFILE_ID = 7; - QUEUE_ATTR_PAUSE_STATUS = 8; - QUEUE_ATTR_ENABLE_PFC_DLDR = 9; - QUEUE_ATTR_PFC_DLR_INIT = 10; - QUEUE_ATTR_TAM_OBJECT = 11; - QUEUE_ATTR_PFC_DLR_PACKET_ACTION = 12; - QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE = 13; + QUEUE_ATTR_UNSPECIFIED = 0; + QUEUE_ATTR_TYPE = 1; + QUEUE_ATTR_PORT = 2; + QUEUE_ATTR_INDEX = 3; + QUEUE_ATTR_PARENT_SCHEDULER_NODE = 4; + QUEUE_ATTR_WRED_PROFILE_ID = 5; + QUEUE_ATTR_BUFFER_PROFILE_ID = 6; + QUEUE_ATTR_SCHEDULER_PROFILE_ID = 7; + QUEUE_ATTR_PAUSE_STATUS = 8; + QUEUE_ATTR_ENABLE_PFC_DLDR = 9; + QUEUE_ATTR_PFC_DLR_INIT = 10; + QUEUE_ATTR_TAM_OBJECT = 11; + QUEUE_ATTR_PFC_DLR_PACKET_ACTION = 12; + QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE = 13; + QUEUE_ATTR_STATS_COUNT_MODE = 14; + QUEUE_ATTR_SELECTIVE_COUNTER_LIST = 15; } message CreateQueueRequest { - option (sai_type) = OBJECT_TYPE_QUEUE; - uint64 switch = 1; - optional QueueType type = 2[(attr_enum_value) = 1]; - optional uint64 port = 3[(attr_enum_value) = 2]; - optional uint32 index = 4[(attr_enum_value) = 3]; - optional uint64 parent_scheduler_node = 5[(attr_enum_value) = 4]; - optional uint64 wred_profile_id = 6[(attr_enum_value) = 5]; - optional uint64 buffer_profile_id = 7[(attr_enum_value) = 6]; - optional uint64 scheduler_profile_id = 8[(attr_enum_value) = 7]; - optional bool enable_pfc_dldr = 9[(attr_enum_value) = 9]; - optional bool pfc_dlr_init = 10[(attr_enum_value) = 10]; - repeated uint64 tam_object = 11[(attr_enum_value) = 11]; - optional PacketAction pfc_dlr_packet_action = 12[(attr_enum_value) = 12]; + option (sai_type) = OBJECT_TYPE_QUEUE; + uint64 switch = 1; + optional QueueType type = 2 [(attr_enum_value) = 1]; + optional uint64 port = 3 [(attr_enum_value) = 2]; + optional uint32 index = 4 [(attr_enum_value) = 3]; + optional uint64 parent_scheduler_node = 5 [(attr_enum_value) = 4]; + optional uint64 wred_profile_id = 6 [(attr_enum_value) = 5]; + optional uint64 buffer_profile_id = 7 [(attr_enum_value) = 6]; + optional uint64 scheduler_profile_id = 8 [(attr_enum_value) = 7]; + optional bool enable_pfc_dldr = 9 [(attr_enum_value) = 9]; + optional bool pfc_dlr_init = 10 [(attr_enum_value) = 10]; + repeated uint64 tam_object = 11 [(attr_enum_value) = 11]; + optional PacketAction pfc_dlr_packet_action = 12 [(attr_enum_value) = 12]; + optional StatsCountMode stats_count_mode = 13 [(attr_enum_value) = 14]; + repeated uint64 selective_counter_list = 14 [(attr_enum_value) = 15]; } message CreateQueueResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveQueueRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveQueueResponse { -} +message RemoveQueueResponse {} message SetQueueAttributeRequest { - uint64 oid = 1; - optional uint64 parent_scheduler_node = 2[(attr_enum_value) = 4]; - optional uint64 wred_profile_id = 3[(attr_enum_value) = 5]; - optional uint64 buffer_profile_id = 4[(attr_enum_value) = 6]; - optional uint64 scheduler_profile_id = 5[(attr_enum_value) = 7]; - optional bool enable_pfc_dldr = 6[(attr_enum_value) = 9]; - optional bool pfc_dlr_init = 7[(attr_enum_value) = 10]; - repeated uint64 tam_object = 8[(attr_enum_value) = 11]; - optional PacketAction pfc_dlr_packet_action = 9[(attr_enum_value) = 12]; + uint64 oid = 1; + optional uint64 parent_scheduler_node = 2 [(attr_enum_value) = 4]; + optional uint64 wred_profile_id = 3 [(attr_enum_value) = 5]; + optional uint64 buffer_profile_id = 4 [(attr_enum_value) = 6]; + optional uint64 scheduler_profile_id = 5 [(attr_enum_value) = 7]; + optional bool enable_pfc_dldr = 6 [(attr_enum_value) = 9]; + optional bool pfc_dlr_init = 7 [(attr_enum_value) = 10]; + repeated uint64 tam_object = 8 [(attr_enum_value) = 11]; + optional PacketAction pfc_dlr_packet_action = 9 [(attr_enum_value) = 12]; + optional StatsCountMode stats_count_mode = 10 [(attr_enum_value) = 14]; + repeated uint64 selective_counter_list = 11 [(attr_enum_value) = 15]; } -message SetQueueAttributeResponse { -} +message SetQueueAttributeResponse {} message GetQueueAttributeRequest { - uint64 oid = 1; - repeated QueueAttr attr_type = 2; + uint64 oid = 1; + repeated QueueAttr attr_type = 2; } message GetQueueAttributeResponse { - QueueAttribute attr = 1; + QueueAttribute attr = 1; } message GetQueueStatsRequest { - uint64 oid = 1; - repeated QueueStat counter_ids = 2; + uint64 oid = 1; + repeated QueueStat counter_ids = 2; } message GetQueueStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Queue { - rpc CreateQueue (CreateQueueRequest) returns (CreateQueueResponse) {} - rpc RemoveQueue (RemoveQueueRequest) returns (RemoveQueueResponse) {} - rpc SetQueueAttribute (SetQueueAttributeRequest) returns (SetQueueAttributeResponse) {} - rpc GetQueueAttribute (GetQueueAttributeRequest) returns (GetQueueAttributeResponse) {} - rpc GetQueueStats (GetQueueStatsRequest) returns (GetQueueStatsResponse) {} + rpc CreateQueue(CreateQueueRequest) returns (CreateQueueResponse) {} + rpc RemoveQueue(RemoveQueueRequest) returns (RemoveQueueResponse) {} + rpc SetQueueAttribute(SetQueueAttributeRequest) + returns (SetQueueAttributeResponse) {} + rpc GetQueueAttribute(GetQueueAttributeRequest) + returns (GetQueueAttributeResponse) {} + rpc GetQueueStats(GetQueueStatsRequest) returns (GetQueueStatsResponse) {} } diff --git a/dataplane/proto/sai/route.proto b/dataplane/proto/sai/route.proto index 481680166..486af2418 100644 --- a/dataplane/proto/sai/route.proto +++ b/dataplane/proto/sai/route.proto @@ -7,83 +7,84 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum RouteEntryAttr { - ROUTE_ENTRY_ATTR_UNSPECIFIED = 0; - ROUTE_ENTRY_ATTR_PACKET_ACTION = 1; - ROUTE_ENTRY_ATTR_USER_TRAP_ID = 2; - ROUTE_ENTRY_ATTR_NEXT_HOP_ID = 3; - ROUTE_ENTRY_ATTR_META_DATA = 4; - ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY = 5; - ROUTE_ENTRY_ATTR_COUNTER_ID = 6; - ROUTE_ENTRY_ATTR_PREFIX_AGG_ID = 7; + ROUTE_ENTRY_ATTR_UNSPECIFIED = 0; + ROUTE_ENTRY_ATTR_PACKET_ACTION = 1; + ROUTE_ENTRY_ATTR_USER_TRAP_ID = 2; + ROUTE_ENTRY_ATTR_NEXT_HOP_ID = 3; + ROUTE_ENTRY_ATTR_META_DATA = 4; + ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY = 5; + ROUTE_ENTRY_ATTR_COUNTER_ID = 6; + ROUTE_ENTRY_ATTR_PREFIX_AGG_ID = 7; } message CreateRouteEntryRequest { - option (sai_type) = OBJECT_TYPE_ROUTE_ENTRY; - RouteEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 user_trap_id = 3[(attr_enum_value) = 2]; - optional uint64 next_hop_id = 4[(attr_enum_value) = 3]; - optional uint32 meta_data = 5[(attr_enum_value) = 4]; - optional uint64 counter_id = 6[(attr_enum_value) = 6]; - optional uint32 prefix_agg_id = 7[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_ROUTE_ENTRY; + RouteEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 user_trap_id = 3 [(attr_enum_value) = 2]; + optional uint64 next_hop_id = 4 [(attr_enum_value) = 3]; + optional uint32 meta_data = 5 [(attr_enum_value) = 4]; + optional uint64 counter_id = 6 [(attr_enum_value) = 6]; + optional uint32 prefix_agg_id = 7 [(attr_enum_value) = 7]; } -message CreateRouteEntryResponse { -} +message CreateRouteEntryResponse {} message RemoveRouteEntryRequest { - RouteEntry entry = 1; + RouteEntry entry = 1; } -message RemoveRouteEntryResponse { -} +message RemoveRouteEntryResponse {} message SetRouteEntryAttributeRequest { - RouteEntry entry = 1; - optional PacketAction packet_action = 2[(attr_enum_value) = 1]; - optional uint64 user_trap_id = 3[(attr_enum_value) = 2]; - optional uint64 next_hop_id = 4[(attr_enum_value) = 3]; - optional uint32 meta_data = 5[(attr_enum_value) = 4]; - optional uint64 counter_id = 6[(attr_enum_value) = 6]; - optional uint32 prefix_agg_id = 7[(attr_enum_value) = 7]; + RouteEntry entry = 1; + optional PacketAction packet_action = 2 [(attr_enum_value) = 1]; + optional uint64 user_trap_id = 3 [(attr_enum_value) = 2]; + optional uint64 next_hop_id = 4 [(attr_enum_value) = 3]; + optional uint32 meta_data = 5 [(attr_enum_value) = 4]; + optional uint64 counter_id = 6 [(attr_enum_value) = 6]; + optional uint32 prefix_agg_id = 7 [(attr_enum_value) = 7]; } -message SetRouteEntryAttributeResponse { -} +message SetRouteEntryAttributeResponse {} message GetRouteEntryAttributeRequest { - RouteEntry entry = 1; - repeated RouteEntryAttr attr_type = 2; + RouteEntry entry = 1; + repeated RouteEntryAttr attr_type = 2; } message GetRouteEntryAttributeResponse { - RouteEntryAttribute attr = 1; + RouteEntryAttribute attr = 1; } message CreateRouteEntriesRequest { - repeated CreateRouteEntryRequest reqs = 1; + repeated CreateRouteEntryRequest reqs = 1; } message CreateRouteEntriesResponse { - repeated CreateRouteEntryResponse resps = 1; + repeated CreateRouteEntryResponse resps = 1; } message RemoveRouteEntriesRequest { - repeated RemoveRouteEntryRequest reqs = 1; + repeated RemoveRouteEntryRequest reqs = 1; } message RemoveRouteEntriesResponse { - repeated RemoveRouteEntryResponse resps = 1; + repeated RemoveRouteEntryResponse resps = 1; } - service Route { - rpc CreateRouteEntry (CreateRouteEntryRequest) returns (CreateRouteEntryResponse) {} - rpc RemoveRouteEntry (RemoveRouteEntryRequest) returns (RemoveRouteEntryResponse) {} - rpc SetRouteEntryAttribute (SetRouteEntryAttributeRequest) returns (SetRouteEntryAttributeResponse) {} - rpc GetRouteEntryAttribute (GetRouteEntryAttributeRequest) returns (GetRouteEntryAttributeResponse) {} - rpc CreateRouteEntries (CreateRouteEntriesRequest) returns (CreateRouteEntriesResponse) {} - rpc RemoveRouteEntries (RemoveRouteEntriesRequest) returns (RemoveRouteEntriesResponse) {} + rpc CreateRouteEntry(CreateRouteEntryRequest) + returns (CreateRouteEntryResponse) {} + rpc RemoveRouteEntry(RemoveRouteEntryRequest) + returns (RemoveRouteEntryResponse) {} + rpc SetRouteEntryAttribute(SetRouteEntryAttributeRequest) + returns (SetRouteEntryAttributeResponse) {} + rpc GetRouteEntryAttribute(GetRouteEntryAttributeRequest) + returns (GetRouteEntryAttributeResponse) {} + rpc CreateRouteEntries(CreateRouteEntriesRequest) + returns (CreateRouteEntriesResponse) {} + rpc RemoveRouteEntries(RemoveRouteEntriesRequest) + returns (RemoveRouteEntriesResponse) {} } diff --git a/dataplane/proto/sai/router_interface.pb.go b/dataplane/proto/sai/router_interface.pb.go index 2ba2a46e7..9b1736ad6 100644 --- a/dataplane/proto/sai/router_interface.pb.go +++ b/dataplane/proto/sai/router_interface.pb.go @@ -46,7 +46,9 @@ const ( RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID RouterInterfaceAttr = 19 RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL RouterInterfaceAttr = 20 RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE RouterInterfaceAttr = 21 - RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_LABEL RouterInterfaceAttr = 22 + RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE RouterInterfaceAttr = 22 + RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST RouterInterfaceAttr = 23 + RouterInterfaceAttr_ROUTER_INTERFACE_ATTR_LABEL RouterInterfaceAttr = 24 ) // Enum value maps for RouterInterfaceAttr. @@ -74,7 +76,9 @@ var ( 19: "ROUTER_INTERFACE_ATTR_NAT_ZONE_ID", 20: "ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL", 21: "ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE", - 22: "ROUTER_INTERFACE_ATTR_LABEL", + 22: "ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE", + 23: "ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST", + 24: "ROUTER_INTERFACE_ATTR_LABEL", } RouterInterfaceAttr_value = map[string]int32{ "ROUTER_INTERFACE_ATTR_UNSPECIFIED": 0, @@ -99,7 +103,9 @@ var ( "ROUTER_INTERFACE_ATTR_NAT_ZONE_ID": 19, "ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL": 20, "ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE": 21, - "ROUTER_INTERFACE_ATTR_LABEL": 22, + "ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE": 22, + "ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST": 23, + "ROUTER_INTERFACE_ATTR_LABEL": 24, } ) @@ -154,7 +160,9 @@ type CreateRouterInterfaceRequest struct { NatZoneId *uint32 `protobuf:"varint,20,opt,name=nat_zone_id,json=natZoneId,proto3,oneof" json:"nat_zone_id,omitempty"` DisableDecrementTtl *bool `protobuf:"varint,21,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` AdminMplsState *bool `protobuf:"varint,22,opt,name=admin_mpls_state,json=adminMplsState,proto3,oneof" json:"admin_mpls_state,omitempty"` - Label []byte `protobuf:"bytes,23,opt,name=label,proto3,oneof" json:"label,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,23,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,24,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + Label []byte `protobuf:"bytes,25,opt,name=label,proto3,oneof" json:"label,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -343,6 +351,20 @@ func (x *CreateRouterInterfaceRequest) GetAdminMplsState() bool { return false } +func (x *CreateRouterInterfaceRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateRouterInterfaceRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + func (x *CreateRouterInterfaceRequest) GetLabel() []byte { if x != nil { return x.Label @@ -490,7 +512,9 @@ type SetRouterInterfaceAttributeRequest struct { NatZoneId *uint32 `protobuf:"varint,12,opt,name=nat_zone_id,json=natZoneId,proto3,oneof" json:"nat_zone_id,omitempty"` DisableDecrementTtl *bool `protobuf:"varint,13,opt,name=disable_decrement_ttl,json=disableDecrementTtl,proto3,oneof" json:"disable_decrement_ttl,omitempty"` AdminMplsState *bool `protobuf:"varint,14,opt,name=admin_mpls_state,json=adminMplsState,proto3,oneof" json:"admin_mpls_state,omitempty"` - Label []byte `protobuf:"bytes,15,opt,name=label,proto3,oneof" json:"label,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,15,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,16,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + Label []byte `protobuf:"bytes,17,opt,name=label,proto3,oneof" json:"label,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -623,6 +647,20 @@ func (x *SetRouterInterfaceAttributeRequest) GetAdminMplsState() bool { return false } +func (x *SetRouterInterfaceAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetRouterInterfaceAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + func (x *SetRouterInterfaceAttributeRequest) GetLabel() []byte { if x != nil { return x.Label @@ -1043,7 +1081,7 @@ var file_dataplane_proto_sai_router_interface_proto_rawDesc = string([]byte{ 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xec, 0x0c, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d, 0x0e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x37, @@ -1119,228 +1157,256 @@ var file_dataplane_proto_sai_router_interface_proto_rawDesc = string([]byte{ 0x10, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x14, 0x52, 0x0e, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x70, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x17, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, 0x05, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x07, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x6e, - 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, - 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, - 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, - 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x69, 0x73, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x22, 0x31, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe2, 0x08, 0x0a, 0x22, 0x53, - 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x56, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x02, 0x52, 0x0c, 0x61, - 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, - 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0b, 0x48, 0x03, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x04, 0x52, 0x0a, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x05, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1b, 0x6e, 0x65, 0x69, 0x67, 0x68, - 0x62, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x06, 0x52, 0x18, 0x6e, 0x65, 0x69, - 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x34, 0x5f, 0x6d, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x07, 0x52, 0x0d, 0x76, 0x34, 0x4d, - 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, - 0x0f, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x08, - 0x52, 0x0d, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, - 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x61, - 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x0a, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x5a, 0x6f, - 0x6e, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x0b, - 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x64, 0x6d, 0x69, - 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x0c, 0x52, 0x0e, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x4d, 0x70, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x0d, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, - 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, - 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, - 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, - 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, - 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x36, 0x5f, 0x6d, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, - 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, - 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, - 0x25, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x47, - 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, - 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6a, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x22, 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x49, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, - 0x68, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x47, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x6c, 0x0a, 0x1e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x72, - 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x15, 0x52, + 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x18, 0x20, 0x03, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x21, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0c, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x16, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x07, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, + 0x0a, 0x04, 0x5f, 0x6d, 0x74, 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, + 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x36, + 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x74, 0x5f, + 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, + 0x6c, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x22, 0x31, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x30, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, 0x0a, 0x0a, 0x22, + 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x76, 0x34, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x56, 0x34, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x02, 0x52, 0x0c, + 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x56, 0x36, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x1d, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x03, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x88, 0x01, 0x01, 0x12, 0x2c, + 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x04, 0x52, 0x0a, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x05, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x1b, 0x6e, 0x65, 0x69, 0x67, + 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x06, 0x52, 0x18, 0x6e, 0x65, + 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x34, 0x5f, + 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x07, 0x52, 0x0d, 0x76, 0x34, + 0x4d, 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, + 0x0a, 0x0f, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, + 0x08, 0x52, 0x0d, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, + 0x48, 0x09, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, + 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x0a, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x5a, + 0x6f, 0x6e, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, + 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, + 0x0b, 0x52, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x54, 0x74, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x0c, 0x52, 0x0e, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x4d, 0x70, 0x6c, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x68, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, - 0x73, 0x22, 0x6c, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, - 0xbb, 0x07, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, - 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, - 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, - 0x0a, 0x27, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, - 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, - 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x21, - 0x0a, 0x1d, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, - 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, - 0x04, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, - 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, + 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x16, 0x48, 0x0d, 0x52, 0x0e, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x05, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x18, 0x48, 0x0e, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x76, 0x34, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x5f, 0x76, 0x36, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x6d, 0x74, + 0x75, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, + 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, + 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6e, 0x65, 0x69, 0x67, 0x68, 0x62, 0x6f, 0x72, 0x5f, 0x6d, 0x69, + 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, + 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, + 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x64, 0x65, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x74, 0x6c, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x22, 0x25, 0x0a, 0x23, 0x53, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7f, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x12, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x52, + 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6a, 0x0a, 0x23, 0x47, 0x65, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x43, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x7f, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x0b, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2a, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x39, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x22, 0x68, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x6c, 0x0a, 0x1e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x68, 0x0a, 0x1d, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x04, 0x72, 0x65, + 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, + 0x65, 0x71, 0x73, 0x22, 0x6c, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, + 0x73, 0x2a, 0x99, 0x08, 0x0a, 0x13, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x66, 0x61, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x2b, 0x0a, 0x27, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, + 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x1e, 0x0a, + 0x1a, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, + 0x1d, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, + 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x03, + 0x12, 0x21, 0x0a, 0x1d, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, + 0x44, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x55, 0x54, + 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x27, 0x0a, 0x23, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x49, 0x44, 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, + 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, - 0x44, 0x10, 0x06, 0x12, 0x23, 0x0a, 0x1f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x07, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, + 0x45, 0x53, 0x53, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x56, 0x34, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x09, 0x12, + 0x28, 0x0a, 0x24, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x56, + 0x36, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0b, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, - 0x53, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, - 0x49, 0x4e, 0x5f, 0x56, 0x34, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x09, 0x12, 0x28, 0x0a, - 0x24, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, 0x56, 0x36, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x4f, 0x55, 0x54, 0x45, + 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, + 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, + 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, + 0x41, 0x43, 0x4c, 0x10, 0x0d, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, + 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x25, + 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x45, + 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x0b, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, 0x24, 0x0a, - 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, - 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, - 0x4c, 0x10, 0x0d, 0x12, 0x35, 0x0a, 0x31, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, - 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x49, - 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0e, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, + 0x5f, 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x10, 0x10, 0x12, 0x30, 0x0a, 0x2c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, + 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, + 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x53, + 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x12, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, - 0x42, 0x4c, 0x45, 0x10, 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, - 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, - 0x36, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x10, - 0x12, 0x30, 0x0a, 0x2c, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, 0x41, - 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, - 0x10, 0x11, 0x12, 0x24, 0x0a, 0x20, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x53, 0x5f, 0x56, - 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x10, 0x12, 0x12, 0x25, 0x0a, 0x21, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x13, 0x12, - 0x2f, 0x0a, 0x2b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, - 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x4c, 0x10, 0x14, - 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, 0x4e, 0x5f, - 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x1f, 0x0a, 0x1b, + 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, 0x49, 0x44, 0x10, + 0x13, 0x12, 0x2f, 0x0a, 0x2b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x54, 0x4c, + 0x10, 0x14, 0x12, 0x2a, 0x0a, 0x26, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, + 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x44, 0x4d, 0x49, + 0x4e, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x15, 0x12, 0x2a, + 0x0a, 0x26, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, + 0x43, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x16, 0x12, 0x30, 0x0a, 0x2c, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x17, 0x12, 0x1f, 0x0a, 0x1b, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x16, 0x32, 0xf2, 0x07, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x10, 0x18, 0x32, 0xf2, 0x07, 0x0a, 0x0f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, @@ -1442,41 +1508,44 @@ var file_dataplane_proto_sai_router_interface_proto_goTypes = []any{ (*RemoveRouterInterfacesResponse)(nil), // 14: lemming.dataplane.sai.RemoveRouterInterfacesResponse (RouterInterfaceType)(0), // 15: lemming.dataplane.sai.RouterInterfaceType (PacketAction)(0), // 16: lemming.dataplane.sai.PacketAction - (*RouterInterfaceAttribute)(nil), // 17: lemming.dataplane.sai.RouterInterfaceAttribute - (RouterInterfaceStat)(0), // 18: lemming.dataplane.sai.RouterInterfaceStat + (StatsCountMode)(0), // 17: lemming.dataplane.sai.StatsCountMode + (*RouterInterfaceAttribute)(nil), // 18: lemming.dataplane.sai.RouterInterfaceAttribute + (RouterInterfaceStat)(0), // 19: lemming.dataplane.sai.RouterInterfaceStat } var file_dataplane_proto_sai_router_interface_proto_depIdxs = []int32{ 15, // 0: lemming.dataplane.sai.CreateRouterInterfaceRequest.type:type_name -> lemming.dataplane.sai.RouterInterfaceType 16, // 1: lemming.dataplane.sai.CreateRouterInterfaceRequest.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction 16, // 2: lemming.dataplane.sai.CreateRouterInterfaceRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 16, // 3: lemming.dataplane.sai.SetRouterInterfaceAttributeRequest.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 16, // 4: lemming.dataplane.sai.SetRouterInterfaceAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 0, // 5: lemming.dataplane.sai.GetRouterInterfaceAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.RouterInterfaceAttr - 17, // 6: lemming.dataplane.sai.GetRouterInterfaceAttributeResponse.attr:type_name -> lemming.dataplane.sai.RouterInterfaceAttribute - 18, // 7: lemming.dataplane.sai.GetRouterInterfaceStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.RouterInterfaceStat - 1, // 8: lemming.dataplane.sai.CreateRouterInterfacesRequest.reqs:type_name -> lemming.dataplane.sai.CreateRouterInterfaceRequest - 2, // 9: lemming.dataplane.sai.CreateRouterInterfacesResponse.resps:type_name -> lemming.dataplane.sai.CreateRouterInterfaceResponse - 3, // 10: lemming.dataplane.sai.RemoveRouterInterfacesRequest.reqs:type_name -> lemming.dataplane.sai.RemoveRouterInterfaceRequest - 4, // 11: lemming.dataplane.sai.RemoveRouterInterfacesResponse.resps:type_name -> lemming.dataplane.sai.RemoveRouterInterfaceResponse - 1, // 12: lemming.dataplane.sai.RouterInterface.CreateRouterInterface:input_type -> lemming.dataplane.sai.CreateRouterInterfaceRequest - 3, // 13: lemming.dataplane.sai.RouterInterface.RemoveRouterInterface:input_type -> lemming.dataplane.sai.RemoveRouterInterfaceRequest - 5, // 14: lemming.dataplane.sai.RouterInterface.SetRouterInterfaceAttribute:input_type -> lemming.dataplane.sai.SetRouterInterfaceAttributeRequest - 7, // 15: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceAttribute:input_type -> lemming.dataplane.sai.GetRouterInterfaceAttributeRequest - 9, // 16: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceStats:input_type -> lemming.dataplane.sai.GetRouterInterfaceStatsRequest - 11, // 17: lemming.dataplane.sai.RouterInterface.CreateRouterInterfaces:input_type -> lemming.dataplane.sai.CreateRouterInterfacesRequest - 13, // 18: lemming.dataplane.sai.RouterInterface.RemoveRouterInterfaces:input_type -> lemming.dataplane.sai.RemoveRouterInterfacesRequest - 2, // 19: lemming.dataplane.sai.RouterInterface.CreateRouterInterface:output_type -> lemming.dataplane.sai.CreateRouterInterfaceResponse - 4, // 20: lemming.dataplane.sai.RouterInterface.RemoveRouterInterface:output_type -> lemming.dataplane.sai.RemoveRouterInterfaceResponse - 6, // 21: lemming.dataplane.sai.RouterInterface.SetRouterInterfaceAttribute:output_type -> lemming.dataplane.sai.SetRouterInterfaceAttributeResponse - 8, // 22: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceAttribute:output_type -> lemming.dataplane.sai.GetRouterInterfaceAttributeResponse - 10, // 23: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceStats:output_type -> lemming.dataplane.sai.GetRouterInterfaceStatsResponse - 12, // 24: lemming.dataplane.sai.RouterInterface.CreateRouterInterfaces:output_type -> lemming.dataplane.sai.CreateRouterInterfacesResponse - 14, // 25: lemming.dataplane.sai.RouterInterface.RemoveRouterInterfaces:output_type -> lemming.dataplane.sai.RemoveRouterInterfacesResponse - 19, // [19:26] is the sub-list for method output_type - 12, // [12:19] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 17, // 3: lemming.dataplane.sai.CreateRouterInterfaceRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 16, // 4: lemming.dataplane.sai.SetRouterInterfaceAttributeRequest.neighbor_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 16, // 5: lemming.dataplane.sai.SetRouterInterfaceAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 17, // 6: lemming.dataplane.sai.SetRouterInterfaceAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 7: lemming.dataplane.sai.GetRouterInterfaceAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.RouterInterfaceAttr + 18, // 8: lemming.dataplane.sai.GetRouterInterfaceAttributeResponse.attr:type_name -> lemming.dataplane.sai.RouterInterfaceAttribute + 19, // 9: lemming.dataplane.sai.GetRouterInterfaceStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.RouterInterfaceStat + 1, // 10: lemming.dataplane.sai.CreateRouterInterfacesRequest.reqs:type_name -> lemming.dataplane.sai.CreateRouterInterfaceRequest + 2, // 11: lemming.dataplane.sai.CreateRouterInterfacesResponse.resps:type_name -> lemming.dataplane.sai.CreateRouterInterfaceResponse + 3, // 12: lemming.dataplane.sai.RemoveRouterInterfacesRequest.reqs:type_name -> lemming.dataplane.sai.RemoveRouterInterfaceRequest + 4, // 13: lemming.dataplane.sai.RemoveRouterInterfacesResponse.resps:type_name -> lemming.dataplane.sai.RemoveRouterInterfaceResponse + 1, // 14: lemming.dataplane.sai.RouterInterface.CreateRouterInterface:input_type -> lemming.dataplane.sai.CreateRouterInterfaceRequest + 3, // 15: lemming.dataplane.sai.RouterInterface.RemoveRouterInterface:input_type -> lemming.dataplane.sai.RemoveRouterInterfaceRequest + 5, // 16: lemming.dataplane.sai.RouterInterface.SetRouterInterfaceAttribute:input_type -> lemming.dataplane.sai.SetRouterInterfaceAttributeRequest + 7, // 17: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceAttribute:input_type -> lemming.dataplane.sai.GetRouterInterfaceAttributeRequest + 9, // 18: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceStats:input_type -> lemming.dataplane.sai.GetRouterInterfaceStatsRequest + 11, // 19: lemming.dataplane.sai.RouterInterface.CreateRouterInterfaces:input_type -> lemming.dataplane.sai.CreateRouterInterfacesRequest + 13, // 20: lemming.dataplane.sai.RouterInterface.RemoveRouterInterfaces:input_type -> lemming.dataplane.sai.RemoveRouterInterfacesRequest + 2, // 21: lemming.dataplane.sai.RouterInterface.CreateRouterInterface:output_type -> lemming.dataplane.sai.CreateRouterInterfaceResponse + 4, // 22: lemming.dataplane.sai.RouterInterface.RemoveRouterInterface:output_type -> lemming.dataplane.sai.RemoveRouterInterfaceResponse + 6, // 23: lemming.dataplane.sai.RouterInterface.SetRouterInterfaceAttribute:output_type -> lemming.dataplane.sai.SetRouterInterfaceAttributeResponse + 8, // 24: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceAttribute:output_type -> lemming.dataplane.sai.GetRouterInterfaceAttributeResponse + 10, // 25: lemming.dataplane.sai.RouterInterface.GetRouterInterfaceStats:output_type -> lemming.dataplane.sai.GetRouterInterfaceStatsResponse + 12, // 26: lemming.dataplane.sai.RouterInterface.CreateRouterInterfaces:output_type -> lemming.dataplane.sai.CreateRouterInterfacesResponse + 14, // 27: lemming.dataplane.sai.RouterInterface.RemoveRouterInterfaces:output_type -> lemming.dataplane.sai.RemoveRouterInterfacesResponse + 21, // [21:28] is the sub-list for method output_type + 14, // [14:21] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_router_interface_proto_init() } diff --git a/dataplane/proto/sai/router_interface.proto b/dataplane/proto/sai/router_interface.proto index 22ca7331c..3cbee0ded 100644 --- a/dataplane/proto/sai/router_interface.proto +++ b/dataplane/proto/sai/router_interface.proto @@ -7,133 +7,144 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum RouterInterfaceAttr { - ROUTER_INTERFACE_ATTR_UNSPECIFIED = 0; - ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID = 1; - ROUTER_INTERFACE_ATTR_TYPE = 2; - ROUTER_INTERFACE_ATTR_PORT_ID = 3; - ROUTER_INTERFACE_ATTR_VLAN_ID = 4; - ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID = 5; - ROUTER_INTERFACE_ATTR_INNER_VLAN_ID = 6; - ROUTER_INTERFACE_ATTR_BRIDGE_ID = 7; - ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS = 8; - ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE = 9; - ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE = 10; - ROUTER_INTERFACE_ATTR_MTU = 11; - ROUTER_INTERFACE_ATTR_INGRESS_ACL = 12; - ROUTER_INTERFACE_ATTR_EGRESS_ACL = 13; - ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION = 14; - ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE = 15; - ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE = 16; - ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION = 17; - ROUTER_INTERFACE_ATTR_IS_VIRTUAL = 18; - ROUTER_INTERFACE_ATTR_NAT_ZONE_ID = 19; - ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL = 20; - ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE = 21; - ROUTER_INTERFACE_ATTR_LABEL = 22; + ROUTER_INTERFACE_ATTR_UNSPECIFIED = 0; + ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID = 1; + ROUTER_INTERFACE_ATTR_TYPE = 2; + ROUTER_INTERFACE_ATTR_PORT_ID = 3; + ROUTER_INTERFACE_ATTR_VLAN_ID = 4; + ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID = 5; + ROUTER_INTERFACE_ATTR_INNER_VLAN_ID = 6; + ROUTER_INTERFACE_ATTR_BRIDGE_ID = 7; + ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS = 8; + ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE = 9; + ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE = 10; + ROUTER_INTERFACE_ATTR_MTU = 11; + ROUTER_INTERFACE_ATTR_INGRESS_ACL = 12; + ROUTER_INTERFACE_ATTR_EGRESS_ACL = 13; + ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION = 14; + ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE = 15; + ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE = 16; + ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION = 17; + ROUTER_INTERFACE_ATTR_IS_VIRTUAL = 18; + ROUTER_INTERFACE_ATTR_NAT_ZONE_ID = 19; + ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL = 20; + ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE = 21; + ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE = 22; + ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST = 23; + ROUTER_INTERFACE_ATTR_LABEL = 24; } message CreateRouterInterfaceRequest { - option (sai_type) = OBJECT_TYPE_ROUTER_INTERFACE; - uint64 switch = 1; - optional uint64 virtual_router_id = 2[(attr_enum_value) = 1]; - optional RouterInterfaceType type = 3[(attr_enum_value) = 2]; - optional uint64 port_id = 4[(attr_enum_value) = 3]; - optional uint64 vlan_id = 5[(attr_enum_value) = 4]; - optional uint32 outer_vlan_id = 6[(attr_enum_value) = 5]; - optional uint32 inner_vlan_id = 7[(attr_enum_value) = 6]; - optional uint64 bridge_id = 8[(attr_enum_value) = 7]; - optional bytes src_mac_address = 9[(attr_enum_value) = 8]; - optional bool admin_v4_state = 10[(attr_enum_value) = 9]; - optional bool admin_v6_state = 11[(attr_enum_value) = 10]; - optional uint32 mtu = 12[(attr_enum_value) = 11]; - optional uint64 ingress_acl = 13[(attr_enum_value) = 12]; - optional uint64 egress_acl = 14[(attr_enum_value) = 13]; - optional PacketAction neighbor_miss_packet_action = 15[(attr_enum_value) = 14]; - optional bool v4_mcast_enable = 16[(attr_enum_value) = 15]; - optional bool v6_mcast_enable = 17[(attr_enum_value) = 16]; - optional PacketAction loopback_packet_action = 18[(attr_enum_value) = 17]; - optional bool is_virtual = 19[(attr_enum_value) = 18]; - optional uint32 nat_zone_id = 20[(attr_enum_value) = 19]; - optional bool disable_decrement_ttl = 21[(attr_enum_value) = 20]; - optional bool admin_mpls_state = 22[(attr_enum_value) = 21]; - optional bytes label = 23[(attr_enum_value) = 22]; + option (sai_type) = OBJECT_TYPE_ROUTER_INTERFACE; + uint64 switch = 1; + optional uint64 virtual_router_id = 2 [(attr_enum_value) = 1]; + optional RouterInterfaceType type = 3 [(attr_enum_value) = 2]; + optional uint64 port_id = 4 [(attr_enum_value) = 3]; + optional uint64 vlan_id = 5 [(attr_enum_value) = 4]; + optional uint32 outer_vlan_id = 6 [(attr_enum_value) = 5]; + optional uint32 inner_vlan_id = 7 [(attr_enum_value) = 6]; + optional uint64 bridge_id = 8 [(attr_enum_value) = 7]; + optional bytes src_mac_address = 9 [(attr_enum_value) = 8]; + optional bool admin_v4_state = 10 [(attr_enum_value) = 9]; + optional bool admin_v6_state = 11 [(attr_enum_value) = 10]; + optional uint32 mtu = 12 [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 13 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 14 [(attr_enum_value) = 13]; + optional PacketAction neighbor_miss_packet_action = 15 + [(attr_enum_value) = 14]; + optional bool v4_mcast_enable = 16 [(attr_enum_value) = 15]; + optional bool v6_mcast_enable = 17 [(attr_enum_value) = 16]; + optional PacketAction loopback_packet_action = 18 [(attr_enum_value) = 17]; + optional bool is_virtual = 19 [(attr_enum_value) = 18]; + optional uint32 nat_zone_id = 20 [(attr_enum_value) = 19]; + optional bool disable_decrement_ttl = 21 [(attr_enum_value) = 20]; + optional bool admin_mpls_state = 22 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 23 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 24 [(attr_enum_value) = 23]; + optional bytes label = 25 [(attr_enum_value) = 24]; } message CreateRouterInterfaceResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveRouterInterfaceRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveRouterInterfaceResponse { -} +message RemoveRouterInterfaceResponse {} message SetRouterInterfaceAttributeRequest { - uint64 oid = 1; - optional bytes src_mac_address = 2[(attr_enum_value) = 8]; - optional bool admin_v4_state = 3[(attr_enum_value) = 9]; - optional bool admin_v6_state = 4[(attr_enum_value) = 10]; - optional uint32 mtu = 5[(attr_enum_value) = 11]; - optional uint64 ingress_acl = 6[(attr_enum_value) = 12]; - optional uint64 egress_acl = 7[(attr_enum_value) = 13]; - optional PacketAction neighbor_miss_packet_action = 8[(attr_enum_value) = 14]; - optional bool v4_mcast_enable = 9[(attr_enum_value) = 15]; - optional bool v6_mcast_enable = 10[(attr_enum_value) = 16]; - optional PacketAction loopback_packet_action = 11[(attr_enum_value) = 17]; - optional uint32 nat_zone_id = 12[(attr_enum_value) = 19]; - optional bool disable_decrement_ttl = 13[(attr_enum_value) = 20]; - optional bool admin_mpls_state = 14[(attr_enum_value) = 21]; - optional bytes label = 15[(attr_enum_value) = 22]; -} - -message SetRouterInterfaceAttributeResponse { -} + uint64 oid = 1; + optional bytes src_mac_address = 2 [(attr_enum_value) = 8]; + optional bool admin_v4_state = 3 [(attr_enum_value) = 9]; + optional bool admin_v6_state = 4 [(attr_enum_value) = 10]; + optional uint32 mtu = 5 [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 6 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 7 [(attr_enum_value) = 13]; + optional PacketAction neighbor_miss_packet_action = 8 + [(attr_enum_value) = 14]; + optional bool v4_mcast_enable = 9 [(attr_enum_value) = 15]; + optional bool v6_mcast_enable = 10 [(attr_enum_value) = 16]; + optional PacketAction loopback_packet_action = 11 [(attr_enum_value) = 17]; + optional uint32 nat_zone_id = 12 [(attr_enum_value) = 19]; + optional bool disable_decrement_ttl = 13 [(attr_enum_value) = 20]; + optional bool admin_mpls_state = 14 [(attr_enum_value) = 21]; + optional StatsCountMode stats_count_mode = 15 [(attr_enum_value) = 22]; + repeated uint64 selective_counter_list = 16 [(attr_enum_value) = 23]; + optional bytes label = 17 [(attr_enum_value) = 24]; +} + +message SetRouterInterfaceAttributeResponse {} message GetRouterInterfaceAttributeRequest { - uint64 oid = 1; - repeated RouterInterfaceAttr attr_type = 2; + uint64 oid = 1; + repeated RouterInterfaceAttr attr_type = 2; } message GetRouterInterfaceAttributeResponse { - RouterInterfaceAttribute attr = 1; + RouterInterfaceAttribute attr = 1; } message GetRouterInterfaceStatsRequest { - uint64 oid = 1; - repeated RouterInterfaceStat counter_ids = 2; + uint64 oid = 1; + repeated RouterInterfaceStat counter_ids = 2; } message GetRouterInterfaceStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateRouterInterfacesRequest { - repeated CreateRouterInterfaceRequest reqs = 1; + repeated CreateRouterInterfaceRequest reqs = 1; } message CreateRouterInterfacesResponse { - repeated CreateRouterInterfaceResponse resps = 1; + repeated CreateRouterInterfaceResponse resps = 1; } message RemoveRouterInterfacesRequest { - repeated RemoveRouterInterfaceRequest reqs = 1; + repeated RemoveRouterInterfaceRequest reqs = 1; } message RemoveRouterInterfacesResponse { - repeated RemoveRouterInterfaceResponse resps = 1; + repeated RemoveRouterInterfaceResponse resps = 1; } - service RouterInterface { - rpc CreateRouterInterface (CreateRouterInterfaceRequest) returns (CreateRouterInterfaceResponse) {} - rpc RemoveRouterInterface (RemoveRouterInterfaceRequest) returns (RemoveRouterInterfaceResponse) {} - rpc SetRouterInterfaceAttribute (SetRouterInterfaceAttributeRequest) returns (SetRouterInterfaceAttributeResponse) {} - rpc GetRouterInterfaceAttribute (GetRouterInterfaceAttributeRequest) returns (GetRouterInterfaceAttributeResponse) {} - rpc GetRouterInterfaceStats (GetRouterInterfaceStatsRequest) returns (GetRouterInterfaceStatsResponse) {} - rpc CreateRouterInterfaces (CreateRouterInterfacesRequest) returns (CreateRouterInterfacesResponse) {} - rpc RemoveRouterInterfaces (RemoveRouterInterfacesRequest) returns (RemoveRouterInterfacesResponse) {} + rpc CreateRouterInterface(CreateRouterInterfaceRequest) + returns (CreateRouterInterfaceResponse) {} + rpc RemoveRouterInterface(RemoveRouterInterfaceRequest) + returns (RemoveRouterInterfaceResponse) {} + rpc SetRouterInterfaceAttribute(SetRouterInterfaceAttributeRequest) + returns (SetRouterInterfaceAttributeResponse) {} + rpc GetRouterInterfaceAttribute(GetRouterInterfaceAttributeRequest) + returns (GetRouterInterfaceAttributeResponse) {} + rpc GetRouterInterfaceStats(GetRouterInterfaceStatsRequest) + returns (GetRouterInterfaceStatsResponse) {} + rpc CreateRouterInterfaces(CreateRouterInterfacesRequest) + returns (CreateRouterInterfacesResponse) {} + rpc RemoveRouterInterfaces(RemoveRouterInterfacesRequest) + returns (RemoveRouterInterfacesResponse) {} } diff --git a/dataplane/proto/sai/rpf_group.proto b/dataplane/proto/sai/rpf_group.proto index ba896891c..54459f1e9 100644 --- a/dataplane/proto/sai/rpf_group.proto +++ b/dataplane/proto/sai/rpf_group.proto @@ -7,77 +7,77 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum RpfGroupAttr { - RPF_GROUP_ATTR_UNSPECIFIED = 0; - RPF_GROUP_ATTR_RPF_INTERFACE_COUNT = 1; - RPF_GROUP_ATTR_RPF_MEMBER_LIST = 2; + RPF_GROUP_ATTR_UNSPECIFIED = 0; + RPF_GROUP_ATTR_RPF_INTERFACE_COUNT = 1; + RPF_GROUP_ATTR_RPF_MEMBER_LIST = 2; } enum RpfGroupMemberAttr { - RPF_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; - RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID = 1; - RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID = 2; + RPF_GROUP_MEMBER_ATTR_UNSPECIFIED = 0; + RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID = 1; + RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID = 2; } message CreateRpfGroupRequest { - option (sai_type) = OBJECT_TYPE_RPF_GROUP; - uint64 switch = 1; + option (sai_type) = OBJECT_TYPE_RPF_GROUP; + uint64 switch = 1; } message CreateRpfGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveRpfGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveRpfGroupResponse { -} +message RemoveRpfGroupResponse {} message GetRpfGroupAttributeRequest { - uint64 oid = 1; - repeated RpfGroupAttr attr_type = 2; + uint64 oid = 1; + repeated RpfGroupAttr attr_type = 2; } message GetRpfGroupAttributeResponse { - RpfGroupAttribute attr = 1; + RpfGroupAttribute attr = 1; } message CreateRpfGroupMemberRequest { - option (sai_type) = OBJECT_TYPE_RPF_GROUP_MEMBER; - uint64 switch = 1; - optional uint64 rpf_group_id = 2[(attr_enum_value) = 1]; - optional uint64 rpf_interface_id = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_RPF_GROUP_MEMBER; + uint64 switch = 1; + optional uint64 rpf_group_id = 2 [(attr_enum_value) = 1]; + optional uint64 rpf_interface_id = 3 [(attr_enum_value) = 2]; } message CreateRpfGroupMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveRpfGroupMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveRpfGroupMemberResponse { -} +message RemoveRpfGroupMemberResponse {} message GetRpfGroupMemberAttributeRequest { - uint64 oid = 1; - repeated RpfGroupMemberAttr attr_type = 2; + uint64 oid = 1; + repeated RpfGroupMemberAttr attr_type = 2; } message GetRpfGroupMemberAttributeResponse { - RpfGroupMemberAttribute attr = 1; + RpfGroupMemberAttribute attr = 1; } - service RpfGroup { - rpc CreateRpfGroup (CreateRpfGroupRequest) returns (CreateRpfGroupResponse) {} - rpc RemoveRpfGroup (RemoveRpfGroupRequest) returns (RemoveRpfGroupResponse) {} - rpc GetRpfGroupAttribute (GetRpfGroupAttributeRequest) returns (GetRpfGroupAttributeResponse) {} - rpc CreateRpfGroupMember (CreateRpfGroupMemberRequest) returns (CreateRpfGroupMemberResponse) {} - rpc RemoveRpfGroupMember (RemoveRpfGroupMemberRequest) returns (RemoveRpfGroupMemberResponse) {} - rpc GetRpfGroupMemberAttribute (GetRpfGroupMemberAttributeRequest) returns (GetRpfGroupMemberAttributeResponse) {} + rpc CreateRpfGroup(CreateRpfGroupRequest) returns (CreateRpfGroupResponse) {} + rpc RemoveRpfGroup(RemoveRpfGroupRequest) returns (RemoveRpfGroupResponse) {} + rpc GetRpfGroupAttribute(GetRpfGroupAttributeRequest) + returns (GetRpfGroupAttributeResponse) {} + rpc CreateRpfGroupMember(CreateRpfGroupMemberRequest) + returns (CreateRpfGroupMemberResponse) {} + rpc RemoveRpfGroupMember(RemoveRpfGroupMemberRequest) + returns (RemoveRpfGroupMemberResponse) {} + rpc GetRpfGroupMemberAttribute(GetRpfGroupMemberAttributeRequest) + returns (GetRpfGroupMemberAttributeResponse) {} } diff --git a/dataplane/proto/sai/samplepacket.pb.go b/dataplane/proto/sai/samplepacket.pb.go index ac3cd13ba..3015754f0 100644 --- a/dataplane/proto/sai/samplepacket.pb.go +++ b/dataplane/proto/sai/samplepacket.pb.go @@ -24,10 +24,12 @@ const ( type SamplepacketAttr int32 const ( - SamplepacketAttr_SAMPLEPACKET_ATTR_UNSPECIFIED SamplepacketAttr = 0 - SamplepacketAttr_SAMPLEPACKET_ATTR_SAMPLE_RATE SamplepacketAttr = 1 - SamplepacketAttr_SAMPLEPACKET_ATTR_TYPE SamplepacketAttr = 2 - SamplepacketAttr_SAMPLEPACKET_ATTR_MODE SamplepacketAttr = 3 + SamplepacketAttr_SAMPLEPACKET_ATTR_UNSPECIFIED SamplepacketAttr = 0 + SamplepacketAttr_SAMPLEPACKET_ATTR_SAMPLE_RATE SamplepacketAttr = 1 + SamplepacketAttr_SAMPLEPACKET_ATTR_TYPE SamplepacketAttr = 2 + SamplepacketAttr_SAMPLEPACKET_ATTR_MODE SamplepacketAttr = 3 + SamplepacketAttr_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE SamplepacketAttr = 4 + SamplepacketAttr_SAMPLEPACKET_ATTR_TRUNCATE_SIZE SamplepacketAttr = 5 ) // Enum value maps for SamplepacketAttr. @@ -37,12 +39,16 @@ var ( 1: "SAMPLEPACKET_ATTR_SAMPLE_RATE", 2: "SAMPLEPACKET_ATTR_TYPE", 3: "SAMPLEPACKET_ATTR_MODE", + 4: "SAMPLEPACKET_ATTR_TRUNCATE_ENABLE", + 5: "SAMPLEPACKET_ATTR_TRUNCATE_SIZE", } SamplepacketAttr_value = map[string]int32{ - "SAMPLEPACKET_ATTR_UNSPECIFIED": 0, - "SAMPLEPACKET_ATTR_SAMPLE_RATE": 1, - "SAMPLEPACKET_ATTR_TYPE": 2, - "SAMPLEPACKET_ATTR_MODE": 3, + "SAMPLEPACKET_ATTR_UNSPECIFIED": 0, + "SAMPLEPACKET_ATTR_SAMPLE_RATE": 1, + "SAMPLEPACKET_ATTR_TYPE": 2, + "SAMPLEPACKET_ATTR_MODE": 3, + "SAMPLEPACKET_ATTR_TRUNCATE_ENABLE": 4, + "SAMPLEPACKET_ATTR_TRUNCATE_SIZE": 5, } ) @@ -74,13 +80,15 @@ func (SamplepacketAttr) EnumDescriptor() ([]byte, []int) { } type CreateSamplepacketRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - SampleRate *uint32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` - Type *SamplepacketType `protobuf:"varint,3,opt,name=type,proto3,enum=lemming.dataplane.sai.SamplepacketType,oneof" json:"type,omitempty"` - Mode *SamplepacketMode `protobuf:"varint,4,opt,name=mode,proto3,enum=lemming.dataplane.sai.SamplepacketMode,oneof" json:"mode,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + SampleRate *uint32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` + Type *SamplepacketType `protobuf:"varint,3,opt,name=type,proto3,enum=lemming.dataplane.sai.SamplepacketType,oneof" json:"type,omitempty"` + Mode *SamplepacketMode `protobuf:"varint,4,opt,name=mode,proto3,enum=lemming.dataplane.sai.SamplepacketMode,oneof" json:"mode,omitempty"` + TruncateEnable *bool `protobuf:"varint,5,opt,name=truncate_enable,json=truncateEnable,proto3,oneof" json:"truncate_enable,omitempty"` + TruncateSize *uint32 `protobuf:"varint,6,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSamplepacketRequest) Reset() { @@ -141,6 +149,20 @@ func (x *CreateSamplepacketRequest) GetMode() SamplepacketMode { return SamplepacketMode_SAMPLEPACKET_MODE_UNSPECIFIED } +func (x *CreateSamplepacketRequest) GetTruncateEnable() bool { + if x != nil && x.TruncateEnable != nil { + return *x.TruncateEnable + } + return false +} + +func (x *CreateSamplepacketRequest) GetTruncateSize() uint32 { + if x != nil && x.TruncateSize != nil { + return *x.TruncateSize + } + return 0 +} + type CreateSamplepacketResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -266,11 +288,13 @@ func (*RemoveSamplepacketResponse) Descriptor() ([]byte, []int) { } type SetSamplepacketAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - SampleRate *uint32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + SampleRate *uint32 `protobuf:"varint,2,opt,name=sample_rate,json=sampleRate,proto3,oneof" json:"sample_rate,omitempty"` + TruncateEnable *bool `protobuf:"varint,3,opt,name=truncate_enable,json=truncateEnable,proto3,oneof" json:"truncate_enable,omitempty"` + TruncateSize *uint32 `protobuf:"varint,4,opt,name=truncate_size,json=truncateSize,proto3,oneof" json:"truncate_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetSamplepacketAttributeRequest) Reset() { @@ -317,6 +341,20 @@ func (x *SetSamplepacketAttributeRequest) GetSampleRate() uint32 { return 0 } +func (x *SetSamplepacketAttributeRequest) GetTruncateEnable() bool { + if x != nil && x.TruncateEnable != nil { + return *x.TruncateEnable + } + return false +} + +func (x *SetSamplepacketAttributeRequest) GetTruncateSize() uint32 { + if x != nil && x.TruncateSize != nil { + return *x.TruncateSize + } + return 0 +} + type SetSamplepacketAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -458,7 +496,7 @@ var file_dataplane_proto_sai_samplepacket_proto_rawDesc = string([]byte{ 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x9f, 0x02, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, + 0x6f, 0x22, 0xad, 0x03, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, @@ -473,89 +511,111 @@ var file_dataplane_proto_sai_samplepacket_proto_rawDesc = string([]byte{ 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, - 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x10, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x71, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, - 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, - 0x61, 0x74, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x72, 0x75, + 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0e, 0x74, 0x72, + 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, + 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, + 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x10, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, + 0x65, 0x22, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x22, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, + 0x01, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x01, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x61, 0x74, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0e, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x75, 0x6e, + 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x0c, 0x74, 0x72, 0x75, 0x6e, 0x63, + 0x61, 0x74, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x74, 0x74, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0x90, 0x01, 0x0a, 0x10, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0xdc, 0x01, 0x0a, 0x10, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x41, + 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x52, 0x41, 0x54, - 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, - 0x1a, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x32, 0xa8, 0x04, 0x0a, 0x0c, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x7b, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, - 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x53, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6c, 0x65, + 0x54, 0x52, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x10, 0x01, + 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, + 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x41, 0x4d, 0x50, + 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, + 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x04, 0x12, + 0x23, 0x0a, 0x1f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x55, 0x4e, 0x43, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x10, 0x05, 0x32, 0xa8, 0x04, 0x0a, 0x0c, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x8d, 0x01, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x8d, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x36, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, + 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/dataplane/proto/sai/samplepacket.proto b/dataplane/proto/sai/samplepacket.proto index bdbbb081a..024402a1c 100644 --- a/dataplane/proto/sai/samplepacket.proto +++ b/dataplane/proto/sai/samplepacket.proto @@ -7,54 +7,60 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum SamplepacketAttr { - SAMPLEPACKET_ATTR_UNSPECIFIED = 0; - SAMPLEPACKET_ATTR_SAMPLE_RATE = 1; - SAMPLEPACKET_ATTR_TYPE = 2; - SAMPLEPACKET_ATTR_MODE = 3; + SAMPLEPACKET_ATTR_UNSPECIFIED = 0; + SAMPLEPACKET_ATTR_SAMPLE_RATE = 1; + SAMPLEPACKET_ATTR_TYPE = 2; + SAMPLEPACKET_ATTR_MODE = 3; + SAMPLEPACKET_ATTR_TRUNCATE_ENABLE = 4; + SAMPLEPACKET_ATTR_TRUNCATE_SIZE = 5; } message CreateSamplepacketRequest { - option (sai_type) = OBJECT_TYPE_SAMPLEPACKET; - uint64 switch = 1; - optional uint32 sample_rate = 2[(attr_enum_value) = 1]; - optional SamplepacketType type = 3[(attr_enum_value) = 2]; - optional SamplepacketMode mode = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_SAMPLEPACKET; + uint64 switch = 1; + optional uint32 sample_rate = 2 [(attr_enum_value) = 1]; + optional SamplepacketType type = 3 [(attr_enum_value) = 2]; + optional SamplepacketMode mode = 4 [(attr_enum_value) = 3]; + optional bool truncate_enable = 5 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 6 [(attr_enum_value) = 5]; } message CreateSamplepacketResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSamplepacketRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSamplepacketResponse { -} +message RemoveSamplepacketResponse {} message SetSamplepacketAttributeRequest { - uint64 oid = 1; - optional uint32 sample_rate = 2[(attr_enum_value) = 1]; + uint64 oid = 1; + optional uint32 sample_rate = 2 [(attr_enum_value) = 1]; + optional bool truncate_enable = 3 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 4 [(attr_enum_value) = 5]; } -message SetSamplepacketAttributeResponse { -} +message SetSamplepacketAttributeResponse {} message GetSamplepacketAttributeRequest { - uint64 oid = 1; - repeated SamplepacketAttr attr_type = 2; + uint64 oid = 1; + repeated SamplepacketAttr attr_type = 2; } message GetSamplepacketAttributeResponse { - SamplepacketAttribute attr = 1; + SamplepacketAttribute attr = 1; } - service Samplepacket { - rpc CreateSamplepacket (CreateSamplepacketRequest) returns (CreateSamplepacketResponse) {} - rpc RemoveSamplepacket (RemoveSamplepacketRequest) returns (RemoveSamplepacketResponse) {} - rpc SetSamplepacketAttribute (SetSamplepacketAttributeRequest) returns (SetSamplepacketAttributeResponse) {} - rpc GetSamplepacketAttribute (GetSamplepacketAttributeRequest) returns (GetSamplepacketAttributeResponse) {} + rpc CreateSamplepacket(CreateSamplepacketRequest) + returns (CreateSamplepacketResponse) {} + rpc RemoveSamplepacket(RemoveSamplepacketRequest) + returns (RemoveSamplepacketResponse) {} + rpc SetSamplepacketAttribute(SetSamplepacketAttributeRequest) + returns (SetSamplepacketAttributeResponse) {} + rpc GetSamplepacketAttribute(GetSamplepacketAttributeRequest) + returns (GetSamplepacketAttributeResponse) {} } diff --git a/dataplane/proto/sai/scheduler.proto b/dataplane/proto/sai/scheduler.proto index e1a14e3ea..8ea5fa3e4 100644 --- a/dataplane/proto/sai/scheduler.proto +++ b/dataplane/proto/sai/scheduler.proto @@ -7,68 +7,68 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum SchedulerAttr { - SCHEDULER_ATTR_UNSPECIFIED = 0; - SCHEDULER_ATTR_SCHEDULING_TYPE = 1; - SCHEDULER_ATTR_SCHEDULING_WEIGHT = 2; - SCHEDULER_ATTR_METER_TYPE = 3; - SCHEDULER_ATTR_MIN_BANDWIDTH_RATE = 4; - SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE = 5; - SCHEDULER_ATTR_MAX_BANDWIDTH_RATE = 6; - SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE = 7; + SCHEDULER_ATTR_UNSPECIFIED = 0; + SCHEDULER_ATTR_SCHEDULING_TYPE = 1; + SCHEDULER_ATTR_SCHEDULING_WEIGHT = 2; + SCHEDULER_ATTR_METER_TYPE = 3; + SCHEDULER_ATTR_MIN_BANDWIDTH_RATE = 4; + SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE = 5; + SCHEDULER_ATTR_MAX_BANDWIDTH_RATE = 6; + SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE = 7; } message CreateSchedulerRequest { - option (sai_type) = OBJECT_TYPE_SCHEDULER; - uint64 switch = 1; - optional SchedulingType scheduling_type = 2[(attr_enum_value) = 1]; - optional uint32 scheduling_weight = 3[(attr_enum_value) = 2]; - optional MeterType meter_type = 4[(attr_enum_value) = 3]; - optional uint64 min_bandwidth_rate = 5[(attr_enum_value) = 4]; - optional uint64 min_bandwidth_burst_rate = 6[(attr_enum_value) = 5]; - optional uint64 max_bandwidth_rate = 7[(attr_enum_value) = 6]; - optional uint64 max_bandwidth_burst_rate = 8[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_SCHEDULER; + uint64 switch = 1; + optional SchedulingType scheduling_type = 2 [(attr_enum_value) = 1]; + optional uint32 scheduling_weight = 3 [(attr_enum_value) = 2]; + optional MeterType meter_type = 4 [(attr_enum_value) = 3]; + optional uint64 min_bandwidth_rate = 5 [(attr_enum_value) = 4]; + optional uint64 min_bandwidth_burst_rate = 6 [(attr_enum_value) = 5]; + optional uint64 max_bandwidth_rate = 7 [(attr_enum_value) = 6]; + optional uint64 max_bandwidth_burst_rate = 8 [(attr_enum_value) = 7]; } message CreateSchedulerResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSchedulerRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSchedulerResponse { -} +message RemoveSchedulerResponse {} message SetSchedulerAttributeRequest { - uint64 oid = 1; - optional SchedulingType scheduling_type = 2[(attr_enum_value) = 1]; - optional uint32 scheduling_weight = 3[(attr_enum_value) = 2]; - optional MeterType meter_type = 4[(attr_enum_value) = 3]; - optional uint64 min_bandwidth_rate = 5[(attr_enum_value) = 4]; - optional uint64 min_bandwidth_burst_rate = 6[(attr_enum_value) = 5]; - optional uint64 max_bandwidth_rate = 7[(attr_enum_value) = 6]; - optional uint64 max_bandwidth_burst_rate = 8[(attr_enum_value) = 7]; + uint64 oid = 1; + optional SchedulingType scheduling_type = 2 [(attr_enum_value) = 1]; + optional uint32 scheduling_weight = 3 [(attr_enum_value) = 2]; + optional MeterType meter_type = 4 [(attr_enum_value) = 3]; + optional uint64 min_bandwidth_rate = 5 [(attr_enum_value) = 4]; + optional uint64 min_bandwidth_burst_rate = 6 [(attr_enum_value) = 5]; + optional uint64 max_bandwidth_rate = 7 [(attr_enum_value) = 6]; + optional uint64 max_bandwidth_burst_rate = 8 [(attr_enum_value) = 7]; } -message SetSchedulerAttributeResponse { -} +message SetSchedulerAttributeResponse {} message GetSchedulerAttributeRequest { - uint64 oid = 1; - repeated SchedulerAttr attr_type = 2; + uint64 oid = 1; + repeated SchedulerAttr attr_type = 2; } message GetSchedulerAttributeResponse { - SchedulerAttribute attr = 1; + SchedulerAttribute attr = 1; } - service Scheduler { - rpc CreateScheduler (CreateSchedulerRequest) returns (CreateSchedulerResponse) {} - rpc RemoveScheduler (RemoveSchedulerRequest) returns (RemoveSchedulerResponse) {} - rpc SetSchedulerAttribute (SetSchedulerAttributeRequest) returns (SetSchedulerAttributeResponse) {} - rpc GetSchedulerAttribute (GetSchedulerAttributeRequest) returns (GetSchedulerAttributeResponse) {} + rpc CreateScheduler(CreateSchedulerRequest) + returns (CreateSchedulerResponse) {} + rpc RemoveScheduler(RemoveSchedulerRequest) + returns (RemoveSchedulerResponse) {} + rpc SetSchedulerAttribute(SetSchedulerAttributeRequest) + returns (SetSchedulerAttributeResponse) {} + rpc GetSchedulerAttribute(GetSchedulerAttributeRequest) + returns (GetSchedulerAttributeResponse) {} } diff --git a/dataplane/proto/sai/scheduler_group.proto b/dataplane/proto/sai/scheduler_group.proto index 0d3df8823..de2845fcb 100644 --- a/dataplane/proto/sai/scheduler_group.proto +++ b/dataplane/proto/sai/scheduler_group.proto @@ -7,61 +7,61 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum SchedulerGroupAttr { - SCHEDULER_GROUP_ATTR_UNSPECIFIED = 0; - SCHEDULER_GROUP_ATTR_CHILD_COUNT = 1; - SCHEDULER_GROUP_ATTR_CHILD_LIST = 2; - SCHEDULER_GROUP_ATTR_PORT_ID = 3; - SCHEDULER_GROUP_ATTR_LEVEL = 4; - SCHEDULER_GROUP_ATTR_MAX_CHILDS = 5; - SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID = 6; - SCHEDULER_GROUP_ATTR_PARENT_NODE = 7; + SCHEDULER_GROUP_ATTR_UNSPECIFIED = 0; + SCHEDULER_GROUP_ATTR_CHILD_COUNT = 1; + SCHEDULER_GROUP_ATTR_CHILD_LIST = 2; + SCHEDULER_GROUP_ATTR_PORT_ID = 3; + SCHEDULER_GROUP_ATTR_LEVEL = 4; + SCHEDULER_GROUP_ATTR_MAX_CHILDS = 5; + SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID = 6; + SCHEDULER_GROUP_ATTR_PARENT_NODE = 7; } message CreateSchedulerGroupRequest { - option (sai_type) = OBJECT_TYPE_SCHEDULER_GROUP; - uint64 switch = 1; - optional uint64 port_id = 2[(attr_enum_value) = 3]; - optional uint32 level = 3[(attr_enum_value) = 4]; - optional uint32 max_childs = 4[(attr_enum_value) = 5]; - optional uint64 scheduler_profile_id = 5[(attr_enum_value) = 6]; - optional uint64 parent_node = 6[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_SCHEDULER_GROUP; + uint64 switch = 1; + optional uint64 port_id = 2 [(attr_enum_value) = 3]; + optional uint32 level = 3 [(attr_enum_value) = 4]; + optional uint32 max_childs = 4 [(attr_enum_value) = 5]; + optional uint64 scheduler_profile_id = 5 [(attr_enum_value) = 6]; + optional uint64 parent_node = 6 [(attr_enum_value) = 7]; } message CreateSchedulerGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSchedulerGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSchedulerGroupResponse { -} +message RemoveSchedulerGroupResponse {} message SetSchedulerGroupAttributeRequest { - uint64 oid = 1; - optional uint64 scheduler_profile_id = 2[(attr_enum_value) = 6]; - optional uint64 parent_node = 3[(attr_enum_value) = 7]; + uint64 oid = 1; + optional uint64 scheduler_profile_id = 2 [(attr_enum_value) = 6]; + optional uint64 parent_node = 3 [(attr_enum_value) = 7]; } -message SetSchedulerGroupAttributeResponse { -} +message SetSchedulerGroupAttributeResponse {} message GetSchedulerGroupAttributeRequest { - uint64 oid = 1; - repeated SchedulerGroupAttr attr_type = 2; + uint64 oid = 1; + repeated SchedulerGroupAttr attr_type = 2; } message GetSchedulerGroupAttributeResponse { - SchedulerGroupAttribute attr = 1; + SchedulerGroupAttribute attr = 1; } - service SchedulerGroup { - rpc CreateSchedulerGroup (CreateSchedulerGroupRequest) returns (CreateSchedulerGroupResponse) {} - rpc RemoveSchedulerGroup (RemoveSchedulerGroupRequest) returns (RemoveSchedulerGroupResponse) {} - rpc SetSchedulerGroupAttribute (SetSchedulerGroupAttributeRequest) returns (SetSchedulerGroupAttributeResponse) {} - rpc GetSchedulerGroupAttribute (GetSchedulerGroupAttributeRequest) returns (GetSchedulerGroupAttributeResponse) {} + rpc CreateSchedulerGroup(CreateSchedulerGroupRequest) + returns (CreateSchedulerGroupResponse) {} + rpc RemoveSchedulerGroup(RemoveSchedulerGroupRequest) + returns (RemoveSchedulerGroupResponse) {} + rpc SetSchedulerGroupAttribute(SetSchedulerGroupAttributeRequest) + returns (SetSchedulerGroupAttributeResponse) {} + rpc GetSchedulerGroupAttribute(GetSchedulerGroupAttributeRequest) + returns (GetSchedulerGroupAttributeResponse) {} } diff --git a/dataplane/proto/sai/srv6.pb.go b/dataplane/proto/sai/srv6.pb.go index baeaf9da2..2557918a4 100644 --- a/dataplane/proto/sai/srv6.pb.go +++ b/dataplane/proto/sai/srv6.pb.go @@ -24,11 +24,13 @@ const ( type Srv6SidlistAttr int32 const ( - Srv6SidlistAttr_SRV6_SIDLIST_ATTR_UNSPECIFIED Srv6SidlistAttr = 0 - Srv6SidlistAttr_SRV6_SIDLIST_ATTR_TYPE Srv6SidlistAttr = 1 - Srv6SidlistAttr_SRV6_SIDLIST_ATTR_TLV_LIST Srv6SidlistAttr = 2 - Srv6SidlistAttr_SRV6_SIDLIST_ATTR_SEGMENT_LIST Srv6SidlistAttr = 3 - Srv6SidlistAttr_SRV6_SIDLIST_ATTR_NEXT_HOP_ID Srv6SidlistAttr = 4 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_UNSPECIFIED Srv6SidlistAttr = 0 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_TYPE Srv6SidlistAttr = 1 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_TLV_LIST Srv6SidlistAttr = 2 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_SEGMENT_LIST Srv6SidlistAttr = 3 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_NEXT_HOP_ID Srv6SidlistAttr = 4 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE Srv6SidlistAttr = 5 + Srv6SidlistAttr_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST Srv6SidlistAttr = 6 ) // Enum value maps for Srv6SidlistAttr. @@ -39,13 +41,17 @@ var ( 2: "SRV6_SIDLIST_ATTR_TLV_LIST", 3: "SRV6_SIDLIST_ATTR_SEGMENT_LIST", 4: "SRV6_SIDLIST_ATTR_NEXT_HOP_ID", + 5: "SRV6_SIDLIST_ATTR_STATS_COUNT_MODE", + 6: "SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST", } Srv6SidlistAttr_value = map[string]int32{ - "SRV6_SIDLIST_ATTR_UNSPECIFIED": 0, - "SRV6_SIDLIST_ATTR_TYPE": 1, - "SRV6_SIDLIST_ATTR_TLV_LIST": 2, - "SRV6_SIDLIST_ATTR_SEGMENT_LIST": 3, - "SRV6_SIDLIST_ATTR_NEXT_HOP_ID": 4, + "SRV6_SIDLIST_ATTR_UNSPECIFIED": 0, + "SRV6_SIDLIST_ATTR_TYPE": 1, + "SRV6_SIDLIST_ATTR_TLV_LIST": 2, + "SRV6_SIDLIST_ATTR_SEGMENT_LIST": 3, + "SRV6_SIDLIST_ATTR_NEXT_HOP_ID": 4, + "SRV6_SIDLIST_ATTR_STATS_COUNT_MODE": 5, + "SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST": 6, } ) @@ -144,14 +150,16 @@ func (MySidEntryAttr) EnumDescriptor() ([]byte, []int) { } type CreateSrv6SidlistRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` - Type *Srv6SidlistType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.Srv6SidlistType,oneof" json:"type,omitempty"` - TlvList []*TLVEntry `protobuf:"bytes,3,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` - SegmentList [][]byte `protobuf:"bytes,4,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` - NextHopId *uint64 `protobuf:"varint,5,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Switch uint64 `protobuf:"varint,1,opt,name=switch,proto3" json:"switch,omitempty"` + Type *Srv6SidlistType `protobuf:"varint,2,opt,name=type,proto3,enum=lemming.dataplane.sai.Srv6SidlistType,oneof" json:"type,omitempty"` + TlvList []*TLVEntry `protobuf:"bytes,3,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` + SegmentList [][]byte `protobuf:"bytes,4,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` + NextHopId *uint64 `protobuf:"varint,5,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,6,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,7,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateSrv6SidlistRequest) Reset() { @@ -219,6 +227,20 @@ func (x *CreateSrv6SidlistRequest) GetNextHopId() uint64 { return 0 } +func (x *CreateSrv6SidlistRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateSrv6SidlistRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateSrv6SidlistResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -344,13 +366,15 @@ func (*RemoveSrv6SidlistResponse) Descriptor() ([]byte, []int) { } type SetSrv6SidlistAttributeRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` - TlvList []*TLVEntry `protobuf:"bytes,2,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` - SegmentList [][]byte `protobuf:"bytes,3,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` - NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` + TlvList []*TLVEntry `protobuf:"bytes,2,rep,name=tlv_list,json=tlvList,proto3" json:"tlv_list,omitempty"` + SegmentList [][]byte `protobuf:"bytes,3,rep,name=segment_list,json=segmentList,proto3" json:"segment_list,omitempty"` + NextHopId *uint64 `protobuf:"varint,4,opt,name=next_hop_id,json=nextHopId,proto3,oneof" json:"next_hop_id,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,5,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,6,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetSrv6SidlistAttributeRequest) Reset() { @@ -411,6 +435,20 @@ func (x *SetSrv6SidlistAttributeRequest) GetNextHopId() uint64 { return 0 } +func (x *SetSrv6SidlistAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetSrv6SidlistAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetSrv6SidlistAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1463,7 +1501,7 @@ var file_dataplane_proto_sai_srv6_proto_rawDesc = string([]byte{ 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb8, 0x02, 0x0a, 0x18, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x03, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x47, @@ -1481,372 +1519,399 @@ var file_dataplane_proto_sai_srv6_proto_rawDesc = string([]byte{ 0x6e, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3e, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, - 0x70, 0x5f, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, - 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, - 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, - 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xde, - 0x01, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x4c, - 0x56, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, 0x07, - 0x74, 0x6c, 0x76, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, 0x65, - 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x69, - 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, - 0x00, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x22, - 0x21, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x77, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, - 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x62, 0x0a, 0x1f, 0x47, - 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, - 0x60, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, - 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, - 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, + 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, 0x0e, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, + 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, + 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2d, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2c, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, + 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, + 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, + 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x8f, 0x03, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, + 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x74, 0x6c, 0x76, 0x5f, 0x6c, 0x69, 0x73, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x4c, 0x56, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x52, + 0x07, 0x74, 0x6c, 0x76, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x73, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x52, 0x0b, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, + 0x48, 0x00, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, - 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, - 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, - 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x46, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x01, 0x52, 0x0e, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, + 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x77, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, + 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x62, 0x0a, + 0x1f, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3f, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, - 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x60, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x6d, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, + 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, + 0x72, 0x22, 0x60, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, + 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, + 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, + 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, + 0x65, 0x71, 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, + 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x46, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, + 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x60, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x64, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, - 0x77, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, - 0x47, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x72, 0x76, - 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, - 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, - 0xfe, 0x05, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x05, 0x72, 0x65, 0x73, + 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, + 0x73, 0x22, 0x77, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x12, 0x47, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x35, 0x0a, 0x1b, 0x47, 0x65, + 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x22, 0xfe, 0x05, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6b, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, + 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, + 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, + 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6b, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, + 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x78, + 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x76, 0x72, 0x66, 0x88, + 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, + 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, + 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x61, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, + 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, + 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, + 0x76, 0x72, 0x66, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, + 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, + 0x72, 0x79, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfc, + 0x05, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x37, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, - 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x10, 0x65, 0x6e, - 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x7e, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x88, 0x01, - 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6b, 0x0a, 0x11, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, + 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, + 0x00, 0x52, 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, + 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x70, - 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x70, 0x50, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x6e, 0x65, - 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, 0x78, 0x74, 0x48, - 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x76, 0x72, 0x66, 0x88, 0x01, 0x01, - 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x09, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, - 0x90, 0xad, 0x0f, 0x61, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, - 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, - 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, - 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x76, 0x72, - 0x66, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, - 0x22, 0x1a, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x17, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, - 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, - 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xfc, 0x05, 0x0a, - 0x1d, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, - 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, + 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x16, 0x65, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, + 0x76, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, + 0x74, 0x72, 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x2b, 0x0a, 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, + 0x6e, 0x65, 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x76, + 0x72, 0x66, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x08, 0x48, 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, + 0x61, 0x76, 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, + 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x0a, + 0x1e, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x9c, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x37, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, + 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x6b, 0x0a, 0x11, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, - 0x10, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x7e, 0x0a, 0x18, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, 0x6f, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, - 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, - 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, 0x72, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x16, 0x65, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x46, 0x6c, 0x61, 0x76, 0x6f, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x0d, 0x74, - 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x0c, 0x74, 0x72, - 0x61, 0x70, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, - 0x0b, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x09, 0x6e, 0x65, - 0x78, 0x74, 0x48, 0x6f, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, - 0x64, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x03, 0x76, 0x72, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x03, 0x76, 0x72, 0x66, - 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, - 0x07, 0x52, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x5f, 0x66, 0x6c, 0x61, 0x76, - 0x6f, 0x72, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x72, 0x61, 0x70, 0x5f, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, - 0x68, 0x6f, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x76, 0x72, 0x66, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x53, - 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x9c, 0x01, - 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x37, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, + 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, + 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3e, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x22, 0x5f, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, + 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, - 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x5f, - 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, - 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, - 0x63, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, - 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, + 0x73, 0x22, 0x63, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x45, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, + 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x5f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x63, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0x8d, 0x02, 0x0a, + 0x0f, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, + 0x49, 0x53, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, + 0x1e, 0x0a, 0x1a, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4c, 0x56, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, + 0x22, 0x0a, 0x1e, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, + 0x49, 0x53, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, + 0x50, 0x5f, 0x49, 0x44, 0x10, 0x04, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, + 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x05, 0x12, 0x2c, + 0x0a, 0x28, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, + 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x06, 0x2a, 0xd7, 0x02, 0x0a, + 0x0e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, + 0x21, 0x0a, 0x1d, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, + 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, + 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4d, + 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, + 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, + 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, + 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x59, 0x5f, 0x53, + 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x59, 0x5f, + 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, + 0x52, 0x46, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, + 0x52, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x32, 0x8a, 0x0d, 0x0a, 0x04, 0x53, 0x72, 0x76, 0x36, 0x12, + 0x78, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, + 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, + 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, + 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, + 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, + 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, - 0x65, 0x73, 0x70, 0x73, 0x22, 0x5f, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, - 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, - 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x63, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, - 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, + 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, + 0x73, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, + 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, + 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0xb7, 0x01, 0x0a, 0x0f, 0x53, - 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, - 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, - 0x1a, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x54, 0x4c, 0x56, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x22, 0x0a, - 0x1e, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x45, 0x47, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x53, 0x49, 0x44, 0x4c, 0x49, 0x53, - 0x54, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, - 0x49, 0x44, 0x10, 0x04, 0x2a, 0xd7, 0x02, 0x0a, 0x0e, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x21, 0x0a, 0x1d, 0x4d, 0x59, 0x5f, 0x53, 0x49, - 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, - 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x2e, 0x0a, 0x2a, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x44, 0x50, 0x4f, 0x49, 0x4e, - 0x54, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x46, 0x4c, 0x41, 0x56, 0x4f, - 0x52, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x4d, 0x59, 0x5f, 0x53, - 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x52, - 0x41, 0x50, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x12, 0x21, 0x0a, - 0x1d, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x05, - 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, - 0x06, 0x12, 0x19, 0x0a, 0x15, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x52, 0x46, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, - 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x32, 0x8a, - 0x0d, 0x0a, 0x04, 0x53, 0x72, 0x76, 0x36, 0x12, 0x78, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, - 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, - 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, - 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, - 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, + 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x72, + 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, - 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x8a, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, - 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x6c, 0x65, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, + 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, + 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, - 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, - 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x72, 0x76, 0x36, - 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, - 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, - 0x73, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, - 0x6c, 0x69, 0x73, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7e, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x72, 0x76, 0x36, 0x53, 0x69, 0x64, 0x6c, 0x69, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, + 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, + 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, - 0x0a, 0x16, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, + 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, + 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, + 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x4d, - 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, - 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, - 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, - 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, - 0x72, 0x69, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, - 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x79, 0x53, + 0x69, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1894,72 +1959,75 @@ var file_dataplane_proto_sai_srv6_proto_goTypes = []any{ (*RemoveMySidEntriesResponse)(nil), // 27: lemming.dataplane.sai.RemoveMySidEntriesResponse (Srv6SidlistType)(0), // 28: lemming.dataplane.sai.Srv6SidlistType (*TLVEntry)(nil), // 29: lemming.dataplane.sai.TLVEntry - (*Srv6SidlistAttribute)(nil), // 30: lemming.dataplane.sai.Srv6SidlistAttribute - (Srv6SidlistStat)(0), // 31: lemming.dataplane.sai.Srv6SidlistStat - (*MySidEntry)(nil), // 32: lemming.dataplane.sai.MySidEntry - (MySidEntryEndpointBehavior)(0), // 33: lemming.dataplane.sai.MySidEntryEndpointBehavior - (MySidEntryEndpointBehaviorFlavor)(0), // 34: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - (PacketAction)(0), // 35: lemming.dataplane.sai.PacketAction - (*MySidEntryAttribute)(nil), // 36: lemming.dataplane.sai.MySidEntryAttribute + (StatsCountMode)(0), // 30: lemming.dataplane.sai.StatsCountMode + (*Srv6SidlistAttribute)(nil), // 31: lemming.dataplane.sai.Srv6SidlistAttribute + (Srv6SidlistStat)(0), // 32: lemming.dataplane.sai.Srv6SidlistStat + (*MySidEntry)(nil), // 33: lemming.dataplane.sai.MySidEntry + (MySidEntryEndpointBehavior)(0), // 34: lemming.dataplane.sai.MySidEntryEndpointBehavior + (MySidEntryEndpointBehaviorFlavor)(0), // 35: lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor + (PacketAction)(0), // 36: lemming.dataplane.sai.PacketAction + (*MySidEntryAttribute)(nil), // 37: lemming.dataplane.sai.MySidEntryAttribute } var file_dataplane_proto_sai_srv6_proto_depIdxs = []int32{ 28, // 0: lemming.dataplane.sai.CreateSrv6SidlistRequest.type:type_name -> lemming.dataplane.sai.Srv6SidlistType 29, // 1: lemming.dataplane.sai.CreateSrv6SidlistRequest.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry - 29, // 2: lemming.dataplane.sai.SetSrv6SidlistAttributeRequest.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry - 0, // 3: lemming.dataplane.sai.GetSrv6SidlistAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.Srv6SidlistAttr - 30, // 4: lemming.dataplane.sai.GetSrv6SidlistAttributeResponse.attr:type_name -> lemming.dataplane.sai.Srv6SidlistAttribute - 2, // 5: lemming.dataplane.sai.CreateSrv6SidlistsRequest.reqs:type_name -> lemming.dataplane.sai.CreateSrv6SidlistRequest - 3, // 6: lemming.dataplane.sai.CreateSrv6SidlistsResponse.resps:type_name -> lemming.dataplane.sai.CreateSrv6SidlistResponse - 4, // 7: lemming.dataplane.sai.RemoveSrv6SidlistsRequest.reqs:type_name -> lemming.dataplane.sai.RemoveSrv6SidlistRequest - 5, // 8: lemming.dataplane.sai.RemoveSrv6SidlistsResponse.resps:type_name -> lemming.dataplane.sai.RemoveSrv6SidlistResponse - 31, // 9: lemming.dataplane.sai.GetSrv6SidlistStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.Srv6SidlistStat - 32, // 10: lemming.dataplane.sai.CreateMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 33, // 11: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 34, // 12: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 35, // 13: lemming.dataplane.sai.CreateMySidEntryRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 32, // 14: lemming.dataplane.sai.RemoveMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 32, // 15: lemming.dataplane.sai.SetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 33, // 16: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior - 34, // 17: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor - 35, // 18: lemming.dataplane.sai.SetMySidEntryAttributeRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction - 32, // 19: lemming.dataplane.sai.GetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry - 1, // 20: lemming.dataplane.sai.GetMySidEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MySidEntryAttr - 36, // 21: lemming.dataplane.sai.GetMySidEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.MySidEntryAttribute - 16, // 22: lemming.dataplane.sai.CreateMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.CreateMySidEntryRequest - 17, // 23: lemming.dataplane.sai.CreateMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.CreateMySidEntryResponse - 18, // 24: lemming.dataplane.sai.RemoveMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.RemoveMySidEntryRequest - 19, // 25: lemming.dataplane.sai.RemoveMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.RemoveMySidEntryResponse - 2, // 26: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:input_type -> lemming.dataplane.sai.CreateSrv6SidlistRequest - 4, // 27: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistRequest - 6, // 28: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeRequest - 8, // 29: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeRequest - 10, // 30: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:input_type -> lemming.dataplane.sai.CreateSrv6SidlistsRequest - 12, // 31: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistsRequest - 14, // 32: lemming.dataplane.sai.Srv6.GetSrv6SidlistStats:input_type -> lemming.dataplane.sai.GetSrv6SidlistStatsRequest - 16, // 33: lemming.dataplane.sai.Srv6.CreateMySidEntry:input_type -> lemming.dataplane.sai.CreateMySidEntryRequest - 18, // 34: lemming.dataplane.sai.Srv6.RemoveMySidEntry:input_type -> lemming.dataplane.sai.RemoveMySidEntryRequest - 20, // 35: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:input_type -> lemming.dataplane.sai.SetMySidEntryAttributeRequest - 22, // 36: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:input_type -> lemming.dataplane.sai.GetMySidEntryAttributeRequest - 24, // 37: lemming.dataplane.sai.Srv6.CreateMySidEntries:input_type -> lemming.dataplane.sai.CreateMySidEntriesRequest - 26, // 38: lemming.dataplane.sai.Srv6.RemoveMySidEntries:input_type -> lemming.dataplane.sai.RemoveMySidEntriesRequest - 3, // 39: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:output_type -> lemming.dataplane.sai.CreateSrv6SidlistResponse - 5, // 40: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistResponse - 7, // 41: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeResponse - 9, // 42: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeResponse - 11, // 43: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:output_type -> lemming.dataplane.sai.CreateSrv6SidlistsResponse - 13, // 44: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistsResponse - 15, // 45: lemming.dataplane.sai.Srv6.GetSrv6SidlistStats:output_type -> lemming.dataplane.sai.GetSrv6SidlistStatsResponse - 17, // 46: lemming.dataplane.sai.Srv6.CreateMySidEntry:output_type -> lemming.dataplane.sai.CreateMySidEntryResponse - 19, // 47: lemming.dataplane.sai.Srv6.RemoveMySidEntry:output_type -> lemming.dataplane.sai.RemoveMySidEntryResponse - 21, // 48: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:output_type -> lemming.dataplane.sai.SetMySidEntryAttributeResponse - 23, // 49: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:output_type -> lemming.dataplane.sai.GetMySidEntryAttributeResponse - 25, // 50: lemming.dataplane.sai.Srv6.CreateMySidEntries:output_type -> lemming.dataplane.sai.CreateMySidEntriesResponse - 27, // 51: lemming.dataplane.sai.Srv6.RemoveMySidEntries:output_type -> lemming.dataplane.sai.RemoveMySidEntriesResponse - 39, // [39:52] is the sub-list for method output_type - 26, // [26:39] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 30, // 2: lemming.dataplane.sai.CreateSrv6SidlistRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 29, // 3: lemming.dataplane.sai.SetSrv6SidlistAttributeRequest.tlv_list:type_name -> lemming.dataplane.sai.TLVEntry + 30, // 4: lemming.dataplane.sai.SetSrv6SidlistAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 5: lemming.dataplane.sai.GetSrv6SidlistAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.Srv6SidlistAttr + 31, // 6: lemming.dataplane.sai.GetSrv6SidlistAttributeResponse.attr:type_name -> lemming.dataplane.sai.Srv6SidlistAttribute + 2, // 7: lemming.dataplane.sai.CreateSrv6SidlistsRequest.reqs:type_name -> lemming.dataplane.sai.CreateSrv6SidlistRequest + 3, // 8: lemming.dataplane.sai.CreateSrv6SidlistsResponse.resps:type_name -> lemming.dataplane.sai.CreateSrv6SidlistResponse + 4, // 9: lemming.dataplane.sai.RemoveSrv6SidlistsRequest.reqs:type_name -> lemming.dataplane.sai.RemoveSrv6SidlistRequest + 5, // 10: lemming.dataplane.sai.RemoveSrv6SidlistsResponse.resps:type_name -> lemming.dataplane.sai.RemoveSrv6SidlistResponse + 32, // 11: lemming.dataplane.sai.GetSrv6SidlistStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.Srv6SidlistStat + 33, // 12: lemming.dataplane.sai.CreateMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry + 34, // 13: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior + 35, // 14: lemming.dataplane.sai.CreateMySidEntryRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor + 36, // 15: lemming.dataplane.sai.CreateMySidEntryRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 33, // 16: lemming.dataplane.sai.RemoveMySidEntryRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry + 33, // 17: lemming.dataplane.sai.SetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry + 34, // 18: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehavior + 35, // 19: lemming.dataplane.sai.SetMySidEntryAttributeRequest.endpoint_behavior_flavor:type_name -> lemming.dataplane.sai.MySidEntryEndpointBehaviorFlavor + 36, // 20: lemming.dataplane.sai.SetMySidEntryAttributeRequest.packet_action:type_name -> lemming.dataplane.sai.PacketAction + 33, // 21: lemming.dataplane.sai.GetMySidEntryAttributeRequest.entry:type_name -> lemming.dataplane.sai.MySidEntry + 1, // 22: lemming.dataplane.sai.GetMySidEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.MySidEntryAttr + 37, // 23: lemming.dataplane.sai.GetMySidEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.MySidEntryAttribute + 16, // 24: lemming.dataplane.sai.CreateMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.CreateMySidEntryRequest + 17, // 25: lemming.dataplane.sai.CreateMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.CreateMySidEntryResponse + 18, // 26: lemming.dataplane.sai.RemoveMySidEntriesRequest.reqs:type_name -> lemming.dataplane.sai.RemoveMySidEntryRequest + 19, // 27: lemming.dataplane.sai.RemoveMySidEntriesResponse.resps:type_name -> lemming.dataplane.sai.RemoveMySidEntryResponse + 2, // 28: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:input_type -> lemming.dataplane.sai.CreateSrv6SidlistRequest + 4, // 29: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistRequest + 6, // 30: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeRequest + 8, // 31: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:input_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeRequest + 10, // 32: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:input_type -> lemming.dataplane.sai.CreateSrv6SidlistsRequest + 12, // 33: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:input_type -> lemming.dataplane.sai.RemoveSrv6SidlistsRequest + 14, // 34: lemming.dataplane.sai.Srv6.GetSrv6SidlistStats:input_type -> lemming.dataplane.sai.GetSrv6SidlistStatsRequest + 16, // 35: lemming.dataplane.sai.Srv6.CreateMySidEntry:input_type -> lemming.dataplane.sai.CreateMySidEntryRequest + 18, // 36: lemming.dataplane.sai.Srv6.RemoveMySidEntry:input_type -> lemming.dataplane.sai.RemoveMySidEntryRequest + 20, // 37: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:input_type -> lemming.dataplane.sai.SetMySidEntryAttributeRequest + 22, // 38: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:input_type -> lemming.dataplane.sai.GetMySidEntryAttributeRequest + 24, // 39: lemming.dataplane.sai.Srv6.CreateMySidEntries:input_type -> lemming.dataplane.sai.CreateMySidEntriesRequest + 26, // 40: lemming.dataplane.sai.Srv6.RemoveMySidEntries:input_type -> lemming.dataplane.sai.RemoveMySidEntriesRequest + 3, // 41: lemming.dataplane.sai.Srv6.CreateSrv6Sidlist:output_type -> lemming.dataplane.sai.CreateSrv6SidlistResponse + 5, // 42: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlist:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistResponse + 7, // 43: lemming.dataplane.sai.Srv6.SetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.SetSrv6SidlistAttributeResponse + 9, // 44: lemming.dataplane.sai.Srv6.GetSrv6SidlistAttribute:output_type -> lemming.dataplane.sai.GetSrv6SidlistAttributeResponse + 11, // 45: lemming.dataplane.sai.Srv6.CreateSrv6Sidlists:output_type -> lemming.dataplane.sai.CreateSrv6SidlistsResponse + 13, // 46: lemming.dataplane.sai.Srv6.RemoveSrv6Sidlists:output_type -> lemming.dataplane.sai.RemoveSrv6SidlistsResponse + 15, // 47: lemming.dataplane.sai.Srv6.GetSrv6SidlistStats:output_type -> lemming.dataplane.sai.GetSrv6SidlistStatsResponse + 17, // 48: lemming.dataplane.sai.Srv6.CreateMySidEntry:output_type -> lemming.dataplane.sai.CreateMySidEntryResponse + 19, // 49: lemming.dataplane.sai.Srv6.RemoveMySidEntry:output_type -> lemming.dataplane.sai.RemoveMySidEntryResponse + 21, // 50: lemming.dataplane.sai.Srv6.SetMySidEntryAttribute:output_type -> lemming.dataplane.sai.SetMySidEntryAttributeResponse + 23, // 51: lemming.dataplane.sai.Srv6.GetMySidEntryAttribute:output_type -> lemming.dataplane.sai.GetMySidEntryAttributeResponse + 25, // 52: lemming.dataplane.sai.Srv6.CreateMySidEntries:output_type -> lemming.dataplane.sai.CreateMySidEntriesResponse + 27, // 53: lemming.dataplane.sai.Srv6.RemoveMySidEntries:output_type -> lemming.dataplane.sai.RemoveMySidEntriesResponse + 41, // [41:54] is the sub-list for method output_type + 28, // [28:41] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_srv6_proto_init() } diff --git a/dataplane/proto/sai/srv6.proto b/dataplane/proto/sai/srv6.proto index d669d2748..ba190f65a 100644 --- a/dataplane/proto/sai/srv6.proto +++ b/dataplane/proto/sai/srv6.proto @@ -7,167 +7,183 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum Srv6SidlistAttr { - SRV6_SIDLIST_ATTR_UNSPECIFIED = 0; - SRV6_SIDLIST_ATTR_TYPE = 1; - SRV6_SIDLIST_ATTR_TLV_LIST = 2; - SRV6_SIDLIST_ATTR_SEGMENT_LIST = 3; - SRV6_SIDLIST_ATTR_NEXT_HOP_ID = 4; + SRV6_SIDLIST_ATTR_UNSPECIFIED = 0; + SRV6_SIDLIST_ATTR_TYPE = 1; + SRV6_SIDLIST_ATTR_TLV_LIST = 2; + SRV6_SIDLIST_ATTR_SEGMENT_LIST = 3; + SRV6_SIDLIST_ATTR_NEXT_HOP_ID = 4; + SRV6_SIDLIST_ATTR_STATS_COUNT_MODE = 5; + SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST = 6; } enum MySidEntryAttr { - MY_SID_ENTRY_ATTR_UNSPECIFIED = 0; - MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR = 1; - MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR = 2; - MY_SID_ENTRY_ATTR_PACKET_ACTION = 3; - MY_SID_ENTRY_ATTR_TRAP_PRIORITY = 4; - MY_SID_ENTRY_ATTR_NEXT_HOP_ID = 5; - MY_SID_ENTRY_ATTR_TUNNEL_ID = 6; - MY_SID_ENTRY_ATTR_VRF = 7; - MY_SID_ENTRY_ATTR_COUNTER_ID = 8; + MY_SID_ENTRY_ATTR_UNSPECIFIED = 0; + MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR = 1; + MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR = 2; + MY_SID_ENTRY_ATTR_PACKET_ACTION = 3; + MY_SID_ENTRY_ATTR_TRAP_PRIORITY = 4; + MY_SID_ENTRY_ATTR_NEXT_HOP_ID = 5; + MY_SID_ENTRY_ATTR_TUNNEL_ID = 6; + MY_SID_ENTRY_ATTR_VRF = 7; + MY_SID_ENTRY_ATTR_COUNTER_ID = 8; } message CreateSrv6SidlistRequest { - option (sai_type) = OBJECT_TYPE_SRV6_SIDLIST; - uint64 switch = 1; - optional Srv6SidlistType type = 2[(attr_enum_value) = 1]; - repeated TLVEntry tlv_list = 3[(attr_enum_value) = 2]; - repeated bytes segment_list = 4[(attr_enum_value) = 3]; - optional uint64 next_hop_id = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_SRV6_SIDLIST; + uint64 switch = 1; + optional Srv6SidlistType type = 2 [(attr_enum_value) = 1]; + repeated TLVEntry tlv_list = 3 [(attr_enum_value) = 2]; + repeated bytes segment_list = 4 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 5 [(attr_enum_value) = 4]; + optional StatsCountMode stats_count_mode = 6 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 7 [(attr_enum_value) = 6]; } message CreateSrv6SidlistResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSrv6SidlistRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSrv6SidlistResponse { -} +message RemoveSrv6SidlistResponse {} message SetSrv6SidlistAttributeRequest { - uint64 oid = 1; - repeated TLVEntry tlv_list = 2[(attr_enum_value) = 2]; - repeated bytes segment_list = 3[(attr_enum_value) = 3]; - optional uint64 next_hop_id = 4[(attr_enum_value) = 4]; + uint64 oid = 1; + repeated TLVEntry tlv_list = 2 [(attr_enum_value) = 2]; + repeated bytes segment_list = 3 [(attr_enum_value) = 3]; + optional uint64 next_hop_id = 4 [(attr_enum_value) = 4]; + optional StatsCountMode stats_count_mode = 5 [(attr_enum_value) = 5]; + repeated uint64 selective_counter_list = 6 [(attr_enum_value) = 6]; } -message SetSrv6SidlistAttributeResponse { -} +message SetSrv6SidlistAttributeResponse {} message GetSrv6SidlistAttributeRequest { - uint64 oid = 1; - repeated Srv6SidlistAttr attr_type = 2; + uint64 oid = 1; + repeated Srv6SidlistAttr attr_type = 2; } message GetSrv6SidlistAttributeResponse { - Srv6SidlistAttribute attr = 1; + Srv6SidlistAttribute attr = 1; } message CreateSrv6SidlistsRequest { - repeated CreateSrv6SidlistRequest reqs = 1; + repeated CreateSrv6SidlistRequest reqs = 1; } message CreateSrv6SidlistsResponse { - repeated CreateSrv6SidlistResponse resps = 1; + repeated CreateSrv6SidlistResponse resps = 1; } message RemoveSrv6SidlistsRequest { - repeated RemoveSrv6SidlistRequest reqs = 1; + repeated RemoveSrv6SidlistRequest reqs = 1; } message RemoveSrv6SidlistsResponse { - repeated RemoveSrv6SidlistResponse resps = 1; + repeated RemoveSrv6SidlistResponse resps = 1; } message GetSrv6SidlistStatsRequest { - uint64 oid = 1; - repeated Srv6SidlistStat counter_ids = 2; + uint64 oid = 1; + repeated Srv6SidlistStat counter_ids = 2; } message GetSrv6SidlistStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateMySidEntryRequest { - option (sai_type) = OBJECT_TYPE_MY_SID_ENTRY; - MySidEntry entry = 1; - optional MySidEntryEndpointBehavior endpoint_behavior = 2[(attr_enum_value) = 1]; - optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 3[(attr_enum_value) = 2]; - optional PacketAction packet_action = 4[(attr_enum_value) = 3]; - optional uint32 trap_priority = 5[(attr_enum_value) = 4]; - optional uint64 next_hop_id = 6[(attr_enum_value) = 5]; - optional uint64 tunnel_id = 7[(attr_enum_value) = 6]; - optional uint64 vrf = 8[(attr_enum_value) = 7]; - optional uint64 counter_id = 9[(attr_enum_value) = 8]; -} - -message CreateMySidEntryResponse { -} + option (sai_type) = OBJECT_TYPE_MY_SID_ENTRY; + MySidEntry entry = 1; + optional MySidEntryEndpointBehavior endpoint_behavior = 2 + [(attr_enum_value) = 1]; + optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 3 + [(attr_enum_value) = 2]; + optional PacketAction packet_action = 4 [(attr_enum_value) = 3]; + optional uint32 trap_priority = 5 [(attr_enum_value) = 4]; + optional uint64 next_hop_id = 6 [(attr_enum_value) = 5]; + optional uint64 tunnel_id = 7 [(attr_enum_value) = 6]; + optional uint64 vrf = 8 [(attr_enum_value) = 7]; + optional uint64 counter_id = 9 [(attr_enum_value) = 8]; +} + +message CreateMySidEntryResponse {} message RemoveMySidEntryRequest { - MySidEntry entry = 1; + MySidEntry entry = 1; } -message RemoveMySidEntryResponse { -} +message RemoveMySidEntryResponse {} message SetMySidEntryAttributeRequest { - MySidEntry entry = 1; - optional MySidEntryEndpointBehavior endpoint_behavior = 2[(attr_enum_value) = 1]; - optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 3[(attr_enum_value) = 2]; - optional PacketAction packet_action = 4[(attr_enum_value) = 3]; - optional uint32 trap_priority = 5[(attr_enum_value) = 4]; - optional uint64 next_hop_id = 6[(attr_enum_value) = 5]; - optional uint64 tunnel_id = 7[(attr_enum_value) = 6]; - optional uint64 vrf = 8[(attr_enum_value) = 7]; - optional uint64 counter_id = 9[(attr_enum_value) = 8]; + MySidEntry entry = 1; + optional MySidEntryEndpointBehavior endpoint_behavior = 2 + [(attr_enum_value) = 1]; + optional MySidEntryEndpointBehaviorFlavor endpoint_behavior_flavor = 3 + [(attr_enum_value) = 2]; + optional PacketAction packet_action = 4 [(attr_enum_value) = 3]; + optional uint32 trap_priority = 5 [(attr_enum_value) = 4]; + optional uint64 next_hop_id = 6 [(attr_enum_value) = 5]; + optional uint64 tunnel_id = 7 [(attr_enum_value) = 6]; + optional uint64 vrf = 8 [(attr_enum_value) = 7]; + optional uint64 counter_id = 9 [(attr_enum_value) = 8]; } -message SetMySidEntryAttributeResponse { -} +message SetMySidEntryAttributeResponse {} message GetMySidEntryAttributeRequest { - MySidEntry entry = 1; - repeated MySidEntryAttr attr_type = 2; + MySidEntry entry = 1; + repeated MySidEntryAttr attr_type = 2; } message GetMySidEntryAttributeResponse { - MySidEntryAttribute attr = 1; + MySidEntryAttribute attr = 1; } message CreateMySidEntriesRequest { - repeated CreateMySidEntryRequest reqs = 1; + repeated CreateMySidEntryRequest reqs = 1; } message CreateMySidEntriesResponse { - repeated CreateMySidEntryResponse resps = 1; + repeated CreateMySidEntryResponse resps = 1; } message RemoveMySidEntriesRequest { - repeated RemoveMySidEntryRequest reqs = 1; + repeated RemoveMySidEntryRequest reqs = 1; } message RemoveMySidEntriesResponse { - repeated RemoveMySidEntryResponse resps = 1; + repeated RemoveMySidEntryResponse resps = 1; } - service Srv6 { - rpc CreateSrv6Sidlist (CreateSrv6SidlistRequest) returns (CreateSrv6SidlistResponse) {} - rpc RemoveSrv6Sidlist (RemoveSrv6SidlistRequest) returns (RemoveSrv6SidlistResponse) {} - rpc SetSrv6SidlistAttribute (SetSrv6SidlistAttributeRequest) returns (SetSrv6SidlistAttributeResponse) {} - rpc GetSrv6SidlistAttribute (GetSrv6SidlistAttributeRequest) returns (GetSrv6SidlistAttributeResponse) {} - rpc CreateSrv6Sidlists (CreateSrv6SidlistsRequest) returns (CreateSrv6SidlistsResponse) {} - rpc RemoveSrv6Sidlists (RemoveSrv6SidlistsRequest) returns (RemoveSrv6SidlistsResponse) {} - rpc GetSrv6SidlistStats (GetSrv6SidlistStatsRequest) returns (GetSrv6SidlistStatsResponse) {} - rpc CreateMySidEntry (CreateMySidEntryRequest) returns (CreateMySidEntryResponse) {} - rpc RemoveMySidEntry (RemoveMySidEntryRequest) returns (RemoveMySidEntryResponse) {} - rpc SetMySidEntryAttribute (SetMySidEntryAttributeRequest) returns (SetMySidEntryAttributeResponse) {} - rpc GetMySidEntryAttribute (GetMySidEntryAttributeRequest) returns (GetMySidEntryAttributeResponse) {} - rpc CreateMySidEntries (CreateMySidEntriesRequest) returns (CreateMySidEntriesResponse) {} - rpc RemoveMySidEntries (RemoveMySidEntriesRequest) returns (RemoveMySidEntriesResponse) {} + rpc CreateSrv6Sidlist(CreateSrv6SidlistRequest) + returns (CreateSrv6SidlistResponse) {} + rpc RemoveSrv6Sidlist(RemoveSrv6SidlistRequest) + returns (RemoveSrv6SidlistResponse) {} + rpc SetSrv6SidlistAttribute(SetSrv6SidlistAttributeRequest) + returns (SetSrv6SidlistAttributeResponse) {} + rpc GetSrv6SidlistAttribute(GetSrv6SidlistAttributeRequest) + returns (GetSrv6SidlistAttributeResponse) {} + rpc CreateSrv6Sidlists(CreateSrv6SidlistsRequest) + returns (CreateSrv6SidlistsResponse) {} + rpc RemoveSrv6Sidlists(RemoveSrv6SidlistsRequest) + returns (RemoveSrv6SidlistsResponse) {} + rpc GetSrv6SidlistStats(GetSrv6SidlistStatsRequest) + returns (GetSrv6SidlistStatsResponse) {} + rpc CreateMySidEntry(CreateMySidEntryRequest) + returns (CreateMySidEntryResponse) {} + rpc RemoveMySidEntry(RemoveMySidEntryRequest) + returns (RemoveMySidEntryResponse) {} + rpc SetMySidEntryAttribute(SetMySidEntryAttributeRequest) + returns (SetMySidEntryAttributeResponse) {} + rpc GetMySidEntryAttribute(GetMySidEntryAttributeRequest) + returns (GetMySidEntryAttributeResponse) {} + rpc CreateMySidEntries(CreateMySidEntriesRequest) + returns (CreateMySidEntriesResponse) {} + rpc RemoveMySidEntries(RemoveMySidEntriesRequest) + returns (RemoveMySidEntriesResponse) {} } diff --git a/dataplane/proto/sai/stp.proto b/dataplane/proto/sai/stp.proto index cd53d2354..3dade73f5 100644 --- a/dataplane/proto/sai/stp.proto +++ b/dataplane/proto/sai/stp.proto @@ -7,107 +7,105 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum StpAttr { - STP_ATTR_UNSPECIFIED = 0; - STP_ATTR_VLAN_LIST = 1; - STP_ATTR_BRIDGE_ID = 2; - STP_ATTR_PORT_LIST = 3; + STP_ATTR_UNSPECIFIED = 0; + STP_ATTR_VLAN_LIST = 1; + STP_ATTR_BRIDGE_ID = 2; + STP_ATTR_PORT_LIST = 3; } enum StpPortAttr { - STP_PORT_ATTR_UNSPECIFIED = 0; - STP_PORT_ATTR_STP = 1; - STP_PORT_ATTR_BRIDGE_PORT = 2; - STP_PORT_ATTR_STATE = 3; + STP_PORT_ATTR_UNSPECIFIED = 0; + STP_PORT_ATTR_STP = 1; + STP_PORT_ATTR_BRIDGE_PORT = 2; + STP_PORT_ATTR_STATE = 3; } message CreateStpRequest { - option (sai_type) = OBJECT_TYPE_STP; - uint64 switch = 1; + option (sai_type) = OBJECT_TYPE_STP; + uint64 switch = 1; } message CreateStpResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveStpRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveStpResponse { -} +message RemoveStpResponse {} message GetStpAttributeRequest { - uint64 oid = 1; - repeated StpAttr attr_type = 2; + uint64 oid = 1; + repeated StpAttr attr_type = 2; } message GetStpAttributeResponse { - StpAttribute attr = 1; + StpAttribute attr = 1; } message CreateStpPortRequest { - option (sai_type) = OBJECT_TYPE_STP_PORT; - uint64 switch = 1; - optional uint64 stp = 2[(attr_enum_value) = 1]; - optional uint64 bridge_port = 3[(attr_enum_value) = 2]; - optional StpPortState state = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_STP_PORT; + uint64 switch = 1; + optional uint64 stp = 2 [(attr_enum_value) = 1]; + optional uint64 bridge_port = 3 [(attr_enum_value) = 2]; + optional StpPortState state = 4 [(attr_enum_value) = 3]; } message CreateStpPortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveStpPortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveStpPortResponse { -} +message RemoveStpPortResponse {} message SetStpPortAttributeRequest { - uint64 oid = 1; - optional StpPortState state = 2[(attr_enum_value) = 3]; + uint64 oid = 1; + optional StpPortState state = 2 [(attr_enum_value) = 3]; } -message SetStpPortAttributeResponse { -} +message SetStpPortAttributeResponse {} message GetStpPortAttributeRequest { - uint64 oid = 1; - repeated StpPortAttr attr_type = 2; + uint64 oid = 1; + repeated StpPortAttr attr_type = 2; } message GetStpPortAttributeResponse { - StpPortAttribute attr = 1; + StpPortAttribute attr = 1; } message CreateStpPortsRequest { - repeated CreateStpPortRequest reqs = 1; + repeated CreateStpPortRequest reqs = 1; } message CreateStpPortsResponse { - repeated CreateStpPortResponse resps = 1; + repeated CreateStpPortResponse resps = 1; } message RemoveStpPortsRequest { - repeated RemoveStpPortRequest reqs = 1; + repeated RemoveStpPortRequest reqs = 1; } message RemoveStpPortsResponse { - repeated RemoveStpPortResponse resps = 1; + repeated RemoveStpPortResponse resps = 1; } - service Stp { - rpc CreateStp (CreateStpRequest) returns (CreateStpResponse) {} - rpc RemoveStp (RemoveStpRequest) returns (RemoveStpResponse) {} - rpc GetStpAttribute (GetStpAttributeRequest) returns (GetStpAttributeResponse) {} - rpc CreateStpPort (CreateStpPortRequest) returns (CreateStpPortResponse) {} - rpc RemoveStpPort (RemoveStpPortRequest) returns (RemoveStpPortResponse) {} - rpc SetStpPortAttribute (SetStpPortAttributeRequest) returns (SetStpPortAttributeResponse) {} - rpc GetStpPortAttribute (GetStpPortAttributeRequest) returns (GetStpPortAttributeResponse) {} - rpc CreateStpPorts (CreateStpPortsRequest) returns (CreateStpPortsResponse) {} - rpc RemoveStpPorts (RemoveStpPortsRequest) returns (RemoveStpPortsResponse) {} + rpc CreateStp(CreateStpRequest) returns (CreateStpResponse) {} + rpc RemoveStp(RemoveStpRequest) returns (RemoveStpResponse) {} + rpc GetStpAttribute(GetStpAttributeRequest) + returns (GetStpAttributeResponse) {} + rpc CreateStpPort(CreateStpPortRequest) returns (CreateStpPortResponse) {} + rpc RemoveStpPort(RemoveStpPortRequest) returns (RemoveStpPortResponse) {} + rpc SetStpPortAttribute(SetStpPortAttributeRequest) + returns (SetStpPortAttributeResponse) {} + rpc GetStpPortAttribute(GetStpPortAttributeRequest) + returns (GetStpPortAttributeResponse) {} + rpc CreateStpPorts(CreateStpPortsRequest) returns (CreateStpPortsResponse) {} + rpc RemoveStpPorts(RemoveStpPortsRequest) returns (RemoveStpPortsResponse) {} } diff --git a/dataplane/proto/sai/switch.pb.go b/dataplane/proto/sai/switch.pb.go index b283d0ec8..1904fef15 100644 --- a/dataplane/proto/sai/switch.pb.go +++ b/dataplane/proto/sai/switch.pb.go @@ -257,6 +257,11 @@ const ( SwitchAttr_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS SwitchAttr = 230 SwitchAttr_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS SwitchAttr = 231 SwitchAttr_SWITCH_ATTR_POE_DEVICE_LIST SwitchAttr = 232 + SwitchAttr_SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY SwitchAttr = 233 + SwitchAttr_SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION SwitchAttr = 234 + SwitchAttr_SWITCH_ATTR_MAX_ICMP_ECHO_SESSION SwitchAttr = 235 + SwitchAttr_SWITCH_ATTR_STATS_COUNT_MODE SwitchAttr = 236 + SwitchAttr_SWITCH_ATTR_SELECTIVE_COUNTER_LIST SwitchAttr = 237 ) // Enum value maps for SwitchAttr. @@ -495,6 +500,11 @@ var ( 230: "SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS", 231: "SWITCH_ATTR_ACL_STAGE_PRE_INGRESS", 232: "SWITCH_ATTR_POE_DEVICE_LIST", + 233: "SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY", + 234: "SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION", + 235: "SWITCH_ATTR_MAX_ICMP_ECHO_SESSION", + 236: "SWITCH_ATTR_STATS_COUNT_MODE", + 237: "SWITCH_ATTR_SELECTIVE_COUNTER_LIST", } SwitchAttr_value = map[string]int32{ "SWITCH_ATTR_UNSPECIFIED": 0, @@ -730,6 +740,11 @@ var ( "SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS": 230, "SWITCH_ATTR_ACL_STAGE_PRE_INGRESS": 231, "SWITCH_ATTR_POE_DEVICE_LIST": 232, + "SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY": 233, + "SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION": 234, + "SWITCH_ATTR_MAX_ICMP_ECHO_SESSION": 235, + "SWITCH_ATTR_STATS_COUNT_MODE": 236, + "SWITCH_ATTR_SELECTIVE_COUNTER_LIST": 237, } ) @@ -936,6 +951,8 @@ type CreateSwitchRequest struct { RegWarningSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,90,rep,packed,name=reg_warning_switch_asic_sdk_health_category,json=regWarningSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_warning_switch_asic_sdk_health_category,omitempty"` RegNoticeSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,91,rep,packed,name=reg_notice_switch_asic_sdk_health_category,json=regNoticeSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_notice_switch_asic_sdk_health_category,omitempty"` PoeDeviceList []uint64 `protobuf:"varint,92,rep,packed,name=poe_device_list,json=poeDeviceList,proto3" json:"poe_device_list,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,93,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,94,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1614,6 +1631,20 @@ func (x *CreateSwitchRequest) GetPoeDeviceList() []uint64 { return nil } +func (x *CreateSwitchRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateSwitchRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateSwitchResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1819,6 +1850,8 @@ type SetSwitchAttributeRequest struct { RegWarningSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,77,rep,packed,name=reg_warning_switch_asic_sdk_health_category,json=regWarningSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_warning_switch_asic_sdk_health_category,omitempty"` RegNoticeSwitchAsicSdkHealthCategory []SwitchAsicSdkHealthCategory `protobuf:"varint,78,rep,packed,name=reg_notice_switch_asic_sdk_health_category,json=regNoticeSwitchAsicSdkHealthCategory,proto3,enum=lemming.dataplane.sai.SwitchAsicSdkHealthCategory" json:"reg_notice_switch_asic_sdk_health_category,omitempty"` PoeDeviceList []uint64 `protobuf:"varint,79,rep,packed,name=poe_device_list,json=poeDeviceList,proto3" json:"poe_device_list,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,80,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,81,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -2406,6 +2439,20 @@ func (x *SetSwitchAttributeRequest) GetPoeDeviceList() []uint64 { return nil } +func (x *SetSwitchAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetSwitchAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetSwitchAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -3914,7 +3961,7 @@ var file_dataplane_proto_sai_switch_proto_rawDesc = string([]byte{ 0x74, 0x6f, 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf2, 0x42, 0x0a, 0x13, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x44, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, @@ -4327,578 +4374,121 @@ var file_dataplane_proto_sai_switch_proto_rawDesc = string([]byte{ 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x0f, 0x70, 0x6f, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe8, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x65, 0x44, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, - 0x22, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, - 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, - 0x6d, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, - 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, - 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, - 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, - 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, - 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, - 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, - 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, - 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x73, 0x65, 0x65, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x70, 0x76, 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, - 0x76, 0x36, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, - 0x6d, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, - 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, - 0x76, 0x34, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x70, 0x76, 0x36, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, - 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, - 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, - 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, - 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, - 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x74, 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, - 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, - 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, - 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, - 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, - 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, - 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, - 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, - 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, - 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, - 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, - 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, - 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x61, 0x72, - 0x64, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, - 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, - 0x64, 0x63, 0x61, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x15, - 0x0a, 0x13, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, - 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, - 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, - 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, - 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, - 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x17, 0x0a, - 0x15, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, - 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, - 0x27, 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, - 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, - 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, - 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x72, 0x73, - 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x21, 0x0a, - 0x1f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x22, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x39, 0x0a, 0x19, - 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x0b, 0x69, - 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x01, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, - 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x48, 0x48, 0x02, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x57, 0x61, - 0x72, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, - 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x49, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x76, - 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x51, 0x48, 0x04, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, - 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, 0x48, 0x05, 0x52, - 0x13, 0x62, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6d, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x53, 0x48, - 0x06, 0x52, 0x13, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, 0x64, - 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x73, 0x72, 0x63, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x48, 0x07, 0x52, 0x0d, 0x73, 0x72, - 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3f, - 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x48, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, - 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x0e, 0x66, 0x64, 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x56, 0x48, - 0x09, 0x52, 0x0c, 0x66, 0x64, 0x62, 0x41, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1e, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x0a, 0x52, 0x1a, 0x66, 0x64, 0x62, 0x55, 0x6e, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, - 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x58, 0x48, - 0x0b, 0x52, 0x1c, 0x66, 0x64, 0x62, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4d, - 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x0c, 0x52, 0x1c, 0x66, 0x64, 0x62, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x70, 0x0a, 0x1b, - 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, - 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0f, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5a, 0x48, - 0x0d, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x40, - 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x48, 0x0e, 0x52, 0x13, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x0f, 0x52, 0x15, 0x65, 0x63, - 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x5d, 0x48, 0x10, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x61, 0x73, 0x68, 0x88, - 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x70, 0x76, 0x34, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x5e, 0x48, 0x11, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, - 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, - 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, 0x48, 0x12, 0x52, - 0x12, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, 0x49, - 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x15, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x13, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, - 0x73, 0x68, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x1a, 0x6c, 0x61, 0x67, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x5d, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xec, 0x01, 0x48, 0x4f, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xed, + 0x01, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x22, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, 0x62, 0x5f, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, + 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, + 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, - 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, - 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x14, 0x52, 0x17, 0x6c, - 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, 0x6c, 0x61, 0x67, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, - 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x62, - 0x48, 0x15, 0x52, 0x12, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, 0x6c, 0x61, 0x67, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x63, 0x48, 0x16, 0x52, 0x14, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, - 0x1a, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x19, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x17, 0x52, 0x17, 0x6c, 0x61, 0x67, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, 0x18, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, - 0x68, 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, - 0x34, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x66, 0x48, - 0x19, 0x52, 0x11, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x49, 0x6e, - 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, 0x67, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x1a, 0x52, 0x0b, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, - 0x68, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x68, 0x48, 0x1b, 0x52, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x31, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, - 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x69, 0x48, - 0x1c, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x54, 0x63, 0x88, - 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x1d, 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x44, 0x6f, - 0x74, 0x31, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, - 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, - 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x1e, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, 0x6f, 0x74, 0x31, - 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x37, - 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x6c, 0x48, 0x1f, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, - 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, 0x73, 0x5f, 0x64, - 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6d, 0x48, 0x20, - 0x52, 0x11, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, - 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, - 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x23, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x21, 0x52, 0x0f, 0x71, - 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x4b, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6f, - 0x48, 0x22, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x54, 0x6f, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x49, - 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x25, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, 0x23, 0x52, 0x16, - 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, - 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x71, 0x48, 0x24, - 0x52, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x45, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, - 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x25, 0x52, 0x0d, 0x66, 0x61, 0x73, 0x74, 0x41, - 0x70, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, - 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x26, 0x52, 0x08, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, - 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x83, 0x01, 0x48, 0x27, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x13, 0x70, - 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x85, - 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, - 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, - 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, 0x0a, 0x0f, 0x74, - 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x2c, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, 0x48, 0x28, 0x52, - 0x0d, 0x74, 0x70, 0x69, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, - 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, - 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x8a, 0x01, 0x48, 0x29, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, 0x49, 0x6e, 0x6e, 0x65, 0x72, - 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x63, 0x72, 0x63, 0x5f, 0x63, - 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2e, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x2a, 0x52, 0x0e, 0x63, 0x72, - 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x46, 0x0a, 0x18, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, - 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x2b, 0x52, 0x16, 0x63, 0x72, - 0x63, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x65, 0x63, 0x6e, 0x5f, 0x65, - 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x94, 0x01, 0x48, 0x2c, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x74, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, - 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0c, - 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x2d, 0x52, 0x15, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x4d, - 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x2e, 0x52, 0x10, 0x76, 0x78, - 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, - 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, - 0x6c, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9a, 0x01, - 0x48, 0x2f, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, 0x61, 0x50, 0x6c, - 0x61, 0x6e, 0x65, 0x4f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, - 0x2b, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x34, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9b, 0x01, 0x52, - 0x0b, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0c, - 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x35, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x30, 0x52, 0x0b, 0x70, - 0x72, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, - 0x1a, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x36, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x31, 0x52, 0x16, 0x6e, 0x61, - 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6e, 0x61, 0x74, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x32, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x65, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x61, + 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, + 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, + 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, + 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, + 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, + 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x63, + 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, + 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x42, + 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x69, + 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x65, 0x5f, + 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x74, + 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x68, 0x61, 0x72, 0x64, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x62, 0x75, 0x73, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x63, 0x6f, 0x6e, 0x74, + 0x65, 0x78, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, + 0x61, 0x73, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, + 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa8, 0x01, - 0x48, 0x33, 0x52, 0x17, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x44, - 0x0a, 0x17, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x34, 0x52, 0x15, 0x66, 0x69, 0x72, 0x6d, - 0x77, 0x61, 0x72, 0x65, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x53, 0x74, 0x6f, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, - 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, - 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x35, 0x52, 0x1b, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, - 0x72, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x6e, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x12, 0x6d, 0x61, 0x63, 0x73, - 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x3b, - 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb1, 0x01, 0x52, 0x10, 0x6d, - 0x61, 0x63, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb2, 0x01, 0x48, 0x36, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x4d, - 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x45, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, - 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x3d, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb3, 0x01, 0x48, 0x37, 0x52, 0x14, - 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x3e, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x38, 0x52, 0x19, 0x71, 0x6f, - 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x4d, 0x70, 0x6c, - 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, 0x14, 0x66, 0x61, - 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xbd, 0x01, 0x48, 0x39, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x13, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x40, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xbf, - 0x01, 0x52, 0x11, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, - 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x41, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xc1, 0x01, 0x48, 0x3a, 0x52, 0x0d, 0x70, 0x72, 0x65, 0x49, 0x6e, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x20, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x42, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcc, 0x01, 0x48, 0x3b, 0x52, - 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x5a, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x43, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xcd, 0x01, 0x48, 0x3c, 0x52, 0x1e, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, - 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x44, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xce, 0x01, 0x48, 0x3d, 0x52, - 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, - 0x01, 0x12, 0x37, 0x0a, 0x11, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, - 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xcf, 0x01, 0x48, 0x3e, 0x52, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, - 0x54, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x11, 0x65, 0x63, - 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x46, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd3, 0x01, 0x48, 0x3f, - 0x52, 0x0f, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0b, 0x61, 0x72, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0xd4, 0x01, 0x48, 0x40, 0x52, 0x0a, 0x61, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, - 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd6, 0x01, 0x48, - 0x41, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, - 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x72, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd7, 0x01, - 0x48, 0x42, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x54, 0x69, 0x6d, 0x65, - 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, - 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0xd8, 0x01, 0x48, 0x43, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, - 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x89, 0x01, 0x0a, 0x1e, 0x68, 0x6f, - 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x4b, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0xd9, 0x01, 0x48, 0x44, 0x52, 0x1a, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x29, 0x72, 0x65, 0x67, 0x5f, 0x66, 0x61, - 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, - 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, - 0x6f, 0x72, 0x79, 0x18, 0x4c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0xdb, 0x01, 0x52, 0x23, 0x72, 0x65, 0x67, 0x46, 0x61, 0x74, 0x61, 0x6c, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x97, 0x01, 0x0a, 0x2b, - 0x72, 0x65, 0x67, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x4d, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdc, 0x01, 0x52, 0x25, - 0x72, 0x65, 0x67, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, - 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x2a, 0x72, 0x65, 0x67, 0x5f, 0x6e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, - 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x79, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, - 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, - 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdd, 0x01, 0x52, 0x24, 0x72, 0x65, 0x67, 0x4e, 0x6f, 0x74, 0x69, - 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x2f, 0x0a, - 0x0f, 0x70, 0x6f, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, - 0x18, 0x4f, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xe8, 0x01, 0x52, - 0x0d, 0x70, 0x6f, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, - 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x42, 0x0f, - 0x0a, 0x0d, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x42, - 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, - 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, - 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, 0x63, - 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x61, - 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, 0x64, - 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, - 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, - 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, - 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, - 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, - 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, - 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, - 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1e, - 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, - 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, - 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x42, - 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, - 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x18, - 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x61, 0x67, - 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, - 0x66, 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, - 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, - 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, - 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, - 0x36, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, - 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x74, - 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, - 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, - 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, - 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, 0x0a, - 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, - 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, - 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, 0x6c, - 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, 0x73, - 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, - 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x70, - 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, - 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, 0x11, - 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, - 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, - 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, - 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, - 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, - 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x1a, 0x0a, - 0x18, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, 0x69, - 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, - 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, - 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, - 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x22, 0x0a, + 0x20, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, + 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, + 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, + 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, @@ -4916,883 +4506,1376 @@ var file_dataplane_proto_sai_switch_proto_rawDesc = string([]byte{ 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1c, - 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x13, + 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x22, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, + 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf3, + 0x3a, 0x0a, 0x19, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x2c, + 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2b, 0x48, 0x00, 0x52, 0x0a, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x2c, 0x48, 0x01, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x72, 0x65, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x48, 0x48, 0x02, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x57, 0x61, 0x72, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x0c, 0x77, 0x61, 0x72, 0x6d, + 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x49, 0x48, 0x03, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x6d, 0x52, 0x65, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x5e, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x51, 0x48, 0x04, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x62, 0x63, 0x61, 0x73, + 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x52, + 0x48, 0x05, 0x52, 0x13, 0x62, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, 0x6f, 0x6f, + 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x40, 0x0a, 0x16, 0x6d, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x53, 0x48, 0x06, 0x52, 0x13, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x43, 0x70, 0x75, 0x46, 0x6c, + 0x6f, 0x6f, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, + 0x73, 0x72, 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x54, 0x48, 0x07, 0x52, + 0x0d, 0x73, 0x72, 0x63, 0x4d, 0x61, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, + 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, + 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x55, 0x48, 0x08, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, + 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x66, 0x64, 0x62, 0x5f, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x56, 0x48, 0x09, 0x52, 0x0c, 0x66, 0x64, 0x62, 0x41, 0x67, 0x69, 0x6e, 0x67, 0x54, 0x69, + 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x74, 0x0a, 0x1e, 0x66, 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x57, 0x48, 0x0a, 0x52, 0x1a, 0x66, 0x64, + 0x62, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, + 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, + 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x58, 0x48, 0x0b, 0x52, 0x1c, 0x66, 0x64, 0x62, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, + 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x78, 0x0a, 0x20, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, + 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x59, 0x48, 0x0c, 0x52, 0x1c, + 0x66, 0x64, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x4d, 0x69, 0x73, 0x73, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x70, 0x0a, 0x1b, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x0f, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, + 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x5a, 0x48, 0x0d, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, + 0x01, 0x12, 0x40, 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5b, 0x48, 0x0e, 0x52, 0x13, 0x65, 0x63, 0x6d, + 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5c, 0x48, 0x0f, 0x52, + 0x15, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x65, 0x63, 0x6d, + 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5d, 0x48, 0x10, 0x52, 0x18, 0x65, 0x63, 0x6d, 0x70, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x61, + 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, + 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x5e, 0x48, 0x11, 0x52, 0x0c, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, + 0x68, 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x16, 0x65, 0x63, 0x6d, 0x70, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x5f, + 0x48, 0x12, 0x52, 0x12, 0x65, 0x63, 0x6d, 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, + 0x49, 0x6e, 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x63, 0x6d, + 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x15, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x60, 0x48, 0x13, 0x52, 0x0c, 0x65, 0x63, 0x6d, + 0x70, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x6e, 0x0a, 0x1a, + 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x41, 0x6c, 0x67, + 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x61, 0x48, 0x14, + 0x52, 0x17, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x41, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, 0x15, + 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x73, 0x65, 0x65, 0x64, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x62, 0x48, 0x15, 0x52, 0x12, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x53, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x17, + 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x63, 0x48, 0x16, 0x52, 0x14, 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x48, 0x0a, 0x1a, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x19, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x64, 0x48, 0x17, 0x52, 0x17, + 0x6c, 0x61, 0x67, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x79, 0x6d, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x48, 0x61, 0x73, 0x68, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, + 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x18, 0x1a, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x65, 0x48, 0x18, 0x52, 0x0b, 0x6c, 0x61, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x6c, + 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, + 0x69, 0x70, 0x76, 0x34, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x66, 0x48, 0x19, 0x52, 0x11, 0x6c, 0x61, 0x67, 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, + 0x34, 0x49, 0x6e, 0x49, 0x70, 0x76, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x6c, 0x61, + 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x18, 0x1c, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x67, 0x48, 0x1a, 0x52, 0x0b, 0x6c, 0x61, 0x67, + 0x48, 0x61, 0x73, 0x68, 0x49, 0x70, 0x76, 0x36, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x68, 0x48, 0x1b, 0x52, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x5f, 0x74, 0x63, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x69, 0x48, 0x1c, 0x52, 0x0c, 0x71, 0x6f, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, + 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1f, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6a, 0x48, 0x1d, 0x52, 0x0f, 0x71, 0x6f, + 0x73, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6b, 0x48, 0x1e, 0x52, 0x12, 0x71, 0x6f, 0x73, 0x44, + 0x6f, 0x74, 0x31, 0x70, 0x54, 0x6f, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x37, 0x0a, 0x12, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, + 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x6c, 0x48, 0x1f, 0x52, 0x0e, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, + 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x15, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x22, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x6d, 0x48, 0x20, 0x52, 0x11, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x43, 0x6f, + 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x13, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x23, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x6e, 0x48, 0x21, + 0x52, 0x0f, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, + 0x70, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x1d, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, + 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x24, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x6f, 0x48, 0x22, 0x52, 0x17, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x6f, 0x74, 0x31, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, + 0x01, 0x12, 0x49, 0x0a, 0x1c, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x25, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x70, 0x48, + 0x23, 0x52, 0x16, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, + 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a, 0x13, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x71, 0x48, 0x24, 0x52, 0x11, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x65, 0x6c, 0x6c, + 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x66, 0x61, 0x73, + 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x27, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7b, 0x48, 0x25, 0x52, 0x0d, 0x66, 0x61, + 0x73, 0x74, 0x41, 0x70, 0x69, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, + 0x0a, 0x09, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x18, 0x28, 0x20, 0x01, 0x28, + 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x7c, 0x48, 0x26, 0x52, 0x08, 0x6d, 0x69, 0x72, + 0x72, 0x6f, 0x72, 0x54, 0x63, 0x88, 0x01, 0x01, 0x12, 0x64, 0x0a, 0x15, 0x70, 0x66, 0x63, 0x5f, + 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x26, 0x0a, 0x24, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9b, 0x01, - 0x0a, 0x25, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x6f, - 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, - 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x10, 0x73, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2a, 0x0a, 0x28, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x29, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, - 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x64, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x63, 0x0a, 0x1c, 0x46, 0x64, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x83, 0x01, 0x48, 0x27, 0x52, 0x12, 0x70, 0x66, 0x63, 0x44, 0x6c, 0x72, 0x50, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x56, + 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, 0x5f, 0x64, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x85, 0x01, 0x52, 0x10, 0x70, 0x66, 0x63, 0x54, 0x63, 0x44, 0x6c, 0x64, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x56, 0x0a, 0x13, 0x70, 0x66, 0x63, 0x5f, 0x74, 0x63, + 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x2b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x55, 0x69, 0x6e, 0x74, + 0x4d, 0x61, 0x70, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x87, 0x01, 0x52, 0x10, 0x70, 0x66, + 0x63, 0x54, 0x63, 0x44, 0x6c, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x34, + 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, + 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x89, 0x01, + 0x48, 0x28, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x56, 0x6c, 0x61, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, + 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x8a, 0x01, 0x48, 0x29, 0x52, 0x0d, 0x74, 0x70, 0x69, 0x64, 0x49, 0x6e, + 0x6e, 0x65, 0x72, 0x56, 0x6c, 0x61, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x10, 0x63, 0x72, + 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2e, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8b, 0x01, 0x48, 0x2a, 0x52, + 0x0e, 0x63, 0x72, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x46, 0x0a, 0x18, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, 0x63, + 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x2f, + 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x8c, 0x01, 0x48, 0x2b, 0x52, + 0x16, 0x63, 0x72, 0x63, 0x52, 0x65, 0x63, 0x61, 0x6c, 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x18, 0x65, 0x63, + 0x6e, 0x5f, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x94, 0x01, 0x48, 0x2c, 0x52, 0x15, 0x65, 0x63, 0x6e, 0x45, 0x63, 0x74, 0x54, + 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x45, 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x18, 0x31, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x95, 0x01, 0x48, 0x2d, 0x52, 0x15, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x4d, 0x61, 0x63, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x12, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x32, + 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x96, 0x01, 0x48, 0x2e, 0x52, + 0x10, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x50, 0x6f, 0x72, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x1c, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, + 0x6f, 0x76, 0x61, 0x6c, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x9a, 0x01, 0x48, 0x2f, 0x52, 0x18, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x44, 0x61, 0x74, + 0x61, 0x50, 0x6c, 0x61, 0x6e, 0x65, 0x4f, 0x6e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x61, 0x6c, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x34, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x9b, 0x01, 0x52, 0x0b, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, + 0x2f, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x18, + 0x35, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9e, 0x01, 0x48, 0x30, + 0x52, 0x0b, 0x70, 0x72, 0x65, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x48, 0x0a, 0x1a, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x36, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x9f, 0x01, 0x48, 0x31, 0x52, + 0x16, 0x6e, 0x61, 0x74, 0x5a, 0x6f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0a, 0x6e, 0x61, + 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x37, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa0, 0x01, 0x48, 0x32, 0x52, 0x09, 0x6e, 0x61, 0x74, 0x45, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x19, 0x66, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xa8, 0x01, 0x48, 0x33, 0x52, 0x17, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x44, + 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x44, 0x0a, 0x17, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x39, 0x20, 0x01, + 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xa9, 0x01, 0x48, 0x34, 0x52, 0x15, 0x66, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, + 0x53, 0x74, 0x6f, 0x70, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x1f, 0x66, 0x69, 0x72, 0x6d, 0x77, + 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x69, + 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xaa, 0x01, 0x48, 0x35, 0x52, 0x1b, 0x66, 0x69, 0x72, + 0x6d, 0x77, 0x61, 0x72, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x41, 0x6e, 0x64, 0x49, 0x6e, + 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x12, 0x6d, + 0x61, 0x63, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb1, 0x01, + 0x52, 0x10, 0x6d, 0x61, 0x63, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x16, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, + 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x3c, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb2, 0x01, 0x48, 0x36, 0x52, 0x11, 0x71, + 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x19, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, + 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x3d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb3, 0x01, 0x48, + 0x37, 0x52, 0x14, 0x71, 0x6f, 0x73, 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, 0x20, 0x71, 0x6f, + 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, + 0x6f, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x3e, + 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xb4, 0x01, 0x48, 0x38, 0x52, + 0x19, 0x71, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, + 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x6f, 0x0a, + 0x14, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x46, 0x61, 0x69, 0x6c, 0x6f, 0x76, + 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xbd, 0x01, 0x48, 0x39, 0x52, 0x12, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, + 0x0a, 0x13, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x40, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0xbf, 0x01, 0x52, 0x11, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x5f, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x41, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xc1, 0x01, 0x48, 0x3a, 0x52, 0x0d, 0x70, 0x72, 0x65, + 0x49, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, + 0x20, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, + 0x70, 0x18, 0x42, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcc, 0x01, + 0x48, 0x3b, 0x52, 0x1b, 0x71, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, + 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x24, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, + 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x43, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcd, 0x01, 0x48, 0x3c, 0x52, 0x1e, 0x71, 0x6f, 0x73, + 0x4d, 0x70, 0x6c, 0x73, 0x45, 0x78, 0x70, 0x54, 0x6f, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x34, + 0x0a, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x44, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xce, 0x01, + 0x48, 0x3d, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x11, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, + 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x18, 0x45, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xcf, 0x01, 0x48, 0x3e, 0x52, 0x0e, 0x69, 0x70, 0x73, 0x65, + 0x63, 0x53, 0x61, 0x54, 0x61, 0x67, 0x54, 0x70, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, + 0x11, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd3, + 0x01, 0x48, 0x3f, 0x52, 0x0f, 0x65, 0x63, 0x6d, 0x70, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0b, 0x61, 0x72, 0x73, 0x5f, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x47, 0x20, 0x01, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0xd4, 0x01, 0x48, 0x40, 0x52, 0x0a, 0x61, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, 0x09, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x5f, 0x77, 0x64, 0x18, 0x48, 0x20, 0x01, 0x28, 0x08, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xd6, 0x01, 0x48, 0x41, 0x52, 0x08, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x34, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x77, 0x64, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x72, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0xd7, 0x01, 0x48, 0x42, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x57, 0x64, 0x54, + 0x69, 0x6d, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0e, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08, 0x42, + 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd8, 0x01, 0x48, 0x43, 0x52, 0x0d, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x49, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x89, 0x01, 0x0a, + 0x1e, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x4b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x07, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xd9, 0x01, 0x48, 0x44, 0x52, 0x1a, 0x68, 0x6f, 0x73, 0x74, 0x69, + 0x66, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x93, 0x01, 0x0a, 0x29, 0x72, 0x65, 0x67, + 0x5f, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, + 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, + 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x4c, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, + 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdb, 0x01, 0x52, 0x23, 0x72, 0x65, 0x67, 0x46, 0x61, + 0x74, 0x61, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x97, + 0x01, 0x0a, 0x2b, 0x72, 0x65, 0x67, 0x5f, 0x77, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, + 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x4d, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdc, + 0x01, 0x52, 0x25, 0x72, 0x65, 0x67, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x95, 0x01, 0x0a, 0x2a, 0x72, 0x65, 0x67, + 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x61, + 0x73, 0x69, 0x63, 0x5f, 0x73, 0x64, 0x6b, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, + 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, + 0x53, 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, + 0x79, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xdd, 0x01, 0x52, 0x24, 0x72, 0x65, 0x67, 0x4e, + 0x6f, 0x74, 0x69, 0x63, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x73, 0x69, 0x63, 0x53, + 0x64, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x2f, 0x0a, 0x0f, 0x70, 0x6f, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x4f, 0x20, 0x03, 0x28, 0x04, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0xe8, 0x01, 0x52, 0x0d, 0x70, 0x6f, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x5d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xec, 0x01, 0x48, 0x45, 0x52, 0x0e, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x3d, 0x0a, 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x51, 0x20, 0x03, 0x28, 0x04, + 0x42, 0x07, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0xed, 0x01, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, + 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0f, + 0x0a, 0x0d, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x42, + 0x0f, 0x0a, 0x0d, 0x5f, 0x77, 0x61, 0x72, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x62, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, + 0x75, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x70, 0x75, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x72, + 0x63, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x18, 0x0a, + 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x66, 0x64, 0x62, 0x5f, + 0x61, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x66, + 0x64, 0x62, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, + 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, + 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x66, 0x64, 0x62, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, + 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, + 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, + 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, + 0x65, 0x64, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, + 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, + 0x76, 0x34, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x61, 0x6c, 0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x42, + 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6c, 0x61, + 0x67, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x79, 0x6d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, + 0x68, 0x61, 0x73, 0x68, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, + 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x69, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, + 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x61, 0x67, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x70, + 0x76, 0x36, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x74, 0x63, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x71, + 0x6f, 0x73, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, + 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, + 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x18, 0x0a, 0x16, + 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x20, + 0x0a, 0x1e, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x6f, 0x74, 0x31, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, + 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, + 0x70, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x65, + 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x66, 0x61, + 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x0c, 0x0a, + 0x0a, 0x5f, 0x6d, 0x69, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x74, 0x63, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x70, 0x66, 0x63, 0x5f, 0x64, 0x6c, 0x72, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, 0x69, 0x64, 0x5f, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x70, + 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x72, 0x65, 0x63, 0x61, 0x6c, + 0x63, 0x75, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, + 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x68, 0x72, 0x65, + 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, + 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x72, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x63, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, + 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x75, 0x6e, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x61, + 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x61, + 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, + 0x77, 0x6e, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, + 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6e, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x42, 0x1a, + 0x0a, 0x18, 0x5f, 0x66, 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x62, 0x72, 0x6f, 0x61, + 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x6f, 0x70, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x66, + 0x69, 0x72, 0x6d, 0x77, 0x61, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x5f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x19, + 0x0a, 0x17, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, + 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x17, 0x0a, 0x15, + 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x6f, 0x76, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x65, 0x5f, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x23, 0x0a, 0x21, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x27, + 0x0a, 0x25, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x6d, 0x70, 0x6c, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x70, 0x73, 0x65, + 0x63, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, + 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x74, 0x61, 0x67, 0x5f, 0x74, 0x70, 0x69, + 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x63, 0x6d, 0x70, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61, 0x72, 0x73, 0x5f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x5f, 0x77, 0x64, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x5f, 0x77, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x42, 0x21, 0x0a, 0x1f, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3a, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x26, 0x0a, 0x24, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x25, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x55, 0x0a, 0x12, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x10, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0x2a, 0x0a, 0x28, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x75, 0x74, 0x64, + 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x48, 0x0a, + 0x29, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x22, 0x1d, 0x0a, 0x1b, 0x46, 0x64, 0x62, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x63, 0x0a, 0x1c, 0x46, 0x64, 0x62, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, 0x64, 0x62, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, 0x0a, 0x22, 0x50, + 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x6c, 0x0a, 0x23, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, + 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x20, 0x0a, 0x1e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x1f, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x05, 0x61, 0x74, + 0x74, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x69, 0x66, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0x25, + 0x0a, 0x23, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, + 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x70, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, + 0x63, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, 0x65, 0x75, 0x65, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, + 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2a, 0x0a, 0x28, 0x42, 0x66, 0x64, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x7d, 0x0a, 0x29, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x43, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, + 0x12, 0x50, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x46, 0x64, 0x62, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x24, 0x0a, 0x22, 0x50, 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6c, 0x0a, 0x23, 0x50, - 0x6f, 0x72, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x1d, 0x0a, 0x1b, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x1c, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x45, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4f, 0x70, 0x65, - 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x20, 0x0a, 0x1e, 0x50, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9a, 0x01, 0x0a, 0x1f, - 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x75, - 0x66, 0x66, 0x65, 0x72, 0x12, 0x42, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x48, 0x6f, 0x73, 0x74, - 0x69, 0x66, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0x25, 0x0a, 0x23, 0x51, 0x75, 0x65, 0x75, - 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x70, 0x0a, 0x24, 0x51, 0x75, 0x65, 0x75, 0x65, 0x50, 0x66, 0x63, 0x44, 0x65, 0x61, 0x64, 0x6c, - 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x51, 0x75, - 0x65, 0x75, 0x65, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x6f, 0x63, 0x6b, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0x2a, 0x0a, 0x28, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x7d, 0x0a, - 0x29, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x42, 0x66, 0x64, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1d, 0x0a, 0x1b, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x9e, 0x01, 0x0a, 0x1c, - 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0c, - 0x74, 0x61, 0x6d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0a, 0x74, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, - 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, - 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x61, 0x74, 0x74, 0x72, 0x73, 0x22, 0x28, 0x0a, 0x26, - 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x25, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, - 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x48, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6d, 0x0a, 0x15, 0x47, 0x65, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xfe, 0x0a, 0x0a, 0x19, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, - 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x12, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, - 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, - 0x73, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, - 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, - 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, - 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x52, 0x0c, 0x64, 0x65, 0x63, - 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, + 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x61, 0x6d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x61, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x05, + 0x61, 0x74, 0x74, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x61, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x05, 0x61, 0x74, 0x74, + 0x72, 0x73, 0x22, 0x28, 0x0a, 0x26, 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x25, + 0x49, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x49, 0x70, 0x73, 0x65, + 0x63, 0x53, 0x61, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x6d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, + 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x22, 0xfe, 0x0a, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, + 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, + 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x17, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, + 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x03, 0x48, 0x02, 0x52, 0x12, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x63, 0x61, 0x70, + 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, 0x69, 0x0a, 0x15, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x03, 0x52, 0x12, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x44, 0x65, 0x63, 0x61, 0x70, 0x45, 0x63, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0d, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x52, 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x12, + 0x79, 0x0a, 0x1b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, + 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x17, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, + 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x0d, 0x76, + 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, + 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x06, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, + 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, + 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0a, 0x48, 0x07, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, + 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, + 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, + 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, + 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, + 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, + 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, + 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, + 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x6d, 0x61, 0x70, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x0d, 0x48, 0x0a, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, + 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, + 0x70, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x60, 0x42, 0x0e, 0x0a, 0x0c, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, + 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, + 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, + 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, + 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, + 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, + 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, + 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, + 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, + 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, + 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, + 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, + 0x70, 0x22, 0x2e, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x22, 0x2d, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, + 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, + 0x07, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x6f, 0x69, 0x64, 0x12, 0x66, 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, + 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x02, 0x48, 0x00, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, + 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x79, 0x0a, 0x1b, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, + 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, - 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, - 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, - 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, - 0x06, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, - 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, - 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x1b, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, - 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, - 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, - 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, - 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, - 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, - 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, - 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x1c, 0x64, - 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x3a, 0x06, - 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x60, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, - 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, - 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x01, 0x52, 0x17, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, + 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x02, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x09, 0x48, 0x03, 0x52, 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, + 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, + 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, + 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, + 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x05, 0x52, 0x14, 0x65, + 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, + 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, + 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, + 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, + 0x48, 0x06, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, + 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x07, + 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, + 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, + 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, + 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, - 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, - 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, - 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, - 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, - 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, - 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x22, 0x2e, 0x0a, 0x1a, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x19, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x07, 0x0a, 0x1f, 0x53, 0x65, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x66, - 0x0a, 0x16, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, + 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, + 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, + 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, + 0x61, 0x70, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x09, 0x61, + 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x00, 0x52, 0x14, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x79, 0x0a, 0x1b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, - 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x01, 0x52, 0x17, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x78, 0x6c, - 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x08, 0x48, 0x02, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x03, 0x52, 0x11, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, - 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x04, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, - 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, - 0x44, 0x73, 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, - 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x05, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, - 0x73, 0x54, 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, - 0x12, 0x42, 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x06, 0x52, 0x13, 0x64, 0x65, - 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x07, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, - 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, - 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, - 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, - 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, - 0x61, 0x73, 0x6b, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, - 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, - 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, - 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, - 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, - 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, - 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x22, 0x22, 0x0a, 0x20, - 0x53, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x79, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, - 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, - 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x40, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x2a, 0xc3, 0x49, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, - 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, - 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, - 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x50, 0x4f, - 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, - 0x4f, 0x46, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x53, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, - 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, - 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x04, 0x12, 0x18, 0x0a, - 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x50, 0x55, - 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, - 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x53, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x4e, - 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, - 0x5a, 0x45, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, - 0x42, 0x45, 0x52, 0x53, 0x10, 0x0a, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, - 0x4c, 0x41, 0x47, 0x53, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, - 0x52, 0x53, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x45, 0x43, - 0x4d, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, 0x0d, 0x12, 0x28, 0x0a, 0x24, 0x53, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x22, 0x64, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x2a, 0x9d, 0x4b, 0x0a, 0x0a, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x56, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, + 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4d, 0x54, + 0x55, 0x10, 0x04, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x12, 0x23, 0x0a, + 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, + 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x53, + 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, + 0x10, 0x07, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x08, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x33, 0x5f, 0x52, 0x4f, 0x55, + 0x54, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x09, 0x12, + 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, + 0x41, 0x47, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x10, 0x0a, 0x12, 0x1e, 0x0a, 0x1a, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x4c, 0x41, 0x47, 0x53, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x53, 0x10, 0x0c, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, + 0x5f, 0x4f, 0x46, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x10, + 0x0d, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, + 0x53, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x0e, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, - 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x53, 0x10, 0x0e, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, - 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, - 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, - 0x53, 0x10, 0x10, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x43, 0x50, 0x55, - 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x11, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, - 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, - 0x10, 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, - 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, - 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x54, 0x45, 0x4d, - 0x50, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x4f, 0x52, 0x53, 0x10, 0x14, 0x12, 0x19, 0x0a, 0x15, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0x15, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x10, 0x16, - 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x10, 0x17, 0x12, 0x2a, - 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, - 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x18, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, - 0x52, 0x49, 0x54, 0x59, 0x10, 0x19, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, - 0x10, 0x1a, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x49, - 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x1b, 0x12, 0x30, - 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x49, - 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x1c, - 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, - 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, - 0x10, 0x1d, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x1e, - 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, - 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x1f, - 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x20, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, - 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x21, 0x12, 0x29, - 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, - 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x22, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, + 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x51, + 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, + 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x10, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x4f, 0x46, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x11, 0x12, + 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, + 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x53, 0x55, 0x50, + 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x12, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x55, 0x53, 0x10, 0x13, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, + 0x4f, 0x46, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x4e, 0x53, 0x4f, 0x52, 0x53, 0x10, + 0x14, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x15, 0x12, 0x18, 0x0a, 0x14, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, + 0x54, 0x45, 0x4d, 0x50, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x45, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x45, + 0x4d, 0x50, 0x10, 0x17, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x49, + 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x18, + 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, + 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x19, 0x12, 0x2a, 0x0a, 0x26, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x1a, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, + 0x54, 0x59, 0x10, 0x1b, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, + 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, + 0x52, 0x49, 0x54, 0x59, 0x10, 0x1c, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, + 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x1d, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x10, 0x1e, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x10, 0x1f, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x44, + 0x53, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x20, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, + 0x47, 0x45, 0x10, 0x21, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x22, 0x12, + 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x23, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, 0x53, 0x45, - 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x10, 0x23, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, - 0x5f, 0x49, 0x44, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x24, 0x12, 0x1f, 0x0a, 0x1b, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, - 0x4c, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x25, 0x12, 0x23, 0x0a, 0x1f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x49, 0x44, 0x10, - 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, - 0x45, 0x10, 0x27, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, - 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x28, 0x12, 0x32, - 0x0a, 0x2e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, - 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x52, 0x49, 0x44, 0x45, 0x5f, 0x56, - 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, - 0x10, 0x29, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x31, 0x51, 0x5f, 0x42, 0x52, 0x49, - 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x2a, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, - 0x41, 0x43, 0x4c, 0x10, 0x2b, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, - 0x2c, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, - 0x4f, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, - 0x45, 0x53, 0x10, 0x2d, 0x12, 0x42, 0x0a, 0x3e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, - 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x5f, - 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, 0x2e, 0x12, 0x46, 0x0a, 0x42, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, - 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, - 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x48, - 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x2f, - 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, - 0x46, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x53, 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x43, 0x48, - 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x30, 0x12, 0x21, - 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4f, - 0x54, 0x41, 0x4c, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, - 0x31, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x4e, 0x55, 0x4d, 0x10, 0x32, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x4e, 0x55, 0x4d, - 0x10, 0x33, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, - 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x34, 0x12, 0x2a, - 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, - 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x52, 0x4f, 0x55, - 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x35, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x48, 0x4f, 0x50, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x36, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, + 0x52, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x49, 0x44, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, + 0x24, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, + 0x10, 0x25, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x49, 0x4e, + 0x53, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x27, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x49, 0x44, 0x10, 0x28, 0x12, 0x32, 0x0a, 0x2e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x56, 0x45, 0x52, + 0x52, 0x49, 0x44, 0x45, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, + 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x29, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, + 0x31, 0x51, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x2a, 0x12, 0x1b, + 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x2b, 0x12, 0x1a, 0x0a, 0x16, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, + 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x2c, 0x12, 0x31, 0x0a, 0x2d, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, + 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x54, 0x52, 0x41, 0x46, 0x46, 0x49, 0x43, + 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x45, 0x53, 0x10, 0x2d, 0x12, 0x42, 0x0a, 0x3e, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, + 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x43, 0x48, 0x45, + 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x48, 0x49, 0x45, 0x52, + 0x41, 0x52, 0x43, 0x48, 0x59, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x53, 0x10, 0x2e, 0x12, 0x46, + 0x0a, 0x42, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, + 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, + 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x53, + 0x5f, 0x50, 0x45, 0x52, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x5f, 0x4c, + 0x45, 0x56, 0x45, 0x4c, 0x10, 0x2f, 0x12, 0x3c, 0x0a, 0x38, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, + 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x43, 0x48, 0x49, 0x4c, 0x44, 0x53, 0x5f, 0x50, + 0x45, 0x52, 0x5f, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x45, 0x52, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x10, 0x30, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, + 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x31, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, + 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x4e, 0x55, 0x4d, 0x10, 0x32, + 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x5f, 0x50, 0x4f, + 0x4f, 0x4c, 0x5f, 0x4e, 0x55, 0x4d, 0x10, 0x33, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x48, 0x4f, 0x50, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x37, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x10, 0x38, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, - 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0x39, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x45, - 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0x3a, 0x12, 0x35, 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x45, - 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, - 0x42, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3b, 0x12, 0x23, 0x0a, 0x1f, 0x53, + 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x10, 0x34, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, + 0x56, 0x36, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x35, + 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4e, + 0x45, 0x58, 0x54, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x36, 0x12, 0x2c, + 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, + 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x58, + 0x54, 0x48, 0x4f, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x37, 0x12, 0x2d, 0x0a, 0x29, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, + 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, + 0x42, 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x38, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3c, - 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3d, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4e, 0x45, 0x49, 0x47, 0x48, 0x42, + 0x4f, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x39, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3a, 0x12, 0x35, 0x0a, 0x31, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, + 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, + 0x3b, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3c, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3e, 0x12, 0x24, 0x0a, 0x20, + 0x4c, 0x32, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3d, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x10, 0x3f, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4e, 0x41, 0x54, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x40, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, + 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x4d, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x3e, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x54, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x3f, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, - 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0x41, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, - 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x42, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x10, 0x43, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x59, - 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x44, 0x12, 0x22, 0x0a, 0x1e, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, - 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x45, - 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x46, 0x12, 0x18, 0x0a, 0x14, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x10, 0x47, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x57, 0x41, 0x52, - 0x4d, 0x10, 0x48, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, - 0x49, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x4a, 0x12, - 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, - 0x49, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x4b, 0x12, 0x1f, 0x0a, - 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x56, 0x5f, - 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x4c, 0x12, 0x24, - 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, - 0x58, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, - 0x4e, 0x54, 0x10, 0x4d, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x4e, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x41, 0x50, - 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x4f, 0x12, 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, - 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, - 0x54, 0x59, 0x10, 0x50, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x51, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x42, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x46, 0x4c, - 0x4f, 0x4f, 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x52, 0x12, 0x26, 0x0a, 0x22, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x43, 0x41, 0x53, - 0x54, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, - 0x4c, 0x45, 0x10, 0x53, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, - 0x45, 0x53, 0x53, 0x10, 0x54, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, - 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x55, 0x12, 0x1e, 0x0a, 0x1a, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, - 0x41, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x56, 0x12, 0x2e, 0x0a, 0x2a, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, - 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x57, 0x12, 0x30, 0x0a, 0x2c, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, - 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x58, 0x12, 0x30, - 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, - 0x42, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, - 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x59, - 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, - 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x10, 0x5a, 0x12, 0x26, 0x0a, - 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, - 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x53, - 0x45, 0x45, 0x44, 0x10, 0x5b, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x45, 0x5f, 0x44, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x40, 0x12, 0x2a, + 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, + 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x4e, + 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0x41, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x42, 0x12, + 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x54, 0x41, 0x42, + 0x4c, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x43, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x59, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0x44, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x50, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x10, 0x45, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, + 0x46, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x47, 0x12, 0x1c, 0x0a, 0x18, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x10, 0x48, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x4d, 0x5f, 0x52, 0x45, + 0x43, 0x4f, 0x56, 0x45, 0x52, 0x10, 0x49, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x4a, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x4e, 0x45, 0x44, + 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, + 0x4c, 0x10, 0x4b, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4e, 0x56, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x49, + 0x5a, 0x45, 0x10, 0x4c, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x4d, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x41, 0x43, + 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x4e, 0x12, + 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, + 0x43, 0x4c, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x4f, 0x12, + 0x29, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, + 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x41, + 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x10, 0x50, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x51, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x43, 0x41, 0x53, 0x54, 0x5f, + 0x43, 0x50, 0x55, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x10, 0x52, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x43, 0x50, 0x55, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, + 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x53, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x4d, 0x41, + 0x43, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x54, 0x12, 0x25, 0x0a, 0x21, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, + 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, + 0x10, 0x55, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x41, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x10, 0x56, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4d, 0x49, + 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x10, 0x57, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, + 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x58, 0x12, 0x30, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, + 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x59, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, + 0x4d, 0x10, 0x5a, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, + 0x48, 0x41, 0x53, 0x48, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x5b, 0x12, 0x28, 0x0a, 0x24, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, + 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x46, 0x46, + 0x53, 0x45, 0x54, 0x10, 0x5c, 0x12, 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, - 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0x5c, 0x12, - 0x2b, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, - 0x43, 0x4d, 0x50, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x59, 0x4d, 0x4d, - 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x5d, 0x12, 0x1e, 0x0a, 0x1a, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, - 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x5e, 0x12, 0x26, 0x0a, 0x22, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, - 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, - 0x56, 0x34, 0x10, 0x5f, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, - 0x56, 0x36, 0x10, 0x60, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, - 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54, 0x48, 0x4d, 0x10, 0x61, - 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, - 0x5f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x62, 0x12, 0x27, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, - 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x46, 0x46, 0x53, 0x45, 0x54, 0x10, 0x63, - 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x53, 0x59, 0x4d, 0x4d, - 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x10, 0x64, 0x12, 0x1d, 0x0a, 0x19, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, - 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, - 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, - 0x10, 0x66, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, - 0x67, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x68, 0x12, 0x1e, 0x0a, 0x1a, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, - 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x43, 0x10, 0x69, 0x12, 0x23, 0x0a, 0x1f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, - 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6a, - 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, - 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6b, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, - 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6c, 0x12, 0x25, 0x0a, 0x21, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, - 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, - 0x50, 0x10, 0x6d, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, - 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6e, 0x12, 0x2d, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, - 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x4f, 0x54, 0x31, - 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6f, 0x12, 0x2c, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, - 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, - 0x4d, 0x41, 0x50, 0x10, 0x70, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x48, 0x45, 0x4c, - 0x4c, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x71, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x57, + 0x54, 0x5f, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x10, 0x5d, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, + 0x10, 0x5e, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, + 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x5f, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x48, + 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x60, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, + 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, + 0x49, 0x54, 0x48, 0x4d, 0x10, 0x61, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, + 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x53, 0x45, 0x45, 0x44, 0x10, 0x62, 0x12, 0x27, 0x0a, + 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, + 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x4f, 0x46, + 0x46, 0x53, 0x45, 0x54, 0x10, 0x63, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, + 0x54, 0x5f, 0x53, 0x59, 0x4d, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x10, 0x64, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, + 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x49, + 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x66, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x41, 0x47, 0x5f, 0x48, 0x41, 0x53, 0x48, + 0x5f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x67, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x52, + 0x45, 0x46, 0x52, 0x45, 0x53, 0x48, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, + 0x68, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x54, 0x43, 0x10, + 0x69, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, + 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6a, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, + 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6b, 0x12, 0x22, + 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, + 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, + 0x10, 0x6c, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, + 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6d, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, + 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6e, 0x12, 0x2d, + 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, + 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, + 0x4f, 0x5f, 0x44, 0x4f, 0x54, 0x31, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x6f, 0x12, 0x2c, 0x0a, + 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, + 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, + 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x70, 0x12, 0x23, 0x0a, 0x1f, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x53, 0x48, 0x45, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x71, + 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, + 0x44, 0x10, 0x72, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, + 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, + 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x74, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x49, + 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0x75, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x49, 0x44, 0x10, 0x72, 0x12, 0x24, 0x0a, - 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0x73, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, - 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x74, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x10, 0x75, 0x12, 0x2a, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x76, - 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x5f, - 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x77, - 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, - 0x10, 0x78, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x79, 0x12, 0x23, 0x0a, 0x1f, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, - 0x7a, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x41, 0x50, 0x49, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x7b, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, 0x43, 0x10, 0x7c, 0x12, 0x21, 0x0a, - 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x7d, - 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, - 0x10, 0x7e, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x44, - 0x45, 0x50, 0x54, 0x48, 0x10, 0x7f, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x54, 0x4c, 0x56, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x10, 0x80, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x5f, 0x4c, 0x4f, - 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x53, 0x10, 0x81, 0x01, - 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, - 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x82, 0x01, 0x12, 0x26, 0x0a, 0x21, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, + 0x54, 0x49, 0x46, 0x59, 0x10, 0x76, 0x12, 0x2e, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x53, 0x48, 0x55, + 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x4e, 0x4f, + 0x54, 0x49, 0x46, 0x59, 0x10, 0x77, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x44, 0x42, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x78, 0x12, 0x28, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, + 0x10, 0x79, 0x12, 0x23, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, + 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x7a, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x5f, 0x41, 0x50, 0x49, 0x5f, + 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x7b, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x54, + 0x43, 0x10, 0x7c, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x47, + 0x52, 0x45, 0x53, 0x53, 0x10, 0x7d, 0x12, 0x20, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, + 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x7e, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x4d, 0x41, 0x58, + 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x44, 0x45, 0x50, 0x54, 0x48, 0x10, 0x7f, 0x12, 0x1e, 0x0a, 0x19, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, + 0x5f, 0x54, 0x4c, 0x56, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x80, 0x01, 0x12, 0x28, 0x0a, 0x23, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, + 0x4e, 0x55, 0x4d, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x51, 0x55, 0x45, + 0x55, 0x45, 0x53, 0x10, 0x81, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x50, 0x46, 0x43, 0x5f, + 0x44, 0x45, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, + 0x82, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x83, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, + 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, + 0x4e, 0x47, 0x45, 0x10, 0x84, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x44, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x85, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, - 0x44, 0x4c, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x83, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, - 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x84, 0x01, - 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, - 0x56, 0x41, 0x4c, 0x10, 0x85, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x52, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, - 0x86, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, - 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x87, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, - 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x88, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x5f, 0x4f, - 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x89, 0x01, 0x12, 0x20, 0x0a, 0x1b, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x50, 0x49, 0x44, - 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, 0x8a, 0x01, 0x12, 0x21, - 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x52, - 0x43, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x8b, - 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x52, 0x45, 0x43, 0x41, 0x4c, 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x8c, 0x01, 0x12, 0x30, 0x0a, 0x2b, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x46, 0x44, 0x5f, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, - 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x8d, 0x01, 0x12, 0x26, - 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, - 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x8e, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x8f, 0x01, 0x12, 0x38, 0x0a, 0x33, 0x53, 0x57, 0x49, 0x54, + 0x54, 0x43, 0x5f, 0x44, 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x5f, + 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x86, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x46, 0x43, 0x5f, 0x54, 0x43, 0x5f, 0x44, + 0x4c, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x56, 0x41, 0x4c, 0x10, 0x87, 0x01, 0x12, 0x30, + 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, + 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x45, 0x43, 0x54, 0x45, + 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x88, 0x01, + 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x54, 0x50, 0x49, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x10, + 0x89, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x10, 0x8a, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x8b, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x52, 0x43, 0x5f, 0x52, 0x45, 0x43, 0x41, 0x4c, + 0x43, 0x55, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, + 0x8c, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, + 0x59, 0x10, 0x8d, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x42, 0x46, + 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x8e, 0x01, 0x12, 0x20, 0x0a, 0x1b, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, + 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x8f, 0x01, 0x12, 0x38, + 0x0a, 0x33, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, + 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x42, 0x46, 0x44, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x90, 0x01, 0x12, 0x38, 0x0a, 0x33, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, - 0x44, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x90, 0x01, 0x12, 0x38, 0x0a, 0x33, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x49, 0x50, 0x56, 0x36, - 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x46, 0x46, - 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x91, 0x01, 0x12, 0x1b, 0x0a, 0x16, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, - 0x42, 0x46, 0x44, 0x5f, 0x52, 0x58, 0x10, 0x92, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x42, 0x46, 0x44, - 0x5f, 0x54, 0x58, 0x10, 0x93, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x48, - 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x94, - 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x52, - 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x10, 0x95, 0x01, 0x12, 0x23, 0x0a, 0x1e, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, - 0x4e, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x96, - 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0x97, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, - 0x44, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x10, 0x98, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x58, 0x54, - 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0x99, 0x01, 0x12, 0x2d, 0x0a, 0x28, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, - 0x4c, 0x41, 0x4e, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x41, 0x4c, 0x10, - 0x9a, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x10, - 0x9b, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x59, 0x10, 0x9c, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4f, - 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x9d, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x9e, - 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, - 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x9f, 0x01, 0x12, 0x1b, - 0x0a, 0x16, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, - 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xa0, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, - 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x5f, 0x42, 0x55, 0x53, 0x10, 0xa1, - 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, - 0x54, 0x10, 0xa2, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, - 0x44, 0x10, 0xa3, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x57, 0x52, 0x49, - 0x54, 0x45, 0x10, 0xa4, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x44, 0x4f, - 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, - 0x10, 0xa5, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, - 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0xa6, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, - 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0xa7, 0x01, 0x12, - 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, - 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, - 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x10, 0xa8, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, + 0x91, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4d, 0x49, 0x4e, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x52, 0x58, 0x10, 0x92, 0x01, 0x12, + 0x1b, 0x0a, 0x16, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, + 0x49, 0x4e, 0x5f, 0x42, 0x46, 0x44, 0x5f, 0x54, 0x58, 0x10, 0x93, 0x01, 0x12, 0x29, 0x0a, 0x24, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4e, 0x5f, + 0x45, 0x43, 0x54, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x45, 0x4e, + 0x41, 0x42, 0x4c, 0x45, 0x10, 0x94, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x45, 0x46, + 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x10, + 0x95, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x10, 0x96, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x97, 0x01, 0x12, 0x2b, 0x0a, 0x26, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, + 0x53, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x44, 0x5f, 0x4d, 0x49, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x53, + 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x98, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x99, 0x01, 0x12, 0x2d, 0x0a, 0x28, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x49, 0x4e, 0x49, 0x54, 0x5f, + 0x44, 0x41, 0x54, 0x41, 0x5f, 0x50, 0x4c, 0x41, 0x4e, 0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x52, 0x45, + 0x4d, 0x4f, 0x56, 0x41, 0x4c, 0x10, 0x9a, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, + 0x43, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x9b, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0x9c, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, + 0x52, 0x54, 0x45, 0x44, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x9d, 0x01, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x53, 0x48, 0x55, 0x54, + 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x9e, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x5a, 0x4f, 0x4e, 0x45, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, + 0x44, 0x10, 0x9f, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, 0xa0, + 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x48, 0x41, 0x52, 0x44, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, + 0x5f, 0x42, 0x55, 0x53, 0x10, 0xa1, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x54, 0x46, 0x52, 0x4f, 0x4d, 0x5f, + 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x10, 0xa2, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x45, 0x52, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x10, 0xa3, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x45, 0x52, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0xa4, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, - 0x41, 0x52, 0x45, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x53, 0x54, - 0x4f, 0x50, 0x10, 0xa9, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x10, 0xaa, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, - 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xab, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, + 0x41, 0x52, 0x45, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x42, 0x52, 0x4f, + 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0xa5, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, - 0x45, 0x5f, 0x4d, 0x41, 0x4a, 0x4f, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, - 0xac, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x4f, 0x52, - 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xad, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xae, - 0x01, 0x12, 0x46, 0x0a, 0x41, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x47, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x52, 0x4f, 0x4d, 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, - 0x54, 0x4f, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, - 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0xaf, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0xb0, 0x01, + 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x10, 0xa6, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0xb1, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, - 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xb2, 0x01, 0x12, 0x2a, - 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, - 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, - 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xb3, 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, - 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x4d, 0x50, - 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xb4, 0x01, 0x12, 0x1a, 0x0a, - 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x49, 0x44, 0x10, 0xb5, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x53, 0x59, 0x53, - 0x54, 0x45, 0x4d, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, 0xb6, 0x01, 0x12, 0x28, 0x0a, 0x23, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, - 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0xb7, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, - 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0xb8, 0x01, 0x12, - 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, - 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0xb9, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x46, 0x41, 0x42, 0x52, - 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0xba, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, - 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbb, 0x01, 0x12, 0x2c, - 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x4d, 0x41, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x5f, - 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0xbc, 0x01, 0x12, 0x25, 0x0a, 0x20, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, - 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x10, 0xbd, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xbe, 0x01, 0x12, 0x24, 0x0a, - 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, - 0x10, 0xbf, 0x01, 0x12, 0x36, 0x0a, 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4d, 0x41, 0x5f, 0x4d, 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x5f, 0x50, - 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0xc0, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x49, - 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0xc1, 0x01, 0x12, 0x26, 0x0a, - 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, - 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0xc2, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, - 0x4e, 0x41, 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0xc3, 0x01, 0x12, 0x2c, 0x0a, - 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, - 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x41, - 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0xc4, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, - 0x5f, 0x4d, 0x44, 0x49, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0xc5, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, - 0xc6, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, - 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, - 0xc7, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc8, 0x01, - 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x10, 0xc9, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, + 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x10, 0xa7, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x44, 0x4f, + 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x10, 0xa8, + 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, + 0x41, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x4f, 0x50, 0x10, 0xa9, 0x01, 0x12, 0x30, 0x0a, 0x2b, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, + 0x41, 0x52, 0x45, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x49, + 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xaa, 0x01, 0x12, 0x20, 0x0a, + 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, + 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xab, 0x01, 0x12, + 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, + 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x4a, 0x4f, 0x52, 0x5f, 0x56, 0x45, + 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xac, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x46, 0x49, 0x52, 0x4d, 0x57, 0x41, 0x52, 0x45, + 0x5f, 0x4d, 0x49, 0x4e, 0x4f, 0x52, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xad, + 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x4f, 0x52, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x10, 0xae, 0x01, 0x12, 0x46, 0x0a, 0x41, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x47, 0x41, 0x54, 0x45, + 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x52, 0x4f, 0x4d, + 0x5f, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x10, 0xaf, 0x01, 0x12, + 0x15, 0x0a, 0x10, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0xb0, 0x01, 0x12, 0x23, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x43, 0x53, 0x45, 0x43, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb1, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, + 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, + 0x50, 0x10, 0xb2, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, + 0x5f, 0x54, 0x4f, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xb3, 0x01, + 0x12, 0x31, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, + 0x5f, 0x54, 0x4f, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x4d, 0x41, 0x50, + 0x10, 0xb4, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x44, 0x10, 0xb5, 0x01, 0x12, + 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, + 0x41, 0x58, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x43, 0x4f, 0x52, 0x45, 0x53, 0x10, + 0xb6, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x43, 0x4f, + 0x4e, 0x46, 0x49, 0x47, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb7, 0x01, 0x12, 0x27, 0x0a, 0x22, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, + 0x54, 0x53, 0x10, 0xb8, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb9, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, + 0x46, 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x10, 0xba, + 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x46, 0x41, 0x42, 0x52, 0x49, 0x43, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0xbb, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x44, 0x4d, 0x41, 0x5f, 0x4d, + 0x45, 0x4d, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, + 0xbc, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, + 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xbd, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, + 0x45, 0x44, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x4f, 0x56, 0x45, 0x52, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x10, 0xbe, 0x01, 0x12, 0x24, 0x0a, 0x1f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, + 0x53, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xbf, 0x01, 0x12, 0x36, 0x0a, 0x31, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4d, 0x41, 0x5f, 0x4d, 0x45, + 0x4d, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x4f, 0x4f, 0x4c, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0xc0, + 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, + 0x10, 0xc1, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x4e, 0x41, + 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0xc2, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x49, 0x45, 0x53, 0x10, 0xca, 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, - 0x5f, 0x4f, 0x46, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, - 0x4c, 0x41, 0x53, 0x53, 0x45, 0x53, 0x10, 0xcb, 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, - 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, - 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xcc, 0x01, 0x12, 0x35, 0x0a, 0x30, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, - 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, - 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, - 0x10, 0xcd, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, - 0x49, 0x44, 0x10, 0xce, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x54, 0x41, - 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0xcf, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, - 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xd0, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, 0x41, 0x54, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xd1, 0x01, 0x12, 0x26, 0x0a, 0x21, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4e, 0x41, 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, + 0x10, 0xc3, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x4f, 0x55, + 0x42, 0x4c, 0x45, 0x5f, 0x4e, 0x41, 0x50, 0x54, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0xc4, + 0x01, 0x12, 0x25, 0x0a, 0x20, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x53, 0x4c, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x44, 0x49, 0x4f, 0x5f, 0x41, 0x44, 0x44, 0x52, + 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc5, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0xc6, 0x01, 0x12, 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0xc7, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, + 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x4c, + 0x49, 0x53, 0x54, 0x10, 0xc8, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x5f, + 0x4d, 0x59, 0x5f, 0x4d, 0x41, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x10, 0xc9, + 0x01, 0x12, 0x29, 0x0a, 0x24, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4d, 0x59, 0x5f, 0x4d, 0x41, + 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x49, 0x45, 0x53, 0x10, 0xca, 0x01, 0x12, 0x31, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, - 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, - 0x54, 0x10, 0xd2, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xd3, 0x01, 0x12, 0x1c, 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, - 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x46, - 0x49, 0x4c, 0x45, 0x10, 0xd4, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, - 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0xd5, 0x01, 0x12, - 0x1a, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, - 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x57, 0x44, 0x10, 0xd6, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, - 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x52, 0x10, 0xd7, 0x01, 0x12, 0x1f, 0x0a, - 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, 0x45, 0x10, 0xd8, 0x01, 0x12, 0x2f, - 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x48, 0x4f, - 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xd9, 0x01, 0x12, - 0x34, 0x0a, 0x2f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, - 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x59, 0x10, 0xda, 0x01, 0x12, 0x3a, 0x0a, 0x35, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x5f, 0x53, - 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, - 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0xdb, - 0x01, 0x12, 0x3c, 0x0a, 0x37, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x52, 0x45, 0x47, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, - 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0xdc, 0x01, 0x12, - 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, - 0x45, 0x47, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, - 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, 0xdd, 0x01, 0x12, 0x1f, 0x0a, 0x1a, + 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x4f, 0x46, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, + 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x45, 0x53, 0x10, 0xcb, 0x01, 0x12, + 0x31, 0x0a, 0x2c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, + 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, + 0xcc, 0x01, 0x12, 0x35, 0x0a, 0x30, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x4d, 0x50, 0x4c, 0x53, 0x5f, 0x45, 0x58, 0x50, 0x5f, 0x54, + 0x4f, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4c, 0x41, + 0x53, 0x53, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0xcd, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, + 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x4f, + 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x10, 0xce, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, + 0x5f, 0x53, 0x41, 0x5f, 0x54, 0x41, 0x47, 0x5f, 0x54, 0x50, 0x49, 0x44, 0x10, 0xcf, 0x01, 0x12, + 0x2e, 0x0a, 0x29, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, + 0x50, 0x53, 0x45, 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, + 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xd0, 0x01, 0x12, + 0x21, 0x0a, 0x1c, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4e, + 0x41, 0x54, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, + 0xd1, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, + 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xd2, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x43, 0x4d, 0x50, 0x5f, 0x4d, + 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0xd3, 0x01, 0x12, 0x1c, + 0x0a, 0x17, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x52, + 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0xd4, 0x01, 0x12, 0x27, 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, - 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xde, 0x01, 0x12, 0x2a, 0x0a, - 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, - 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xdf, 0x01, 0x12, 0x39, 0x0a, 0x34, 0x53, 0x57, 0x49, - 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, - 0x59, 0x10, 0xe0, 0x01, 0x12, 0x39, 0x0a, 0x34, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x49, - 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0xe1, 0x01, 0x12, - 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x56, 0x45, - 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xe2, 0x01, 0x12, 0x28, 0x0a, 0x23, - 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, - 0x49, 0x4f, 0x4e, 0x10, 0xe3, 0x01, 0x12, 0x22, 0x0a, 0x1d, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x54, 0x57, 0x41, 0x4d, 0x50, 0x5f, - 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xe4, 0x01, 0x12, 0x39, 0x0a, 0x34, 0x53, 0x57, - 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x4e, 0x45, 0x58, 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x10, 0xe5, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, - 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x56, 0x4f, 0x51, 0x53, 0x10, 0xe6, 0x01, 0x12, 0x26, 0x0a, - 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, - 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, - 0x53, 0x53, 0x10, 0xe7, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe8, 0x01, 0x2a, 0x93, 0x05, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, + 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, + 0x53, 0x53, 0x10, 0xd5, 0x01, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x57, 0x44, 0x10, 0xd6, + 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x43, 0x52, 0x45, 0x44, 0x49, 0x54, 0x5f, 0x57, 0x44, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x52, + 0x10, 0xd7, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x49, 0x53, 0x4f, 0x4c, 0x41, 0x54, + 0x45, 0x10, 0xd8, 0x01, 0x12, 0x2f, 0x0a, 0x2a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x49, 0x46, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x10, 0xd9, 0x01, 0x12, 0x34, 0x0a, 0x2f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, + 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x45, 0x56, 0x45, 0x4e, + 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xda, 0x01, 0x12, 0x3a, 0x0a, 0x35, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x5f, 0x46, + 0x41, 0x54, 0x41, 0x4c, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, + 0x5f, 0x53, 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, + 0x47, 0x4f, 0x52, 0x59, 0x10, 0xdb, 0x01, 0x12, 0x3c, 0x0a, 0x37, 0x53, 0x57, 0x49, 0x54, 0x43, + 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, + 0x4e, 0x47, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, + 0x44, 0x4b, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, + 0x52, 0x59, 0x10, 0xdc, 0x01, 0x12, 0x3b, 0x0a, 0x36, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x52, 0x45, 0x47, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x5f, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x53, 0x49, 0x43, 0x5f, 0x53, 0x44, 0x4b, 0x5f, + 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x10, + 0xdd, 0x01, 0x12, 0x1f, 0x0a, 0x1a, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x5f, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0xde, 0x01, 0x12, 0x2a, 0x0a, 0x25, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x54, 0x58, 0x5f, + 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, 0xdf, 0x01, 0x12, + 0x39, 0x0a, 0x34, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4d, 0x49, 0x4e, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, + 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0xe0, 0x01, 0x12, 0x39, 0x0a, 0x34, 0x53, 0x57, + 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x4d, 0x41, 0x58, 0x49, 0x4d, 0x55, 0x4d, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, + 0x54, 0x59, 0x10, 0xe1, 0x01, 0x12, 0x2b, 0x0a, 0x26, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, + 0x4f, 0x4e, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x10, + 0xe2, 0x01, 0x12, 0x28, 0x0a, 0x23, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x57, 0x41, 0x4d, + 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xe3, 0x01, 0x12, 0x22, 0x0a, 0x1d, + 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, + 0x54, 0x57, 0x41, 0x4d, 0x50, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xe4, 0x01, + 0x12, 0x39, 0x0a, 0x34, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x4e, 0x45, 0x58, + 0x54, 0x5f, 0x48, 0x4f, 0x50, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x45, 0x4d, 0x42, + 0x45, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x10, 0xe5, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x56, 0x4f, 0x51, 0x53, + 0x10, 0xe6, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x41, 0x43, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x45, + 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0xe7, 0x01, 0x12, 0x20, 0x0a, 0x1b, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x4f, 0x45, 0x5f, 0x44, + 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe8, 0x01, 0x12, 0x36, 0x0a, + 0x31, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x43, 0x4d, + 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x49, + 0x46, 0x59, 0x10, 0xe9, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, + 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x10, 0xea, 0x01, 0x12, 0x26, 0x0a, 0x21, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x5f, 0x45, 0x43, 0x48, 0x4f, + 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0xeb, 0x01, 0x12, 0x21, 0x0a, 0x1c, 0x53, + 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0xec, 0x01, 0x12, 0x27, + 0x0a, 0x22, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, + 0x4c, 0x45, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, + 0x4c, 0x49, 0x53, 0x54, 0x10, 0xed, 0x01, 0x2a, 0x93, 0x05, 0x0a, 0x10, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, @@ -6063,21 +6146,22 @@ var file_dataplane_proto_sai_switch_proto_goTypes = []any{ (SwitchFailoverConfigMode)(0), // 47: lemming.dataplane.sai.SwitchFailoverConfigMode (SwitchHostifOperStatusUpdateMode)(0), // 48: lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode (SwitchAsicSdkHealthCategory)(0), // 49: lemming.dataplane.sai.SwitchAsicSdkHealthCategory - (*SwitchAttribute)(nil), // 50: lemming.dataplane.sai.SwitchAttribute - (SwitchOperStatus)(0), // 51: lemming.dataplane.sai.SwitchOperStatus - (*FdbEventNotificationData)(nil), // 52: lemming.dataplane.sai.FdbEventNotificationData - (*PortOperStatusNotification)(nil), // 53: lemming.dataplane.sai.PortOperStatusNotification - (*HostifPacketAttribute)(nil), // 54: lemming.dataplane.sai.HostifPacketAttribute - (*QueueDeadlockNotificationData)(nil), // 55: lemming.dataplane.sai.QueueDeadlockNotificationData - (*BfdSessionStateChangeNotificationData)(nil), // 56: lemming.dataplane.sai.BfdSessionStateChangeNotificationData - (*TamEventActionAttribute)(nil), // 57: lemming.dataplane.sai.TamEventActionAttribute - (*IpsecSaStatusNotificationData)(nil), // 58: lemming.dataplane.sai.IpsecSaStatusNotificationData - (SwitchStat)(0), // 59: lemming.dataplane.sai.SwitchStat - (TunnelType)(0), // 60: lemming.dataplane.sai.TunnelType - (TunnelEncapEcnMode)(0), // 61: lemming.dataplane.sai.TunnelEncapEcnMode - (TunnelDecapEcnMode)(0), // 62: lemming.dataplane.sai.TunnelDecapEcnMode - (TunnelVxlanUdpSportMode)(0), // 63: lemming.dataplane.sai.TunnelVxlanUdpSportMode - (*SwitchTunnelAttribute)(nil), // 64: lemming.dataplane.sai.SwitchTunnelAttribute + (StatsCountMode)(0), // 50: lemming.dataplane.sai.StatsCountMode + (*SwitchAttribute)(nil), // 51: lemming.dataplane.sai.SwitchAttribute + (SwitchOperStatus)(0), // 52: lemming.dataplane.sai.SwitchOperStatus + (*FdbEventNotificationData)(nil), // 53: lemming.dataplane.sai.FdbEventNotificationData + (*PortOperStatusNotification)(nil), // 54: lemming.dataplane.sai.PortOperStatusNotification + (*HostifPacketAttribute)(nil), // 55: lemming.dataplane.sai.HostifPacketAttribute + (*QueueDeadlockNotificationData)(nil), // 56: lemming.dataplane.sai.QueueDeadlockNotificationData + (*BfdSessionStateChangeNotificationData)(nil), // 57: lemming.dataplane.sai.BfdSessionStateChangeNotificationData + (*TamEventActionAttribute)(nil), // 58: lemming.dataplane.sai.TamEventActionAttribute + (*IpsecSaStatusNotificationData)(nil), // 59: lemming.dataplane.sai.IpsecSaStatusNotificationData + (SwitchStat)(0), // 60: lemming.dataplane.sai.SwitchStat + (TunnelType)(0), // 61: lemming.dataplane.sai.TunnelType + (TunnelEncapEcnMode)(0), // 62: lemming.dataplane.sai.TunnelEncapEcnMode + (TunnelDecapEcnMode)(0), // 63: lemming.dataplane.sai.TunnelDecapEcnMode + (TunnelVxlanUdpSportMode)(0), // 64: lemming.dataplane.sai.TunnelVxlanUdpSportMode + (*SwitchTunnelAttribute)(nil), // 65: lemming.dataplane.sai.SwitchTunnelAttribute } var file_dataplane_proto_sai_switch_proto_depIdxs = []int32{ 38, // 0: lemming.dataplane.sai.CreateSwitchRequest.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode @@ -6099,81 +6183,83 @@ var file_dataplane_proto_sai_switch_proto_depIdxs = []int32{ 49, // 16: lemming.dataplane.sai.CreateSwitchRequest.reg_fatal_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory 49, // 17: lemming.dataplane.sai.CreateSwitchRequest.reg_warning_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory 49, // 18: lemming.dataplane.sai.CreateSwitchRequest.reg_notice_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 38, // 19: lemming.dataplane.sai.SetSwitchAttributeRequest.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode - 39, // 20: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 39, // 21: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 39, // 22: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 40, // 23: lemming.dataplane.sai.SetSwitchAttributeRequest.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 40, // 24: lemming.dataplane.sai.SetSwitchAttributeRequest.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm - 39, // 25: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 41, // 26: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap - 41, // 27: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap - 47, // 28: lemming.dataplane.sai.SetSwitchAttributeRequest.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode - 48, // 29: lemming.dataplane.sai.SetSwitchAttributeRequest.hostif_oper_status_update_mode:type_name -> lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode - 49, // 30: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_fatal_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 49, // 31: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_warning_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 49, // 32: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_notice_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory - 0, // 33: lemming.dataplane.sai.GetSwitchAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchAttr - 50, // 34: lemming.dataplane.sai.GetSwitchAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchAttribute - 51, // 35: lemming.dataplane.sai.SwitchStateChangeNotificationResponse.switch_oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus - 52, // 36: lemming.dataplane.sai.FdbEventNotificationResponse.data:type_name -> lemming.dataplane.sai.FdbEventNotificationData - 53, // 37: lemming.dataplane.sai.PortStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.PortOperStatusNotification - 54, // 38: lemming.dataplane.sai.PacketEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.HostifPacketAttribute - 55, // 39: lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse.data:type_name -> lemming.dataplane.sai.QueueDeadlockNotificationData - 56, // 40: lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.BfdSessionStateChangeNotificationData - 57, // 41: lemming.dataplane.sai.TamEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.TamEventActionAttribute - 58, // 42: lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse.data:type_name -> lemming.dataplane.sai.IpsecSaStatusNotificationData - 59, // 43: lemming.dataplane.sai.GetSwitchStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.SwitchStat - 60, // 44: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 39, // 45: lemming.dataplane.sai.CreateSwitchTunnelRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 61, // 46: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode - 62, // 47: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode - 63, // 48: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 39, // 49: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 63, // 50: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 1, // 51: lemming.dataplane.sai.GetSwitchTunnelAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchTunnelAttr - 64, // 52: lemming.dataplane.sai.GetSwitchTunnelAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchTunnelAttribute - 2, // 53: lemming.dataplane.sai.Switch.CreateSwitch:input_type -> lemming.dataplane.sai.CreateSwitchRequest - 4, // 54: lemming.dataplane.sai.Switch.RemoveSwitch:input_type -> lemming.dataplane.sai.RemoveSwitchRequest - 6, // 55: lemming.dataplane.sai.Switch.SetSwitchAttribute:input_type -> lemming.dataplane.sai.SetSwitchAttributeRequest - 10, // 56: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:input_type -> lemming.dataplane.sai.SwitchStateChangeNotificationRequest - 12, // 57: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:input_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationRequest - 14, // 58: lemming.dataplane.sai.Switch.FdbEventNotification:input_type -> lemming.dataplane.sai.FdbEventNotificationRequest - 16, // 59: lemming.dataplane.sai.Switch.PortStateChangeNotification:input_type -> lemming.dataplane.sai.PortStateChangeNotificationRequest - 18, // 60: lemming.dataplane.sai.Switch.PacketEventNotification:input_type -> lemming.dataplane.sai.PacketEventNotificationRequest - 20, // 61: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:input_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationRequest - 22, // 62: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:input_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationRequest - 24, // 63: lemming.dataplane.sai.Switch.TamEventNotification:input_type -> lemming.dataplane.sai.TamEventNotificationRequest - 26, // 64: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:input_type -> lemming.dataplane.sai.IpsecSaStatusChangeNotificationRequest - 8, // 65: lemming.dataplane.sai.Switch.GetSwitchAttribute:input_type -> lemming.dataplane.sai.GetSwitchAttributeRequest - 28, // 66: lemming.dataplane.sai.Switch.GetSwitchStats:input_type -> lemming.dataplane.sai.GetSwitchStatsRequest - 30, // 67: lemming.dataplane.sai.Switch.CreateSwitchTunnel:input_type -> lemming.dataplane.sai.CreateSwitchTunnelRequest - 32, // 68: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:input_type -> lemming.dataplane.sai.RemoveSwitchTunnelRequest - 34, // 69: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeRequest - 36, // 70: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeRequest - 3, // 71: lemming.dataplane.sai.Switch.CreateSwitch:output_type -> lemming.dataplane.sai.CreateSwitchResponse - 5, // 72: lemming.dataplane.sai.Switch.RemoveSwitch:output_type -> lemming.dataplane.sai.RemoveSwitchResponse - 7, // 73: lemming.dataplane.sai.Switch.SetSwitchAttribute:output_type -> lemming.dataplane.sai.SetSwitchAttributeResponse - 11, // 74: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:output_type -> lemming.dataplane.sai.SwitchStateChangeNotificationResponse - 13, // 75: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:output_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationResponse - 15, // 76: lemming.dataplane.sai.Switch.FdbEventNotification:output_type -> lemming.dataplane.sai.FdbEventNotificationResponse - 17, // 77: lemming.dataplane.sai.Switch.PortStateChangeNotification:output_type -> lemming.dataplane.sai.PortStateChangeNotificationResponse - 19, // 78: lemming.dataplane.sai.Switch.PacketEventNotification:output_type -> lemming.dataplane.sai.PacketEventNotificationResponse - 21, // 79: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:output_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse - 23, // 80: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:output_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse - 25, // 81: lemming.dataplane.sai.Switch.TamEventNotification:output_type -> lemming.dataplane.sai.TamEventNotificationResponse - 27, // 82: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:output_type -> lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse - 9, // 83: lemming.dataplane.sai.Switch.GetSwitchAttribute:output_type -> lemming.dataplane.sai.GetSwitchAttributeResponse - 29, // 84: lemming.dataplane.sai.Switch.GetSwitchStats:output_type -> lemming.dataplane.sai.GetSwitchStatsResponse - 31, // 85: lemming.dataplane.sai.Switch.CreateSwitchTunnel:output_type -> lemming.dataplane.sai.CreateSwitchTunnelResponse - 33, // 86: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:output_type -> lemming.dataplane.sai.RemoveSwitchTunnelResponse - 35, // 87: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeResponse - 37, // 88: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeResponse - 71, // [71:89] is the sub-list for method output_type - 53, // [53:71] is the sub-list for method input_type - 53, // [53:53] is the sub-list for extension type_name - 53, // [53:53] is the sub-list for extension extendee - 0, // [0:53] is the sub-list for field type_name + 50, // 19: lemming.dataplane.sai.CreateSwitchRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 38, // 20: lemming.dataplane.sai.SetSwitchAttributeRequest.switching_mode:type_name -> lemming.dataplane.sai.SwitchSwitchingMode + 39, // 21: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_unicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 39, // 22: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_broadcast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 39, // 23: lemming.dataplane.sai.SetSwitchAttributeRequest.fdb_multicast_miss_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 40, // 24: lemming.dataplane.sai.SetSwitchAttributeRequest.ecmp_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 40, // 25: lemming.dataplane.sai.SetSwitchAttributeRequest.lag_default_hash_algorithm:type_name -> lemming.dataplane.sai.HashAlgorithm + 39, // 26: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_dlr_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 41, // 27: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dld_interval:type_name -> lemming.dataplane.sai.UintMap + 41, // 28: lemming.dataplane.sai.SetSwitchAttributeRequest.pfc_tc_dlr_interval:type_name -> lemming.dataplane.sai.UintMap + 47, // 29: lemming.dataplane.sai.SetSwitchAttributeRequest.failover_config_mode:type_name -> lemming.dataplane.sai.SwitchFailoverConfigMode + 48, // 30: lemming.dataplane.sai.SetSwitchAttributeRequest.hostif_oper_status_update_mode:type_name -> lemming.dataplane.sai.SwitchHostifOperStatusUpdateMode + 49, // 31: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_fatal_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 49, // 32: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_warning_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 49, // 33: lemming.dataplane.sai.SetSwitchAttributeRequest.reg_notice_switch_asic_sdk_health_category:type_name -> lemming.dataplane.sai.SwitchAsicSdkHealthCategory + 50, // 34: lemming.dataplane.sai.SetSwitchAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 35: lemming.dataplane.sai.GetSwitchAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchAttr + 51, // 36: lemming.dataplane.sai.GetSwitchAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchAttribute + 52, // 37: lemming.dataplane.sai.SwitchStateChangeNotificationResponse.switch_oper_status:type_name -> lemming.dataplane.sai.SwitchOperStatus + 53, // 38: lemming.dataplane.sai.FdbEventNotificationResponse.data:type_name -> lemming.dataplane.sai.FdbEventNotificationData + 54, // 39: lemming.dataplane.sai.PortStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.PortOperStatusNotification + 55, // 40: lemming.dataplane.sai.PacketEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.HostifPacketAttribute + 56, // 41: lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse.data:type_name -> lemming.dataplane.sai.QueueDeadlockNotificationData + 57, // 42: lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse.data:type_name -> lemming.dataplane.sai.BfdSessionStateChangeNotificationData + 58, // 43: lemming.dataplane.sai.TamEventNotificationResponse.attrs:type_name -> lemming.dataplane.sai.TamEventActionAttribute + 59, // 44: lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse.data:type_name -> lemming.dataplane.sai.IpsecSaStatusNotificationData + 60, // 45: lemming.dataplane.sai.GetSwitchStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.SwitchStat + 61, // 46: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType + 39, // 47: lemming.dataplane.sai.CreateSwitchTunnelRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 62, // 48: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_encap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelEncapEcnMode + 63, // 49: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_decap_ecn_mode:type_name -> lemming.dataplane.sai.TunnelDecapEcnMode + 64, // 50: lemming.dataplane.sai.CreateSwitchTunnelRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode + 39, // 51: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 64, // 52: lemming.dataplane.sai.SetSwitchTunnelAttributeRequest.tunnel_vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode + 1, // 53: lemming.dataplane.sai.GetSwitchTunnelAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.SwitchTunnelAttr + 65, // 54: lemming.dataplane.sai.GetSwitchTunnelAttributeResponse.attr:type_name -> lemming.dataplane.sai.SwitchTunnelAttribute + 2, // 55: lemming.dataplane.sai.Switch.CreateSwitch:input_type -> lemming.dataplane.sai.CreateSwitchRequest + 4, // 56: lemming.dataplane.sai.Switch.RemoveSwitch:input_type -> lemming.dataplane.sai.RemoveSwitchRequest + 6, // 57: lemming.dataplane.sai.Switch.SetSwitchAttribute:input_type -> lemming.dataplane.sai.SetSwitchAttributeRequest + 10, // 58: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:input_type -> lemming.dataplane.sai.SwitchStateChangeNotificationRequest + 12, // 59: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:input_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationRequest + 14, // 60: lemming.dataplane.sai.Switch.FdbEventNotification:input_type -> lemming.dataplane.sai.FdbEventNotificationRequest + 16, // 61: lemming.dataplane.sai.Switch.PortStateChangeNotification:input_type -> lemming.dataplane.sai.PortStateChangeNotificationRequest + 18, // 62: lemming.dataplane.sai.Switch.PacketEventNotification:input_type -> lemming.dataplane.sai.PacketEventNotificationRequest + 20, // 63: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:input_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationRequest + 22, // 64: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:input_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationRequest + 24, // 65: lemming.dataplane.sai.Switch.TamEventNotification:input_type -> lemming.dataplane.sai.TamEventNotificationRequest + 26, // 66: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:input_type -> lemming.dataplane.sai.IpsecSaStatusChangeNotificationRequest + 8, // 67: lemming.dataplane.sai.Switch.GetSwitchAttribute:input_type -> lemming.dataplane.sai.GetSwitchAttributeRequest + 28, // 68: lemming.dataplane.sai.Switch.GetSwitchStats:input_type -> lemming.dataplane.sai.GetSwitchStatsRequest + 30, // 69: lemming.dataplane.sai.Switch.CreateSwitchTunnel:input_type -> lemming.dataplane.sai.CreateSwitchTunnelRequest + 32, // 70: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:input_type -> lemming.dataplane.sai.RemoveSwitchTunnelRequest + 34, // 71: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeRequest + 36, // 72: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:input_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeRequest + 3, // 73: lemming.dataplane.sai.Switch.CreateSwitch:output_type -> lemming.dataplane.sai.CreateSwitchResponse + 5, // 74: lemming.dataplane.sai.Switch.RemoveSwitch:output_type -> lemming.dataplane.sai.RemoveSwitchResponse + 7, // 75: lemming.dataplane.sai.Switch.SetSwitchAttribute:output_type -> lemming.dataplane.sai.SetSwitchAttributeResponse + 11, // 76: lemming.dataplane.sai.Switch.SwitchStateChangeNotification:output_type -> lemming.dataplane.sai.SwitchStateChangeNotificationResponse + 13, // 77: lemming.dataplane.sai.Switch.SwitchShutdownRequestNotification:output_type -> lemming.dataplane.sai.SwitchShutdownRequestNotificationResponse + 15, // 78: lemming.dataplane.sai.Switch.FdbEventNotification:output_type -> lemming.dataplane.sai.FdbEventNotificationResponse + 17, // 79: lemming.dataplane.sai.Switch.PortStateChangeNotification:output_type -> lemming.dataplane.sai.PortStateChangeNotificationResponse + 19, // 80: lemming.dataplane.sai.Switch.PacketEventNotification:output_type -> lemming.dataplane.sai.PacketEventNotificationResponse + 21, // 81: lemming.dataplane.sai.Switch.QueuePfcDeadlockNotification:output_type -> lemming.dataplane.sai.QueuePfcDeadlockNotificationResponse + 23, // 82: lemming.dataplane.sai.Switch.BfdSessionStateChangeNotification:output_type -> lemming.dataplane.sai.BfdSessionStateChangeNotificationResponse + 25, // 83: lemming.dataplane.sai.Switch.TamEventNotification:output_type -> lemming.dataplane.sai.TamEventNotificationResponse + 27, // 84: lemming.dataplane.sai.Switch.IpsecSaStatusChangeNotification:output_type -> lemming.dataplane.sai.IpsecSaStatusNotificationDataResponse + 9, // 85: lemming.dataplane.sai.Switch.GetSwitchAttribute:output_type -> lemming.dataplane.sai.GetSwitchAttributeResponse + 29, // 86: lemming.dataplane.sai.Switch.GetSwitchStats:output_type -> lemming.dataplane.sai.GetSwitchStatsResponse + 31, // 87: lemming.dataplane.sai.Switch.CreateSwitchTunnel:output_type -> lemming.dataplane.sai.CreateSwitchTunnelResponse + 33, // 88: lemming.dataplane.sai.Switch.RemoveSwitchTunnel:output_type -> lemming.dataplane.sai.RemoveSwitchTunnelResponse + 35, // 89: lemming.dataplane.sai.Switch.SetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.SetSwitchTunnelAttributeResponse + 37, // 90: lemming.dataplane.sai.Switch.GetSwitchTunnelAttribute:output_type -> lemming.dataplane.sai.GetSwitchTunnelAttributeResponse + 73, // [73:91] is the sub-list for method output_type + 55, // [55:73] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_switch_proto_init() } diff --git a/dataplane/proto/sai/switch.proto b/dataplane/proto/sai/switch.proto index 30eff8078..2f3b39ddb 100644 --- a/dataplane/proto/sai/switch.proto +++ b/dataplane/proto/sai/switch.proto @@ -7,609 +7,658 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum SwitchAttr { - SWITCH_ATTR_UNSPECIFIED = 0; - SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS = 1; - SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS = 2; - SWITCH_ATTR_PORT_LIST = 3; - SWITCH_ATTR_PORT_MAX_MTU = 4; - SWITCH_ATTR_CPU_PORT = 5; - SWITCH_ATTR_MAX_VIRTUAL_ROUTERS = 6; - SWITCH_ATTR_FDB_TABLE_SIZE = 7; - SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE = 8; - SWITCH_ATTR_L3_ROUTE_TABLE_SIZE = 9; - SWITCH_ATTR_LAG_MEMBERS = 10; - SWITCH_ATTR_NUMBER_OF_LAGS = 11; - SWITCH_ATTR_ECMP_MEMBERS = 12; - SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS = 13; - SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES = 14; - SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES = 15; - SWITCH_ATTR_NUMBER_OF_QUEUES = 16; - SWITCH_ATTR_NUMBER_OF_CPU_QUEUES = 17; - SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED = 18; - SWITCH_ATTR_OPER_STATUS = 19; - SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS = 20; - SWITCH_ATTR_TEMP_LIST = 21; - SWITCH_ATTR_MAX_TEMP = 22; - SWITCH_ATTR_AVERAGE_TEMP = 23; - SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY = 24; - SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY = 25; - SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY = 26; - SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY = 27; - SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY = 28; - SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY = 29; - SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE = 30; - SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE = 31; - SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE = 32; - SWITCH_ATTR_PORT_USER_META_DATA_RANGE = 33; - SWITCH_ATTR_VLAN_USER_META_DATA_RANGE = 34; - SWITCH_ATTR_ACL_USER_META_DATA_RANGE = 35; - SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE = 36; - SWITCH_ATTR_DEFAULT_VLAN_ID = 37; - SWITCH_ATTR_DEFAULT_STP_INST_ID = 38; - SWITCH_ATTR_MAX_STP_INSTANCE = 39; - SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID = 40; - SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID = 41; - SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID = 42; - SWITCH_ATTR_INGRESS_ACL = 43; - SWITCH_ATTR_EGRESS_ACL = 44; - SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES = 45; - SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS = 46; - SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL = 47; - SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP = 48; - SWITCH_ATTR_TOTAL_BUFFER_SIZE = 49; - SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM = 50; - SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM = 51; - SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY = 52; - SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY = 53; - SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY = 54; - SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY = 55; - SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY = 56; - SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY = 57; - SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY = 58; - SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY = 59; - SWITCH_ATTR_AVAILABLE_FDB_ENTRY = 60; - SWITCH_ATTR_AVAILABLE_L2MC_ENTRY = 61; - SWITCH_ATTR_AVAILABLE_IPMC_ENTRY = 62; - SWITCH_ATTR_AVAILABLE_SNAT_ENTRY = 63; - SWITCH_ATTR_AVAILABLE_DNAT_ENTRY = 64; - SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY = 65; - SWITCH_ATTR_AVAILABLE_ACL_TABLE = 66; - SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP = 67; - SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY = 68; - SWITCH_ATTR_DEFAULT_TRAP_GROUP = 69; - SWITCH_ATTR_ECMP_HASH = 70; - SWITCH_ATTR_LAG_HASH = 71; - SWITCH_ATTR_RESTART_WARM = 72; - SWITCH_ATTR_WARM_RECOVER = 73; - SWITCH_ATTR_RESTART_TYPE = 74; - SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL = 75; - SWITCH_ATTR_NV_STORAGE_SIZE = 76; - SWITCH_ATTR_MAX_ACL_ACTION_COUNT = 77; - SWITCH_ATTR_MAX_ACL_RANGE_COUNT = 78; - SWITCH_ATTR_ACL_CAPABILITY = 79; - SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY = 80; - SWITCH_ATTR_SWITCHING_MODE = 81; - SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE = 82; - SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE = 83; - SWITCH_ATTR_SRC_MAC_ADDRESS = 84; - SWITCH_ATTR_MAX_LEARNED_ADDRESSES = 85; - SWITCH_ATTR_FDB_AGING_TIME = 86; - SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION = 87; - SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION = 88; - SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION = 89; - SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM = 90; - SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED = 91; - SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET = 92; - SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH = 93; - SWITCH_ATTR_ECMP_HASH_IPV4 = 94; - SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4 = 95; - SWITCH_ATTR_ECMP_HASH_IPV6 = 96; - SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM = 97; - SWITCH_ATTR_LAG_DEFAULT_HASH_SEED = 98; - SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET = 99; - SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH = 100; - SWITCH_ATTR_LAG_HASH_IPV4 = 101; - SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4 = 102; - SWITCH_ATTR_LAG_HASH_IPV6 = 103; - SWITCH_ATTR_COUNTER_REFRESH_INTERVAL = 104; - SWITCH_ATTR_QOS_DEFAULT_TC = 105; - SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP = 106; - SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP = 107; - SWITCH_ATTR_QOS_DSCP_TO_TC_MAP = 108; - SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP = 109; - SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP = 110; - SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP = 111; - SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP = 112; - SWITCH_ATTR_SWITCH_SHELL_ENABLE = 113; - SWITCH_ATTR_SWITCH_PROFILE_ID = 114; - SWITCH_ATTR_SWITCH_HARDWARE_INFO = 115; - SWITCH_ATTR_FIRMWARE_PATH_NAME = 116; - SWITCH_ATTR_INIT_SWITCH = 117; - SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY = 118; - SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY = 119; - SWITCH_ATTR_FDB_EVENT_NOTIFY = 120; - SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY = 121; - SWITCH_ATTR_PACKET_EVENT_NOTIFY = 122; - SWITCH_ATTR_FAST_API_ENABLE = 123; - SWITCH_ATTR_MIRROR_TC = 124; - SWITCH_ATTR_ACL_STAGE_INGRESS = 125; - SWITCH_ATTR_ACL_STAGE_EGRESS = 126; - SWITCH_ATTR_SRV6_MAX_SID_DEPTH = 127; - SWITCH_ATTR_SRV6_TLV_TYPE = 128; - SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES = 129; - SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY = 130; - SWITCH_ATTR_PFC_DLR_PACKET_ACTION = 131; - SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE = 132; - SWITCH_ATTR_PFC_TC_DLD_INTERVAL = 133; - SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE = 134; - SWITCH_ATTR_PFC_TC_DLR_INTERVAL = 135; - SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE = 136; - SWITCH_ATTR_TPID_OUTER_VLAN = 137; - SWITCH_ATTR_TPID_INNER_VLAN = 138; - SWITCH_ATTR_CRC_CHECK_ENABLE = 139; - SWITCH_ATTR_CRC_RECALCULATION_ENABLE = 140; - SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY = 141; - SWITCH_ATTR_NUMBER_OF_BFD_SESSION = 142; - SWITCH_ATTR_MAX_BFD_SESSION = 143; - SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE = 144; - SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE = 145; - SWITCH_ATTR_MIN_BFD_RX = 146; - SWITCH_ATTR_MIN_BFD_TX = 147; - SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE = 148; - SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC = 149; - SWITCH_ATTR_VXLAN_DEFAULT_PORT = 150; - SWITCH_ATTR_MAX_MIRROR_SESSION = 151; - SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION = 152; - SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE = 153; - SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL = 154; - SWITCH_ATTR_TAM_OBJECT_ID = 155; - SWITCH_ATTR_TAM_EVENT_NOTIFY = 156; - SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST = 157; - SWITCH_ATTR_PRE_SHUTDOWN = 158; - SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID = 159; - SWITCH_ATTR_NAT_ENABLE = 160; - SWITCH_ATTR_HARDWARE_ACCESS_BUS = 161; - SWITCH_ATTR_PLATFROM_CONTEXT = 162; - SWITCH_ATTR_REGISTER_READ = 163; - SWITCH_ATTR_REGISTER_WRITE = 164; - SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST = 165; - SWITCH_ATTR_FIRMWARE_LOAD_METHOD = 166; - SWITCH_ATTR_FIRMWARE_LOAD_TYPE = 167; - SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE = 168; - SWITCH_ATTR_FIRMWARE_BROADCAST_STOP = 169; - SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH = 170; - SWITCH_ATTR_FIRMWARE_STATUS = 171; - SWITCH_ATTR_FIRMWARE_MAJOR_VERSION = 172; - SWITCH_ATTR_FIRMWARE_MINOR_VERSION = 173; - SWITCH_ATTR_PORT_CONNECTOR_LIST = 174; - SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT = 175; - SWITCH_ATTR_TYPE = 176; - SWITCH_ATTR_MACSEC_OBJECT_LIST = 177; - SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP = 178; - SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP = 179; - SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 180; - SWITCH_ATTR_SWITCH_ID = 181; - SWITCH_ATTR_MAX_SYSTEM_CORES = 182; - SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST = 183; - SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS = 184; - SWITCH_ATTR_SYSTEM_PORT_LIST = 185; - SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS = 186; - SWITCH_ATTR_FABRIC_PORT_LIST = 187; - SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE = 188; - SWITCH_ATTR_FAILOVER_CONFIG_MODE = 189; - SWITCH_ATTR_SUPPORTED_FAILOVER_MODE = 190; - SWITCH_ATTR_TUNNEL_OBJECTS_LIST = 191; - SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE = 192; - SWITCH_ATTR_PRE_INGRESS_ACL = 193; - SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY = 194; - SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY = 195; - SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY = 196; - SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST = 197; - SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY = 198; - SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY = 199; - SWITCH_ATTR_MY_MAC_LIST = 200; - SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES = 201; - SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES = 202; - SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES = 203; - SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP = 204; - SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP = 205; - SWITCH_ATTR_IPSEC_OBJECT_ID = 206; - SWITCH_ATTR_IPSEC_SA_TAG_TPID = 207; - SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY = 208; - SWITCH_ATTR_NAT_EVENT_NOTIFY = 209; - SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT = 210; - SWITCH_ATTR_ECMP_MEMBER_COUNT = 211; - SWITCH_ATTR_ARS_PROFILE = 212; - SWITCH_ATTR_ACL_STAGE_POST_INGRESS = 213; - SWITCH_ATTR_CREDIT_WD = 214; - SWITCH_ATTR_CREDIT_WD_TIMER = 215; - SWITCH_ATTR_SWITCH_ISOLATE = 216; - SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE = 217; - SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY = 218; - SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 219; - SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 220; - SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 221; - SWITCH_ATTR_ACL_CHAIN_LIST = 222; - SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY = 223; - SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY = 224; - SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY = 225; - SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY = 226; - SWITCH_ATTR_AVAILABLE_TWAMP_SESSION = 227; - SWITCH_ATTR_MAX_TWAMP_SESSION = 228; - SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY = 229; - SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS = 230; - SWITCH_ATTR_ACL_STAGE_PRE_INGRESS = 231; - SWITCH_ATTR_POE_DEVICE_LIST = 232; + SWITCH_ATTR_UNSPECIFIED = 0; + SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS = 1; + SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS = 2; + SWITCH_ATTR_PORT_LIST = 3; + SWITCH_ATTR_PORT_MAX_MTU = 4; + SWITCH_ATTR_CPU_PORT = 5; + SWITCH_ATTR_MAX_VIRTUAL_ROUTERS = 6; + SWITCH_ATTR_FDB_TABLE_SIZE = 7; + SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE = 8; + SWITCH_ATTR_L3_ROUTE_TABLE_SIZE = 9; + SWITCH_ATTR_LAG_MEMBERS = 10; + SWITCH_ATTR_NUMBER_OF_LAGS = 11; + SWITCH_ATTR_ECMP_MEMBERS = 12; + SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS = 13; + SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES = 14; + SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES = 15; + SWITCH_ATTR_NUMBER_OF_QUEUES = 16; + SWITCH_ATTR_NUMBER_OF_CPU_QUEUES = 17; + SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED = 18; + SWITCH_ATTR_OPER_STATUS = 19; + SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS = 20; + SWITCH_ATTR_TEMP_LIST = 21; + SWITCH_ATTR_MAX_TEMP = 22; + SWITCH_ATTR_AVERAGE_TEMP = 23; + SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY = 24; + SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY = 25; + SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY = 26; + SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY = 27; + SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY = 28; + SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY = 29; + SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE = 30; + SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE = 31; + SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE = 32; + SWITCH_ATTR_PORT_USER_META_DATA_RANGE = 33; + SWITCH_ATTR_VLAN_USER_META_DATA_RANGE = 34; + SWITCH_ATTR_ACL_USER_META_DATA_RANGE = 35; + SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE = 36; + SWITCH_ATTR_DEFAULT_VLAN_ID = 37; + SWITCH_ATTR_DEFAULT_STP_INST_ID = 38; + SWITCH_ATTR_MAX_STP_INSTANCE = 39; + SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID = 40; + SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID = 41; + SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID = 42; + SWITCH_ATTR_INGRESS_ACL = 43; + SWITCH_ATTR_EGRESS_ACL = 44; + SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES = 45; + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS = 46; + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL = 47; + SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP = 48; + SWITCH_ATTR_TOTAL_BUFFER_SIZE = 49; + SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM = 50; + SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM = 51; + SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY = 52; + SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY = 53; + SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY = 54; + SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY = 55; + SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY = 56; + SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY = 57; + SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY = 58; + SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY = 59; + SWITCH_ATTR_AVAILABLE_FDB_ENTRY = 60; + SWITCH_ATTR_AVAILABLE_L2MC_ENTRY = 61; + SWITCH_ATTR_AVAILABLE_IPMC_ENTRY = 62; + SWITCH_ATTR_AVAILABLE_SNAT_ENTRY = 63; + SWITCH_ATTR_AVAILABLE_DNAT_ENTRY = 64; + SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY = 65; + SWITCH_ATTR_AVAILABLE_ACL_TABLE = 66; + SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP = 67; + SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY = 68; + SWITCH_ATTR_DEFAULT_TRAP_GROUP = 69; + SWITCH_ATTR_ECMP_HASH = 70; + SWITCH_ATTR_LAG_HASH = 71; + SWITCH_ATTR_RESTART_WARM = 72; + SWITCH_ATTR_WARM_RECOVER = 73; + SWITCH_ATTR_RESTART_TYPE = 74; + SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL = 75; + SWITCH_ATTR_NV_STORAGE_SIZE = 76; + SWITCH_ATTR_MAX_ACL_ACTION_COUNT = 77; + SWITCH_ATTR_MAX_ACL_RANGE_COUNT = 78; + SWITCH_ATTR_ACL_CAPABILITY = 79; + SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY = 80; + SWITCH_ATTR_SWITCHING_MODE = 81; + SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE = 82; + SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE = 83; + SWITCH_ATTR_SRC_MAC_ADDRESS = 84; + SWITCH_ATTR_MAX_LEARNED_ADDRESSES = 85; + SWITCH_ATTR_FDB_AGING_TIME = 86; + SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION = 87; + SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION = 88; + SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION = 89; + SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM = 90; + SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED = 91; + SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET = 92; + SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH = 93; + SWITCH_ATTR_ECMP_HASH_IPV4 = 94; + SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4 = 95; + SWITCH_ATTR_ECMP_HASH_IPV6 = 96; + SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM = 97; + SWITCH_ATTR_LAG_DEFAULT_HASH_SEED = 98; + SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET = 99; + SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH = 100; + SWITCH_ATTR_LAG_HASH_IPV4 = 101; + SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4 = 102; + SWITCH_ATTR_LAG_HASH_IPV6 = 103; + SWITCH_ATTR_COUNTER_REFRESH_INTERVAL = 104; + SWITCH_ATTR_QOS_DEFAULT_TC = 105; + SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP = 106; + SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP = 107; + SWITCH_ATTR_QOS_DSCP_TO_TC_MAP = 108; + SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP = 109; + SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP = 110; + SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP = 111; + SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP = 112; + SWITCH_ATTR_SWITCH_SHELL_ENABLE = 113; + SWITCH_ATTR_SWITCH_PROFILE_ID = 114; + SWITCH_ATTR_SWITCH_HARDWARE_INFO = 115; + SWITCH_ATTR_FIRMWARE_PATH_NAME = 116; + SWITCH_ATTR_INIT_SWITCH = 117; + SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY = 118; + SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY = 119; + SWITCH_ATTR_FDB_EVENT_NOTIFY = 120; + SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY = 121; + SWITCH_ATTR_PACKET_EVENT_NOTIFY = 122; + SWITCH_ATTR_FAST_API_ENABLE = 123; + SWITCH_ATTR_MIRROR_TC = 124; + SWITCH_ATTR_ACL_STAGE_INGRESS = 125; + SWITCH_ATTR_ACL_STAGE_EGRESS = 126; + SWITCH_ATTR_SRV6_MAX_SID_DEPTH = 127; + SWITCH_ATTR_SRV6_TLV_TYPE = 128; + SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES = 129; + SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY = 130; + SWITCH_ATTR_PFC_DLR_PACKET_ACTION = 131; + SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE = 132; + SWITCH_ATTR_PFC_TC_DLD_INTERVAL = 133; + SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE = 134; + SWITCH_ATTR_PFC_TC_DLR_INTERVAL = 135; + SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE = 136; + SWITCH_ATTR_TPID_OUTER_VLAN = 137; + SWITCH_ATTR_TPID_INNER_VLAN = 138; + SWITCH_ATTR_CRC_CHECK_ENABLE = 139; + SWITCH_ATTR_CRC_RECALCULATION_ENABLE = 140; + SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY = 141; + SWITCH_ATTR_NUMBER_OF_BFD_SESSION = 142; + SWITCH_ATTR_MAX_BFD_SESSION = 143; + SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE = 144; + SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE = 145; + SWITCH_ATTR_MIN_BFD_RX = 146; + SWITCH_ATTR_MIN_BFD_TX = 147; + SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE = 148; + SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC = 149; + SWITCH_ATTR_VXLAN_DEFAULT_PORT = 150; + SWITCH_ATTR_MAX_MIRROR_SESSION = 151; + SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION = 152; + SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE = 153; + SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL = 154; + SWITCH_ATTR_TAM_OBJECT_ID = 155; + SWITCH_ATTR_TAM_EVENT_NOTIFY = 156; + SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST = 157; + SWITCH_ATTR_PRE_SHUTDOWN = 158; + SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID = 159; + SWITCH_ATTR_NAT_ENABLE = 160; + SWITCH_ATTR_HARDWARE_ACCESS_BUS = 161; + SWITCH_ATTR_PLATFROM_CONTEXT = 162; + SWITCH_ATTR_REGISTER_READ = 163; + SWITCH_ATTR_REGISTER_WRITE = 164; + SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST = 165; + SWITCH_ATTR_FIRMWARE_LOAD_METHOD = 166; + SWITCH_ATTR_FIRMWARE_LOAD_TYPE = 167; + SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE = 168; + SWITCH_ATTR_FIRMWARE_BROADCAST_STOP = 169; + SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH = 170; + SWITCH_ATTR_FIRMWARE_STATUS = 171; + SWITCH_ATTR_FIRMWARE_MAJOR_VERSION = 172; + SWITCH_ATTR_FIRMWARE_MINOR_VERSION = 173; + SWITCH_ATTR_PORT_CONNECTOR_LIST = 174; + SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT = 175; + SWITCH_ATTR_TYPE = 176; + SWITCH_ATTR_MACSEC_OBJECT_LIST = 177; + SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP = 178; + SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP = 179; + SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP = 180; + SWITCH_ATTR_SWITCH_ID = 181; + SWITCH_ATTR_MAX_SYSTEM_CORES = 182; + SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST = 183; + SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS = 184; + SWITCH_ATTR_SYSTEM_PORT_LIST = 185; + SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS = 186; + SWITCH_ATTR_FABRIC_PORT_LIST = 187; + SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE = 188; + SWITCH_ATTR_FAILOVER_CONFIG_MODE = 189; + SWITCH_ATTR_SUPPORTED_FAILOVER_MODE = 190; + SWITCH_ATTR_TUNNEL_OBJECTS_LIST = 191; + SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE = 192; + SWITCH_ATTR_PRE_INGRESS_ACL = 193; + SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY = 194; + SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY = 195; + SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY = 196; + SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST = 197; + SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY = 198; + SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY = 199; + SWITCH_ATTR_MY_MAC_LIST = 200; + SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES = 201; + SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES = 202; + SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES = 203; + SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP = 204; + SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP = 205; + SWITCH_ATTR_IPSEC_OBJECT_ID = 206; + SWITCH_ATTR_IPSEC_SA_TAG_TPID = 207; + SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY = 208; + SWITCH_ATTR_NAT_EVENT_NOTIFY = 209; + SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT = 210; + SWITCH_ATTR_ECMP_MEMBER_COUNT = 211; + SWITCH_ATTR_ARS_PROFILE = 212; + SWITCH_ATTR_ACL_STAGE_POST_INGRESS = 213; + SWITCH_ATTR_CREDIT_WD = 214; + SWITCH_ATTR_CREDIT_WD_TIMER = 215; + SWITCH_ATTR_SWITCH_ISOLATE = 216; + SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE = 217; + SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY = 218; + SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 219; + SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 220; + SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY = 221; + SWITCH_ATTR_ACL_CHAIN_LIST = 222; + SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY = 223; + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY = 224; + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY = 225; + SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY = 226; + SWITCH_ATTR_AVAILABLE_TWAMP_SESSION = 227; + SWITCH_ATTR_MAX_TWAMP_SESSION = 228; + SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY = 229; + SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS = 230; + SWITCH_ATTR_ACL_STAGE_PRE_INGRESS = 231; + SWITCH_ATTR_POE_DEVICE_LIST = 232; + SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY = 233; + SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION = 234; + SWITCH_ATTR_MAX_ICMP_ECHO_SESSION = 235; + SWITCH_ATTR_STATS_COUNT_MODE = 236; + SWITCH_ATTR_SELECTIVE_COUNTER_LIST = 237; } enum SwitchTunnelAttr { - SWITCH_TUNNEL_ATTR_UNSPECIFIED = 0; - SWITCH_TUNNEL_ATTR_TUNNEL_TYPE = 1; - SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION = 2; - SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE = 3; - SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS = 4; - SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE = 5; - SWITCH_TUNNEL_ATTR_DECAP_MAPPERS = 6; - SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE = 7; - SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT = 8; - SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK = 9; - SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP = 10; - SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP = 11; - SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP = 12; - SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP = 13; + SWITCH_TUNNEL_ATTR_UNSPECIFIED = 0; + SWITCH_TUNNEL_ATTR_TUNNEL_TYPE = 1; + SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION = 2; + SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE = 3; + SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS = 4; + SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE = 5; + SWITCH_TUNNEL_ATTR_DECAP_MAPPERS = 6; + SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE = 7; + SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT = 8; + SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK = 9; + SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP = 10; + SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP = 11; + SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP = 12; + SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP = 13; } message CreateSwitchRequest { - option (sai_type) = OBJECT_TYPE_SWITCH; - optional uint64 ingress_acl = 1[(attr_enum_value) = 43]; - optional uint64 egress_acl = 2[(attr_enum_value) = 44]; - optional bool restart_warm = 3[(attr_enum_value) = 72]; - optional bool warm_recover = 4[(attr_enum_value) = 73]; - optional SwitchSwitchingMode switching_mode = 5[(attr_enum_value) = 81]; - optional bool bcast_cpu_flood_enable = 6[(attr_enum_value) = 82]; - optional bool mcast_cpu_flood_enable = 7[(attr_enum_value) = 83]; - optional bytes src_mac_address = 8[(attr_enum_value) = 84]; - optional uint32 max_learned_addresses = 9[(attr_enum_value) = 85]; - optional uint32 fdb_aging_time = 10[(attr_enum_value) = 86]; - optional PacketAction fdb_unicast_miss_packet_action = 11[(attr_enum_value) = 87]; - optional PacketAction fdb_broadcast_miss_packet_action = 12[(attr_enum_value) = 88]; - optional PacketAction fdb_multicast_miss_packet_action = 13[(attr_enum_value) = 89]; - optional HashAlgorithm ecmp_default_hash_algorithm = 14[(attr_enum_value) = 90]; - optional uint32 ecmp_default_hash_seed = 15[(attr_enum_value) = 91]; - optional uint32 ecmp_default_hash_offset = 16[(attr_enum_value) = 92]; - optional bool ecmp_default_symmetric_hash = 17[(attr_enum_value) = 93]; - optional uint64 ecmp_hash_ipv4 = 18[(attr_enum_value) = 94]; - optional uint64 ecmp_hash_ipv4_in_ipv4 = 19[(attr_enum_value) = 95]; - optional uint64 ecmp_hash_ipv6 = 20[(attr_enum_value) = 96]; - optional HashAlgorithm lag_default_hash_algorithm = 21[(attr_enum_value) = 97]; - optional uint32 lag_default_hash_seed = 22[(attr_enum_value) = 98]; - optional uint32 lag_default_hash_offset = 23[(attr_enum_value) = 99]; - optional bool lag_default_symmetric_hash = 24[(attr_enum_value) = 100]; - optional uint64 lag_hash_ipv4 = 25[(attr_enum_value) = 101]; - optional uint64 lag_hash_ipv4_in_ipv4 = 26[(attr_enum_value) = 102]; - optional uint64 lag_hash_ipv6 = 27[(attr_enum_value) = 103]; - optional uint32 counter_refresh_interval = 28[(attr_enum_value) = 104]; - optional uint32 qos_default_tc = 29[(attr_enum_value) = 105]; - optional uint64 qos_dot1p_to_tc_map = 30[(attr_enum_value) = 106]; - optional uint64 qos_dot1p_to_color_map = 31[(attr_enum_value) = 107]; - optional uint64 qos_dscp_to_tc_map = 32[(attr_enum_value) = 108]; - optional uint64 qos_dscp_to_color_map = 33[(attr_enum_value) = 109]; - optional uint64 qos_tc_to_queue_map = 34[(attr_enum_value) = 110]; - optional uint64 qos_tc_and_color_to_dot1p_map = 35[(attr_enum_value) = 111]; - optional uint64 qos_tc_and_color_to_dscp_map = 36[(attr_enum_value) = 112]; - optional bool switch_shell_enable = 37[(attr_enum_value) = 113]; - optional uint32 switch_profile_id = 38[(attr_enum_value) = 114]; - repeated int32 switch_hardware_info = 39[(attr_enum_value) = 115]; - repeated int32 firmware_path_name = 40[(attr_enum_value) = 116]; - optional bool init_switch = 41[(attr_enum_value) = 117]; - optional bool fast_api_enable = 42[(attr_enum_value) = 123]; - optional uint32 mirror_tc = 43[(attr_enum_value) = 124]; - optional PacketAction pfc_dlr_packet_action = 44[(attr_enum_value) = 131]; - repeated UintMap pfc_tc_dld_interval = 45[(attr_enum_value) = 133]; - repeated UintMap pfc_tc_dlr_interval = 46[(attr_enum_value) = 135]; - optional uint32 tpid_outer_vlan = 47[(attr_enum_value) = 137]; - optional uint32 tpid_inner_vlan = 48[(attr_enum_value) = 138]; - optional bool crc_check_enable = 49[(attr_enum_value) = 139]; - optional bool crc_recalculation_enable = 50[(attr_enum_value) = 140]; - optional bool ecn_ect_threshold_enable = 51[(attr_enum_value) = 148]; - optional bytes vxlan_default_router_mac = 52[(attr_enum_value) = 149]; - optional uint32 vxlan_default_port = 53[(attr_enum_value) = 150]; - optional bool uninit_data_plane_on_removal = 54[(attr_enum_value) = 154]; - repeated uint64 tam_object_id = 55[(attr_enum_value) = 155]; - optional bool pre_shutdown = 56[(attr_enum_value) = 158]; - optional uint64 nat_zone_counter_object_id = 57[(attr_enum_value) = 159]; - optional bool nat_enable = 58[(attr_enum_value) = 160]; - optional SwitchHardwareAccessBus hardware_access_bus = 59[(attr_enum_value) = 161]; - optional uint64 platfrom_context = 60[(attr_enum_value) = 162]; - optional bool firmware_download_broadcast = 61[(attr_enum_value) = 165]; - optional SwitchFirmwareLoadMethod firmware_load_method = 62[(attr_enum_value) = 166]; - optional SwitchFirmwareLoadType firmware_load_type = 63[(attr_enum_value) = 167]; - optional bool firmware_download_execute = 64[(attr_enum_value) = 168]; - optional bool firmware_broadcast_stop = 65[(attr_enum_value) = 169]; - optional bool firmware_verify_and_init_switch = 66[(attr_enum_value) = 170]; - optional SwitchType type = 67[(attr_enum_value) = 176]; - repeated uint64 macsec_object_list = 68[(attr_enum_value) = 177]; - optional uint64 qos_mpls_exp_to_tc_map = 69[(attr_enum_value) = 178]; - optional uint64 qos_mpls_exp_to_color_map = 70[(attr_enum_value) = 179]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 71[(attr_enum_value) = 180]; - optional uint32 switch_id = 72[(attr_enum_value) = 181]; - optional uint32 max_system_cores = 73[(attr_enum_value) = 182]; - repeated SystemPortConfig system_port_config_list = 74[(attr_enum_value) = 183]; - optional SwitchFailoverConfigMode failover_config_mode = 75[(attr_enum_value) = 189]; - repeated uint64 tunnel_objects_list = 76[(attr_enum_value) = 191]; - optional uint64 pre_ingress_acl = 77[(attr_enum_value) = 193]; - repeated uint32 slave_mdio_addr_list = 78[(attr_enum_value) = 197]; - optional uint64 qos_dscp_to_forwarding_class_map = 79[(attr_enum_value) = 204]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 80[(attr_enum_value) = 205]; - optional uint64 ipsec_object_id = 81[(attr_enum_value) = 206]; - optional uint32 ipsec_sa_tag_tpid = 82[(attr_enum_value) = 207]; - optional uint32 ecmp_member_count = 83[(attr_enum_value) = 211]; - optional uint64 ars_profile = 84[(attr_enum_value) = 212]; - optional bool credit_wd = 85[(attr_enum_value) = 214]; - optional uint32 credit_wd_timer = 86[(attr_enum_value) = 215]; - optional bool switch_isolate = 87[(attr_enum_value) = 216]; - optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 88[(attr_enum_value) = 217]; - repeated SwitchAsicSdkHealthCategory reg_fatal_switch_asic_sdk_health_category = 89[(attr_enum_value) = 219]; - repeated SwitchAsicSdkHealthCategory reg_warning_switch_asic_sdk_health_category = 90[(attr_enum_value) = 220]; - repeated SwitchAsicSdkHealthCategory reg_notice_switch_asic_sdk_health_category = 91[(attr_enum_value) = 221]; - repeated uint64 poe_device_list = 92[(attr_enum_value) = 232]; + option (sai_type) = OBJECT_TYPE_SWITCH; + optional uint64 ingress_acl = 1 [(attr_enum_value) = 43]; + optional uint64 egress_acl = 2 [(attr_enum_value) = 44]; + optional bool restart_warm = 3 [(attr_enum_value) = 72]; + optional bool warm_recover = 4 [(attr_enum_value) = 73]; + optional SwitchSwitchingMode switching_mode = 5 [(attr_enum_value) = 81]; + optional bool bcast_cpu_flood_enable = 6 [(attr_enum_value) = 82]; + optional bool mcast_cpu_flood_enable = 7 [(attr_enum_value) = 83]; + optional bytes src_mac_address = 8 [(attr_enum_value) = 84]; + optional uint32 max_learned_addresses = 9 [(attr_enum_value) = 85]; + optional uint32 fdb_aging_time = 10 [(attr_enum_value) = 86]; + optional PacketAction fdb_unicast_miss_packet_action = 11 + [(attr_enum_value) = 87]; + optional PacketAction fdb_broadcast_miss_packet_action = 12 + [(attr_enum_value) = 88]; + optional PacketAction fdb_multicast_miss_packet_action = 13 + [(attr_enum_value) = 89]; + optional HashAlgorithm ecmp_default_hash_algorithm = 14 + [(attr_enum_value) = 90]; + optional uint32 ecmp_default_hash_seed = 15 [(attr_enum_value) = 91]; + optional uint32 ecmp_default_hash_offset = 16 [(attr_enum_value) = 92]; + optional bool ecmp_default_symmetric_hash = 17 [(attr_enum_value) = 93]; + optional uint64 ecmp_hash_ipv4 = 18 [(attr_enum_value) = 94]; + optional uint64 ecmp_hash_ipv4_in_ipv4 = 19 [(attr_enum_value) = 95]; + optional uint64 ecmp_hash_ipv6 = 20 [(attr_enum_value) = 96]; + optional HashAlgorithm lag_default_hash_algorithm = 21 + [(attr_enum_value) = 97]; + optional uint32 lag_default_hash_seed = 22 [(attr_enum_value) = 98]; + optional uint32 lag_default_hash_offset = 23 [(attr_enum_value) = 99]; + optional bool lag_default_symmetric_hash = 24 [(attr_enum_value) = 100]; + optional uint64 lag_hash_ipv4 = 25 [(attr_enum_value) = 101]; + optional uint64 lag_hash_ipv4_in_ipv4 = 26 [(attr_enum_value) = 102]; + optional uint64 lag_hash_ipv6 = 27 [(attr_enum_value) = 103]; + optional uint32 counter_refresh_interval = 28 [(attr_enum_value) = 104]; + optional uint32 qos_default_tc = 29 [(attr_enum_value) = 105]; + optional uint64 qos_dot1p_to_tc_map = 30 [(attr_enum_value) = 106]; + optional uint64 qos_dot1p_to_color_map = 31 [(attr_enum_value) = 107]; + optional uint64 qos_dscp_to_tc_map = 32 [(attr_enum_value) = 108]; + optional uint64 qos_dscp_to_color_map = 33 [(attr_enum_value) = 109]; + optional uint64 qos_tc_to_queue_map = 34 [(attr_enum_value) = 110]; + optional uint64 qos_tc_and_color_to_dot1p_map = 35 [(attr_enum_value) = 111]; + optional uint64 qos_tc_and_color_to_dscp_map = 36 [(attr_enum_value) = 112]; + optional bool switch_shell_enable = 37 [(attr_enum_value) = 113]; + optional uint32 switch_profile_id = 38 [(attr_enum_value) = 114]; + repeated int32 switch_hardware_info = 39 [(attr_enum_value) = 115]; + repeated int32 firmware_path_name = 40 [(attr_enum_value) = 116]; + optional bool init_switch = 41 [(attr_enum_value) = 117]; + optional bool fast_api_enable = 42 [(attr_enum_value) = 123]; + optional uint32 mirror_tc = 43 [(attr_enum_value) = 124]; + optional PacketAction pfc_dlr_packet_action = 44 [(attr_enum_value) = 131]; + repeated UintMap pfc_tc_dld_interval = 45 [(attr_enum_value) = 133]; + repeated UintMap pfc_tc_dlr_interval = 46 [(attr_enum_value) = 135]; + optional uint32 tpid_outer_vlan = 47 [(attr_enum_value) = 137]; + optional uint32 tpid_inner_vlan = 48 [(attr_enum_value) = 138]; + optional bool crc_check_enable = 49 [(attr_enum_value) = 139]; + optional bool crc_recalculation_enable = 50 [(attr_enum_value) = 140]; + optional bool ecn_ect_threshold_enable = 51 [(attr_enum_value) = 148]; + optional bytes vxlan_default_router_mac = 52 [(attr_enum_value) = 149]; + optional uint32 vxlan_default_port = 53 [(attr_enum_value) = 150]; + optional bool uninit_data_plane_on_removal = 54 [(attr_enum_value) = 154]; + repeated uint64 tam_object_id = 55 [(attr_enum_value) = 155]; + optional bool pre_shutdown = 56 [(attr_enum_value) = 158]; + optional uint64 nat_zone_counter_object_id = 57 [(attr_enum_value) = 159]; + optional bool nat_enable = 58 [(attr_enum_value) = 160]; + optional SwitchHardwareAccessBus hardware_access_bus = 59 + [(attr_enum_value) = 161]; + optional uint64 platfrom_context = 60 [(attr_enum_value) = 162]; + optional bool firmware_download_broadcast = 61 [(attr_enum_value) = 165]; + optional SwitchFirmwareLoadMethod firmware_load_method = 62 + [(attr_enum_value) = 166]; + optional SwitchFirmwareLoadType firmware_load_type = 63 + [(attr_enum_value) = 167]; + optional bool firmware_download_execute = 64 [(attr_enum_value) = 168]; + optional bool firmware_broadcast_stop = 65 [(attr_enum_value) = 169]; + optional bool firmware_verify_and_init_switch = 66 [(attr_enum_value) = 170]; + optional SwitchType type = 67 [(attr_enum_value) = 176]; + repeated uint64 macsec_object_list = 68 [(attr_enum_value) = 177]; + optional uint64 qos_mpls_exp_to_tc_map = 69 [(attr_enum_value) = 178]; + optional uint64 qos_mpls_exp_to_color_map = 70 [(attr_enum_value) = 179]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 71 + [(attr_enum_value) = 180]; + optional uint32 switch_id = 72 [(attr_enum_value) = 181]; + optional uint32 max_system_cores = 73 [(attr_enum_value) = 182]; + repeated SystemPortConfig system_port_config_list = 74 + [(attr_enum_value) = 183]; + optional SwitchFailoverConfigMode failover_config_mode = 75 + [(attr_enum_value) = 189]; + repeated uint64 tunnel_objects_list = 76 [(attr_enum_value) = 191]; + optional uint64 pre_ingress_acl = 77 [(attr_enum_value) = 193]; + repeated uint32 slave_mdio_addr_list = 78 [(attr_enum_value) = 197]; + optional uint64 qos_dscp_to_forwarding_class_map = 79 + [(attr_enum_value) = 204]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 80 + [(attr_enum_value) = 205]; + optional uint64 ipsec_object_id = 81 [(attr_enum_value) = 206]; + optional uint32 ipsec_sa_tag_tpid = 82 [(attr_enum_value) = 207]; + optional uint32 ecmp_member_count = 83 [(attr_enum_value) = 211]; + optional uint64 ars_profile = 84 [(attr_enum_value) = 212]; + optional bool credit_wd = 85 [(attr_enum_value) = 214]; + optional uint32 credit_wd_timer = 86 [(attr_enum_value) = 215]; + optional bool switch_isolate = 87 [(attr_enum_value) = 216]; + optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 88 + [(attr_enum_value) = 217]; + repeated SwitchAsicSdkHealthCategory + reg_fatal_switch_asic_sdk_health_category = 89 [(attr_enum_value) = 219]; + repeated SwitchAsicSdkHealthCategory + reg_warning_switch_asic_sdk_health_category = 90 + [(attr_enum_value) = 220]; + repeated SwitchAsicSdkHealthCategory + reg_notice_switch_asic_sdk_health_category = 91 [(attr_enum_value) = 221]; + repeated uint64 poe_device_list = 92 [(attr_enum_value) = 232]; + optional StatsCountMode stats_count_mode = 93 [(attr_enum_value) = 236]; + repeated uint64 selective_counter_list = 94 [(attr_enum_value) = 237]; } message CreateSwitchResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSwitchRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSwitchResponse { -} +message RemoveSwitchResponse {} message SetSwitchAttributeRequest { - uint64 oid = 1; - optional uint64 ingress_acl = 2[(attr_enum_value) = 43]; - optional uint64 egress_acl = 3[(attr_enum_value) = 44]; - optional bool restart_warm = 4[(attr_enum_value) = 72]; - optional bool warm_recover = 5[(attr_enum_value) = 73]; - optional SwitchSwitchingMode switching_mode = 6[(attr_enum_value) = 81]; - optional bool bcast_cpu_flood_enable = 7[(attr_enum_value) = 82]; - optional bool mcast_cpu_flood_enable = 8[(attr_enum_value) = 83]; - optional bytes src_mac_address = 9[(attr_enum_value) = 84]; - optional uint32 max_learned_addresses = 10[(attr_enum_value) = 85]; - optional uint32 fdb_aging_time = 11[(attr_enum_value) = 86]; - optional PacketAction fdb_unicast_miss_packet_action = 12[(attr_enum_value) = 87]; - optional PacketAction fdb_broadcast_miss_packet_action = 13[(attr_enum_value) = 88]; - optional PacketAction fdb_multicast_miss_packet_action = 14[(attr_enum_value) = 89]; - optional HashAlgorithm ecmp_default_hash_algorithm = 15[(attr_enum_value) = 90]; - optional uint32 ecmp_default_hash_seed = 16[(attr_enum_value) = 91]; - optional uint32 ecmp_default_hash_offset = 17[(attr_enum_value) = 92]; - optional bool ecmp_default_symmetric_hash = 18[(attr_enum_value) = 93]; - optional uint64 ecmp_hash_ipv4 = 19[(attr_enum_value) = 94]; - optional uint64 ecmp_hash_ipv4_in_ipv4 = 20[(attr_enum_value) = 95]; - optional uint64 ecmp_hash_ipv6 = 21[(attr_enum_value) = 96]; - optional HashAlgorithm lag_default_hash_algorithm = 22[(attr_enum_value) = 97]; - optional uint32 lag_default_hash_seed = 23[(attr_enum_value) = 98]; - optional uint32 lag_default_hash_offset = 24[(attr_enum_value) = 99]; - optional bool lag_default_symmetric_hash = 25[(attr_enum_value) = 100]; - optional uint64 lag_hash_ipv4 = 26[(attr_enum_value) = 101]; - optional uint64 lag_hash_ipv4_in_ipv4 = 27[(attr_enum_value) = 102]; - optional uint64 lag_hash_ipv6 = 28[(attr_enum_value) = 103]; - optional uint32 counter_refresh_interval = 29[(attr_enum_value) = 104]; - optional uint32 qos_default_tc = 30[(attr_enum_value) = 105]; - optional uint64 qos_dot1p_to_tc_map = 31[(attr_enum_value) = 106]; - optional uint64 qos_dot1p_to_color_map = 32[(attr_enum_value) = 107]; - optional uint64 qos_dscp_to_tc_map = 33[(attr_enum_value) = 108]; - optional uint64 qos_dscp_to_color_map = 34[(attr_enum_value) = 109]; - optional uint64 qos_tc_to_queue_map = 35[(attr_enum_value) = 110]; - optional uint64 qos_tc_and_color_to_dot1p_map = 36[(attr_enum_value) = 111]; - optional uint64 qos_tc_and_color_to_dscp_map = 37[(attr_enum_value) = 112]; - optional bool switch_shell_enable = 38[(attr_enum_value) = 113]; - optional bool fast_api_enable = 39[(attr_enum_value) = 123]; - optional uint32 mirror_tc = 40[(attr_enum_value) = 124]; - optional PacketAction pfc_dlr_packet_action = 41[(attr_enum_value) = 131]; - repeated UintMap pfc_tc_dld_interval = 42[(attr_enum_value) = 133]; - repeated UintMap pfc_tc_dlr_interval = 43[(attr_enum_value) = 135]; - optional uint32 tpid_outer_vlan = 44[(attr_enum_value) = 137]; - optional uint32 tpid_inner_vlan = 45[(attr_enum_value) = 138]; - optional bool crc_check_enable = 46[(attr_enum_value) = 139]; - optional bool crc_recalculation_enable = 47[(attr_enum_value) = 140]; - optional bool ecn_ect_threshold_enable = 48[(attr_enum_value) = 148]; - optional bytes vxlan_default_router_mac = 49[(attr_enum_value) = 149]; - optional uint32 vxlan_default_port = 50[(attr_enum_value) = 150]; - optional bool uninit_data_plane_on_removal = 51[(attr_enum_value) = 154]; - repeated uint64 tam_object_id = 52[(attr_enum_value) = 155]; - optional bool pre_shutdown = 53[(attr_enum_value) = 158]; - optional uint64 nat_zone_counter_object_id = 54[(attr_enum_value) = 159]; - optional bool nat_enable = 55[(attr_enum_value) = 160]; - optional bool firmware_download_execute = 56[(attr_enum_value) = 168]; - optional bool firmware_broadcast_stop = 57[(attr_enum_value) = 169]; - optional bool firmware_verify_and_init_switch = 58[(attr_enum_value) = 170]; - repeated uint64 macsec_object_list = 59[(attr_enum_value) = 177]; - optional uint64 qos_mpls_exp_to_tc_map = 60[(attr_enum_value) = 178]; - optional uint64 qos_mpls_exp_to_color_map = 61[(attr_enum_value) = 179]; - optional uint64 qos_tc_and_color_to_mpls_exp_map = 62[(attr_enum_value) = 180]; - optional SwitchFailoverConfigMode failover_config_mode = 63[(attr_enum_value) = 189]; - repeated uint64 tunnel_objects_list = 64[(attr_enum_value) = 191]; - optional uint64 pre_ingress_acl = 65[(attr_enum_value) = 193]; - optional uint64 qos_dscp_to_forwarding_class_map = 66[(attr_enum_value) = 204]; - optional uint64 qos_mpls_exp_to_forwarding_class_map = 67[(attr_enum_value) = 205]; - optional uint64 ipsec_object_id = 68[(attr_enum_value) = 206]; - optional uint32 ipsec_sa_tag_tpid = 69[(attr_enum_value) = 207]; - optional uint32 ecmp_member_count = 70[(attr_enum_value) = 211]; - optional uint64 ars_profile = 71[(attr_enum_value) = 212]; - optional bool credit_wd = 72[(attr_enum_value) = 214]; - optional uint32 credit_wd_timer = 73[(attr_enum_value) = 215]; - optional bool switch_isolate = 74[(attr_enum_value) = 216]; - optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 75[(attr_enum_value) = 217]; - repeated SwitchAsicSdkHealthCategory reg_fatal_switch_asic_sdk_health_category = 76[(attr_enum_value) = 219]; - repeated SwitchAsicSdkHealthCategory reg_warning_switch_asic_sdk_health_category = 77[(attr_enum_value) = 220]; - repeated SwitchAsicSdkHealthCategory reg_notice_switch_asic_sdk_health_category = 78[(attr_enum_value) = 221]; - repeated uint64 poe_device_list = 79[(attr_enum_value) = 232]; -} - -message SetSwitchAttributeResponse { -} + uint64 oid = 1; + optional uint64 ingress_acl = 2 [(attr_enum_value) = 43]; + optional uint64 egress_acl = 3 [(attr_enum_value) = 44]; + optional bool restart_warm = 4 [(attr_enum_value) = 72]; + optional bool warm_recover = 5 [(attr_enum_value) = 73]; + optional SwitchSwitchingMode switching_mode = 6 [(attr_enum_value) = 81]; + optional bool bcast_cpu_flood_enable = 7 [(attr_enum_value) = 82]; + optional bool mcast_cpu_flood_enable = 8 [(attr_enum_value) = 83]; + optional bytes src_mac_address = 9 [(attr_enum_value) = 84]; + optional uint32 max_learned_addresses = 10 [(attr_enum_value) = 85]; + optional uint32 fdb_aging_time = 11 [(attr_enum_value) = 86]; + optional PacketAction fdb_unicast_miss_packet_action = 12 + [(attr_enum_value) = 87]; + optional PacketAction fdb_broadcast_miss_packet_action = 13 + [(attr_enum_value) = 88]; + optional PacketAction fdb_multicast_miss_packet_action = 14 + [(attr_enum_value) = 89]; + optional HashAlgorithm ecmp_default_hash_algorithm = 15 + [(attr_enum_value) = 90]; + optional uint32 ecmp_default_hash_seed = 16 [(attr_enum_value) = 91]; + optional uint32 ecmp_default_hash_offset = 17 [(attr_enum_value) = 92]; + optional bool ecmp_default_symmetric_hash = 18 [(attr_enum_value) = 93]; + optional uint64 ecmp_hash_ipv4 = 19 [(attr_enum_value) = 94]; + optional uint64 ecmp_hash_ipv4_in_ipv4 = 20 [(attr_enum_value) = 95]; + optional uint64 ecmp_hash_ipv6 = 21 [(attr_enum_value) = 96]; + optional HashAlgorithm lag_default_hash_algorithm = 22 + [(attr_enum_value) = 97]; + optional uint32 lag_default_hash_seed = 23 [(attr_enum_value) = 98]; + optional uint32 lag_default_hash_offset = 24 [(attr_enum_value) = 99]; + optional bool lag_default_symmetric_hash = 25 [(attr_enum_value) = 100]; + optional uint64 lag_hash_ipv4 = 26 [(attr_enum_value) = 101]; + optional uint64 lag_hash_ipv4_in_ipv4 = 27 [(attr_enum_value) = 102]; + optional uint64 lag_hash_ipv6 = 28 [(attr_enum_value) = 103]; + optional uint32 counter_refresh_interval = 29 [(attr_enum_value) = 104]; + optional uint32 qos_default_tc = 30 [(attr_enum_value) = 105]; + optional uint64 qos_dot1p_to_tc_map = 31 [(attr_enum_value) = 106]; + optional uint64 qos_dot1p_to_color_map = 32 [(attr_enum_value) = 107]; + optional uint64 qos_dscp_to_tc_map = 33 [(attr_enum_value) = 108]; + optional uint64 qos_dscp_to_color_map = 34 [(attr_enum_value) = 109]; + optional uint64 qos_tc_to_queue_map = 35 [(attr_enum_value) = 110]; + optional uint64 qos_tc_and_color_to_dot1p_map = 36 [(attr_enum_value) = 111]; + optional uint64 qos_tc_and_color_to_dscp_map = 37 [(attr_enum_value) = 112]; + optional bool switch_shell_enable = 38 [(attr_enum_value) = 113]; + optional bool fast_api_enable = 39 [(attr_enum_value) = 123]; + optional uint32 mirror_tc = 40 [(attr_enum_value) = 124]; + optional PacketAction pfc_dlr_packet_action = 41 [(attr_enum_value) = 131]; + repeated UintMap pfc_tc_dld_interval = 42 [(attr_enum_value) = 133]; + repeated UintMap pfc_tc_dlr_interval = 43 [(attr_enum_value) = 135]; + optional uint32 tpid_outer_vlan = 44 [(attr_enum_value) = 137]; + optional uint32 tpid_inner_vlan = 45 [(attr_enum_value) = 138]; + optional bool crc_check_enable = 46 [(attr_enum_value) = 139]; + optional bool crc_recalculation_enable = 47 [(attr_enum_value) = 140]; + optional bool ecn_ect_threshold_enable = 48 [(attr_enum_value) = 148]; + optional bytes vxlan_default_router_mac = 49 [(attr_enum_value) = 149]; + optional uint32 vxlan_default_port = 50 [(attr_enum_value) = 150]; + optional bool uninit_data_plane_on_removal = 51 [(attr_enum_value) = 154]; + repeated uint64 tam_object_id = 52 [(attr_enum_value) = 155]; + optional bool pre_shutdown = 53 [(attr_enum_value) = 158]; + optional uint64 nat_zone_counter_object_id = 54 [(attr_enum_value) = 159]; + optional bool nat_enable = 55 [(attr_enum_value) = 160]; + optional bool firmware_download_execute = 56 [(attr_enum_value) = 168]; + optional bool firmware_broadcast_stop = 57 [(attr_enum_value) = 169]; + optional bool firmware_verify_and_init_switch = 58 [(attr_enum_value) = 170]; + repeated uint64 macsec_object_list = 59 [(attr_enum_value) = 177]; + optional uint64 qos_mpls_exp_to_tc_map = 60 [(attr_enum_value) = 178]; + optional uint64 qos_mpls_exp_to_color_map = 61 [(attr_enum_value) = 179]; + optional uint64 qos_tc_and_color_to_mpls_exp_map = 62 + [(attr_enum_value) = 180]; + optional SwitchFailoverConfigMode failover_config_mode = 63 + [(attr_enum_value) = 189]; + repeated uint64 tunnel_objects_list = 64 [(attr_enum_value) = 191]; + optional uint64 pre_ingress_acl = 65 [(attr_enum_value) = 193]; + optional uint64 qos_dscp_to_forwarding_class_map = 66 + [(attr_enum_value) = 204]; + optional uint64 qos_mpls_exp_to_forwarding_class_map = 67 + [(attr_enum_value) = 205]; + optional uint64 ipsec_object_id = 68 [(attr_enum_value) = 206]; + optional uint32 ipsec_sa_tag_tpid = 69 [(attr_enum_value) = 207]; + optional uint32 ecmp_member_count = 70 [(attr_enum_value) = 211]; + optional uint64 ars_profile = 71 [(attr_enum_value) = 212]; + optional bool credit_wd = 72 [(attr_enum_value) = 214]; + optional uint32 credit_wd_timer = 73 [(attr_enum_value) = 215]; + optional bool switch_isolate = 74 [(attr_enum_value) = 216]; + optional SwitchHostifOperStatusUpdateMode hostif_oper_status_update_mode = 75 + [(attr_enum_value) = 217]; + repeated SwitchAsicSdkHealthCategory + reg_fatal_switch_asic_sdk_health_category = 76 [(attr_enum_value) = 219]; + repeated SwitchAsicSdkHealthCategory + reg_warning_switch_asic_sdk_health_category = 77 + [(attr_enum_value) = 220]; + repeated SwitchAsicSdkHealthCategory + reg_notice_switch_asic_sdk_health_category = 78 [(attr_enum_value) = 221]; + repeated uint64 poe_device_list = 79 [(attr_enum_value) = 232]; + optional StatsCountMode stats_count_mode = 80 [(attr_enum_value) = 236]; + repeated uint64 selective_counter_list = 81 [(attr_enum_value) = 237]; +} + +message SetSwitchAttributeResponse {} message GetSwitchAttributeRequest { - uint64 oid = 1; - repeated SwitchAttr attr_type = 2; + uint64 oid = 1; + repeated SwitchAttr attr_type = 2; } message GetSwitchAttributeResponse { - SwitchAttribute attr = 1; + SwitchAttribute attr = 1; } -message SwitchStateChangeNotificationRequest { -} +message SwitchStateChangeNotificationRequest {} message SwitchStateChangeNotificationResponse { - uint64 switch_id = 1; - SwitchOperStatus switch_oper_status = 2; + uint64 switch_id = 1; + SwitchOperStatus switch_oper_status = 2; } -message SwitchShutdownRequestNotificationRequest { -} +message SwitchShutdownRequestNotificationRequest {} message SwitchShutdownRequestNotificationResponse { - uint64 switch_id = 1; + uint64 switch_id = 1; } -message FdbEventNotificationRequest { -} +message FdbEventNotificationRequest {} message FdbEventNotificationResponse { - repeated FdbEventNotificationData data = 1; + repeated FdbEventNotificationData data = 1; } -message PortStateChangeNotificationRequest { -} +message PortStateChangeNotificationRequest {} message PortStateChangeNotificationResponse { - repeated PortOperStatusNotification data = 1; + repeated PortOperStatusNotification data = 1; } -message PacketEventNotificationRequest { -} +message PacketEventNotificationRequest {} message PacketEventNotificationResponse { - uint64 switch_id = 1; - bytes buffer = 2; - repeated HostifPacketAttribute attrs = 3; + uint64 switch_id = 1; + bytes buffer = 2; + repeated HostifPacketAttribute attrs = 3; } -message QueuePfcDeadlockNotificationRequest { -} +message QueuePfcDeadlockNotificationRequest {} message QueuePfcDeadlockNotificationResponse { - repeated QueueDeadlockNotificationData data = 1; + repeated QueueDeadlockNotificationData data = 1; } -message BfdSessionStateChangeNotificationRequest { -} +message BfdSessionStateChangeNotificationRequest {} message BfdSessionStateChangeNotificationResponse { - repeated BfdSessionStateChangeNotificationData data = 1; + repeated BfdSessionStateChangeNotificationData data = 1; } -message TamEventNotificationRequest { -} +message TamEventNotificationRequest {} message TamEventNotificationResponse { - uint64 tam_event_id = 1; - bytes buffer = 2; - repeated TamEventActionAttribute attrs = 3; + uint64 tam_event_id = 1; + bytes buffer = 2; + repeated TamEventActionAttribute attrs = 3; } -message IpsecSaStatusChangeNotificationRequest { -} +message IpsecSaStatusChangeNotificationRequest {} message IpsecSaStatusNotificationDataResponse { - repeated IpsecSaStatusNotificationData data = 1; + repeated IpsecSaStatusNotificationData data = 1; } message GetSwitchStatsRequest { - uint64 oid = 1; - repeated SwitchStat counter_ids = 2; + uint64 oid = 1; + repeated SwitchStat counter_ids = 2; } message GetSwitchStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateSwitchTunnelRequest { - option (sai_type) = OBJECT_TYPE_SWITCH_TUNNEL; - uint64 switch = 1; - optional TunnelType tunnel_type = 2[(attr_enum_value) = 1]; - optional PacketAction loopback_packet_action = 3[(attr_enum_value) = 2]; - optional TunnelEncapEcnMode tunnel_encap_ecn_mode = 4[(attr_enum_value) = 3]; - repeated uint64 encap_mappers = 5[(attr_enum_value) = 4]; - optional TunnelDecapEcnMode tunnel_decap_ecn_mode = 6[(attr_enum_value) = 5]; - repeated uint64 decap_mappers = 7[(attr_enum_value) = 6]; - optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 8[(attr_enum_value) = 7]; - optional uint32 vxlan_udp_sport = 9[(attr_enum_value) = 8]; - optional uint32 vxlan_udp_sport_mask = 10[(attr_enum_value) = 9]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 11[(attr_enum_value) = 10]; - optional uint64 encap_qos_tc_to_queue_map = 12[(attr_enum_value) = 11]; - optional uint64 decap_qos_dscp_to_tc_map = 13[(attr_enum_value) = 12]; - optional uint64 decap_qos_tc_to_priority_group_map = 14[(attr_enum_value) = 13]; + option (sai_type) = OBJECT_TYPE_SWITCH_TUNNEL; + uint64 switch = 1; + optional TunnelType tunnel_type = 2 [(attr_enum_value) = 1]; + optional PacketAction loopback_packet_action = 3 [(attr_enum_value) = 2]; + optional TunnelEncapEcnMode tunnel_encap_ecn_mode = 4 [(attr_enum_value) = 3]; + repeated uint64 encap_mappers = 5 [(attr_enum_value) = 4]; + optional TunnelDecapEcnMode tunnel_decap_ecn_mode = 6 [(attr_enum_value) = 5]; + repeated uint64 decap_mappers = 7 [(attr_enum_value) = 6]; + optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 8 + [(attr_enum_value) = 7]; + optional uint32 vxlan_udp_sport = 9 [(attr_enum_value) = 8]; + optional uint32 vxlan_udp_sport_mask = 10 [(attr_enum_value) = 9]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 11 + [(attr_enum_value) = 10]; + optional uint64 encap_qos_tc_to_queue_map = 12 [(attr_enum_value) = 11]; + optional uint64 decap_qos_dscp_to_tc_map = 13 [(attr_enum_value) = 12]; + optional uint64 decap_qos_tc_to_priority_group_map = 14 + [(attr_enum_value) = 13]; } message CreateSwitchTunnelResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSwitchTunnelRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSwitchTunnelResponse { -} +message RemoveSwitchTunnelResponse {} message SetSwitchTunnelAttributeRequest { - uint64 oid = 1; - optional PacketAction loopback_packet_action = 2[(attr_enum_value) = 2]; - optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 3[(attr_enum_value) = 7]; - optional uint32 vxlan_udp_sport = 4[(attr_enum_value) = 8]; - optional uint32 vxlan_udp_sport_mask = 5[(attr_enum_value) = 9]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 6[(attr_enum_value) = 10]; - optional uint64 encap_qos_tc_to_queue_map = 7[(attr_enum_value) = 11]; - optional uint64 decap_qos_dscp_to_tc_map = 8[(attr_enum_value) = 12]; - optional uint64 decap_qos_tc_to_priority_group_map = 9[(attr_enum_value) = 13]; -} - -message SetSwitchTunnelAttributeResponse { -} + uint64 oid = 1; + optional PacketAction loopback_packet_action = 2 [(attr_enum_value) = 2]; + optional TunnelVxlanUdpSportMode tunnel_vxlan_udp_sport_mode = 3 + [(attr_enum_value) = 7]; + optional uint32 vxlan_udp_sport = 4 [(attr_enum_value) = 8]; + optional uint32 vxlan_udp_sport_mask = 5 [(attr_enum_value) = 9]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 6 + [(attr_enum_value) = 10]; + optional uint64 encap_qos_tc_to_queue_map = 7 [(attr_enum_value) = 11]; + optional uint64 decap_qos_dscp_to_tc_map = 8 [(attr_enum_value) = 12]; + optional uint64 decap_qos_tc_to_priority_group_map = 9 + [(attr_enum_value) = 13]; +} + +message SetSwitchTunnelAttributeResponse {} message GetSwitchTunnelAttributeRequest { - uint64 oid = 1; - repeated SwitchTunnelAttr attr_type = 2; + uint64 oid = 1; + repeated SwitchTunnelAttr attr_type = 2; } message GetSwitchTunnelAttributeResponse { - SwitchTunnelAttribute attr = 1; + SwitchTunnelAttribute attr = 1; } - service Switch { - rpc CreateSwitch (CreateSwitchRequest) returns (CreateSwitchResponse) {} - rpc RemoveSwitch (RemoveSwitchRequest) returns (RemoveSwitchResponse) {} - rpc SetSwitchAttribute (SetSwitchAttributeRequest) returns (SetSwitchAttributeResponse) {} - rpc SwitchStateChangeNotification (SwitchStateChangeNotificationRequest) returns (stream SwitchStateChangeNotificationResponse) {} - rpc SwitchShutdownRequestNotification (SwitchShutdownRequestNotificationRequest) returns (stream SwitchShutdownRequestNotificationResponse) {} - rpc FdbEventNotification (FdbEventNotificationRequest) returns (stream FdbEventNotificationResponse) {} - rpc PortStateChangeNotification (PortStateChangeNotificationRequest) returns (stream PortStateChangeNotificationResponse) {} - rpc PacketEventNotification (PacketEventNotificationRequest) returns (stream PacketEventNotificationResponse) {} - rpc QueuePfcDeadlockNotification (QueuePfcDeadlockNotificationRequest) returns (stream QueuePfcDeadlockNotificationResponse) {} - rpc BfdSessionStateChangeNotification (BfdSessionStateChangeNotificationRequest) returns (stream BfdSessionStateChangeNotificationResponse) {} - rpc TamEventNotification (TamEventNotificationRequest) returns (stream TamEventNotificationResponse) {} - rpc IpsecSaStatusChangeNotification (IpsecSaStatusChangeNotificationRequest) returns (stream IpsecSaStatusNotificationDataResponse) {} - rpc GetSwitchAttribute (GetSwitchAttributeRequest) returns (GetSwitchAttributeResponse) {} - rpc GetSwitchStats (GetSwitchStatsRequest) returns (GetSwitchStatsResponse) {} - rpc CreateSwitchTunnel (CreateSwitchTunnelRequest) returns (CreateSwitchTunnelResponse) {} - rpc RemoveSwitchTunnel (RemoveSwitchTunnelRequest) returns (RemoveSwitchTunnelResponse) {} - rpc SetSwitchTunnelAttribute (SetSwitchTunnelAttributeRequest) returns (SetSwitchTunnelAttributeResponse) {} - rpc GetSwitchTunnelAttribute (GetSwitchTunnelAttributeRequest) returns (GetSwitchTunnelAttributeResponse) {} + rpc CreateSwitch(CreateSwitchRequest) returns (CreateSwitchResponse) {} + rpc RemoveSwitch(RemoveSwitchRequest) returns (RemoveSwitchResponse) {} + rpc SetSwitchAttribute(SetSwitchAttributeRequest) + returns (SetSwitchAttributeResponse) {} + rpc SwitchStateChangeNotification(SwitchStateChangeNotificationRequest) + returns (stream SwitchStateChangeNotificationResponse) {} + rpc SwitchShutdownRequestNotification( + SwitchShutdownRequestNotificationRequest) + returns (stream SwitchShutdownRequestNotificationResponse) {} + rpc FdbEventNotification(FdbEventNotificationRequest) + returns (stream FdbEventNotificationResponse) {} + rpc PortStateChangeNotification(PortStateChangeNotificationRequest) + returns (stream PortStateChangeNotificationResponse) {} + rpc PacketEventNotification(PacketEventNotificationRequest) + returns (stream PacketEventNotificationResponse) {} + rpc QueuePfcDeadlockNotification(QueuePfcDeadlockNotificationRequest) + returns (stream QueuePfcDeadlockNotificationResponse) {} + rpc BfdSessionStateChangeNotification( + BfdSessionStateChangeNotificationRequest) + returns (stream BfdSessionStateChangeNotificationResponse) {} + rpc TamEventNotification(TamEventNotificationRequest) + returns (stream TamEventNotificationResponse) {} + rpc IpsecSaStatusChangeNotification(IpsecSaStatusChangeNotificationRequest) + returns (stream IpsecSaStatusNotificationDataResponse) {} + rpc GetSwitchAttribute(GetSwitchAttributeRequest) + returns (GetSwitchAttributeResponse) {} + rpc GetSwitchStats(GetSwitchStatsRequest) returns (GetSwitchStatsResponse) {} + rpc CreateSwitchTunnel(CreateSwitchTunnelRequest) + returns (CreateSwitchTunnelResponse) {} + rpc RemoveSwitchTunnel(RemoveSwitchTunnelRequest) + returns (RemoveSwitchTunnelResponse) {} + rpc SetSwitchTunnelAttribute(SetSwitchTunnelAttributeRequest) + returns (SetSwitchTunnelAttributeResponse) {} + rpc GetSwitchTunnelAttribute(GetSwitchTunnelAttributeRequest) + returns (GetSwitchTunnelAttributeResponse) {} } diff --git a/dataplane/proto/sai/system_port.proto b/dataplane/proto/sai/system_port.proto index 0dff65c0b..7ac25d951 100644 --- a/dataplane/proto/sai/system_port.proto +++ b/dataplane/proto/sai/system_port.proto @@ -7,59 +7,59 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum SystemPortAttr { - SYSTEM_PORT_ATTR_UNSPECIFIED = 0; - SYSTEM_PORT_ATTR_TYPE = 1; - SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS = 2; - SYSTEM_PORT_ATTR_QOS_VOQ_LIST = 3; - SYSTEM_PORT_ATTR_PORT = 4; - SYSTEM_PORT_ATTR_ADMIN_STATE = 5; - SYSTEM_PORT_ATTR_CONFIG_INFO = 6; - SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP = 7; + SYSTEM_PORT_ATTR_UNSPECIFIED = 0; + SYSTEM_PORT_ATTR_TYPE = 1; + SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS = 2; + SYSTEM_PORT_ATTR_QOS_VOQ_LIST = 3; + SYSTEM_PORT_ATTR_PORT = 4; + SYSTEM_PORT_ATTR_ADMIN_STATE = 5; + SYSTEM_PORT_ATTR_CONFIG_INFO = 6; + SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP = 7; } message CreateSystemPortRequest { - option (sai_type) = OBJECT_TYPE_SYSTEM_PORT; - uint64 switch = 1; - optional bool admin_state = 2[(attr_enum_value) = 5]; - optional SystemPortConfig config_info = 3[(attr_enum_value) = 6]; - optional uint64 qos_tc_to_queue_map = 4[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_SYSTEM_PORT; + uint64 switch = 1; + optional bool admin_state = 2 [(attr_enum_value) = 5]; + optional SystemPortConfig config_info = 3 [(attr_enum_value) = 6]; + optional uint64 qos_tc_to_queue_map = 4 [(attr_enum_value) = 7]; } message CreateSystemPortResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveSystemPortRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveSystemPortResponse { -} +message RemoveSystemPortResponse {} message SetSystemPortAttributeRequest { - uint64 oid = 1; - optional bool admin_state = 2[(attr_enum_value) = 5]; - optional uint64 qos_tc_to_queue_map = 3[(attr_enum_value) = 7]; + uint64 oid = 1; + optional bool admin_state = 2 [(attr_enum_value) = 5]; + optional uint64 qos_tc_to_queue_map = 3 [(attr_enum_value) = 7]; } -message SetSystemPortAttributeResponse { -} +message SetSystemPortAttributeResponse {} message GetSystemPortAttributeRequest { - uint64 oid = 1; - repeated SystemPortAttr attr_type = 2; + uint64 oid = 1; + repeated SystemPortAttr attr_type = 2; } message GetSystemPortAttributeResponse { - SystemPortAttribute attr = 1; + SystemPortAttribute attr = 1; } - service SystemPort { - rpc CreateSystemPort (CreateSystemPortRequest) returns (CreateSystemPortResponse) {} - rpc RemoveSystemPort (RemoveSystemPortRequest) returns (RemoveSystemPortResponse) {} - rpc SetSystemPortAttribute (SetSystemPortAttributeRequest) returns (SetSystemPortAttributeResponse) {} - rpc GetSystemPortAttribute (GetSystemPortAttributeRequest) returns (GetSystemPortAttributeResponse) {} + rpc CreateSystemPort(CreateSystemPortRequest) + returns (CreateSystemPortResponse) {} + rpc RemoveSystemPort(RemoveSystemPortRequest) + returns (RemoveSystemPortResponse) {} + rpc SetSystemPortAttribute(SetSystemPortAttributeRequest) + returns (SetSystemPortAttributeResponse) {} + rpc GetSystemPortAttribute(GetSystemPortAttributeRequest) + returns (GetSystemPortAttributeResponse) {} } diff --git a/dataplane/proto/sai/tam.proto b/dataplane/proto/sai/tam.proto index 594f44af1..f2b653baf 100644 --- a/dataplane/proto/sai/tam.proto +++ b/dataplane/proto/sai/tam.proto @@ -7,726 +7,750 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum TamAttr { - TAM_ATTR_UNSPECIFIED = 0; - TAM_ATTR_TELEMETRY_OBJECTS_LIST = 1; - TAM_ATTR_EVENT_OBJECTS_LIST = 2; - TAM_ATTR_INT_OBJECTS_LIST = 3; - TAM_ATTR_TAM_BIND_POINT_TYPE_LIST = 4; + TAM_ATTR_UNSPECIFIED = 0; + TAM_ATTR_TELEMETRY_OBJECTS_LIST = 1; + TAM_ATTR_EVENT_OBJECTS_LIST = 2; + TAM_ATTR_INT_OBJECTS_LIST = 3; + TAM_ATTR_TAM_BIND_POINT_TYPE_LIST = 4; } enum TamMathFuncAttr { - TAM_MATH_FUNC_ATTR_UNSPECIFIED = 0; - TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE = 1; + TAM_MATH_FUNC_ATTR_UNSPECIFIED = 0; + TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE = 1; } enum TamReportAttr { - TAM_REPORT_ATTR_UNSPECIFIED = 0; - TAM_REPORT_ATTR_TYPE = 1; - TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS = 2; - TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY = 3; - TAM_REPORT_ATTR_QUOTA = 4; - TAM_REPORT_ATTR_REPORT_MODE = 5; - TAM_REPORT_ATTR_REPORT_INTERVAL = 6; - TAM_REPORT_ATTR_ENTERPRISE_NUMBER = 7; - TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL = 8; - TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT = 9; + TAM_REPORT_ATTR_UNSPECIFIED = 0; + TAM_REPORT_ATTR_TYPE = 1; + TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS = 2; + TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY = 3; + TAM_REPORT_ATTR_QUOTA = 4; + TAM_REPORT_ATTR_REPORT_MODE = 5; + TAM_REPORT_ATTR_REPORT_INTERVAL = 6; + TAM_REPORT_ATTR_ENTERPRISE_NUMBER = 7; + TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL = 8; + TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT = 9; } enum TamEventThresholdAttr { - TAM_EVENT_THRESHOLD_ATTR_UNSPECIFIED = 0; - TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK = 1; - TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK = 2; - TAM_EVENT_THRESHOLD_ATTR_LATENCY = 3; - TAM_EVENT_THRESHOLD_ATTR_RATE = 4; - TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE = 5; - TAM_EVENT_THRESHOLD_ATTR_UNIT = 6; + TAM_EVENT_THRESHOLD_ATTR_UNSPECIFIED = 0; + TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK = 1; + TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK = 2; + TAM_EVENT_THRESHOLD_ATTR_LATENCY = 3; + TAM_EVENT_THRESHOLD_ATTR_RATE = 4; + TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE = 5; + TAM_EVENT_THRESHOLD_ATTR_UNIT = 6; } enum TamIntAttr { - TAM_INT_ATTR_UNSPECIFIED = 0; - TAM_INT_ATTR_TYPE = 1; - TAM_INT_ATTR_DEVICE_ID = 2; - TAM_INT_ATTR_IOAM_TRACE_TYPE = 3; - TAM_INT_ATTR_INT_PRESENCE_TYPE = 4; - TAM_INT_ATTR_INT_PRESENCE_PB1 = 5; - TAM_INT_ATTR_INT_PRESENCE_PB2 = 6; - TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE = 7; - TAM_INT_ATTR_INLINE = 8; - TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL = 9; - TAM_INT_ATTR_TRACE_VECTOR = 10; - TAM_INT_ATTR_ACTION_VECTOR = 11; - TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP = 12; - TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE = 13; - TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE = 14; - TAM_INT_ATTR_REPORT_ALL_PACKETS = 15; - TAM_INT_ATTR_FLOW_LIVENESS_PERIOD = 16; - TAM_INT_ATTR_LATENCY_SENSITIVITY = 17; - TAM_INT_ATTR_ACL_GROUP = 18; - TAM_INT_ATTR_MAX_HOP_COUNT = 19; - TAM_INT_ATTR_MAX_LENGTH = 20; - TAM_INT_ATTR_NAME_SPACE_ID = 21; - TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL = 22; - TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE = 23; - TAM_INT_ATTR_COLLECTOR_LIST = 24; - TAM_INT_ATTR_MATH_FUNC = 25; - TAM_INT_ATTR_REPORT_ID = 26; + TAM_INT_ATTR_UNSPECIFIED = 0; + TAM_INT_ATTR_TYPE = 1; + TAM_INT_ATTR_DEVICE_ID = 2; + TAM_INT_ATTR_IOAM_TRACE_TYPE = 3; + TAM_INT_ATTR_INT_PRESENCE_TYPE = 4; + TAM_INT_ATTR_INT_PRESENCE_PB1 = 5; + TAM_INT_ATTR_INT_PRESENCE_PB2 = 6; + TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE = 7; + TAM_INT_ATTR_INLINE = 8; + TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL = 9; + TAM_INT_ATTR_TRACE_VECTOR = 10; + TAM_INT_ATTR_ACTION_VECTOR = 11; + TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP = 12; + TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE = 13; + TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE = 14; + TAM_INT_ATTR_REPORT_ALL_PACKETS = 15; + TAM_INT_ATTR_FLOW_LIVENESS_PERIOD = 16; + TAM_INT_ATTR_LATENCY_SENSITIVITY = 17; + TAM_INT_ATTR_ACL_GROUP = 18; + TAM_INT_ATTR_MAX_HOP_COUNT = 19; + TAM_INT_ATTR_MAX_LENGTH = 20; + TAM_INT_ATTR_NAME_SPACE_ID = 21; + TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL = 22; + TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE = 23; + TAM_INT_ATTR_COLLECTOR_LIST = 24; + TAM_INT_ATTR_MATH_FUNC = 25; + TAM_INT_ATTR_REPORT_ID = 26; } enum TamTelTypeAttr { - TAM_TEL_TYPE_ATTR_UNSPECIFIED = 0; - TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE = 1; - TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER = 2; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS = 3; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS = 4; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS = 5; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS = 6; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS = 7; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS = 8; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS = 9; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS = 10; - TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS = 11; - TAM_TEL_TYPE_ATTR_FABRIC_Q = 12; - TAM_TEL_TYPE_ATTR_NE_ENABLE = 13; - TAM_TEL_TYPE_ATTR_DSCP_VALUE = 14; - TAM_TEL_TYPE_ATTR_MATH_FUNC = 15; - TAM_TEL_TYPE_ATTR_REPORT_ID = 16; - TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST = 17; + TAM_TEL_TYPE_ATTR_UNSPECIFIED = 0; + TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE = 1; + TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER = 2; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS = 3; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS = 4; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS = 5; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS = 6; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS = 7; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS = 8; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS = 9; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS = 10; + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS = 11; + TAM_TEL_TYPE_ATTR_FABRIC_Q = 12; + TAM_TEL_TYPE_ATTR_NE_ENABLE = 13; + TAM_TEL_TYPE_ATTR_DSCP_VALUE = 14; + TAM_TEL_TYPE_ATTR_MATH_FUNC = 15; + TAM_TEL_TYPE_ATTR_REPORT_ID = 16; + TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST = 17; } enum TamTransportAttr { - TAM_TRANSPORT_ATTR_UNSPECIFIED = 0; - TAM_TRANSPORT_ATTR_TRANSPORT_TYPE = 1; - TAM_TRANSPORT_ATTR_SRC_PORT = 2; - TAM_TRANSPORT_ATTR_DST_PORT = 3; - TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE = 4; - TAM_TRANSPORT_ATTR_MTU = 5; + TAM_TRANSPORT_ATTR_UNSPECIFIED = 0; + TAM_TRANSPORT_ATTR_TRANSPORT_TYPE = 1; + TAM_TRANSPORT_ATTR_SRC_PORT = 2; + TAM_TRANSPORT_ATTR_DST_PORT = 3; + TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE = 4; + TAM_TRANSPORT_ATTR_MTU = 5; } enum TamTelemetryAttr { - TAM_TELEMETRY_ATTR_UNSPECIFIED = 0; - TAM_TELEMETRY_ATTR_TAM_TYPE_LIST = 1; - TAM_TELEMETRY_ATTR_COLLECTOR_LIST = 2; - TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT = 3; - TAM_TELEMETRY_ATTR_REPORTING_INTERVAL = 4; + TAM_TELEMETRY_ATTR_UNSPECIFIED = 0; + TAM_TELEMETRY_ATTR_TAM_TYPE_LIST = 1; + TAM_TELEMETRY_ATTR_COLLECTOR_LIST = 2; + TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT = 3; + TAM_TELEMETRY_ATTR_REPORTING_INTERVAL = 4; } enum TamCollectorAttr { - TAM_COLLECTOR_ATTR_UNSPECIFIED = 0; - TAM_COLLECTOR_ATTR_SRC_IP = 1; - TAM_COLLECTOR_ATTR_DST_IP = 2; - TAM_COLLECTOR_ATTR_LOCALHOST = 3; - TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID = 4; - TAM_COLLECTOR_ATTR_TRUNCATE_SIZE = 5; - TAM_COLLECTOR_ATTR_TRANSPORT = 6; - TAM_COLLECTOR_ATTR_DSCP_VALUE = 7; - TAM_COLLECTOR_ATTR_HOSTIF_TRAP = 8; + TAM_COLLECTOR_ATTR_UNSPECIFIED = 0; + TAM_COLLECTOR_ATTR_SRC_IP = 1; + TAM_COLLECTOR_ATTR_DST_IP = 2; + TAM_COLLECTOR_ATTR_LOCALHOST = 3; + TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID = 4; + TAM_COLLECTOR_ATTR_TRUNCATE_SIZE = 5; + TAM_COLLECTOR_ATTR_TRANSPORT = 6; + TAM_COLLECTOR_ATTR_DSCP_VALUE = 7; + TAM_COLLECTOR_ATTR_HOSTIF_TRAP = 8; } enum TamEventActionAttr { - TAM_EVENT_ACTION_ATTR_UNSPECIFIED = 0; - TAM_EVENT_ACTION_ATTR_REPORT_TYPE = 1; - TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE = 2; + TAM_EVENT_ACTION_ATTR_UNSPECIFIED = 0; + TAM_EVENT_ACTION_ATTR_REPORT_TYPE = 1; + TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE = 2; } enum TamEventAttr { - TAM_EVENT_ATTR_UNSPECIFIED = 0; - TAM_EVENT_ATTR_TYPE = 1; - TAM_EVENT_ATTR_ACTION_LIST = 2; - TAM_EVENT_ATTR_COLLECTOR_LIST = 3; - TAM_EVENT_ATTR_THRESHOLD = 4; - TAM_EVENT_ATTR_DSCP_VALUE = 5; + TAM_EVENT_ATTR_UNSPECIFIED = 0; + TAM_EVENT_ATTR_TYPE = 1; + TAM_EVENT_ATTR_ACTION_LIST = 2; + TAM_EVENT_ATTR_COLLECTOR_LIST = 3; + TAM_EVENT_ATTR_THRESHOLD = 4; + TAM_EVENT_ATTR_DSCP_VALUE = 5; } enum TamCounterSubscriptionAttr { - TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED = 0; - TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE = 1; - TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID = 2; - TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID = 3; - TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL = 4; + TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED = 0; + TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE = 1; + TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID = 2; + TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID = 3; + TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL = 4; } message CreateTamRequest { - option (sai_type) = OBJECT_TYPE_TAM; - uint64 switch = 1; - repeated uint64 telemetry_objects_list = 2[(attr_enum_value) = 1]; - repeated uint64 event_objects_list = 3[(attr_enum_value) = 2]; - repeated uint64 int_objects_list = 4[(attr_enum_value) = 3]; - repeated TamBindPointType tam_bind_point_type_list = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_TAM; + uint64 switch = 1; + repeated uint64 telemetry_objects_list = 2 [(attr_enum_value) = 1]; + repeated uint64 event_objects_list = 3 [(attr_enum_value) = 2]; + repeated uint64 int_objects_list = 4 [(attr_enum_value) = 3]; + repeated TamBindPointType tam_bind_point_type_list = 5 + [(attr_enum_value) = 4]; } message CreateTamResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamResponse { -} +message RemoveTamResponse {} message SetTamAttributeRequest { - uint64 oid = 1; - repeated uint64 telemetry_objects_list = 2[(attr_enum_value) = 1]; - repeated uint64 event_objects_list = 3[(attr_enum_value) = 2]; - repeated uint64 int_objects_list = 4[(attr_enum_value) = 3]; + uint64 oid = 1; + repeated uint64 telemetry_objects_list = 2 [(attr_enum_value) = 1]; + repeated uint64 event_objects_list = 3 [(attr_enum_value) = 2]; + repeated uint64 int_objects_list = 4 [(attr_enum_value) = 3]; } -message SetTamAttributeResponse { -} +message SetTamAttributeResponse {} message GetTamAttributeRequest { - uint64 oid = 1; - repeated TamAttr attr_type = 2; + uint64 oid = 1; + repeated TamAttr attr_type = 2; } message GetTamAttributeResponse { - TamAttribute attr = 1; + TamAttribute attr = 1; } message CreateTamMathFuncRequest { - option (sai_type) = OBJECT_TYPE_TAM_MATH_FUNC; - uint64 switch = 1; - optional TamTelMathFuncType tam_tel_math_func_type = 2[(attr_enum_value) = 1]; + option (sai_type) = OBJECT_TYPE_TAM_MATH_FUNC; + uint64 switch = 1; + optional TamTelMathFuncType tam_tel_math_func_type = 2 + [(attr_enum_value) = 1]; } message CreateTamMathFuncResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamMathFuncRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamMathFuncResponse { -} +message RemoveTamMathFuncResponse {} message SetTamMathFuncAttributeRequest { - uint64 oid = 1; - optional TamTelMathFuncType tam_tel_math_func_type = 2[(attr_enum_value) = 1]; + uint64 oid = 1; + optional TamTelMathFuncType tam_tel_math_func_type = 2 + [(attr_enum_value) = 1]; } -message SetTamMathFuncAttributeResponse { -} +message SetTamMathFuncAttributeResponse {} message GetTamMathFuncAttributeRequest { - uint64 oid = 1; - repeated TamMathFuncAttr attr_type = 2; + uint64 oid = 1; + repeated TamMathFuncAttr attr_type = 2; } message GetTamMathFuncAttributeResponse { - TamMathFuncAttribute attr = 1; + TamMathFuncAttribute attr = 1; } message CreateTamReportRequest { - option (sai_type) = OBJECT_TYPE_TAM_REPORT; - uint64 switch = 1; - optional TamReportType type = 2[(attr_enum_value) = 1]; - optional uint32 histogram_number_of_bins = 3[(attr_enum_value) = 2]; - repeated uint32 histogram_bin_boundary = 4[(attr_enum_value) = 3]; - optional uint32 quota = 5[(attr_enum_value) = 4]; - optional TamReportMode report_mode = 6[(attr_enum_value) = 5]; - optional uint32 report_interval = 7[(attr_enum_value) = 6]; - optional uint32 enterprise_number = 8[(attr_enum_value) = 7]; - optional uint32 template_report_interval = 9[(attr_enum_value) = 8]; - optional TamReportIntervalUnit report_interval_unit = 10[(attr_enum_value) = 9]; + option (sai_type) = OBJECT_TYPE_TAM_REPORT; + uint64 switch = 1; + optional TamReportType type = 2 [(attr_enum_value) = 1]; + optional uint32 histogram_number_of_bins = 3 [(attr_enum_value) = 2]; + repeated uint32 histogram_bin_boundary = 4 [(attr_enum_value) = 3]; + optional uint32 quota = 5 [(attr_enum_value) = 4]; + optional TamReportMode report_mode = 6 [(attr_enum_value) = 5]; + optional uint32 report_interval = 7 [(attr_enum_value) = 6]; + optional uint32 enterprise_number = 8 [(attr_enum_value) = 7]; + optional uint32 template_report_interval = 9 [(attr_enum_value) = 8]; + optional TamReportIntervalUnit report_interval_unit = 10 + [(attr_enum_value) = 9]; } message CreateTamReportResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamReportRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamReportResponse { -} +message RemoveTamReportResponse {} message SetTamReportAttributeRequest { - uint64 oid = 1; - optional TamReportType type = 2[(attr_enum_value) = 1]; - optional uint32 quota = 3[(attr_enum_value) = 4]; - optional uint32 report_interval = 4[(attr_enum_value) = 6]; - optional uint32 enterprise_number = 5[(attr_enum_value) = 7]; - optional uint32 template_report_interval = 6[(attr_enum_value) = 8]; - optional TamReportIntervalUnit report_interval_unit = 7[(attr_enum_value) = 9]; + uint64 oid = 1; + optional TamReportType type = 2 [(attr_enum_value) = 1]; + optional uint32 quota = 3 [(attr_enum_value) = 4]; + optional uint32 report_interval = 4 [(attr_enum_value) = 6]; + optional uint32 enterprise_number = 5 [(attr_enum_value) = 7]; + optional uint32 template_report_interval = 6 [(attr_enum_value) = 8]; + optional TamReportIntervalUnit report_interval_unit = 7 + [(attr_enum_value) = 9]; } -message SetTamReportAttributeResponse { -} +message SetTamReportAttributeResponse {} message GetTamReportAttributeRequest { - uint64 oid = 1; - repeated TamReportAttr attr_type = 2; + uint64 oid = 1; + repeated TamReportAttr attr_type = 2; } message GetTamReportAttributeResponse { - TamReportAttribute attr = 1; + TamReportAttribute attr = 1; } message CreateTamEventThresholdRequest { - option (sai_type) = OBJECT_TYPE_TAM_EVENT_THRESHOLD; - uint64 switch = 1; - optional uint32 high_watermark = 2[(attr_enum_value) = 1]; - optional uint32 low_watermark = 3[(attr_enum_value) = 2]; - optional uint32 latency = 4[(attr_enum_value) = 3]; - optional uint32 rate = 5[(attr_enum_value) = 4]; - optional uint32 abs_value = 6[(attr_enum_value) = 5]; - optional TamEventThresholdUnit unit = 7[(attr_enum_value) = 6]; + option (sai_type) = OBJECT_TYPE_TAM_EVENT_THRESHOLD; + uint64 switch = 1; + optional uint32 high_watermark = 2 [(attr_enum_value) = 1]; + optional uint32 low_watermark = 3 [(attr_enum_value) = 2]; + optional uint32 latency = 4 [(attr_enum_value) = 3]; + optional uint32 rate = 5 [(attr_enum_value) = 4]; + optional uint32 abs_value = 6 [(attr_enum_value) = 5]; + optional TamEventThresholdUnit unit = 7 [(attr_enum_value) = 6]; } message CreateTamEventThresholdResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamEventThresholdRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamEventThresholdResponse { -} +message RemoveTamEventThresholdResponse {} message SetTamEventThresholdAttributeRequest { - uint64 oid = 1; - optional uint32 high_watermark = 2[(attr_enum_value) = 1]; - optional uint32 low_watermark = 3[(attr_enum_value) = 2]; - optional uint32 latency = 4[(attr_enum_value) = 3]; - optional uint32 rate = 5[(attr_enum_value) = 4]; - optional uint32 abs_value = 6[(attr_enum_value) = 5]; - optional TamEventThresholdUnit unit = 7[(attr_enum_value) = 6]; + uint64 oid = 1; + optional uint32 high_watermark = 2 [(attr_enum_value) = 1]; + optional uint32 low_watermark = 3 [(attr_enum_value) = 2]; + optional uint32 latency = 4 [(attr_enum_value) = 3]; + optional uint32 rate = 5 [(attr_enum_value) = 4]; + optional uint32 abs_value = 6 [(attr_enum_value) = 5]; + optional TamEventThresholdUnit unit = 7 [(attr_enum_value) = 6]; } -message SetTamEventThresholdAttributeResponse { -} +message SetTamEventThresholdAttributeResponse {} message GetTamEventThresholdAttributeRequest { - uint64 oid = 1; - repeated TamEventThresholdAttr attr_type = 2; + uint64 oid = 1; + repeated TamEventThresholdAttr attr_type = 2; } message GetTamEventThresholdAttributeResponse { - TamEventThresholdAttribute attr = 1; + TamEventThresholdAttribute attr = 1; } message CreateTamIntRequest { - option (sai_type) = OBJECT_TYPE_TAM_INT; - uint64 switch = 1; - optional TamIntType type = 2[(attr_enum_value) = 1]; - optional uint32 device_id = 3[(attr_enum_value) = 2]; - optional uint32 ioam_trace_type = 4[(attr_enum_value) = 3]; - optional TamIntPresenceType int_presence_type = 5[(attr_enum_value) = 4]; - optional uint32 int_presence_pb1 = 6[(attr_enum_value) = 5]; - optional uint32 int_presence_pb2 = 7[(attr_enum_value) = 6]; - optional uint32 int_presence_dscp_value = 8[(attr_enum_value) = 7]; - optional bool inline = 9[(attr_enum_value) = 8]; - optional uint32 int_presence_l3_protocol = 10[(attr_enum_value) = 9]; - optional uint32 trace_vector = 11[(attr_enum_value) = 10]; - optional uint32 action_vector = 12[(attr_enum_value) = 11]; - optional uint32 p4_int_instruction_bitmap = 13[(attr_enum_value) = 12]; - optional bool metadata_fragment_enable = 14[(attr_enum_value) = 13]; - optional bool metadata_checksum_enable = 15[(attr_enum_value) = 14]; - optional bool report_all_packets = 16[(attr_enum_value) = 15]; - optional uint32 flow_liveness_period = 17[(attr_enum_value) = 16]; - optional uint32 latency_sensitivity = 18[(attr_enum_value) = 17]; - optional uint64 acl_group = 19[(attr_enum_value) = 18]; - optional uint32 max_hop_count = 20[(attr_enum_value) = 19]; - optional uint32 max_length = 21[(attr_enum_value) = 20]; - optional uint32 name_space_id = 22[(attr_enum_value) = 21]; - optional bool name_space_id_global = 23[(attr_enum_value) = 22]; - optional uint64 ingress_samplepacket_enable = 24[(attr_enum_value) = 23]; - repeated uint64 collector_list = 25[(attr_enum_value) = 24]; - optional uint64 math_func = 26[(attr_enum_value) = 25]; - optional uint64 report_id = 27[(attr_enum_value) = 26]; + option (sai_type) = OBJECT_TYPE_TAM_INT; + uint64 switch = 1; + optional TamIntType type = 2 [(attr_enum_value) = 1]; + optional uint32 device_id = 3 [(attr_enum_value) = 2]; + optional uint32 ioam_trace_type = 4 [(attr_enum_value) = 3]; + optional TamIntPresenceType int_presence_type = 5 [(attr_enum_value) = 4]; + optional uint32 int_presence_pb1 = 6 [(attr_enum_value) = 5]; + optional uint32 int_presence_pb2 = 7 [(attr_enum_value) = 6]; + optional uint32 int_presence_dscp_value = 8 [(attr_enum_value) = 7]; + optional bool inline = 9 [(attr_enum_value) = 8]; + optional uint32 int_presence_l3_protocol = 10 [(attr_enum_value) = 9]; + optional uint32 trace_vector = 11 [(attr_enum_value) = 10]; + optional uint32 action_vector = 12 [(attr_enum_value) = 11]; + optional uint32 p4_int_instruction_bitmap = 13 [(attr_enum_value) = 12]; + optional bool metadata_fragment_enable = 14 [(attr_enum_value) = 13]; + optional bool metadata_checksum_enable = 15 [(attr_enum_value) = 14]; + optional bool report_all_packets = 16 [(attr_enum_value) = 15]; + optional uint32 flow_liveness_period = 17 [(attr_enum_value) = 16]; + optional uint32 latency_sensitivity = 18 [(attr_enum_value) = 17]; + optional uint64 acl_group = 19 [(attr_enum_value) = 18]; + optional uint32 max_hop_count = 20 [(attr_enum_value) = 19]; + optional uint32 max_length = 21 [(attr_enum_value) = 20]; + optional uint32 name_space_id = 22 [(attr_enum_value) = 21]; + optional bool name_space_id_global = 23 [(attr_enum_value) = 22]; + optional uint64 ingress_samplepacket_enable = 24 [(attr_enum_value) = 23]; + repeated uint64 collector_list = 25 [(attr_enum_value) = 24]; + optional uint64 math_func = 26 [(attr_enum_value) = 25]; + optional uint64 report_id = 27 [(attr_enum_value) = 26]; } message CreateTamIntResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamIntRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamIntResponse { -} +message RemoveTamIntResponse {} message SetTamIntAttributeRequest { - uint64 oid = 1; - optional uint32 ioam_trace_type = 2[(attr_enum_value) = 3]; - optional uint32 trace_vector = 3[(attr_enum_value) = 10]; - optional uint32 action_vector = 4[(attr_enum_value) = 11]; - optional uint32 p4_int_instruction_bitmap = 5[(attr_enum_value) = 12]; - optional bool metadata_fragment_enable = 6[(attr_enum_value) = 13]; - optional bool metadata_checksum_enable = 7[(attr_enum_value) = 14]; - optional bool report_all_packets = 8[(attr_enum_value) = 15]; - optional uint32 flow_liveness_period = 9[(attr_enum_value) = 16]; - optional uint32 latency_sensitivity = 10[(attr_enum_value) = 17]; - optional uint64 acl_group = 11[(attr_enum_value) = 18]; - optional uint32 max_hop_count = 12[(attr_enum_value) = 19]; - optional uint32 max_length = 13[(attr_enum_value) = 20]; - optional uint32 name_space_id = 14[(attr_enum_value) = 21]; - optional bool name_space_id_global = 15[(attr_enum_value) = 22]; - optional uint64 ingress_samplepacket_enable = 16[(attr_enum_value) = 23]; - repeated uint64 collector_list = 17[(attr_enum_value) = 24]; - optional uint64 math_func = 18[(attr_enum_value) = 25]; -} - -message SetTamIntAttributeResponse { -} + uint64 oid = 1; + optional uint32 ioam_trace_type = 2 [(attr_enum_value) = 3]; + optional uint32 trace_vector = 3 [(attr_enum_value) = 10]; + optional uint32 action_vector = 4 [(attr_enum_value) = 11]; + optional uint32 p4_int_instruction_bitmap = 5 [(attr_enum_value) = 12]; + optional bool metadata_fragment_enable = 6 [(attr_enum_value) = 13]; + optional bool metadata_checksum_enable = 7 [(attr_enum_value) = 14]; + optional bool report_all_packets = 8 [(attr_enum_value) = 15]; + optional uint32 flow_liveness_period = 9 [(attr_enum_value) = 16]; + optional uint32 latency_sensitivity = 10 [(attr_enum_value) = 17]; + optional uint64 acl_group = 11 [(attr_enum_value) = 18]; + optional uint32 max_hop_count = 12 [(attr_enum_value) = 19]; + optional uint32 max_length = 13 [(attr_enum_value) = 20]; + optional uint32 name_space_id = 14 [(attr_enum_value) = 21]; + optional bool name_space_id_global = 15 [(attr_enum_value) = 22]; + optional uint64 ingress_samplepacket_enable = 16 [(attr_enum_value) = 23]; + repeated uint64 collector_list = 17 [(attr_enum_value) = 24]; + optional uint64 math_func = 18 [(attr_enum_value) = 25]; +} + +message SetTamIntAttributeResponse {} message GetTamIntAttributeRequest { - uint64 oid = 1; - repeated TamIntAttr attr_type = 2; + uint64 oid = 1; + repeated TamIntAttr attr_type = 2; } message GetTamIntAttributeResponse { - TamIntAttribute attr = 1; + TamIntAttribute attr = 1; } message CreateTamTelTypeRequest { - option (sai_type) = OBJECT_TYPE_TAM_TEL_TYPE; - uint64 switch = 1; - optional TamTelemetryType tam_telemetry_type = 2[(attr_enum_value) = 1]; - optional uint32 int_switch_identifier = 3[(attr_enum_value) = 2]; - optional bool switch_enable_port_stats = 4[(attr_enum_value) = 3]; - optional bool switch_enable_port_stats_ingress = 5[(attr_enum_value) = 4]; - optional bool switch_enable_port_stats_egress = 6[(attr_enum_value) = 5]; - optional bool switch_enable_virtual_queue_stats = 7[(attr_enum_value) = 6]; - optional bool switch_enable_output_queue_stats = 8[(attr_enum_value) = 7]; - optional bool switch_enable_mmu_stats = 9[(attr_enum_value) = 8]; - optional bool switch_enable_fabric_stats = 10[(attr_enum_value) = 9]; - optional bool switch_enable_filter_stats = 11[(attr_enum_value) = 10]; - optional bool switch_enable_resource_utilization_stats = 12[(attr_enum_value) = 11]; - optional bool fabric_q = 13[(attr_enum_value) = 12]; - optional bool ne_enable = 14[(attr_enum_value) = 13]; - optional uint32 dscp_value = 15[(attr_enum_value) = 14]; - optional uint64 math_func = 16[(attr_enum_value) = 15]; - optional uint64 report_id = 17[(attr_enum_value) = 16]; + option (sai_type) = OBJECT_TYPE_TAM_TEL_TYPE; + uint64 switch = 1; + optional TamTelemetryType tam_telemetry_type = 2 [(attr_enum_value) = 1]; + optional uint32 int_switch_identifier = 3 [(attr_enum_value) = 2]; + optional bool switch_enable_port_stats = 4 [(attr_enum_value) = 3]; + optional bool switch_enable_port_stats_ingress = 5 [(attr_enum_value) = 4]; + optional bool switch_enable_port_stats_egress = 6 [(attr_enum_value) = 5]; + optional bool switch_enable_virtual_queue_stats = 7 [(attr_enum_value) = 6]; + optional bool switch_enable_output_queue_stats = 8 [(attr_enum_value) = 7]; + optional bool switch_enable_mmu_stats = 9 [(attr_enum_value) = 8]; + optional bool switch_enable_fabric_stats = 10 [(attr_enum_value) = 9]; + optional bool switch_enable_filter_stats = 11 [(attr_enum_value) = 10]; + optional bool switch_enable_resource_utilization_stats = 12 + [(attr_enum_value) = 11]; + optional bool fabric_q = 13 [(attr_enum_value) = 12]; + optional bool ne_enable = 14 [(attr_enum_value) = 13]; + optional uint32 dscp_value = 15 [(attr_enum_value) = 14]; + optional uint64 math_func = 16 [(attr_enum_value) = 15]; + optional uint64 report_id = 17 [(attr_enum_value) = 16]; } message CreateTamTelTypeResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamTelTypeRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamTelTypeResponse { -} +message RemoveTamTelTypeResponse {} message SetTamTelTypeAttributeRequest { - uint64 oid = 1; - optional uint32 int_switch_identifier = 2[(attr_enum_value) = 2]; - optional bool switch_enable_port_stats = 3[(attr_enum_value) = 3]; - optional bool switch_enable_port_stats_ingress = 4[(attr_enum_value) = 4]; - optional bool switch_enable_port_stats_egress = 5[(attr_enum_value) = 5]; - optional bool switch_enable_virtual_queue_stats = 6[(attr_enum_value) = 6]; - optional bool switch_enable_output_queue_stats = 7[(attr_enum_value) = 7]; - optional bool switch_enable_mmu_stats = 8[(attr_enum_value) = 8]; - optional bool switch_enable_fabric_stats = 9[(attr_enum_value) = 9]; - optional bool switch_enable_filter_stats = 10[(attr_enum_value) = 10]; - optional bool switch_enable_resource_utilization_stats = 11[(attr_enum_value) = 11]; - optional bool fabric_q = 12[(attr_enum_value) = 12]; - optional bool ne_enable = 13[(attr_enum_value) = 13]; - optional uint32 dscp_value = 14[(attr_enum_value) = 14]; - optional uint64 math_func = 15[(attr_enum_value) = 15]; -} - -message SetTamTelTypeAttributeResponse { -} + uint64 oid = 1; + optional uint32 int_switch_identifier = 2 [(attr_enum_value) = 2]; + optional bool switch_enable_port_stats = 3 [(attr_enum_value) = 3]; + optional bool switch_enable_port_stats_ingress = 4 [(attr_enum_value) = 4]; + optional bool switch_enable_port_stats_egress = 5 [(attr_enum_value) = 5]; + optional bool switch_enable_virtual_queue_stats = 6 [(attr_enum_value) = 6]; + optional bool switch_enable_output_queue_stats = 7 [(attr_enum_value) = 7]; + optional bool switch_enable_mmu_stats = 8 [(attr_enum_value) = 8]; + optional bool switch_enable_fabric_stats = 9 [(attr_enum_value) = 9]; + optional bool switch_enable_filter_stats = 10 [(attr_enum_value) = 10]; + optional bool switch_enable_resource_utilization_stats = 11 + [(attr_enum_value) = 11]; + optional bool fabric_q = 12 [(attr_enum_value) = 12]; + optional bool ne_enable = 13 [(attr_enum_value) = 13]; + optional uint32 dscp_value = 14 [(attr_enum_value) = 14]; + optional uint64 math_func = 15 [(attr_enum_value) = 15]; +} + +message SetTamTelTypeAttributeResponse {} message GetTamTelTypeAttributeRequest { - uint64 oid = 1; - repeated TamTelTypeAttr attr_type = 2; + uint64 oid = 1; + repeated TamTelTypeAttr attr_type = 2; } message GetTamTelTypeAttributeResponse { - TamTelTypeAttribute attr = 1; + TamTelTypeAttribute attr = 1; } message CreateTamTransportRequest { - option (sai_type) = OBJECT_TYPE_TAM_TRANSPORT; - uint64 switch = 1; - optional TamTransportType transport_type = 2[(attr_enum_value) = 1]; - optional uint32 src_port = 3[(attr_enum_value) = 2]; - optional uint32 dst_port = 4[(attr_enum_value) = 3]; - optional TamTransportAuthType transport_auth_type = 5[(attr_enum_value) = 4]; - optional uint32 mtu = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_TAM_TRANSPORT; + uint64 switch = 1; + optional TamTransportType transport_type = 2 [(attr_enum_value) = 1]; + optional uint32 src_port = 3 [(attr_enum_value) = 2]; + optional uint32 dst_port = 4 [(attr_enum_value) = 3]; + optional TamTransportAuthType transport_auth_type = 5 [(attr_enum_value) = 4]; + optional uint32 mtu = 6 [(attr_enum_value) = 5]; } message CreateTamTransportResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamTransportRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamTransportResponse { -} +message RemoveTamTransportResponse {} message SetTamTransportAttributeRequest { - uint64 oid = 1; - optional uint32 src_port = 2[(attr_enum_value) = 2]; - optional uint32 dst_port = 3[(attr_enum_value) = 3]; - optional TamTransportAuthType transport_auth_type = 4[(attr_enum_value) = 4]; - optional uint32 mtu = 5[(attr_enum_value) = 5]; + uint64 oid = 1; + optional uint32 src_port = 2 [(attr_enum_value) = 2]; + optional uint32 dst_port = 3 [(attr_enum_value) = 3]; + optional TamTransportAuthType transport_auth_type = 4 [(attr_enum_value) = 4]; + optional uint32 mtu = 5 [(attr_enum_value) = 5]; } -message SetTamTransportAttributeResponse { -} +message SetTamTransportAttributeResponse {} message GetTamTransportAttributeRequest { - uint64 oid = 1; - repeated TamTransportAttr attr_type = 2; + uint64 oid = 1; + repeated TamTransportAttr attr_type = 2; } message GetTamTransportAttributeResponse { - TamTransportAttribute attr = 1; + TamTransportAttribute attr = 1; } message CreateTamTelemetryRequest { - option (sai_type) = OBJECT_TYPE_TAM_TELEMETRY; - uint64 switch = 1; - repeated uint64 tam_type_list = 2[(attr_enum_value) = 1]; - repeated uint64 collector_list = 3[(attr_enum_value) = 2]; - optional TamReportingUnit tam_reporting_unit = 4[(attr_enum_value) = 3]; - optional uint32 reporting_interval = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_TAM_TELEMETRY; + uint64 switch = 1; + repeated uint64 tam_type_list = 2 [(attr_enum_value) = 1]; + repeated uint64 collector_list = 3 [(attr_enum_value) = 2]; + optional TamReportingUnit tam_reporting_unit = 4 [(attr_enum_value) = 3]; + optional uint32 reporting_interval = 5 [(attr_enum_value) = 4]; } message CreateTamTelemetryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamTelemetryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamTelemetryResponse { -} +message RemoveTamTelemetryResponse {} message SetTamTelemetryAttributeRequest { - uint64 oid = 1; - repeated uint64 tam_type_list = 2[(attr_enum_value) = 1]; - optional TamReportingUnit tam_reporting_unit = 3[(attr_enum_value) = 3]; - optional uint32 reporting_interval = 4[(attr_enum_value) = 4]; + uint64 oid = 1; + repeated uint64 tam_type_list = 2 [(attr_enum_value) = 1]; + optional TamReportingUnit tam_reporting_unit = 3 [(attr_enum_value) = 3]; + optional uint32 reporting_interval = 4 [(attr_enum_value) = 4]; } -message SetTamTelemetryAttributeResponse { -} +message SetTamTelemetryAttributeResponse {} message GetTamTelemetryAttributeRequest { - uint64 oid = 1; - repeated TamTelemetryAttr attr_type = 2; + uint64 oid = 1; + repeated TamTelemetryAttr attr_type = 2; } message GetTamTelemetryAttributeResponse { - TamTelemetryAttribute attr = 1; + TamTelemetryAttribute attr = 1; } message CreateTamCollectorRequest { - option (sai_type) = OBJECT_TYPE_TAM_COLLECTOR; - uint64 switch = 1; - optional bytes src_ip = 2[(attr_enum_value) = 1]; - optional bytes dst_ip = 3[(attr_enum_value) = 2]; - optional bool localhost = 4[(attr_enum_value) = 3]; - optional uint64 virtual_router_id = 5[(attr_enum_value) = 4]; - optional uint32 truncate_size = 6[(attr_enum_value) = 5]; - optional uint64 transport = 7[(attr_enum_value) = 6]; - optional uint32 dscp_value = 8[(attr_enum_value) = 7]; - optional uint64 hostif_trap = 9[(attr_enum_value) = 8]; + option (sai_type) = OBJECT_TYPE_TAM_COLLECTOR; + uint64 switch = 1; + optional bytes src_ip = 2 [(attr_enum_value) = 1]; + optional bytes dst_ip = 3 [(attr_enum_value) = 2]; + optional bool localhost = 4 [(attr_enum_value) = 3]; + optional uint64 virtual_router_id = 5 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 6 [(attr_enum_value) = 5]; + optional uint64 transport = 7 [(attr_enum_value) = 6]; + optional uint32 dscp_value = 8 [(attr_enum_value) = 7]; + optional uint64 hostif_trap = 9 [(attr_enum_value) = 8]; } message CreateTamCollectorResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamCollectorRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamCollectorResponse { -} +message RemoveTamCollectorResponse {} message SetTamCollectorAttributeRequest { - uint64 oid = 1; - optional bytes src_ip = 2[(attr_enum_value) = 1]; - optional bytes dst_ip = 3[(attr_enum_value) = 2]; - optional bool localhost = 4[(attr_enum_value) = 3]; - optional uint64 virtual_router_id = 5[(attr_enum_value) = 4]; - optional uint32 truncate_size = 6[(attr_enum_value) = 5]; - optional uint64 transport = 7[(attr_enum_value) = 6]; - optional uint32 dscp_value = 8[(attr_enum_value) = 7]; - optional uint64 hostif_trap = 9[(attr_enum_value) = 8]; + uint64 oid = 1; + optional bytes src_ip = 2 [(attr_enum_value) = 1]; + optional bytes dst_ip = 3 [(attr_enum_value) = 2]; + optional bool localhost = 4 [(attr_enum_value) = 3]; + optional uint64 virtual_router_id = 5 [(attr_enum_value) = 4]; + optional uint32 truncate_size = 6 [(attr_enum_value) = 5]; + optional uint64 transport = 7 [(attr_enum_value) = 6]; + optional uint32 dscp_value = 8 [(attr_enum_value) = 7]; + optional uint64 hostif_trap = 9 [(attr_enum_value) = 8]; } -message SetTamCollectorAttributeResponse { -} +message SetTamCollectorAttributeResponse {} message GetTamCollectorAttributeRequest { - uint64 oid = 1; - repeated TamCollectorAttr attr_type = 2; + uint64 oid = 1; + repeated TamCollectorAttr attr_type = 2; } message GetTamCollectorAttributeResponse { - TamCollectorAttribute attr = 1; + TamCollectorAttribute attr = 1; } message CreateTamEventActionRequest { - option (sai_type) = OBJECT_TYPE_TAM_EVENT_ACTION; - uint64 switch = 1; - optional uint64 report_type = 2[(attr_enum_value) = 1]; - optional uint32 qos_action_type = 3[(attr_enum_value) = 2]; + option (sai_type) = OBJECT_TYPE_TAM_EVENT_ACTION; + uint64 switch = 1; + optional uint64 report_type = 2 [(attr_enum_value) = 1]; + optional uint32 qos_action_type = 3 [(attr_enum_value) = 2]; } message CreateTamEventActionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamEventActionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamEventActionResponse { -} +message RemoveTamEventActionResponse {} message SetTamEventActionAttributeRequest { - uint64 oid = 1; - optional uint64 report_type = 2[(attr_enum_value) = 1]; - optional uint32 qos_action_type = 3[(attr_enum_value) = 2]; + uint64 oid = 1; + optional uint64 report_type = 2 [(attr_enum_value) = 1]; + optional uint32 qos_action_type = 3 [(attr_enum_value) = 2]; } -message SetTamEventActionAttributeResponse { -} +message SetTamEventActionAttributeResponse {} message GetTamEventActionAttributeRequest { - uint64 oid = 1; - repeated TamEventActionAttr attr_type = 2; + uint64 oid = 1; + repeated TamEventActionAttr attr_type = 2; } message GetTamEventActionAttributeResponse { - TamEventActionAttribute attr = 1; + TamEventActionAttribute attr = 1; } message CreateTamEventRequest { - option (sai_type) = OBJECT_TYPE_TAM_EVENT; - uint64 switch = 1; - optional TamEventType type = 2[(attr_enum_value) = 1]; - repeated uint64 action_list = 3[(attr_enum_value) = 2]; - repeated uint64 collector_list = 4[(attr_enum_value) = 3]; - optional uint64 threshold = 5[(attr_enum_value) = 4]; - optional uint32 dscp_value = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_TAM_EVENT; + uint64 switch = 1; + optional TamEventType type = 2 [(attr_enum_value) = 1]; + repeated uint64 action_list = 3 [(attr_enum_value) = 2]; + repeated uint64 collector_list = 4 [(attr_enum_value) = 3]; + optional uint64 threshold = 5 [(attr_enum_value) = 4]; + optional uint32 dscp_value = 6 [(attr_enum_value) = 5]; } message CreateTamEventResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamEventRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamEventResponse { -} +message RemoveTamEventResponse {} message SetTamEventAttributeRequest { - uint64 oid = 1; - optional uint64 threshold = 2[(attr_enum_value) = 4]; - optional uint32 dscp_value = 3[(attr_enum_value) = 5]; + uint64 oid = 1; + optional uint64 threshold = 2 [(attr_enum_value) = 4]; + optional uint32 dscp_value = 3 [(attr_enum_value) = 5]; } -message SetTamEventAttributeResponse { -} +message SetTamEventAttributeResponse {} message GetTamEventAttributeRequest { - uint64 oid = 1; - repeated TamEventAttr attr_type = 2; + uint64 oid = 1; + repeated TamEventAttr attr_type = 2; } message GetTamEventAttributeResponse { - TamEventAttribute attr = 1; + TamEventAttribute attr = 1; } message CreateTamCounterSubscriptionRequest { - option (sai_type) = OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; - uint64 switch = 1; - optional uint64 tel_type = 2[(attr_enum_value) = 1]; - optional uint64 object_id = 3[(attr_enum_value) = 2]; - optional uint32 stat_id = 4[(attr_enum_value) = 3]; - optional uint64 label = 5[(attr_enum_value) = 4]; + option (sai_type) = OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; + uint64 switch = 1; + optional uint64 tel_type = 2 [(attr_enum_value) = 1]; + optional uint64 object_id = 3 [(attr_enum_value) = 2]; + optional uint32 stat_id = 4 [(attr_enum_value) = 3]; + optional uint64 label = 5 [(attr_enum_value) = 4]; } message CreateTamCounterSubscriptionResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTamCounterSubscriptionRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTamCounterSubscriptionResponse { -} +message RemoveTamCounterSubscriptionResponse {} message GetTamCounterSubscriptionAttributeRequest { - uint64 oid = 1; - repeated TamCounterSubscriptionAttr attr_type = 2; + uint64 oid = 1; + repeated TamCounterSubscriptionAttr attr_type = 2; } message GetTamCounterSubscriptionAttributeResponse { - TamCounterSubscriptionAttribute attr = 1; + TamCounterSubscriptionAttribute attr = 1; } - service Tam { - rpc CreateTam (CreateTamRequest) returns (CreateTamResponse) {} - rpc RemoveTam (RemoveTamRequest) returns (RemoveTamResponse) {} - rpc SetTamAttribute (SetTamAttributeRequest) returns (SetTamAttributeResponse) {} - rpc GetTamAttribute (GetTamAttributeRequest) returns (GetTamAttributeResponse) {} - rpc CreateTamMathFunc (CreateTamMathFuncRequest) returns (CreateTamMathFuncResponse) {} - rpc RemoveTamMathFunc (RemoveTamMathFuncRequest) returns (RemoveTamMathFuncResponse) {} - rpc SetTamMathFuncAttribute (SetTamMathFuncAttributeRequest) returns (SetTamMathFuncAttributeResponse) {} - rpc GetTamMathFuncAttribute (GetTamMathFuncAttributeRequest) returns (GetTamMathFuncAttributeResponse) {} - rpc CreateTamReport (CreateTamReportRequest) returns (CreateTamReportResponse) {} - rpc RemoveTamReport (RemoveTamReportRequest) returns (RemoveTamReportResponse) {} - rpc SetTamReportAttribute (SetTamReportAttributeRequest) returns (SetTamReportAttributeResponse) {} - rpc GetTamReportAttribute (GetTamReportAttributeRequest) returns (GetTamReportAttributeResponse) {} - rpc CreateTamEventThreshold (CreateTamEventThresholdRequest) returns (CreateTamEventThresholdResponse) {} - rpc RemoveTamEventThreshold (RemoveTamEventThresholdRequest) returns (RemoveTamEventThresholdResponse) {} - rpc SetTamEventThresholdAttribute (SetTamEventThresholdAttributeRequest) returns (SetTamEventThresholdAttributeResponse) {} - rpc GetTamEventThresholdAttribute (GetTamEventThresholdAttributeRequest) returns (GetTamEventThresholdAttributeResponse) {} - rpc CreateTamInt (CreateTamIntRequest) returns (CreateTamIntResponse) {} - rpc RemoveTamInt (RemoveTamIntRequest) returns (RemoveTamIntResponse) {} - rpc SetTamIntAttribute (SetTamIntAttributeRequest) returns (SetTamIntAttributeResponse) {} - rpc GetTamIntAttribute (GetTamIntAttributeRequest) returns (GetTamIntAttributeResponse) {} - rpc CreateTamTelType (CreateTamTelTypeRequest) returns (CreateTamTelTypeResponse) {} - rpc RemoveTamTelType (RemoveTamTelTypeRequest) returns (RemoveTamTelTypeResponse) {} - rpc SetTamTelTypeAttribute (SetTamTelTypeAttributeRequest) returns (SetTamTelTypeAttributeResponse) {} - rpc GetTamTelTypeAttribute (GetTamTelTypeAttributeRequest) returns (GetTamTelTypeAttributeResponse) {} - rpc CreateTamTransport (CreateTamTransportRequest) returns (CreateTamTransportResponse) {} - rpc RemoveTamTransport (RemoveTamTransportRequest) returns (RemoveTamTransportResponse) {} - rpc SetTamTransportAttribute (SetTamTransportAttributeRequest) returns (SetTamTransportAttributeResponse) {} - rpc GetTamTransportAttribute (GetTamTransportAttributeRequest) returns (GetTamTransportAttributeResponse) {} - rpc CreateTamTelemetry (CreateTamTelemetryRequest) returns (CreateTamTelemetryResponse) {} - rpc RemoveTamTelemetry (RemoveTamTelemetryRequest) returns (RemoveTamTelemetryResponse) {} - rpc SetTamTelemetryAttribute (SetTamTelemetryAttributeRequest) returns (SetTamTelemetryAttributeResponse) {} - rpc GetTamTelemetryAttribute (GetTamTelemetryAttributeRequest) returns (GetTamTelemetryAttributeResponse) {} - rpc CreateTamCollector (CreateTamCollectorRequest) returns (CreateTamCollectorResponse) {} - rpc RemoveTamCollector (RemoveTamCollectorRequest) returns (RemoveTamCollectorResponse) {} - rpc SetTamCollectorAttribute (SetTamCollectorAttributeRequest) returns (SetTamCollectorAttributeResponse) {} - rpc GetTamCollectorAttribute (GetTamCollectorAttributeRequest) returns (GetTamCollectorAttributeResponse) {} - rpc CreateTamEventAction (CreateTamEventActionRequest) returns (CreateTamEventActionResponse) {} - rpc RemoveTamEventAction (RemoveTamEventActionRequest) returns (RemoveTamEventActionResponse) {} - rpc SetTamEventActionAttribute (SetTamEventActionAttributeRequest) returns (SetTamEventActionAttributeResponse) {} - rpc GetTamEventActionAttribute (GetTamEventActionAttributeRequest) returns (GetTamEventActionAttributeResponse) {} - rpc CreateTamEvent (CreateTamEventRequest) returns (CreateTamEventResponse) {} - rpc RemoveTamEvent (RemoveTamEventRequest) returns (RemoveTamEventResponse) {} - rpc SetTamEventAttribute (SetTamEventAttributeRequest) returns (SetTamEventAttributeResponse) {} - rpc GetTamEventAttribute (GetTamEventAttributeRequest) returns (GetTamEventAttributeResponse) {} - rpc CreateTamCounterSubscription (CreateTamCounterSubscriptionRequest) returns (CreateTamCounterSubscriptionResponse) {} - rpc RemoveTamCounterSubscription (RemoveTamCounterSubscriptionRequest) returns (RemoveTamCounterSubscriptionResponse) {} - rpc GetTamCounterSubscriptionAttribute (GetTamCounterSubscriptionAttributeRequest) returns (GetTamCounterSubscriptionAttributeResponse) {} + rpc CreateTam(CreateTamRequest) returns (CreateTamResponse) {} + rpc RemoveTam(RemoveTamRequest) returns (RemoveTamResponse) {} + rpc SetTamAttribute(SetTamAttributeRequest) + returns (SetTamAttributeResponse) {} + rpc GetTamAttribute(GetTamAttributeRequest) + returns (GetTamAttributeResponse) {} + rpc CreateTamMathFunc(CreateTamMathFuncRequest) + returns (CreateTamMathFuncResponse) {} + rpc RemoveTamMathFunc(RemoveTamMathFuncRequest) + returns (RemoveTamMathFuncResponse) {} + rpc SetTamMathFuncAttribute(SetTamMathFuncAttributeRequest) + returns (SetTamMathFuncAttributeResponse) {} + rpc GetTamMathFuncAttribute(GetTamMathFuncAttributeRequest) + returns (GetTamMathFuncAttributeResponse) {} + rpc CreateTamReport(CreateTamReportRequest) + returns (CreateTamReportResponse) {} + rpc RemoveTamReport(RemoveTamReportRequest) + returns (RemoveTamReportResponse) {} + rpc SetTamReportAttribute(SetTamReportAttributeRequest) + returns (SetTamReportAttributeResponse) {} + rpc GetTamReportAttribute(GetTamReportAttributeRequest) + returns (GetTamReportAttributeResponse) {} + rpc CreateTamEventThreshold(CreateTamEventThresholdRequest) + returns (CreateTamEventThresholdResponse) {} + rpc RemoveTamEventThreshold(RemoveTamEventThresholdRequest) + returns (RemoveTamEventThresholdResponse) {} + rpc SetTamEventThresholdAttribute(SetTamEventThresholdAttributeRequest) + returns (SetTamEventThresholdAttributeResponse) {} + rpc GetTamEventThresholdAttribute(GetTamEventThresholdAttributeRequest) + returns (GetTamEventThresholdAttributeResponse) {} + rpc CreateTamInt(CreateTamIntRequest) returns (CreateTamIntResponse) {} + rpc RemoveTamInt(RemoveTamIntRequest) returns (RemoveTamIntResponse) {} + rpc SetTamIntAttribute(SetTamIntAttributeRequest) + returns (SetTamIntAttributeResponse) {} + rpc GetTamIntAttribute(GetTamIntAttributeRequest) + returns (GetTamIntAttributeResponse) {} + rpc CreateTamTelType(CreateTamTelTypeRequest) + returns (CreateTamTelTypeResponse) {} + rpc RemoveTamTelType(RemoveTamTelTypeRequest) + returns (RemoveTamTelTypeResponse) {} + rpc SetTamTelTypeAttribute(SetTamTelTypeAttributeRequest) + returns (SetTamTelTypeAttributeResponse) {} + rpc GetTamTelTypeAttribute(GetTamTelTypeAttributeRequest) + returns (GetTamTelTypeAttributeResponse) {} + rpc CreateTamTransport(CreateTamTransportRequest) + returns (CreateTamTransportResponse) {} + rpc RemoveTamTransport(RemoveTamTransportRequest) + returns (RemoveTamTransportResponse) {} + rpc SetTamTransportAttribute(SetTamTransportAttributeRequest) + returns (SetTamTransportAttributeResponse) {} + rpc GetTamTransportAttribute(GetTamTransportAttributeRequest) + returns (GetTamTransportAttributeResponse) {} + rpc CreateTamTelemetry(CreateTamTelemetryRequest) + returns (CreateTamTelemetryResponse) {} + rpc RemoveTamTelemetry(RemoveTamTelemetryRequest) + returns (RemoveTamTelemetryResponse) {} + rpc SetTamTelemetryAttribute(SetTamTelemetryAttributeRequest) + returns (SetTamTelemetryAttributeResponse) {} + rpc GetTamTelemetryAttribute(GetTamTelemetryAttributeRequest) + returns (GetTamTelemetryAttributeResponse) {} + rpc CreateTamCollector(CreateTamCollectorRequest) + returns (CreateTamCollectorResponse) {} + rpc RemoveTamCollector(RemoveTamCollectorRequest) + returns (RemoveTamCollectorResponse) {} + rpc SetTamCollectorAttribute(SetTamCollectorAttributeRequest) + returns (SetTamCollectorAttributeResponse) {} + rpc GetTamCollectorAttribute(GetTamCollectorAttributeRequest) + returns (GetTamCollectorAttributeResponse) {} + rpc CreateTamEventAction(CreateTamEventActionRequest) + returns (CreateTamEventActionResponse) {} + rpc RemoveTamEventAction(RemoveTamEventActionRequest) + returns (RemoveTamEventActionResponse) {} + rpc SetTamEventActionAttribute(SetTamEventActionAttributeRequest) + returns (SetTamEventActionAttributeResponse) {} + rpc GetTamEventActionAttribute(GetTamEventActionAttributeRequest) + returns (GetTamEventActionAttributeResponse) {} + rpc CreateTamEvent(CreateTamEventRequest) returns (CreateTamEventResponse) {} + rpc RemoveTamEvent(RemoveTamEventRequest) returns (RemoveTamEventResponse) {} + rpc SetTamEventAttribute(SetTamEventAttributeRequest) + returns (SetTamEventAttributeResponse) {} + rpc GetTamEventAttribute(GetTamEventAttributeRequest) + returns (GetTamEventAttributeResponse) {} + rpc CreateTamCounterSubscription(CreateTamCounterSubscriptionRequest) + returns (CreateTamCounterSubscriptionResponse) {} + rpc RemoveTamCounterSubscription(RemoveTamCounterSubscriptionRequest) + returns (RemoveTamCounterSubscriptionResponse) {} + rpc GetTamCounterSubscriptionAttribute( + GetTamCounterSubscriptionAttributeRequest) + returns (GetTamCounterSubscriptionAttributeResponse) {} } diff --git a/dataplane/proto/sai/tunnel.pb.go b/dataplane/proto/sai/tunnel.pb.go index 3f5c45518..f4ebf405f 100644 --- a/dataplane/proto/sai/tunnel.pb.go +++ b/dataplane/proto/sai/tunnel.pb.go @@ -104,6 +104,8 @@ const ( TunnelAttr_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP TunnelAttr = 28 TunnelAttr_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP TunnelAttr = 29 TunnelAttr_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY TunnelAttr = 30 + TunnelAttr_TUNNEL_ATTR_STATS_COUNT_MODE TunnelAttr = 31 + TunnelAttr_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST TunnelAttr = 32 ) // Enum value maps for TunnelAttr. @@ -140,6 +142,8 @@ var ( 28: "TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP", 29: "TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP", 30: "TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY", + 31: "TUNNEL_ATTR_STATS_COUNT_MODE", + 32: "TUNNEL_ATTR_SELECTIVE_COUNTER_LIST", } TunnelAttr_value = map[string]int32{ "TUNNEL_ATTR_UNSPECIFIED": 0, @@ -173,6 +177,8 @@ var ( "TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP": 28, "TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP": 29, "TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY": 30, + "TUNNEL_ATTR_STATS_COUNT_MODE": 31, + "TUNNEL_ATTR_SELECTIVE_COUNTER_LIST": 32, } ) @@ -680,6 +686,8 @@ type CreateTunnelRequest struct { DecapQosDscpToTcMap *uint64 `protobuf:"varint,28,opt,name=decap_qos_dscp_to_tc_map,json=decapQosDscpToTcMap,proto3,oneof" json:"decap_qos_dscp_to_tc_map,omitempty"` DecapQosTcToPriorityGroupMap *uint64 `protobuf:"varint,29,opt,name=decap_qos_tc_to_priority_group_map,json=decapQosTcToPriorityGroupMap,proto3,oneof" json:"decap_qos_tc_to_priority_group_map,omitempty"` VxlanUdpSportSecurity *bool `protobuf:"varint,30,opt,name=vxlan_udp_sport_security,json=vxlanUdpSportSecurity,proto3,oneof" json:"vxlan_udp_sport_security,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,31,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,32,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -924,6 +932,20 @@ func (x *CreateTunnelRequest) GetVxlanUdpSportSecurity() bool { return false } +func (x *CreateTunnelRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateTunnelRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateTunnelResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -1069,6 +1091,8 @@ type SetTunnelAttributeRequest struct { DecapQosDscpToTcMap *uint64 `protobuf:"varint,17,opt,name=decap_qos_dscp_to_tc_map,json=decapQosDscpToTcMap,proto3,oneof" json:"decap_qos_dscp_to_tc_map,omitempty"` DecapQosTcToPriorityGroupMap *uint64 `protobuf:"varint,18,opt,name=decap_qos_tc_to_priority_group_map,json=decapQosTcToPriorityGroupMap,proto3,oneof" json:"decap_qos_tc_to_priority_group_map,omitempty"` VxlanUdpSportSecurity *bool `protobuf:"varint,19,opt,name=vxlan_udp_sport_security,json=vxlanUdpSportSecurity,proto3,oneof" json:"vxlan_udp_sport_security,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,20,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,21,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1236,6 +1260,20 @@ func (x *SetTunnelAttributeRequest) GetVxlanUdpSportSecurity() bool { return false } +func (x *SetTunnelAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetTunnelAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetTunnelAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -2534,7 +2572,7 @@ var file_dataplane_proto_sai_tunnel_proto_rawDesc = string([]byte{ 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, - 0xcf, 0x14, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x80, 0x16, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x42, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, @@ -2662,704 +2700,731 @@ var file_dataplane_proto_sai_tunnel_proto_rawDesc = string([]byte{ 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1e, 0x48, 0x19, 0x52, 0x15, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, - 0x90, 0xad, 0x0f, 0x2b, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, - 0x13, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, - 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, - 0x65, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, - 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, - 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, - 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x10, - 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, - 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, - 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, - 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x25, 0x0a, 0x23, 0x5f, - 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, - 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, - 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, - 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, - 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, - 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, - 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x22, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x0d, 0x0a, - 0x19, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x57, 0x0a, 0x0e, - 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x07, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, - 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, - 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, - 0x56, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, - 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, - 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x02, - 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, - 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0a, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x56, - 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, - 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x04, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x47, 0x72, 0x65, - 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, - 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, - 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x05, 0x52, 0x0c, - 0x64, 0x65, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x5a, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x06, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, 0x6c, - 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x6f, 0x70, - 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, - 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, - 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x08, 0x52, 0x11, 0x76, 0x78, 0x6c, - 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x16, 0x48, 0x09, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, - 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, - 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x0a, 0x52, 0x11, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, 0x73, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, 0x0b, - 0x52, 0x07, 0x73, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x12, - 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, - 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x19, - 0x52, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, - 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x0c, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, - 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, 0x63, - 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, 0x70, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, - 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1b, 0x48, 0x0d, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, 0x63, - 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, - 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x0e, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, 0x01, - 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, - 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x0f, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, 0x6f, - 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x76, 0x78, 0x6c, 0x61, - 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x1e, 0x48, 0x10, 0x52, 0x15, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, - 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, - 0x76, 0x61, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, - 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, - 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, + 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, 0x5c, 0x0a, 0x10, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x1a, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, 0x73, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, + 0x6c, 0x69, 0x73, 0x74, 0x18, 0x20, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x20, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x2b, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x75, 0x6e, + 0x64, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, + 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x6c, 0x61, 0x79, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x73, + 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, + 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x76, + 0x61, 0x6c, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, + 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, - 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, - 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, - 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, - 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, - 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, - 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, + 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x65, 0x63, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, + 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, + 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, + 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, + 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, + 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, + 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, + 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, + 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, + 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, + 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x22, 0x28, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x27, 0x0a, 0x13, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x99, 0x0f, + 0x0a, 0x19, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x57, 0x0a, + 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x07, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x01, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x54, 0x74, + 0x6c, 0x56, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x65, 0x6e, 0x63, 0x61, 0x70, + 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, + 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, + 0x02, 0x52, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0e, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0a, 0x48, 0x03, 0x52, 0x0c, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x44, 0x73, 0x63, 0x70, + 0x56, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x04, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x47, 0x72, + 0x65, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x64, 0x65, 0x63, 0x61, 0x70, + 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x74, + 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x05, 0x52, + 0x0c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x54, 0x74, 0x6c, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x5a, 0x0a, 0x0f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x06, 0x52, 0x0d, 0x64, 0x65, 0x63, 0x61, + 0x70, 0x44, 0x73, 0x63, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x66, 0x0a, 0x16, + 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x14, 0x48, 0x07, 0x52, 0x14, 0x6c, 0x6f, 0x6f, + 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x12, 0x6c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, + 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x56, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, + 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x08, 0x52, 0x11, 0x76, 0x78, + 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, + 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x16, 0x48, 0x09, 0x52, 0x0d, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, + 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x14, 0x76, 0x78, 0x6c, 0x61, 0x6e, + 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x0a, 0x52, + 0x11, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x61, + 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x48, + 0x0b, 0x52, 0x07, 0x73, 0x61, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, + 0x12, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x73, 0x61, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, + 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x19, 0x52, 0x0f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x53, 0x61, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x54, 0x0a, 0x22, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, - 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, - 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, - 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, - 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, - 0x6d, 0x61, 0x70, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, - 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, - 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x6d, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x30, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, - 0xcc, 0x05, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1a, 0x48, 0x0c, 0x52, 0x1b, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, + 0x6f, 0x73, 0x54, 0x63, 0x41, 0x6e, 0x64, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x54, 0x6f, 0x44, 0x73, + 0x63, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x19, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x1b, 0x48, 0x0d, 0x52, 0x14, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x51, 0x6f, 0x73, 0x54, + 0x63, 0x54, 0x6f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x42, + 0x0a, 0x18, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, + 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1c, 0x48, 0x0e, 0x52, 0x13, 0x64, 0x65, 0x63, 0x61, + 0x70, 0x51, 0x6f, 0x73, 0x44, 0x73, 0x63, 0x70, 0x54, 0x6f, 0x54, 0x63, 0x4d, 0x61, 0x70, 0x88, + 0x01, 0x01, 0x12, 0x55, 0x0a, 0x22, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, + 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1d, 0x48, 0x0f, 0x52, 0x1c, 0x64, 0x65, 0x63, 0x61, 0x70, 0x51, + 0x6f, 0x73, 0x54, 0x63, 0x54, 0x6f, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x44, 0x0a, 0x18, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, + 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x1e, 0x48, 0x10, 0x52, 0x15, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x55, 0x64, 0x70, 0x53, + 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x1f, 0x48, 0x11, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, + 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x20, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x5f, + 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x76, 0x61, 0x6c, + 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x64, + 0x73, 0x63, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, 0x6e, 0x63, 0x61, + 0x70, 0x5f, 0x67, 0x72, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x64, 0x65, + 0x63, 0x61, 0x70, 0x5f, 0x74, 0x74, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x61, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x0a, 0x15, 0x5f, + 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x76, 0x78, 0x6c, 0x61, 0x6e, 0x5f, 0x75, + 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x76, 0x78, 0x6c, + 0x61, 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x61, 0x73, + 0x6b, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x61, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x25, + 0x0a, 0x23, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x73, 0x63, + 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x65, 0x6e, 0x63, 0x61, 0x70, 0x5f, + 0x71, 0x6f, 0x73, 0x5f, 0x74, 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x71, 0x75, 0x65, 0x75, 0x65, 0x5f, + 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, + 0x73, 0x5f, 0x64, 0x73, 0x63, 0x70, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x63, 0x5f, 0x6d, 0x61, 0x70, + 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x64, 0x65, 0x63, 0x61, 0x70, 0x5f, 0x71, 0x6f, 0x73, 0x5f, 0x74, + 0x63, 0x5f, 0x74, 0x6f, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x76, 0x78, 0x6c, 0x61, + 0x6e, 0x5f, 0x75, 0x64, 0x70, 0x5f, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x75, + 0x72, 0x69, 0x74, 0x79, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x65, 0x74, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, + 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x58, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, + 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, + 0x22, 0x6d, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x0b, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, + 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x22, 0xcc, 0x05, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, + 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x50, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, + 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x64, + 0x73, 0x74, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x69, + 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4d, 0x61, 0x73, + 0x6b, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, + 0x73, 0x72, 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, + 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, + 0x73, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, + 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, + 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, + 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x2c, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, + 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x22, 0x36, 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x20, 0x0a, - 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x50, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x06, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x05, 0x64, 0x73, 0x74, - 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x64, 0x73, 0x74, 0x49, 0x70, 0x4d, 0x61, 0x73, 0x6b, 0x88, - 0x01, 0x01, 0x12, 0x22, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x05, 0x73, 0x72, - 0x63, 0x49, 0x70, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, - 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x06, 0x48, 0x05, 0x52, 0x09, 0x73, 0x72, 0x63, 0x49, 0x70, 0x4d, 0x61, 0x73, 0x6b, - 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x10, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x08, 0x52, 0x0d, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, - 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x09, 0x52, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x2c, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x64, 0x73, 0x74, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x70, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x72, - 0x63, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x11, - 0x0a, 0x0f, 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x36, - 0x0a, 0x22, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, - 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x35, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x24, 0x0a, - 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, - 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, - 0x64, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, - 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0a, 0x48, 0x01, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x0b, 0x48, 0x02, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, 0x01, 0x01, - 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x69, - 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x2a, 0x0a, 0x28, 0x53, 0x65, - 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x35, 0x0a, 0x21, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, + 0x24, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, + 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x27, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x04, 0x76, 0x72, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x0e, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, + 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x01, 0x52, 0x0d, 0x69, 0x70, 0x73, 0x65, 0x63, 0x56, 0x65, + 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x72, 0x69, + 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0b, 0x48, 0x02, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x88, + 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x72, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, + 0x5f, 0x69, 0x70, 0x73, 0x65, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, + 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x2a, 0x0a, 0x28, + 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x74, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, - 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, - 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xa6, 0x0a, 0x0a, 0x1b, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, - 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x12, 0x59, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x74, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6f, 0x65, 0x63, 0x6e, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x03, 0x48, 0x02, 0x52, 0x07, 0x6f, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, - 0x2a, 0x0a, 0x0a, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, 0x09, 0x6f, - 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x75, - 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x75, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, - 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, - 0x05, 0x52, 0x09, 0x75, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x2b, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, 0x52, 0x09, - 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, - 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, 0x0b, 0x76, - 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x29, 0x0a, - 0x0a, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x08, 0x76, 0x6e, 0x69, - 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x76, 0x6e, 0x69, 0x5f, - 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x76, 0x6e, 0x69, 0x49, 0x64, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0b, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x62, 0x72, 0x69, 0x64, - 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0d, 0x62, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3e, 0x0a, - 0x15, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, - 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, - 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0e, - 0x52, 0x09, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2f, - 0x0a, 0x0d, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0f, 0x52, - 0x0b, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x36, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x67, 0x67, 0x49, - 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, 0x72, 0x76, 0x36, 0x5f, - 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x13, 0x20, - 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, 0x0f, 0x73, - 0x72, 0x76, 0x36, 0x56, 0x70, 0x6e, 0x53, 0x69, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, - 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x74, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x65, - 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x65, 0x63, - 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, - 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, - 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x62, 0x72, 0x69, - 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x18, 0x0a, 0x16, - 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, - 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, - 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x73, - 0x72, 0x76, 0x36, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x30, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, - 0x6f, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x29, + 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x74, 0x0a, 0x28, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x48, 0x0a, 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x56, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, - 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x5a, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, - 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, - 0x73, 0x22, 0x56, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x65, 0x71, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x5a, 0x0a, 0x15, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, - 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0x6a, 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, - 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, - 0x02, 0x2a, 0xc1, 0x08, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, - 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x52, 0x4c, 0x41, 0x59, 0x5f, 0x49, 0x4e, 0x54, 0x45, - 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x59, 0x5f, 0x49, - 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, - 0x50, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, - 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, - 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x10, 0x08, - 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, - 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, 0x4c, 0x10, - 0x0a, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x56, - 0x41, 0x4c, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x5f, - 0x4b, 0x45, 0x59, 0x10, 0x0c, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, - 0x4f, 0x44, 0x45, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x45, - 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x0f, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x45, 0x52, - 0x53, 0x10, 0x10, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x10, 0x12, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x13, 0x12, 0x26, 0x0a, 0x22, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x4f, 0x50, 0x42, - 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x14, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, - 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x15, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, - 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x16, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, - 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x17, - 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x18, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, - 0x53, 0x41, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x19, 0x12, 0x32, - 0x0a, 0x2e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, - 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, - 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x41, 0x50, - 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x54, - 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1b, 0x12, 0x28, 0x0a, - 0x24, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, - 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, 0x5f, 0x54, - 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1c, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x55, 0x4e, 0x4e, 0x45, - 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, - 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, - 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1d, 0x12, 0x28, 0x0a, 0x24, 0x54, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, + 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xa6, 0x0a, 0x0a, 0x1b, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x12, 0x59, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, + 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, 0x09, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x08, 0x6f, 0x65, 0x63, + 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x07, 0x6f, 0x65, 0x63, 0x6e, 0x4b, 0x65, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x03, 0x52, + 0x09, 0x6f, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, + 0x08, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x04, 0x52, 0x07, 0x75, 0x65, 0x63, 0x6e, 0x4b, + 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x75, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, + 0x06, 0x48, 0x05, 0x52, 0x09, 0x75, 0x65, 0x63, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x07, 0x48, 0x06, + 0x52, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2f, + 0x0a, 0x0d, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x07, 0x52, + 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x29, 0x0a, 0x0a, 0x76, 0x6e, 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, 0x08, 0x52, 0x08, 0x76, + 0x6e, 0x69, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x0c, 0x76, 0x6e, + 0x69, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x09, 0x52, 0x0a, 0x76, 0x6e, 0x69, 0x49, + 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x0d, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x0a, 0x52, 0x0b, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x0f, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x0b, 0x52, 0x0d, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x3e, 0x0a, 0x15, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0c, 0x52, 0x12, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, + 0x42, 0x0a, 0x17, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0e, 0x48, 0x0d, 0x52, 0x14, 0x76, 0x69, 0x72, 0x74, + 0x75, 0x61, 0x6c, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0f, + 0x48, 0x0e, 0x52, 0x09, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, + 0x12, 0x2f, 0x0a, 0x0d, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, + 0x0f, 0x52, 0x0b, 0x76, 0x73, 0x69, 0x64, 0x49, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x36, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, + 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x11, 0x48, 0x10, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x41, 0x67, + 0x67, 0x49, 0x64, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x12, 0x73, 0x72, 0x76, + 0x36, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x0c, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x11, 0x52, + 0x0f, 0x73, 0x72, 0x76, 0x36, 0x56, 0x70, 0x6e, 0x53, 0x69, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x3c, 0x42, 0x12, 0x0a, 0x10, 0x5f, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x70, 0x42, 0x0b, + 0x0a, 0x09, 0x5f, 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x6f, 0x65, 0x63, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, + 0x65, 0x63, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x75, 0x65, 0x63, 0x6e, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x76, 0x6e, 0x69, + 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x76, 0x6e, 0x69, 0x5f, + 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x62, 0x72, 0x69, + 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x62, + 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x18, + 0x0a, 0x16, 0x5f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x76, 0x69, 0x72, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, + 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x76, 0x73, 0x69, 0x64, 0x5f, 0x69, 0x64, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, + 0x78, 0x5f, 0x61, 0x67, 0x67, 0x5f, 0x69, 0x64, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x15, 0x0a, 0x13, + 0x5f, 0x73, 0x72, 0x76, 0x36, 0x5f, 0x76, 0x70, 0x6e, 0x5f, 0x73, 0x69, 0x64, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x22, 0x30, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2f, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7d, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x46, 0x0a, + 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, + 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x68, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, + 0x56, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x5a, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x41, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, + 0x73, 0x70, 0x73, 0x22, 0x56, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x72, + 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x5a, 0x0a, 0x15, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x2a, 0x6a, 0x0a, 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, + 0x50, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x02, 0x2a, 0x8b, 0x09, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, + 0x74, 0x72, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x52, 0x4c, 0x41, 0x59, 0x5f, 0x49, 0x4e, + 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x4c, 0x41, 0x59, + 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x46, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x45, 0x45, 0x52, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x53, 0x52, 0x43, + 0x5f, 0x49, 0x50, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, + 0x50, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x56, 0x41, 0x4c, + 0x10, 0x08, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x10, 0x09, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x56, 0x41, + 0x4c, 0x10, 0x0a, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, + 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x52, 0x45, 0x5f, 0x4b, 0x45, 0x59, + 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, + 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x47, 0x52, + 0x45, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0c, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0d, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x50, + 0x50, 0x45, 0x52, 0x53, 0x10, 0x0e, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x45, 0x43, 0x4e, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x0f, 0x12, 0x1d, 0x0a, 0x19, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x50, + 0x45, 0x52, 0x53, 0x10, 0x10, 0x12, 0x1e, 0x0a, 0x1a, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x54, 0x54, 0x4c, 0x5f, 0x4d, + 0x4f, 0x44, 0x45, 0x10, 0x11, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x12, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x13, 0x12, 0x26, 0x0a, + 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x4f, 0x4f, + 0x50, 0x42, 0x41, 0x43, 0x4b, 0x5f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x41, 0x43, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x14, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, + 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x15, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, 0x4e, - 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x55, 0x52, - 0x49, 0x54, 0x59, 0x10, 0x1e, 0x2a, 0xb3, 0x04, 0x0a, 0x18, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, + 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x16, 0x12, 0x24, 0x0a, 0x20, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, 0x41, + 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x53, 0x4b, + 0x10, 0x17, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x53, 0x41, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x18, 0x12, 0x22, 0x0a, 0x1e, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x53, 0x41, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x19, + 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x41, 0x4e, 0x44, + 0x5f, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x5f, 0x54, 0x4f, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x4d, + 0x41, 0x50, 0x10, 0x1a, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x4e, 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x54, 0x43, + 0x5f, 0x54, 0x4f, 0x5f, 0x51, 0x55, 0x45, 0x55, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1b, 0x12, + 0x28, 0x0a, 0x24, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, + 0x45, 0x43, 0x41, 0x50, 0x5f, 0x51, 0x4f, 0x53, 0x5f, 0x44, 0x53, 0x43, 0x50, 0x5f, 0x54, 0x4f, + 0x5f, 0x54, 0x43, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1c, 0x12, 0x32, 0x0a, 0x2e, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x41, 0x50, 0x5f, 0x51, + 0x4f, 0x53, 0x5f, 0x54, 0x43, 0x5f, 0x54, 0x4f, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, + 0x59, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x1d, 0x12, 0x28, 0x0a, + 0x24, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x58, 0x4c, + 0x41, 0x4e, 0x5f, 0x55, 0x44, 0x50, 0x5f, 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x53, 0x45, 0x43, + 0x55, 0x52, 0x49, 0x54, 0x59, 0x10, 0x1e, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, 0x5f, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x1f, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, 0x54, 0x49, + 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0x20, 0x2a, 0xb3, 0x04, 0x0a, 0x18, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x2c, + 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, + 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x52, 0x5f, + 0x49, 0x44, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, + 0x49, 0x50, 0x10, 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, + 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, 0x4d, 0x41, 0x53, 0x4b, + 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x56, 0x52, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x02, 0x12, - 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x10, 0x03, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, - 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x44, 0x53, 0x54, 0x5f, 0x49, 0x50, 0x5f, - 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x04, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, - 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x05, 0x12, - 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x06, 0x12, 0x2c, 0x0a, - 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, - 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x31, 0x0a, 0x2d, 0x54, + 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, 0x49, 0x50, 0x10, 0x05, 0x12, 0x2c, 0x0a, 0x28, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x43, 0x5f, + 0x49, 0x50, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x06, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, + 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x5f, 0x41, 0x44, + 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x09, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x12, 0x2f, - 0x0a, 0x2b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, - 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, - 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x5f, 0x46, 0x41, 0x4d, 0x49, 0x4c, 0x59, 0x10, 0x09, 0x12, - 0x2f, 0x0a, 0x2b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x49, 0x50, 0x53, 0x45, 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, - 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, - 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, - 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x0b, 0x2a, 0xa1, 0x06, 0x0a, 0x12, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, - 0x74, 0x72, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, - 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, - 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, - 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, - 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, + 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x53, 0x45, + 0x43, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x29, 0x0a, 0x25, + 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x49, + 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x0b, 0x2a, 0xa1, 0x06, 0x0a, 0x12, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x12, 0x25, + 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, + 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, + 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, + 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, + 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, + 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x03, 0x12, 0x24, - 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x56, 0x41, 0x4c, - 0x55, 0x45, 0x10, 0x04, 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, + 0x54, 0x54, 0x52, 0x5f, 0x4f, 0x45, 0x43, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x04, + 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x45, 0x43, 0x4e, 0x5f, 0x4b, + 0x45, 0x59, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x45, - 0x43, 0x4e, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, + 0x43, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, + 0x07, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x08, 0x12, 0x24, 0x0a, 0x20, 0x54, 0x55, + 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x09, + 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x49, 0x44, + 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x55, 0x45, 0x43, 0x4e, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x06, 0x12, 0x25, - 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, - 0x4b, 0x45, 0x59, 0x10, 0x07, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x08, 0x12, 0x24, - 0x0a, 0x20, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, - 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4e, 0x49, 0x5f, 0x49, 0x44, 0x5f, 0x4b, - 0x45, 0x59, 0x10, 0x09, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, - 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4e, - 0x49, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0a, 0x12, 0x27, 0x0a, 0x23, + 0x52, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, + 0x0b, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, + 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0c, 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x5f, - 0x4b, 0x45, 0x59, 0x10, 0x0b, 0x12, 0x29, 0x0a, 0x25, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, - 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, - 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0c, - 0x12, 0x2f, 0x0a, 0x2b, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, - 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, - 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, - 0x0d, 0x12, 0x31, 0x0a, 0x2d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, - 0x41, 0x4c, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, - 0x55, 0x45, 0x10, 0x0e, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, - 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x53, - 0x49, 0x44, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0f, 0x12, 0x27, 0x0a, 0x23, 0x54, - 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x53, 0x49, 0x44, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, - 0x55, 0x45, 0x10, 0x10, 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, - 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, - 0x45, 0x46, 0x49, 0x58, 0x5f, 0x41, 0x47, 0x47, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, - 0x11, 0x12, 0x2c, 0x0a, 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, - 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, - 0x56, 0x50, 0x4e, 0x5f, 0x53, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x12, 0x32, - 0xae, 0x11, 0x0a, 0x06, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x72, 0x0a, 0x0f, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x2d, 0x2e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0d, 0x12, 0x31, 0x0a, + 0x2d, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41, 0x4c, 0x5f, 0x52, + 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x0e, + 0x12, 0x25, 0x0a, 0x21, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x53, 0x49, 0x44, 0x5f, 0x49, + 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x0f, 0x12, 0x27, 0x0a, 0x23, 0x54, 0x55, 0x4e, 0x4e, 0x45, + 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x56, 0x53, 0x49, 0x44, 0x5f, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x10, + 0x12, 0x2b, 0x0a, 0x27, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, + 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x50, 0x52, 0x45, 0x46, 0x49, 0x58, + 0x5f, 0x41, 0x47, 0x47, 0x5f, 0x49, 0x44, 0x5f, 0x4b, 0x45, 0x59, 0x10, 0x11, 0x12, 0x2c, 0x0a, + 0x28, 0x54, 0x55, 0x4e, 0x4e, 0x45, 0x4c, 0x5f, 0x4d, 0x41, 0x50, 0x5f, 0x45, 0x4e, 0x54, 0x52, + 0x59, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x52, 0x56, 0x36, 0x5f, 0x56, 0x50, 0x4e, 0x5f, + 0x53, 0x49, 0x44, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x12, 0x32, 0xae, 0x11, 0x0a, 0x06, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x72, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, + 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x0f, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, - 0x0a, 0x0f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, - 0x70, 0x12, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, - 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, - 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, - 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, + 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, + 0x61, 0x70, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x69, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x7b, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, - 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, + 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x30, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, + 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x0e, 0x47, 0x65, 0x74, - 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2c, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, - 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, - 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, - 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x75, + 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, + 0x1a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, + 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, - 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, + 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0xa5, 0x01, 0x0a, 0x20, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, + 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, 0x01, 0x0a, 0x20, 0x47, + 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x3e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x3f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, - 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0xa5, - 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x3e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x65, 0x72, 0x6d, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x81, 0x01, 0x0a, 0x14, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x32, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, - 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x38, 0x2e, - 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, - 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, - 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, - 0x65, 0x6c, 0x73, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2c, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, - 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, - 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x93, 0x01, 0x0a, 0x1a, 0x47, + 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x38, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x6c, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x12, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, + 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, + 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, + 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, + 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, + 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -3425,11 +3490,12 @@ var file_dataplane_proto_sai_tunnel_proto_goTypes = []any{ (TunnelDecapEcnMode)(0), // 45: lemming.dataplane.sai.TunnelDecapEcnMode (PacketAction)(0), // 46: lemming.dataplane.sai.PacketAction (TunnelVxlanUdpSportMode)(0), // 47: lemming.dataplane.sai.TunnelVxlanUdpSportMode - (*TunnelAttribute)(nil), // 48: lemming.dataplane.sai.TunnelAttribute - (TunnelStat)(0), // 49: lemming.dataplane.sai.TunnelStat - (TunnelTermTableEntryType)(0), // 50: lemming.dataplane.sai.TunnelTermTableEntryType - (*TunnelTermTableEntryAttribute)(nil), // 51: lemming.dataplane.sai.TunnelTermTableEntryAttribute - (*TunnelMapEntryAttribute)(nil), // 52: lemming.dataplane.sai.TunnelMapEntryAttribute + (StatsCountMode)(0), // 48: lemming.dataplane.sai.StatsCountMode + (*TunnelAttribute)(nil), // 49: lemming.dataplane.sai.TunnelAttribute + (TunnelStat)(0), // 50: lemming.dataplane.sai.TunnelStat + (TunnelTermTableEntryType)(0), // 51: lemming.dataplane.sai.TunnelTermTableEntryType + (*TunnelTermTableEntryAttribute)(nil), // 52: lemming.dataplane.sai.TunnelTermTableEntryAttribute + (*TunnelMapEntryAttribute)(nil), // 53: lemming.dataplane.sai.TunnelMapEntryAttribute } var file_dataplane_proto_sai_tunnel_proto_depIdxs = []int32{ 38, // 0: lemming.dataplane.sai.CreateTunnelMapRequest.type:type_name -> lemming.dataplane.sai.TunnelMapType @@ -3445,65 +3511,67 @@ var file_dataplane_proto_sai_tunnel_proto_depIdxs = []int32{ 43, // 10: lemming.dataplane.sai.CreateTunnelRequest.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode 46, // 11: lemming.dataplane.sai.CreateTunnelRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction 47, // 12: lemming.dataplane.sai.CreateTunnelRequest.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 42, // 13: lemming.dataplane.sai.SetTunnelAttributeRequest.encap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 43, // 14: lemming.dataplane.sai.SetTunnelAttributeRequest.encap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 42, // 15: lemming.dataplane.sai.SetTunnelAttributeRequest.decap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode - 43, // 16: lemming.dataplane.sai.SetTunnelAttributeRequest.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode - 46, // 17: lemming.dataplane.sai.SetTunnelAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction - 47, // 18: lemming.dataplane.sai.SetTunnelAttributeRequest.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode - 1, // 19: lemming.dataplane.sai.GetTunnelAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelAttr - 48, // 20: lemming.dataplane.sai.GetTunnelAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelAttribute - 49, // 21: lemming.dataplane.sai.GetTunnelStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.TunnelStat - 50, // 22: lemming.dataplane.sai.CreateTunnelTermTableEntryRequest.type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryType - 40, // 23: lemming.dataplane.sai.CreateTunnelTermTableEntryRequest.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType - 2, // 24: lemming.dataplane.sai.GetTunnelTermTableEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryAttr - 51, // 25: lemming.dataplane.sai.GetTunnelTermTableEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelTermTableEntryAttribute - 38, // 26: lemming.dataplane.sai.CreateTunnelMapEntryRequest.tunnel_map_type:type_name -> lemming.dataplane.sai.TunnelMapType - 3, // 27: lemming.dataplane.sai.GetTunnelMapEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelMapEntryAttr - 52, // 28: lemming.dataplane.sai.GetTunnelMapEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelMapEntryAttribute - 10, // 29: lemming.dataplane.sai.CreateTunnelsRequest.reqs:type_name -> lemming.dataplane.sai.CreateTunnelRequest - 11, // 30: lemming.dataplane.sai.CreateTunnelsResponse.resps:type_name -> lemming.dataplane.sai.CreateTunnelResponse - 12, // 31: lemming.dataplane.sai.RemoveTunnelsRequest.reqs:type_name -> lemming.dataplane.sai.RemoveTunnelRequest - 13, // 32: lemming.dataplane.sai.RemoveTunnelsResponse.resps:type_name -> lemming.dataplane.sai.RemoveTunnelResponse - 4, // 33: lemming.dataplane.sai.Tunnel.CreateTunnelMap:input_type -> lemming.dataplane.sai.CreateTunnelMapRequest - 6, // 34: lemming.dataplane.sai.Tunnel.RemoveTunnelMap:input_type -> lemming.dataplane.sai.RemoveTunnelMapRequest - 8, // 35: lemming.dataplane.sai.Tunnel.GetTunnelMapAttribute:input_type -> lemming.dataplane.sai.GetTunnelMapAttributeRequest - 10, // 36: lemming.dataplane.sai.Tunnel.CreateTunnel:input_type -> lemming.dataplane.sai.CreateTunnelRequest - 12, // 37: lemming.dataplane.sai.Tunnel.RemoveTunnel:input_type -> lemming.dataplane.sai.RemoveTunnelRequest - 14, // 38: lemming.dataplane.sai.Tunnel.SetTunnelAttribute:input_type -> lemming.dataplane.sai.SetTunnelAttributeRequest - 16, // 39: lemming.dataplane.sai.Tunnel.GetTunnelAttribute:input_type -> lemming.dataplane.sai.GetTunnelAttributeRequest - 18, // 40: lemming.dataplane.sai.Tunnel.GetTunnelStats:input_type -> lemming.dataplane.sai.GetTunnelStatsRequest - 20, // 41: lemming.dataplane.sai.Tunnel.CreateTunnelTermTableEntry:input_type -> lemming.dataplane.sai.CreateTunnelTermTableEntryRequest - 22, // 42: lemming.dataplane.sai.Tunnel.RemoveTunnelTermTableEntry:input_type -> lemming.dataplane.sai.RemoveTunnelTermTableEntryRequest - 24, // 43: lemming.dataplane.sai.Tunnel.SetTunnelTermTableEntryAttribute:input_type -> lemming.dataplane.sai.SetTunnelTermTableEntryAttributeRequest - 26, // 44: lemming.dataplane.sai.Tunnel.GetTunnelTermTableEntryAttribute:input_type -> lemming.dataplane.sai.GetTunnelTermTableEntryAttributeRequest - 28, // 45: lemming.dataplane.sai.Tunnel.CreateTunnelMapEntry:input_type -> lemming.dataplane.sai.CreateTunnelMapEntryRequest - 30, // 46: lemming.dataplane.sai.Tunnel.RemoveTunnelMapEntry:input_type -> lemming.dataplane.sai.RemoveTunnelMapEntryRequest - 32, // 47: lemming.dataplane.sai.Tunnel.GetTunnelMapEntryAttribute:input_type -> lemming.dataplane.sai.GetTunnelMapEntryAttributeRequest - 34, // 48: lemming.dataplane.sai.Tunnel.CreateTunnels:input_type -> lemming.dataplane.sai.CreateTunnelsRequest - 36, // 49: lemming.dataplane.sai.Tunnel.RemoveTunnels:input_type -> lemming.dataplane.sai.RemoveTunnelsRequest - 5, // 50: lemming.dataplane.sai.Tunnel.CreateTunnelMap:output_type -> lemming.dataplane.sai.CreateTunnelMapResponse - 7, // 51: lemming.dataplane.sai.Tunnel.RemoveTunnelMap:output_type -> lemming.dataplane.sai.RemoveTunnelMapResponse - 9, // 52: lemming.dataplane.sai.Tunnel.GetTunnelMapAttribute:output_type -> lemming.dataplane.sai.GetTunnelMapAttributeResponse - 11, // 53: lemming.dataplane.sai.Tunnel.CreateTunnel:output_type -> lemming.dataplane.sai.CreateTunnelResponse - 13, // 54: lemming.dataplane.sai.Tunnel.RemoveTunnel:output_type -> lemming.dataplane.sai.RemoveTunnelResponse - 15, // 55: lemming.dataplane.sai.Tunnel.SetTunnelAttribute:output_type -> lemming.dataplane.sai.SetTunnelAttributeResponse - 17, // 56: lemming.dataplane.sai.Tunnel.GetTunnelAttribute:output_type -> lemming.dataplane.sai.GetTunnelAttributeResponse - 19, // 57: lemming.dataplane.sai.Tunnel.GetTunnelStats:output_type -> lemming.dataplane.sai.GetTunnelStatsResponse - 21, // 58: lemming.dataplane.sai.Tunnel.CreateTunnelTermTableEntry:output_type -> lemming.dataplane.sai.CreateTunnelTermTableEntryResponse - 23, // 59: lemming.dataplane.sai.Tunnel.RemoveTunnelTermTableEntry:output_type -> lemming.dataplane.sai.RemoveTunnelTermTableEntryResponse - 25, // 60: lemming.dataplane.sai.Tunnel.SetTunnelTermTableEntryAttribute:output_type -> lemming.dataplane.sai.SetTunnelTermTableEntryAttributeResponse - 27, // 61: lemming.dataplane.sai.Tunnel.GetTunnelTermTableEntryAttribute:output_type -> lemming.dataplane.sai.GetTunnelTermTableEntryAttributeResponse - 29, // 62: lemming.dataplane.sai.Tunnel.CreateTunnelMapEntry:output_type -> lemming.dataplane.sai.CreateTunnelMapEntryResponse - 31, // 63: lemming.dataplane.sai.Tunnel.RemoveTunnelMapEntry:output_type -> lemming.dataplane.sai.RemoveTunnelMapEntryResponse - 33, // 64: lemming.dataplane.sai.Tunnel.GetTunnelMapEntryAttribute:output_type -> lemming.dataplane.sai.GetTunnelMapEntryAttributeResponse - 35, // 65: lemming.dataplane.sai.Tunnel.CreateTunnels:output_type -> lemming.dataplane.sai.CreateTunnelsResponse - 37, // 66: lemming.dataplane.sai.Tunnel.RemoveTunnels:output_type -> lemming.dataplane.sai.RemoveTunnelsResponse - 50, // [50:67] is the sub-list for method output_type - 33, // [33:50] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 48, // 13: lemming.dataplane.sai.CreateTunnelRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 42, // 14: lemming.dataplane.sai.SetTunnelAttributeRequest.encap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode + 43, // 15: lemming.dataplane.sai.SetTunnelAttributeRequest.encap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode + 42, // 16: lemming.dataplane.sai.SetTunnelAttributeRequest.decap_ttl_mode:type_name -> lemming.dataplane.sai.TunnelTtlMode + 43, // 17: lemming.dataplane.sai.SetTunnelAttributeRequest.decap_dscp_mode:type_name -> lemming.dataplane.sai.TunnelDscpMode + 46, // 18: lemming.dataplane.sai.SetTunnelAttributeRequest.loopback_packet_action:type_name -> lemming.dataplane.sai.PacketAction + 47, // 19: lemming.dataplane.sai.SetTunnelAttributeRequest.vxlan_udp_sport_mode:type_name -> lemming.dataplane.sai.TunnelVxlanUdpSportMode + 48, // 20: lemming.dataplane.sai.SetTunnelAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 1, // 21: lemming.dataplane.sai.GetTunnelAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelAttr + 49, // 22: lemming.dataplane.sai.GetTunnelAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelAttribute + 50, // 23: lemming.dataplane.sai.GetTunnelStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.TunnelStat + 51, // 24: lemming.dataplane.sai.CreateTunnelTermTableEntryRequest.type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryType + 40, // 25: lemming.dataplane.sai.CreateTunnelTermTableEntryRequest.tunnel_type:type_name -> lemming.dataplane.sai.TunnelType + 2, // 26: lemming.dataplane.sai.GetTunnelTermTableEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelTermTableEntryAttr + 52, // 27: lemming.dataplane.sai.GetTunnelTermTableEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelTermTableEntryAttribute + 38, // 28: lemming.dataplane.sai.CreateTunnelMapEntryRequest.tunnel_map_type:type_name -> lemming.dataplane.sai.TunnelMapType + 3, // 29: lemming.dataplane.sai.GetTunnelMapEntryAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.TunnelMapEntryAttr + 53, // 30: lemming.dataplane.sai.GetTunnelMapEntryAttributeResponse.attr:type_name -> lemming.dataplane.sai.TunnelMapEntryAttribute + 10, // 31: lemming.dataplane.sai.CreateTunnelsRequest.reqs:type_name -> lemming.dataplane.sai.CreateTunnelRequest + 11, // 32: lemming.dataplane.sai.CreateTunnelsResponse.resps:type_name -> lemming.dataplane.sai.CreateTunnelResponse + 12, // 33: lemming.dataplane.sai.RemoveTunnelsRequest.reqs:type_name -> lemming.dataplane.sai.RemoveTunnelRequest + 13, // 34: lemming.dataplane.sai.RemoveTunnelsResponse.resps:type_name -> lemming.dataplane.sai.RemoveTunnelResponse + 4, // 35: lemming.dataplane.sai.Tunnel.CreateTunnelMap:input_type -> lemming.dataplane.sai.CreateTunnelMapRequest + 6, // 36: lemming.dataplane.sai.Tunnel.RemoveTunnelMap:input_type -> lemming.dataplane.sai.RemoveTunnelMapRequest + 8, // 37: lemming.dataplane.sai.Tunnel.GetTunnelMapAttribute:input_type -> lemming.dataplane.sai.GetTunnelMapAttributeRequest + 10, // 38: lemming.dataplane.sai.Tunnel.CreateTunnel:input_type -> lemming.dataplane.sai.CreateTunnelRequest + 12, // 39: lemming.dataplane.sai.Tunnel.RemoveTunnel:input_type -> lemming.dataplane.sai.RemoveTunnelRequest + 14, // 40: lemming.dataplane.sai.Tunnel.SetTunnelAttribute:input_type -> lemming.dataplane.sai.SetTunnelAttributeRequest + 16, // 41: lemming.dataplane.sai.Tunnel.GetTunnelAttribute:input_type -> lemming.dataplane.sai.GetTunnelAttributeRequest + 18, // 42: lemming.dataplane.sai.Tunnel.GetTunnelStats:input_type -> lemming.dataplane.sai.GetTunnelStatsRequest + 20, // 43: lemming.dataplane.sai.Tunnel.CreateTunnelTermTableEntry:input_type -> lemming.dataplane.sai.CreateTunnelTermTableEntryRequest + 22, // 44: lemming.dataplane.sai.Tunnel.RemoveTunnelTermTableEntry:input_type -> lemming.dataplane.sai.RemoveTunnelTermTableEntryRequest + 24, // 45: lemming.dataplane.sai.Tunnel.SetTunnelTermTableEntryAttribute:input_type -> lemming.dataplane.sai.SetTunnelTermTableEntryAttributeRequest + 26, // 46: lemming.dataplane.sai.Tunnel.GetTunnelTermTableEntryAttribute:input_type -> lemming.dataplane.sai.GetTunnelTermTableEntryAttributeRequest + 28, // 47: lemming.dataplane.sai.Tunnel.CreateTunnelMapEntry:input_type -> lemming.dataplane.sai.CreateTunnelMapEntryRequest + 30, // 48: lemming.dataplane.sai.Tunnel.RemoveTunnelMapEntry:input_type -> lemming.dataplane.sai.RemoveTunnelMapEntryRequest + 32, // 49: lemming.dataplane.sai.Tunnel.GetTunnelMapEntryAttribute:input_type -> lemming.dataplane.sai.GetTunnelMapEntryAttributeRequest + 34, // 50: lemming.dataplane.sai.Tunnel.CreateTunnels:input_type -> lemming.dataplane.sai.CreateTunnelsRequest + 36, // 51: lemming.dataplane.sai.Tunnel.RemoveTunnels:input_type -> lemming.dataplane.sai.RemoveTunnelsRequest + 5, // 52: lemming.dataplane.sai.Tunnel.CreateTunnelMap:output_type -> lemming.dataplane.sai.CreateTunnelMapResponse + 7, // 53: lemming.dataplane.sai.Tunnel.RemoveTunnelMap:output_type -> lemming.dataplane.sai.RemoveTunnelMapResponse + 9, // 54: lemming.dataplane.sai.Tunnel.GetTunnelMapAttribute:output_type -> lemming.dataplane.sai.GetTunnelMapAttributeResponse + 11, // 55: lemming.dataplane.sai.Tunnel.CreateTunnel:output_type -> lemming.dataplane.sai.CreateTunnelResponse + 13, // 56: lemming.dataplane.sai.Tunnel.RemoveTunnel:output_type -> lemming.dataplane.sai.RemoveTunnelResponse + 15, // 57: lemming.dataplane.sai.Tunnel.SetTunnelAttribute:output_type -> lemming.dataplane.sai.SetTunnelAttributeResponse + 17, // 58: lemming.dataplane.sai.Tunnel.GetTunnelAttribute:output_type -> lemming.dataplane.sai.GetTunnelAttributeResponse + 19, // 59: lemming.dataplane.sai.Tunnel.GetTunnelStats:output_type -> lemming.dataplane.sai.GetTunnelStatsResponse + 21, // 60: lemming.dataplane.sai.Tunnel.CreateTunnelTermTableEntry:output_type -> lemming.dataplane.sai.CreateTunnelTermTableEntryResponse + 23, // 61: lemming.dataplane.sai.Tunnel.RemoveTunnelTermTableEntry:output_type -> lemming.dataplane.sai.RemoveTunnelTermTableEntryResponse + 25, // 62: lemming.dataplane.sai.Tunnel.SetTunnelTermTableEntryAttribute:output_type -> lemming.dataplane.sai.SetTunnelTermTableEntryAttributeResponse + 27, // 63: lemming.dataplane.sai.Tunnel.GetTunnelTermTableEntryAttribute:output_type -> lemming.dataplane.sai.GetTunnelTermTableEntryAttributeResponse + 29, // 64: lemming.dataplane.sai.Tunnel.CreateTunnelMapEntry:output_type -> lemming.dataplane.sai.CreateTunnelMapEntryResponse + 31, // 65: lemming.dataplane.sai.Tunnel.RemoveTunnelMapEntry:output_type -> lemming.dataplane.sai.RemoveTunnelMapEntryResponse + 33, // 66: lemming.dataplane.sai.Tunnel.GetTunnelMapEntryAttribute:output_type -> lemming.dataplane.sai.GetTunnelMapEntryAttributeResponse + 35, // 67: lemming.dataplane.sai.Tunnel.CreateTunnels:output_type -> lemming.dataplane.sai.CreateTunnelsResponse + 37, // 68: lemming.dataplane.sai.Tunnel.RemoveTunnels:output_type -> lemming.dataplane.sai.RemoveTunnelsResponse + 52, // [52:69] is the sub-list for method output_type + 35, // [35:52] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_tunnel_proto_init() } diff --git a/dataplane/proto/sai/tunnel.proto b/dataplane/proto/sai/tunnel.proto index 5fb14883c..85389fae9 100644 --- a/dataplane/proto/sai/tunnel.proto +++ b/dataplane/proto/sai/tunnel.proto @@ -7,319 +7,335 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum TunnelMapAttr { - TUNNEL_MAP_ATTR_UNSPECIFIED = 0; - TUNNEL_MAP_ATTR_TYPE = 1; - TUNNEL_MAP_ATTR_ENTRY_LIST = 2; + TUNNEL_MAP_ATTR_UNSPECIFIED = 0; + TUNNEL_MAP_ATTR_TYPE = 1; + TUNNEL_MAP_ATTR_ENTRY_LIST = 2; } enum TunnelAttr { - TUNNEL_ATTR_UNSPECIFIED = 0; - TUNNEL_ATTR_TYPE = 1; - TUNNEL_ATTR_UNDERLAY_INTERFACE = 2; - TUNNEL_ATTR_OVERLAY_INTERFACE = 3; - TUNNEL_ATTR_PEER_MODE = 4; - TUNNEL_ATTR_ENCAP_SRC_IP = 5; - TUNNEL_ATTR_ENCAP_DST_IP = 6; - TUNNEL_ATTR_ENCAP_TTL_MODE = 7; - TUNNEL_ATTR_ENCAP_TTL_VAL = 8; - TUNNEL_ATTR_ENCAP_DSCP_MODE = 9; - TUNNEL_ATTR_ENCAP_DSCP_VAL = 10; - TUNNEL_ATTR_ENCAP_GRE_KEY_VALID = 11; - TUNNEL_ATTR_ENCAP_GRE_KEY = 12; - TUNNEL_ATTR_ENCAP_ECN_MODE = 13; - TUNNEL_ATTR_ENCAP_MAPPERS = 14; - TUNNEL_ATTR_DECAP_ECN_MODE = 15; - TUNNEL_ATTR_DECAP_MAPPERS = 16; - TUNNEL_ATTR_DECAP_TTL_MODE = 17; - TUNNEL_ATTR_DECAP_DSCP_MODE = 18; - TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST = 19; - TUNNEL_ATTR_LOOPBACK_PACKET_ACTION = 20; - TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE = 21; - TUNNEL_ATTR_VXLAN_UDP_SPORT = 22; - TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK = 23; - TUNNEL_ATTR_SA_INDEX = 24; - TUNNEL_ATTR_IPSEC_SA_PORT_LIST = 25; - TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP = 26; - TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP = 27; - TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP = 28; - TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP = 29; - TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY = 30; + TUNNEL_ATTR_UNSPECIFIED = 0; + TUNNEL_ATTR_TYPE = 1; + TUNNEL_ATTR_UNDERLAY_INTERFACE = 2; + TUNNEL_ATTR_OVERLAY_INTERFACE = 3; + TUNNEL_ATTR_PEER_MODE = 4; + TUNNEL_ATTR_ENCAP_SRC_IP = 5; + TUNNEL_ATTR_ENCAP_DST_IP = 6; + TUNNEL_ATTR_ENCAP_TTL_MODE = 7; + TUNNEL_ATTR_ENCAP_TTL_VAL = 8; + TUNNEL_ATTR_ENCAP_DSCP_MODE = 9; + TUNNEL_ATTR_ENCAP_DSCP_VAL = 10; + TUNNEL_ATTR_ENCAP_GRE_KEY_VALID = 11; + TUNNEL_ATTR_ENCAP_GRE_KEY = 12; + TUNNEL_ATTR_ENCAP_ECN_MODE = 13; + TUNNEL_ATTR_ENCAP_MAPPERS = 14; + TUNNEL_ATTR_DECAP_ECN_MODE = 15; + TUNNEL_ATTR_DECAP_MAPPERS = 16; + TUNNEL_ATTR_DECAP_TTL_MODE = 17; + TUNNEL_ATTR_DECAP_DSCP_MODE = 18; + TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST = 19; + TUNNEL_ATTR_LOOPBACK_PACKET_ACTION = 20; + TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE = 21; + TUNNEL_ATTR_VXLAN_UDP_SPORT = 22; + TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK = 23; + TUNNEL_ATTR_SA_INDEX = 24; + TUNNEL_ATTR_IPSEC_SA_PORT_LIST = 25; + TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP = 26; + TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP = 27; + TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP = 28; + TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP = 29; + TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY = 30; + TUNNEL_ATTR_STATS_COUNT_MODE = 31; + TUNNEL_ATTR_SELECTIVE_COUNTER_LIST = 32; } enum TunnelTermTableEntryAttr { - TUNNEL_TERM_TABLE_ENTRY_ATTR_UNSPECIFIED = 0; - TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID = 1; - TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE = 2; - TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP = 3; - TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK = 4; - TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP = 5; - TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK = 6; - TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE = 7; - TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID = 8; - TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY = 9; - TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED = 10; - TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY = 11; + TUNNEL_TERM_TABLE_ENTRY_ATTR_UNSPECIFIED = 0; + TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID = 1; + TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE = 2; + TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP = 3; + TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK = 4; + TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP = 5; + TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK = 6; + TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE = 7; + TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID = 8; + TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY = 9; + TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED = 10; + TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY = 11; } enum TunnelMapEntryAttr { - TUNNEL_MAP_ENTRY_ATTR_UNSPECIFIED = 0; - TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE = 1; - TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP = 2; - TUNNEL_MAP_ENTRY_ATTR_OECN_KEY = 3; - TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE = 4; - TUNNEL_MAP_ENTRY_ATTR_UECN_KEY = 5; - TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE = 6; - TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY = 7; - TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE = 8; - TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY = 9; - TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE = 10; - TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY = 11; - TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE = 12; - TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY = 13; - TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE = 14; - TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY = 15; - TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE = 16; - TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY = 17; - TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE = 18; + TUNNEL_MAP_ENTRY_ATTR_UNSPECIFIED = 0; + TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE = 1; + TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP = 2; + TUNNEL_MAP_ENTRY_ATTR_OECN_KEY = 3; + TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE = 4; + TUNNEL_MAP_ENTRY_ATTR_UECN_KEY = 5; + TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE = 6; + TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY = 7; + TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE = 8; + TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY = 9; + TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE = 10; + TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY = 11; + TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE = 12; + TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY = 13; + TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE = 14; + TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY = 15; + TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE = 16; + TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY = 17; + TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE = 18; } message CreateTunnelMapRequest { - option (sai_type) = OBJECT_TYPE_TUNNEL_MAP; - uint64 switch = 1; - optional TunnelMapType type = 2[(attr_enum_value) = 1]; + option (sai_type) = OBJECT_TYPE_TUNNEL_MAP; + uint64 switch = 1; + optional TunnelMapType type = 2 [(attr_enum_value) = 1]; } message CreateTunnelMapResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTunnelMapRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTunnelMapResponse { -} +message RemoveTunnelMapResponse {} message GetTunnelMapAttributeRequest { - uint64 oid = 1; - repeated TunnelMapAttr attr_type = 2; + uint64 oid = 1; + repeated TunnelMapAttr attr_type = 2; } message GetTunnelMapAttributeResponse { - TunnelMapAttribute attr = 1; + TunnelMapAttribute attr = 1; } message CreateTunnelRequest { - option (sai_type) = OBJECT_TYPE_TUNNEL; - uint64 switch = 1; - optional TunnelType type = 2[(attr_enum_value) = 1]; - optional uint64 underlay_interface = 3[(attr_enum_value) = 2]; - optional uint64 overlay_interface = 4[(attr_enum_value) = 3]; - optional TunnelPeerMode peer_mode = 5[(attr_enum_value) = 4]; - optional bytes encap_src_ip = 6[(attr_enum_value) = 5]; - optional bytes encap_dst_ip = 7[(attr_enum_value) = 6]; - optional TunnelTtlMode encap_ttl_mode = 8[(attr_enum_value) = 7]; - optional uint32 encap_ttl_val = 9[(attr_enum_value) = 8]; - optional TunnelDscpMode encap_dscp_mode = 10[(attr_enum_value) = 9]; - optional uint32 encap_dscp_val = 11[(attr_enum_value) = 10]; - optional bool encap_gre_key_valid = 12[(attr_enum_value) = 11]; - optional uint32 encap_gre_key = 13[(attr_enum_value) = 12]; - optional TunnelEncapEcnMode encap_ecn_mode = 14[(attr_enum_value) = 13]; - repeated uint64 encap_mappers = 15[(attr_enum_value) = 14]; - optional TunnelDecapEcnMode decap_ecn_mode = 16[(attr_enum_value) = 15]; - repeated uint64 decap_mappers = 17[(attr_enum_value) = 16]; - optional TunnelTtlMode decap_ttl_mode = 18[(attr_enum_value) = 17]; - optional TunnelDscpMode decap_dscp_mode = 19[(attr_enum_value) = 18]; - optional PacketAction loopback_packet_action = 20[(attr_enum_value) = 20]; - optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 21[(attr_enum_value) = 21]; - optional uint32 vxlan_udp_sport = 22[(attr_enum_value) = 22]; - optional uint32 vxlan_udp_sport_mask = 23[(attr_enum_value) = 23]; - optional uint32 sa_index = 24[(attr_enum_value) = 24]; - repeated uint64 ipsec_sa_port_list = 25[(attr_enum_value) = 25]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 26[(attr_enum_value) = 26]; - optional uint64 encap_qos_tc_to_queue_map = 27[(attr_enum_value) = 27]; - optional uint64 decap_qos_dscp_to_tc_map = 28[(attr_enum_value) = 28]; - optional uint64 decap_qos_tc_to_priority_group_map = 29[(attr_enum_value) = 29]; - optional bool vxlan_udp_sport_security = 30[(attr_enum_value) = 30]; + option (sai_type) = OBJECT_TYPE_TUNNEL; + uint64 switch = 1; + optional TunnelType type = 2 [(attr_enum_value) = 1]; + optional uint64 underlay_interface = 3 [(attr_enum_value) = 2]; + optional uint64 overlay_interface = 4 [(attr_enum_value) = 3]; + optional TunnelPeerMode peer_mode = 5 [(attr_enum_value) = 4]; + optional bytes encap_src_ip = 6 [(attr_enum_value) = 5]; + optional bytes encap_dst_ip = 7 [(attr_enum_value) = 6]; + optional TunnelTtlMode encap_ttl_mode = 8 [(attr_enum_value) = 7]; + optional uint32 encap_ttl_val = 9 [(attr_enum_value) = 8]; + optional TunnelDscpMode encap_dscp_mode = 10 [(attr_enum_value) = 9]; + optional uint32 encap_dscp_val = 11 [(attr_enum_value) = 10]; + optional bool encap_gre_key_valid = 12 [(attr_enum_value) = 11]; + optional uint32 encap_gre_key = 13 [(attr_enum_value) = 12]; + optional TunnelEncapEcnMode encap_ecn_mode = 14 [(attr_enum_value) = 13]; + repeated uint64 encap_mappers = 15 [(attr_enum_value) = 14]; + optional TunnelDecapEcnMode decap_ecn_mode = 16 [(attr_enum_value) = 15]; + repeated uint64 decap_mappers = 17 [(attr_enum_value) = 16]; + optional TunnelTtlMode decap_ttl_mode = 18 [(attr_enum_value) = 17]; + optional TunnelDscpMode decap_dscp_mode = 19 [(attr_enum_value) = 18]; + optional PacketAction loopback_packet_action = 20 [(attr_enum_value) = 20]; + optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 21 + [(attr_enum_value) = 21]; + optional uint32 vxlan_udp_sport = 22 [(attr_enum_value) = 22]; + optional uint32 vxlan_udp_sport_mask = 23 [(attr_enum_value) = 23]; + optional uint32 sa_index = 24 [(attr_enum_value) = 24]; + repeated uint64 ipsec_sa_port_list = 25 [(attr_enum_value) = 25]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 26 + [(attr_enum_value) = 26]; + optional uint64 encap_qos_tc_to_queue_map = 27 [(attr_enum_value) = 27]; + optional uint64 decap_qos_dscp_to_tc_map = 28 [(attr_enum_value) = 28]; + optional uint64 decap_qos_tc_to_priority_group_map = 29 + [(attr_enum_value) = 29]; + optional bool vxlan_udp_sport_security = 30 [(attr_enum_value) = 30]; + optional StatsCountMode stats_count_mode = 31 [(attr_enum_value) = 31]; + repeated uint64 selective_counter_list = 32 [(attr_enum_value) = 32]; } message CreateTunnelResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTunnelRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTunnelResponse { -} +message RemoveTunnelResponse {} message SetTunnelAttributeRequest { - uint64 oid = 1; - optional TunnelTtlMode encap_ttl_mode = 2[(attr_enum_value) = 7]; - optional uint32 encap_ttl_val = 3[(attr_enum_value) = 8]; - optional TunnelDscpMode encap_dscp_mode = 4[(attr_enum_value) = 9]; - optional uint32 encap_dscp_val = 5[(attr_enum_value) = 10]; - optional uint32 encap_gre_key = 6[(attr_enum_value) = 12]; - optional TunnelTtlMode decap_ttl_mode = 7[(attr_enum_value) = 17]; - optional TunnelDscpMode decap_dscp_mode = 8[(attr_enum_value) = 18]; - optional PacketAction loopback_packet_action = 9[(attr_enum_value) = 20]; - optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 10[(attr_enum_value) = 21]; - optional uint32 vxlan_udp_sport = 11[(attr_enum_value) = 22]; - optional uint32 vxlan_udp_sport_mask = 12[(attr_enum_value) = 23]; - optional uint32 sa_index = 13[(attr_enum_value) = 24]; - repeated uint64 ipsec_sa_port_list = 14[(attr_enum_value) = 25]; - optional uint64 encap_qos_tc_and_color_to_dscp_map = 15[(attr_enum_value) = 26]; - optional uint64 encap_qos_tc_to_queue_map = 16[(attr_enum_value) = 27]; - optional uint64 decap_qos_dscp_to_tc_map = 17[(attr_enum_value) = 28]; - optional uint64 decap_qos_tc_to_priority_group_map = 18[(attr_enum_value) = 29]; - optional bool vxlan_udp_sport_security = 19[(attr_enum_value) = 30]; -} - -message SetTunnelAttributeResponse { -} + uint64 oid = 1; + optional TunnelTtlMode encap_ttl_mode = 2 [(attr_enum_value) = 7]; + optional uint32 encap_ttl_val = 3 [(attr_enum_value) = 8]; + optional TunnelDscpMode encap_dscp_mode = 4 [(attr_enum_value) = 9]; + optional uint32 encap_dscp_val = 5 [(attr_enum_value) = 10]; + optional uint32 encap_gre_key = 6 [(attr_enum_value) = 12]; + optional TunnelTtlMode decap_ttl_mode = 7 [(attr_enum_value) = 17]; + optional TunnelDscpMode decap_dscp_mode = 8 [(attr_enum_value) = 18]; + optional PacketAction loopback_packet_action = 9 [(attr_enum_value) = 20]; + optional TunnelVxlanUdpSportMode vxlan_udp_sport_mode = 10 + [(attr_enum_value) = 21]; + optional uint32 vxlan_udp_sport = 11 [(attr_enum_value) = 22]; + optional uint32 vxlan_udp_sport_mask = 12 [(attr_enum_value) = 23]; + optional uint32 sa_index = 13 [(attr_enum_value) = 24]; + repeated uint64 ipsec_sa_port_list = 14 [(attr_enum_value) = 25]; + optional uint64 encap_qos_tc_and_color_to_dscp_map = 15 + [(attr_enum_value) = 26]; + optional uint64 encap_qos_tc_to_queue_map = 16 [(attr_enum_value) = 27]; + optional uint64 decap_qos_dscp_to_tc_map = 17 [(attr_enum_value) = 28]; + optional uint64 decap_qos_tc_to_priority_group_map = 18 + [(attr_enum_value) = 29]; + optional bool vxlan_udp_sport_security = 19 [(attr_enum_value) = 30]; + optional StatsCountMode stats_count_mode = 20 [(attr_enum_value) = 31]; + repeated uint64 selective_counter_list = 21 [(attr_enum_value) = 32]; +} + +message SetTunnelAttributeResponse {} message GetTunnelAttributeRequest { - uint64 oid = 1; - repeated TunnelAttr attr_type = 2; + uint64 oid = 1; + repeated TunnelAttr attr_type = 2; } message GetTunnelAttributeResponse { - TunnelAttribute attr = 1; + TunnelAttribute attr = 1; } message GetTunnelStatsRequest { - uint64 oid = 1; - repeated TunnelStat counter_ids = 2; + uint64 oid = 1; + repeated TunnelStat counter_ids = 2; } message GetTunnelStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } message CreateTunnelTermTableEntryRequest { - option (sai_type) = OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; - uint64 switch = 1; - optional uint64 vr_id = 2[(attr_enum_value) = 1]; - optional TunnelTermTableEntryType type = 3[(attr_enum_value) = 2]; - optional bytes dst_ip = 4[(attr_enum_value) = 3]; - optional bytes dst_ip_mask = 5[(attr_enum_value) = 4]; - optional bytes src_ip = 6[(attr_enum_value) = 5]; - optional bytes src_ip_mask = 7[(attr_enum_value) = 6]; - optional TunnelType tunnel_type = 8[(attr_enum_value) = 7]; - optional uint64 action_tunnel_id = 9[(attr_enum_value) = 8]; - optional bool ipsec_verified = 10[(attr_enum_value) = 10]; - optional uint32 priority = 11[(attr_enum_value) = 11]; + option (sai_type) = OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; + uint64 switch = 1; + optional uint64 vr_id = 2 [(attr_enum_value) = 1]; + optional TunnelTermTableEntryType type = 3 [(attr_enum_value) = 2]; + optional bytes dst_ip = 4 [(attr_enum_value) = 3]; + optional bytes dst_ip_mask = 5 [(attr_enum_value) = 4]; + optional bytes src_ip = 6 [(attr_enum_value) = 5]; + optional bytes src_ip_mask = 7 [(attr_enum_value) = 6]; + optional TunnelType tunnel_type = 8 [(attr_enum_value) = 7]; + optional uint64 action_tunnel_id = 9 [(attr_enum_value) = 8]; + optional bool ipsec_verified = 10 [(attr_enum_value) = 10]; + optional uint32 priority = 11 [(attr_enum_value) = 11]; } message CreateTunnelTermTableEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTunnelTermTableEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTunnelTermTableEntryResponse { -} +message RemoveTunnelTermTableEntryResponse {} message SetTunnelTermTableEntryAttributeRequest { - uint64 oid = 1; - optional uint64 vr_id = 2[(attr_enum_value) = 1]; - optional bool ipsec_verified = 3[(attr_enum_value) = 10]; - optional uint32 priority = 4[(attr_enum_value) = 11]; + uint64 oid = 1; + optional uint64 vr_id = 2 [(attr_enum_value) = 1]; + optional bool ipsec_verified = 3 [(attr_enum_value) = 10]; + optional uint32 priority = 4 [(attr_enum_value) = 11]; } -message SetTunnelTermTableEntryAttributeResponse { -} +message SetTunnelTermTableEntryAttributeResponse {} message GetTunnelTermTableEntryAttributeRequest { - uint64 oid = 1; - repeated TunnelTermTableEntryAttr attr_type = 2; + uint64 oid = 1; + repeated TunnelTermTableEntryAttr attr_type = 2; } message GetTunnelTermTableEntryAttributeResponse { - TunnelTermTableEntryAttribute attr = 1; + TunnelTermTableEntryAttribute attr = 1; } message CreateTunnelMapEntryRequest { - option (sai_type) = OBJECT_TYPE_TUNNEL_MAP_ENTRY; - uint64 switch = 1; - optional TunnelMapType tunnel_map_type = 2[(attr_enum_value) = 1]; - optional uint64 tunnel_map = 3[(attr_enum_value) = 2]; - optional uint32 oecn_key = 4[(attr_enum_value) = 3]; - optional uint32 oecn_value = 5[(attr_enum_value) = 4]; - optional uint32 uecn_key = 6[(attr_enum_value) = 5]; - optional uint32 uecn_value = 7[(attr_enum_value) = 6]; - optional uint32 vlan_id_key = 8[(attr_enum_value) = 7]; - optional uint32 vlan_id_value = 9[(attr_enum_value) = 8]; - optional uint32 vni_id_key = 10[(attr_enum_value) = 9]; - optional uint32 vni_id_value = 11[(attr_enum_value) = 10]; - optional uint64 bridge_id_key = 12[(attr_enum_value) = 11]; - optional uint64 bridge_id_value = 13[(attr_enum_value) = 12]; - optional uint64 virtual_router_id_key = 14[(attr_enum_value) = 13]; - optional uint64 virtual_router_id_value = 15[(attr_enum_value) = 14]; - optional uint32 vsid_id_key = 16[(attr_enum_value) = 15]; - optional uint32 vsid_id_value = 17[(attr_enum_value) = 16]; - optional uint32 prefix_agg_id_key = 18[(attr_enum_value) = 17]; - optional bytes srv6_vpn_sid_value = 19[(attr_enum_value) = 18]; + option (sai_type) = OBJECT_TYPE_TUNNEL_MAP_ENTRY; + uint64 switch = 1; + optional TunnelMapType tunnel_map_type = 2 [(attr_enum_value) = 1]; + optional uint64 tunnel_map = 3 [(attr_enum_value) = 2]; + optional uint32 oecn_key = 4 [(attr_enum_value) = 3]; + optional uint32 oecn_value = 5 [(attr_enum_value) = 4]; + optional uint32 uecn_key = 6 [(attr_enum_value) = 5]; + optional uint32 uecn_value = 7 [(attr_enum_value) = 6]; + optional uint32 vlan_id_key = 8 [(attr_enum_value) = 7]; + optional uint32 vlan_id_value = 9 [(attr_enum_value) = 8]; + optional uint32 vni_id_key = 10 [(attr_enum_value) = 9]; + optional uint32 vni_id_value = 11 [(attr_enum_value) = 10]; + optional uint64 bridge_id_key = 12 [(attr_enum_value) = 11]; + optional uint64 bridge_id_value = 13 [(attr_enum_value) = 12]; + optional uint64 virtual_router_id_key = 14 [(attr_enum_value) = 13]; + optional uint64 virtual_router_id_value = 15 [(attr_enum_value) = 14]; + optional uint32 vsid_id_key = 16 [(attr_enum_value) = 15]; + optional uint32 vsid_id_value = 17 [(attr_enum_value) = 16]; + optional uint32 prefix_agg_id_key = 18 [(attr_enum_value) = 17]; + optional bytes srv6_vpn_sid_value = 19 [(attr_enum_value) = 18]; } message CreateTunnelMapEntryResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveTunnelMapEntryRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveTunnelMapEntryResponse { -} +message RemoveTunnelMapEntryResponse {} message GetTunnelMapEntryAttributeRequest { - uint64 oid = 1; - repeated TunnelMapEntryAttr attr_type = 2; + uint64 oid = 1; + repeated TunnelMapEntryAttr attr_type = 2; } message GetTunnelMapEntryAttributeResponse { - TunnelMapEntryAttribute attr = 1; + TunnelMapEntryAttribute attr = 1; } message CreateTunnelsRequest { - repeated CreateTunnelRequest reqs = 1; + repeated CreateTunnelRequest reqs = 1; } message CreateTunnelsResponse { - repeated CreateTunnelResponse resps = 1; + repeated CreateTunnelResponse resps = 1; } message RemoveTunnelsRequest { - repeated RemoveTunnelRequest reqs = 1; + repeated RemoveTunnelRequest reqs = 1; } message RemoveTunnelsResponse { - repeated RemoveTunnelResponse resps = 1; + repeated RemoveTunnelResponse resps = 1; } - service Tunnel { - rpc CreateTunnelMap (CreateTunnelMapRequest) returns (CreateTunnelMapResponse) {} - rpc RemoveTunnelMap (RemoveTunnelMapRequest) returns (RemoveTunnelMapResponse) {} - rpc GetTunnelMapAttribute (GetTunnelMapAttributeRequest) returns (GetTunnelMapAttributeResponse) {} - rpc CreateTunnel (CreateTunnelRequest) returns (CreateTunnelResponse) {} - rpc RemoveTunnel (RemoveTunnelRequest) returns (RemoveTunnelResponse) {} - rpc SetTunnelAttribute (SetTunnelAttributeRequest) returns (SetTunnelAttributeResponse) {} - rpc GetTunnelAttribute (GetTunnelAttributeRequest) returns (GetTunnelAttributeResponse) {} - rpc GetTunnelStats (GetTunnelStatsRequest) returns (GetTunnelStatsResponse) {} - rpc CreateTunnelTermTableEntry (CreateTunnelTermTableEntryRequest) returns (CreateTunnelTermTableEntryResponse) {} - rpc RemoveTunnelTermTableEntry (RemoveTunnelTermTableEntryRequest) returns (RemoveTunnelTermTableEntryResponse) {} - rpc SetTunnelTermTableEntryAttribute (SetTunnelTermTableEntryAttributeRequest) returns (SetTunnelTermTableEntryAttributeResponse) {} - rpc GetTunnelTermTableEntryAttribute (GetTunnelTermTableEntryAttributeRequest) returns (GetTunnelTermTableEntryAttributeResponse) {} - rpc CreateTunnelMapEntry (CreateTunnelMapEntryRequest) returns (CreateTunnelMapEntryResponse) {} - rpc RemoveTunnelMapEntry (RemoveTunnelMapEntryRequest) returns (RemoveTunnelMapEntryResponse) {} - rpc GetTunnelMapEntryAttribute (GetTunnelMapEntryAttributeRequest) returns (GetTunnelMapEntryAttributeResponse) {} - rpc CreateTunnels (CreateTunnelsRequest) returns (CreateTunnelsResponse) {} - rpc RemoveTunnels (RemoveTunnelsRequest) returns (RemoveTunnelsResponse) {} + rpc CreateTunnelMap(CreateTunnelMapRequest) + returns (CreateTunnelMapResponse) {} + rpc RemoveTunnelMap(RemoveTunnelMapRequest) + returns (RemoveTunnelMapResponse) {} + rpc GetTunnelMapAttribute(GetTunnelMapAttributeRequest) + returns (GetTunnelMapAttributeResponse) {} + rpc CreateTunnel(CreateTunnelRequest) returns (CreateTunnelResponse) {} + rpc RemoveTunnel(RemoveTunnelRequest) returns (RemoveTunnelResponse) {} + rpc SetTunnelAttribute(SetTunnelAttributeRequest) + returns (SetTunnelAttributeResponse) {} + rpc GetTunnelAttribute(GetTunnelAttributeRequest) + returns (GetTunnelAttributeResponse) {} + rpc GetTunnelStats(GetTunnelStatsRequest) returns (GetTunnelStatsResponse) {} + rpc CreateTunnelTermTableEntry(CreateTunnelTermTableEntryRequest) + returns (CreateTunnelTermTableEntryResponse) {} + rpc RemoveTunnelTermTableEntry(RemoveTunnelTermTableEntryRequest) + returns (RemoveTunnelTermTableEntryResponse) {} + rpc SetTunnelTermTableEntryAttribute(SetTunnelTermTableEntryAttributeRequest) + returns (SetTunnelTermTableEntryAttributeResponse) {} + rpc GetTunnelTermTableEntryAttribute(GetTunnelTermTableEntryAttributeRequest) + returns (GetTunnelTermTableEntryAttributeResponse) {} + rpc CreateTunnelMapEntry(CreateTunnelMapEntryRequest) + returns (CreateTunnelMapEntryResponse) {} + rpc RemoveTunnelMapEntry(RemoveTunnelMapEntryRequest) + returns (RemoveTunnelMapEntryResponse) {} + rpc GetTunnelMapEntryAttribute(GetTunnelMapEntryAttributeRequest) + returns (GetTunnelMapEntryAttributeResponse) {} + rpc CreateTunnels(CreateTunnelsRequest) returns (CreateTunnelsResponse) {} + rpc RemoveTunnels(RemoveTunnelsRequest) returns (RemoveTunnelsResponse) {} } diff --git a/dataplane/proto/sai/twamp.proto b/dataplane/proto/sai/twamp.proto index 911b40131..db591353f 100644 --- a/dataplane/proto/sai/twamp.proto +++ b/dataplane/proto/sai/twamp.proto @@ -7,7 +7,4 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - - -service Twamp { -} +service Twamp {} diff --git a/dataplane/proto/sai/udf.proto b/dataplane/proto/sai/udf.proto index d755c1d12..d5b32e125 100644 --- a/dataplane/proto/sai/udf.proto +++ b/dataplane/proto/sai/udf.proto @@ -7,138 +7,136 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum UdfAttr { - UDF_ATTR_UNSPECIFIED = 0; - UDF_ATTR_MATCH_ID = 1; - UDF_ATTR_GROUP_ID = 2; - UDF_ATTR_BASE = 3; - UDF_ATTR_OFFSET = 4; - UDF_ATTR_HASH_MASK = 5; + UDF_ATTR_UNSPECIFIED = 0; + UDF_ATTR_MATCH_ID = 1; + UDF_ATTR_GROUP_ID = 2; + UDF_ATTR_BASE = 3; + UDF_ATTR_OFFSET = 4; + UDF_ATTR_HASH_MASK = 5; } enum UdfMatchAttr { - UDF_MATCH_ATTR_UNSPECIFIED = 0; - UDF_MATCH_ATTR_L2_TYPE = 1; - UDF_MATCH_ATTR_L3_TYPE = 2; - UDF_MATCH_ATTR_GRE_TYPE = 3; - UDF_MATCH_ATTR_PRIORITY = 4; - UDF_MATCH_ATTR_L4_DST_PORT_TYPE = 5; + UDF_MATCH_ATTR_UNSPECIFIED = 0; + UDF_MATCH_ATTR_L2_TYPE = 1; + UDF_MATCH_ATTR_L3_TYPE = 2; + UDF_MATCH_ATTR_GRE_TYPE = 3; + UDF_MATCH_ATTR_PRIORITY = 4; + UDF_MATCH_ATTR_L4_DST_PORT_TYPE = 5; } enum UdfGroupAttr { - UDF_GROUP_ATTR_UNSPECIFIED = 0; - UDF_GROUP_ATTR_UDF_LIST = 1; - UDF_GROUP_ATTR_TYPE = 2; - UDF_GROUP_ATTR_LENGTH = 3; + UDF_GROUP_ATTR_UNSPECIFIED = 0; + UDF_GROUP_ATTR_UDF_LIST = 1; + UDF_GROUP_ATTR_TYPE = 2; + UDF_GROUP_ATTR_LENGTH = 3; } message CreateUdfRequest { - option (sai_type) = OBJECT_TYPE_UDF; - uint64 switch = 1; - optional uint64 match_id = 2[(attr_enum_value) = 1]; - optional uint64 group_id = 3[(attr_enum_value) = 2]; - optional UdfBase base = 4[(attr_enum_value) = 3]; - optional uint32 offset = 5[(attr_enum_value) = 4]; - repeated uint32 hash_mask = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_UDF; + uint64 switch = 1; + optional uint64 match_id = 2 [(attr_enum_value) = 1]; + optional uint64 group_id = 3 [(attr_enum_value) = 2]; + optional UdfBase base = 4 [(attr_enum_value) = 3]; + optional uint32 offset = 5 [(attr_enum_value) = 4]; + repeated uint32 hash_mask = 6 [(attr_enum_value) = 5]; } message CreateUdfResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveUdfRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveUdfResponse { -} +message RemoveUdfResponse {} message SetUdfAttributeRequest { - uint64 oid = 1; - optional UdfBase base = 2[(attr_enum_value) = 3]; - repeated uint32 hash_mask = 3[(attr_enum_value) = 5]; + uint64 oid = 1; + optional UdfBase base = 2 [(attr_enum_value) = 3]; + repeated uint32 hash_mask = 3 [(attr_enum_value) = 5]; } -message SetUdfAttributeResponse { -} +message SetUdfAttributeResponse {} message GetUdfAttributeRequest { - uint64 oid = 1; - repeated UdfAttr attr_type = 2; + uint64 oid = 1; + repeated UdfAttr attr_type = 2; } message GetUdfAttributeResponse { - UdfAttribute attr = 1; + UdfAttribute attr = 1; } message CreateUdfMatchRequest { - option (sai_type) = OBJECT_TYPE_UDF_MATCH; - uint64 switch = 1; - optional AclFieldData l2_type = 2[(attr_enum_value) = 1]; - optional AclFieldData l3_type = 3[(attr_enum_value) = 2]; - optional AclFieldData gre_type = 4[(attr_enum_value) = 3]; - optional uint32 priority = 5[(attr_enum_value) = 4]; - optional AclFieldData l4_dst_port_type = 6[(attr_enum_value) = 5]; + option (sai_type) = OBJECT_TYPE_UDF_MATCH; + uint64 switch = 1; + optional AclFieldData l2_type = 2 [(attr_enum_value) = 1]; + optional AclFieldData l3_type = 3 [(attr_enum_value) = 2]; + optional AclFieldData gre_type = 4 [(attr_enum_value) = 3]; + optional uint32 priority = 5 [(attr_enum_value) = 4]; + optional AclFieldData l4_dst_port_type = 6 [(attr_enum_value) = 5]; } message CreateUdfMatchResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveUdfMatchRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveUdfMatchResponse { -} +message RemoveUdfMatchResponse {} message GetUdfMatchAttributeRequest { - uint64 oid = 1; - repeated UdfMatchAttr attr_type = 2; + uint64 oid = 1; + repeated UdfMatchAttr attr_type = 2; } message GetUdfMatchAttributeResponse { - UdfMatchAttribute attr = 1; + UdfMatchAttribute attr = 1; } message CreateUdfGroupRequest { - option (sai_type) = OBJECT_TYPE_UDF_GROUP; - uint64 switch = 1; - optional UdfGroupType type = 2[(attr_enum_value) = 2]; - optional uint32 length = 3[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_UDF_GROUP; + uint64 switch = 1; + optional UdfGroupType type = 2 [(attr_enum_value) = 2]; + optional uint32 length = 3 [(attr_enum_value) = 3]; } message CreateUdfGroupResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveUdfGroupRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveUdfGroupResponse { -} +message RemoveUdfGroupResponse {} message GetUdfGroupAttributeRequest { - uint64 oid = 1; - repeated UdfGroupAttr attr_type = 2; + uint64 oid = 1; + repeated UdfGroupAttr attr_type = 2; } message GetUdfGroupAttributeResponse { - UdfGroupAttribute attr = 1; + UdfGroupAttribute attr = 1; } - service Udf { - rpc CreateUdf (CreateUdfRequest) returns (CreateUdfResponse) {} - rpc RemoveUdf (RemoveUdfRequest) returns (RemoveUdfResponse) {} - rpc SetUdfAttribute (SetUdfAttributeRequest) returns (SetUdfAttributeResponse) {} - rpc GetUdfAttribute (GetUdfAttributeRequest) returns (GetUdfAttributeResponse) {} - rpc CreateUdfMatch (CreateUdfMatchRequest) returns (CreateUdfMatchResponse) {} - rpc RemoveUdfMatch (RemoveUdfMatchRequest) returns (RemoveUdfMatchResponse) {} - rpc GetUdfMatchAttribute (GetUdfMatchAttributeRequest) returns (GetUdfMatchAttributeResponse) {} - rpc CreateUdfGroup (CreateUdfGroupRequest) returns (CreateUdfGroupResponse) {} - rpc RemoveUdfGroup (RemoveUdfGroupRequest) returns (RemoveUdfGroupResponse) {} - rpc GetUdfGroupAttribute (GetUdfGroupAttributeRequest) returns (GetUdfGroupAttributeResponse) {} + rpc CreateUdf(CreateUdfRequest) returns (CreateUdfResponse) {} + rpc RemoveUdf(RemoveUdfRequest) returns (RemoveUdfResponse) {} + rpc SetUdfAttribute(SetUdfAttributeRequest) + returns (SetUdfAttributeResponse) {} + rpc GetUdfAttribute(GetUdfAttributeRequest) + returns (GetUdfAttributeResponse) {} + rpc CreateUdfMatch(CreateUdfMatchRequest) returns (CreateUdfMatchResponse) {} + rpc RemoveUdfMatch(RemoveUdfMatchRequest) returns (RemoveUdfMatchResponse) {} + rpc GetUdfMatchAttribute(GetUdfMatchAttributeRequest) + returns (GetUdfMatchAttributeResponse) {} + rpc CreateUdfGroup(CreateUdfGroupRequest) returns (CreateUdfGroupResponse) {} + rpc RemoveUdfGroup(RemoveUdfGroupRequest) returns (RemoveUdfGroupResponse) {} + rpc GetUdfGroupAttribute(GetUdfGroupAttributeRequest) + returns (GetUdfGroupAttributeResponse) {} } diff --git a/dataplane/proto/sai/virtual_router.proto b/dataplane/proto/sai/virtual_router.proto index 12141ca7a..25f35fbd9 100644 --- a/dataplane/proto/sai/virtual_router.proto +++ b/dataplane/proto/sai/virtual_router.proto @@ -7,68 +7,74 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum VirtualRouterAttr { - VIRTUAL_ROUTER_ATTR_UNSPECIFIED = 0; - VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE = 1; - VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE = 2; - VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS = 3; - VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION = 4; - VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION = 5; - VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION = 6; - VIRTUAL_ROUTER_ATTR_LABEL = 7; + VIRTUAL_ROUTER_ATTR_UNSPECIFIED = 0; + VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE = 1; + VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE = 2; + VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS = 3; + VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION = 4; + VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION = 5; + VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION = 6; + VIRTUAL_ROUTER_ATTR_LABEL = 7; } message CreateVirtualRouterRequest { - option (sai_type) = OBJECT_TYPE_VIRTUAL_ROUTER; - uint64 switch = 1; - optional bool admin_v4_state = 2[(attr_enum_value) = 1]; - optional bool admin_v6_state = 3[(attr_enum_value) = 2]; - optional bytes src_mac_address = 4[(attr_enum_value) = 3]; - optional PacketAction violation_ttl1_packet_action = 5[(attr_enum_value) = 4]; - optional PacketAction violation_ip_options_packet_action = 6[(attr_enum_value) = 5]; - optional PacketAction unknown_l3_multicast_packet_action = 7[(attr_enum_value) = 6]; - optional bytes label = 8[(attr_enum_value) = 7]; + option (sai_type) = OBJECT_TYPE_VIRTUAL_ROUTER; + uint64 switch = 1; + optional bool admin_v4_state = 2 [(attr_enum_value) = 1]; + optional bool admin_v6_state = 3 [(attr_enum_value) = 2]; + optional bytes src_mac_address = 4 [(attr_enum_value) = 3]; + optional PacketAction violation_ttl1_packet_action = 5 + [(attr_enum_value) = 4]; + optional PacketAction violation_ip_options_packet_action = 6 + [(attr_enum_value) = 5]; + optional PacketAction unknown_l3_multicast_packet_action = 7 + [(attr_enum_value) = 6]; + optional bytes label = 8 [(attr_enum_value) = 7]; } message CreateVirtualRouterResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveVirtualRouterRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveVirtualRouterResponse { -} +message RemoveVirtualRouterResponse {} message SetVirtualRouterAttributeRequest { - uint64 oid = 1; - optional bool admin_v4_state = 2[(attr_enum_value) = 1]; - optional bool admin_v6_state = 3[(attr_enum_value) = 2]; - optional bytes src_mac_address = 4[(attr_enum_value) = 3]; - optional PacketAction violation_ttl1_packet_action = 5[(attr_enum_value) = 4]; - optional PacketAction violation_ip_options_packet_action = 6[(attr_enum_value) = 5]; - optional PacketAction unknown_l3_multicast_packet_action = 7[(attr_enum_value) = 6]; - optional bytes label = 8[(attr_enum_value) = 7]; + uint64 oid = 1; + optional bool admin_v4_state = 2 [(attr_enum_value) = 1]; + optional bool admin_v6_state = 3 [(attr_enum_value) = 2]; + optional bytes src_mac_address = 4 [(attr_enum_value) = 3]; + optional PacketAction violation_ttl1_packet_action = 5 + [(attr_enum_value) = 4]; + optional PacketAction violation_ip_options_packet_action = 6 + [(attr_enum_value) = 5]; + optional PacketAction unknown_l3_multicast_packet_action = 7 + [(attr_enum_value) = 6]; + optional bytes label = 8 [(attr_enum_value) = 7]; } -message SetVirtualRouterAttributeResponse { -} +message SetVirtualRouterAttributeResponse {} message GetVirtualRouterAttributeRequest { - uint64 oid = 1; - repeated VirtualRouterAttr attr_type = 2; + uint64 oid = 1; + repeated VirtualRouterAttr attr_type = 2; } message GetVirtualRouterAttributeResponse { - VirtualRouterAttribute attr = 1; + VirtualRouterAttribute attr = 1; } - service VirtualRouter { - rpc CreateVirtualRouter (CreateVirtualRouterRequest) returns (CreateVirtualRouterResponse) {} - rpc RemoveVirtualRouter (RemoveVirtualRouterRequest) returns (RemoveVirtualRouterResponse) {} - rpc SetVirtualRouterAttribute (SetVirtualRouterAttributeRequest) returns (SetVirtualRouterAttributeResponse) {} - rpc GetVirtualRouterAttribute (GetVirtualRouterAttributeRequest) returns (GetVirtualRouterAttributeResponse) {} + rpc CreateVirtualRouter(CreateVirtualRouterRequest) + returns (CreateVirtualRouterResponse) {} + rpc RemoveVirtualRouter(RemoveVirtualRouterRequest) + returns (RemoveVirtualRouterResponse) {} + rpc SetVirtualRouterAttribute(SetVirtualRouterAttributeRequest) + returns (SetVirtualRouterAttributeResponse) {} + rpc GetVirtualRouterAttribute(GetVirtualRouterAttributeRequest) + returns (GetVirtualRouterAttributeResponse) {} } diff --git a/dataplane/proto/sai/vlan.pb.go b/dataplane/proto/sai/vlan.pb.go index 08f5488a1..a84393140 100644 --- a/dataplane/proto/sai/vlan.pb.go +++ b/dataplane/proto/sai/vlan.pb.go @@ -47,6 +47,8 @@ const ( VlanAttr_VLAN_ATTR_BROADCAST_FLOOD_GROUP VlanAttr = 20 VlanAttr_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE VlanAttr = 21 VlanAttr_VLAN_ATTR_TAM_OBJECT VlanAttr = 22 + VlanAttr_VLAN_ATTR_STATS_COUNT_MODE VlanAttr = 23 + VlanAttr_VLAN_ATTR_SELECTIVE_COUNTER_LIST VlanAttr = 24 ) // Enum value maps for VlanAttr. @@ -75,6 +77,8 @@ var ( 20: "VLAN_ATTR_BROADCAST_FLOOD_GROUP", 21: "VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE", 22: "VLAN_ATTR_TAM_OBJECT", + 23: "VLAN_ATTR_STATS_COUNT_MODE", + 24: "VLAN_ATTR_SELECTIVE_COUNTER_LIST", } VlanAttr_value = map[string]int32{ "VLAN_ATTR_UNSPECIFIED": 0, @@ -100,6 +104,8 @@ var ( "VLAN_ATTR_BROADCAST_FLOOD_GROUP": 20, "VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE": 21, "VLAN_ATTR_TAM_OBJECT": 22, + "VLAN_ATTR_STATS_COUNT_MODE": 23, + "VLAN_ATTR_SELECTIVE_COUNTER_LIST": 24, } ) @@ -206,6 +212,8 @@ type CreateVlanRequest struct { BroadcastFloodGroup *uint64 `protobuf:"varint,20,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` CustomIgmpSnoopingEnable *bool `protobuf:"varint,21,opt,name=custom_igmp_snooping_enable,json=customIgmpSnoopingEnable,proto3,oneof" json:"custom_igmp_snooping_enable,omitempty"` TamObject []uint64 `protobuf:"varint,22,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,23,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,24,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -394,6 +402,20 @@ func (x *CreateVlanRequest) GetTamObject() []uint64 { return nil } +func (x *CreateVlanRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *CreateVlanRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type CreateVlanResponse struct { state protoimpl.MessageState `protogen:"open.v1"` Oid uint64 `protobuf:"varint,1,opt,name=oid,proto3" json:"oid,omitempty"` @@ -541,6 +563,8 @@ type SetVlanAttributeRequest struct { BroadcastFloodGroup *uint64 `protobuf:"varint,19,opt,name=broadcast_flood_group,json=broadcastFloodGroup,proto3,oneof" json:"broadcast_flood_group,omitempty"` CustomIgmpSnoopingEnable *bool `protobuf:"varint,20,opt,name=custom_igmp_snooping_enable,json=customIgmpSnoopingEnable,proto3,oneof" json:"custom_igmp_snooping_enable,omitempty"` TamObject []uint64 `protobuf:"varint,21,rep,packed,name=tam_object,json=tamObject,proto3" json:"tam_object,omitempty"` + StatsCountMode *StatsCountMode `protobuf:"varint,22,opt,name=stats_count_mode,json=statsCountMode,proto3,enum=lemming.dataplane.sai.StatsCountMode,oneof" json:"stats_count_mode,omitempty"` + SelectiveCounterList []uint64 `protobuf:"varint,23,rep,packed,name=selective_counter_list,json=selectiveCounterList,proto3" json:"selective_counter_list,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -722,6 +746,20 @@ func (x *SetVlanAttributeRequest) GetTamObject() []uint64 { return nil } +func (x *SetVlanAttributeRequest) GetStatsCountMode() StatsCountMode { + if x != nil && x.StatsCountMode != nil { + return *x.StatsCountMode + } + return StatsCountMode_STATS_COUNT_MODE_UNSPECIFIED +} + +func (x *SetVlanAttributeRequest) GetSelectiveCounterList() []uint64 { + if x != nil { + return x.SelectiveCounterList + } + return nil +} + type SetVlanAttributeResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -1510,7 +1548,7 @@ var file_dataplane_proto_sai_vlan_proto_rawDesc = string([]byte{ 0x12, 0x15, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x1a, 0x20, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x11, 0x0a, 0x11, 0x43, 0x72, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x13, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, @@ -1617,155 +1655,18 @@ var file_dataplane_proto_sai_vlan_proto_rawDesc = string([]byte{ 0x6f, 0x6d, 0x49, 0x67, 0x6d, 0x70, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x16, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x06, - 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x27, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x10, 0x0a, - 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, - 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, - 0x0a, 0x1b, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x27, 0x0a, - 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x70, - 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, - 0x70, 0x5f, 0x69, 0x64, 0x42, 0x2a, 0x0a, 0x28, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, - 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, - 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, - 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x25, 0x0a, - 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, - 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, - 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, - 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, - 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, - 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, - 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x26, 0x0a, 0x12, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, - 0x69, 0x64, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xc4, 0x11, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, 0x0a, - 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, 0x6e, - 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, - 0x0a, 0x0c, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, 0x0b, - 0x73, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x30, - 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, 0x52, - 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, - 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, - 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x16, 0x69, - 0x70, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, - 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x36, - 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, - 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x16, 0x69, 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, - 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x59, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, - 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, - 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, - 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, - 0x6e, 0x4e, 0x6f, 0x6e, 0x49, 0x70, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, - 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, 0x48, - 0x06, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, 0x34, 0x4d, 0x63, - 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, - 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, - 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, - 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, - 0x77, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x27, 0x75, - 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4c, - 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, - 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x0a, 0x69, 0x6e, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, 0x65, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x42, - 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, 0x5f, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, - 0x0f, 0x0e, 0x48, 0x0b, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, 0x01, - 0x01, 0x12, 0x84, 0x01, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x0f, 0x48, 0x0c, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, 0x6e, - 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, - 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, - 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, - 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, - 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x20, 0x75, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, - 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, - 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, 0x0f, - 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, - 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, - 0x79, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, - 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, - 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x10, 0x52, 0x19, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, 0x72, - 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, - 0x6f, 0x75, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, - 0x14, 0x48, 0x11, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, - 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, - 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, - 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x12, 0x52, 0x18, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x49, 0x67, 0x6d, 0x70, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, - 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x18, + 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x5c, + 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x14, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x16, + 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x18, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x18, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, + 0x0f, 0x27, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, @@ -1801,259 +1702,423 @@ var file_dataplane_proto_sai_vlan_proto_rawDesc = string([]byte{ 0x5f, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, - 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, - 0x3c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x41, - 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x54, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x61, 0x74, 0x74, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x22, 0xa8, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, - 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x01, - 0x48, 0x00, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, - 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, 0x01, 0x52, - 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, - 0x12, 0x5f, 0x0a, 0x11, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, - 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, 0x0f, 0x76, - 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, - 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x28, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x76, 0x6c, - 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2c, - 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x17, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x5f, 0x0a, 0x11, 0x76, 0x6c, 0x61, - 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x26, 0x0a, 0x12, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x6f, 0x69, 0x64, 0x22, 0x25, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xf5, 0x12, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x3f, + 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x13, 0x6d, 0x61, 0x78, 0x4c, 0x65, 0x61, 0x72, + 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, + 0x2e, 0x0a, 0x0c, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x04, 0x48, 0x01, 0x52, + 0x0b, 0x73, 0x74, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x30, 0x0a, 0x0d, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x05, 0x48, 0x02, + 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, + 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x06, 0x48, 0x03, 0x52, 0x16, + 0x69, 0x70, 0x76, 0x34, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, + 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x1a, 0x69, 0x70, 0x76, + 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x07, 0x48, 0x04, 0x52, 0x16, 0x69, 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, + 0x74, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x59, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, + 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x42, + 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x08, 0x48, 0x05, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x4e, 0x6f, 0x6e, 0x49, 0x70, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, 0x5f, 0x6d, 0x63, 0x61, + 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x09, + 0x48, 0x06, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, 0x34, 0x4d, + 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, + 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, + 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0a, 0x48, 0x07, 0x52, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x49, 0x70, 0x76, 0x36, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x60, 0x0a, 0x27, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, + 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x0b, 0x48, 0x08, 0x52, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, + 0x4c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x63, 0x61, 0x73, 0x74, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2c, + 0x0a, 0x0b, 0x69, 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0c, 0x48, 0x09, 0x52, 0x0a, 0x69, + 0x6e, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0a, + 0x65, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x0d, 0x48, 0x0a, 0x52, 0x09, 0x65, 0x67, 0x72, 0x65, + 0x73, 0x73, 0x41, 0x63, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x09, 0x6d, 0x65, 0x74, 0x61, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x06, 0xf0, 0xdc, 0x93, + 0xad, 0x0f, 0x0e, 0x48, 0x0b, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x88, + 0x01, 0x01, 0x12, 0x84, 0x01, 0x0a, 0x22, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, + 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, + 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x0f, 0x48, 0x0c, 0x52, 0x1e, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x55, + 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, + 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x10, 0x48, 0x0d, 0x52, 0x18, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x55, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x88, 0x01, 0x0a, 0x24, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, - 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, - 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, - 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, - 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, - 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, - 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x52, - 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, 0x65, 0x74, - 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x04, 0x61, - 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x11, 0x48, 0x0e, 0x52, 0x20, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, + 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x4e, 0x0a, 0x1d, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, + 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x12, 0x48, + 0x0f, 0x52, 0x1a, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, + 0x12, 0x79, 0x0a, 0x1c, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, + 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, + 0x6c, 0x61, 0x6e, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x13, 0x48, 0x10, 0x52, 0x19, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, 0x6c, 0x6f, 0x6f, 0x64, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x15, 0x62, + 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x14, 0x48, 0x11, 0x52, 0x13, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x46, + 0x6c, 0x6f, 0x6f, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x88, 0x01, 0x01, 0x12, 0x4a, 0x0a, 0x1b, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, + 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x15, 0x48, 0x12, 0x52, 0x18, 0x63, 0x75, 0x73, + 0x74, 0x6f, 0x6d, 0x49, 0x67, 0x6d, 0x70, 0x53, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0a, 0x74, 0x61, 0x6d, 0x5f, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x15, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, + 0x93, 0xad, 0x0f, 0x16, 0x52, 0x09, 0x74, 0x61, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, + 0x5c, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, + 0x69, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x17, 0x48, 0x13, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, + 0x16, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x17, 0x20, 0x03, 0x28, 0x04, 0x42, 0x06, 0xf0, + 0xdc, 0x93, 0xad, 0x0f, 0x18, 0x52, 0x14, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f, + 0x6d, 0x61, 0x78, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x70, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6c, 0x65, 0x61, 0x72, 0x6e, + 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x70, 0x76, + 0x34, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x69, 0x70, 0x76, 0x36, + 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x27, 0x0a, 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x69, 0x70, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, + 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x34, + 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x69, 0x70, 0x76, 0x36, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x2a, 0x0a, + 0x28, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x69, 0x6e, + 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x65, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x63, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x1e, 0x0a, + 0x1c, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x73, + 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x27, 0x0a, + 0x25, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, + 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x5f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, + 0x6f, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x42, 0x1f, 0x0a, 0x1d, 0x5f, 0x62, 0x72, 0x6f, + 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x63, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x62, 0x72, + 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, + 0x67, 0x6d, 0x70, 0x5f, 0x73, 0x6e, 0x6f, 0x6f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x53, 0x65, 0x74, 0x56, + 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x69, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, + 0x64, 0x12, 0x3c, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, + 0x54, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x61, + 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x5e, 0x0a, 0x18, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x62, 0x0a, 0x19, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0xa8, 0x02, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x06, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x24, 0x0a, 0x07, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, + 0x0f, 0x01, 0x48, 0x00, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x31, 0x0a, 0x0e, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x02, 0x48, + 0x01, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x5f, 0x0a, 0x11, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, + 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, + 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x02, 0x52, + 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, + 0x88, 0x01, 0x01, 0x3a, 0x06, 0xa0, 0xa9, 0x90, 0xad, 0x0f, 0x28, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x62, 0x72, 0x69, 0x64, + 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x22, 0x2c, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, + 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x2b, + 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1d, 0x53, 0x65, 0x74, 0x56, + 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x5f, 0x0a, 0x11, 0x76, + 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, + 0x6c, 0x61, 0x6e, 0x54, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x42, 0x06, + 0xf0, 0xdc, 0x93, 0xad, 0x0f, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x76, 0x6c, 0x61, 0x6e, 0x54, 0x61, + 0x67, 0x67, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, + 0x5f, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x74, 0x61, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x75, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x52, 0x08, 0x61, 0x74, 0x74, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x1e, 0x47, + 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, + 0x04, 0x61, 0x74, 0x74, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x04, 0x61, 0x74, 0x74, 0x72, 0x22, 0x5e, 0x0a, + 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, 0x65, 0x71, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, - 0x5e, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x72, - 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, 0x62, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x72, 0x65, + 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, 0x73, 0x22, - 0x62, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x05, - 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6c, 0x65, + 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, 0x73, 0x70, + 0x73, 0x22, 0x5e, 0x0a, 0x18, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, + 0x04, 0x72, 0x65, 0x71, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, - 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x72, 0x65, - 0x73, 0x70, 0x73, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, 0x0a, 0x0b, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0x2e, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0xfa, - 0x06, 0x0a, 0x08, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, 0x19, 0x0a, 0x15, 0x56, - 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x19, 0x0a, - 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, - 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x4c, 0x41, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, - 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x03, 0x12, 0x1a, 0x0a, - 0x16, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x50, 0x5f, 0x49, - 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x5f, 0x44, 0x49, 0x53, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, - 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x06, - 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, - 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, - 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x32, 0x0a, 0x2e, 0x56, 0x4c, - 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, - 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, - 0x50, 0x55, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x12, 0x30, - 0x0a, 0x2c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, - 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x09, + 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x04, 0x72, 0x65, 0x71, + 0x73, 0x22, 0x62, 0x0a, 0x19, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, + 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, + 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, + 0x72, 0x65, 0x73, 0x70, 0x73, 0x22, 0x69, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12, 0x40, + 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x56, 0x6c, 0x61, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x49, 0x64, 0x73, + 0x22, 0x2e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x04, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x2a, 0xc0, 0x07, 0x0a, 0x08, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x12, 0x19, 0x0a, + 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, + 0x19, 0x0a, 0x15, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x4d, + 0x42, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x4c, 0x45, 0x41, 0x52, + 0x4e, 0x45, 0x44, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x45, 0x53, 0x10, 0x03, 0x12, + 0x1a, 0x0a, 0x16, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x50, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x5f, 0x44, + 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, + 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x10, 0x06, 0x12, 0x28, 0x0a, 0x24, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4c, 0x4f, 0x4f, 0x4b, 0x55, + 0x50, 0x5f, 0x4b, 0x45, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x07, 0x12, 0x32, 0x0a, 0x2e, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x5f, 0x49, 0x50, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, + 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x08, 0x12, 0x30, 0x0a, 0x2c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x34, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, - 0x10, 0x0a, 0x12, 0x35, 0x0a, 0x31, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x4c, 0x4f, 0x43, 0x41, - 0x4c, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x56, 0x4c, 0x41, - 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, - 0x43, 0x4c, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0d, 0x12, 0x17, - 0x0a, 0x13, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x0e, 0x12, 0x30, 0x0a, 0x2c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x55, 0x4e, 0x49, - 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, - 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x56, 0x4c, 0x41, + 0x10, 0x09, 0x12, 0x30, 0x0a, 0x2c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x50, 0x56, 0x36, 0x5f, 0x4d, 0x43, 0x41, + 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, + 0x49, 0x44, 0x10, 0x0a, 0x12, 0x35, 0x0a, 0x31, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, + 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4c, 0x49, 0x4e, 0x4b, 0x4c, 0x4f, + 0x43, 0x41, 0x4c, 0x5f, 0x4d, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x19, 0x0a, 0x15, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x49, 0x4e, 0x47, 0x52, 0x45, 0x53, 0x53, + 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0c, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x45, 0x47, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x41, 0x43, 0x4c, 0x10, 0x0d, + 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x4d, 0x45, + 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x0e, 0x12, 0x30, 0x0a, 0x2c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x55, - 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, 0x4f, - 0x55, 0x50, 0x10, 0x10, 0x12, 0x32, 0x0a, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, - 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, - 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x11, 0x12, 0x2b, 0x0a, 0x27, 0x56, 0x4c, 0x41, 0x4e, - 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x55, - 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, 0x52, - 0x4f, 0x55, 0x50, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, - 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, - 0x13, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, - 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, - 0x52, 0x4f, 0x55, 0x50, 0x10, 0x14, 0x12, 0x29, 0x0a, 0x25, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, - 0x54, 0x54, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x49, 0x47, 0x4d, 0x50, 0x5f, - 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x10, - 0x15, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x54, - 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x16, 0x2a, 0x9d, 0x01, 0x0a, 0x0e, - 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, - 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, - 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x23, - 0x0a, 0x1f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, - 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, - 0x44, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, - 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, - 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x32, 0x9f, 0x0a, 0x0a, 0x04, - 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x63, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, - 0x61, 0x6e, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, - 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, - 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0a, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, - 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, - 0x0a, 0x10, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, - 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, - 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, - 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, + 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x0f, 0x12, 0x29, 0x0a, 0x25, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x55, 0x4e, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x47, + 0x52, 0x4f, 0x55, 0x50, 0x10, 0x10, 0x12, 0x32, 0x0a, 0x2e, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, + 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x4d, 0x55, 0x4c, 0x54, + 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x11, 0x12, 0x2b, 0x0a, 0x27, 0x56, 0x4c, + 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, + 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, + 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x12, 0x12, 0x2a, 0x0a, 0x26, 0x56, 0x4c, 0x41, 0x4e, 0x5f, + 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, + 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x10, 0x13, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x5f, 0x46, 0x4c, 0x4f, 0x4f, 0x44, + 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x14, 0x12, 0x29, 0x0a, 0x25, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x49, 0x47, 0x4d, + 0x50, 0x5f, 0x53, 0x4e, 0x4f, 0x4f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x15, 0x12, 0x18, 0x0a, 0x14, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, + 0x5f, 0x54, 0x41, 0x4d, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x16, 0x12, 0x1e, 0x0a, + 0x1a, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x53, + 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x17, 0x12, 0x24, 0x0a, + 0x20, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x53, 0x45, 0x4c, 0x45, 0x43, + 0x54, 0x49, 0x56, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0x18, 0x2a, 0x9d, 0x01, 0x0a, 0x0e, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x12, 0x20, 0x0a, 0x1c, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, + 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4c, 0x41, 0x4e, + 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x56, 0x4c, 0x41, + 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x4d, + 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, + 0x45, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x49, 0x44, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x56, + 0x4c, 0x41, 0x4e, 0x5f, 0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x41, 0x54, 0x54, 0x52, 0x5f, + 0x56, 0x4c, 0x41, 0x4e, 0x5f, 0x54, 0x41, 0x47, 0x47, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x4f, 0x44, + 0x45, 0x10, 0x03, 0x32, 0x9f, 0x0a, 0x0a, 0x04, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x63, 0x0a, 0x0a, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x12, 0x28, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, + 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x63, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x12, + 0x28, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, + 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, - 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, - 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, - 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, - 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, - 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, + 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, + 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, + 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, + 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x10, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, + 0x2e, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, + 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, + 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, + 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, + 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, + 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, + 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, + 0x16, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x53, - 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, - 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, - 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, - 0x73, 0x61, 0x69, 0x2e, 0x53, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x87, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x34, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, - 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, - 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, - 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, - 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, - 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, - 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, + 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, - 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, - 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, - 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, - 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, - 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, - 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, - 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, - 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, - 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x65, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, + 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, + 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x78, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2e, + 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x56, 0x6c, 0x61, 0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x6c, 0x65, 0x6d, + 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, + 0x61, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6c, 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, + 0x2e, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, 0x2e, 0x73, 0x61, 0x69, 0x2e, 0x47, + 0x65, 0x74, 0x56, 0x6c, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x6c, + 0x65, 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x70, 0x6c, 0x61, 0x6e, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x73, 0x61, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, }) var ( @@ -2097,10 +2162,11 @@ var file_dataplane_proto_sai_vlan_proto_goTypes = []any{ (*GetVlanStatsResponse)(nil), // 23: lemming.dataplane.sai.GetVlanStatsResponse (VlanMcastLookupKeyType)(0), // 24: lemming.dataplane.sai.VlanMcastLookupKeyType (VlanFloodControlType)(0), // 25: lemming.dataplane.sai.VlanFloodControlType - (*VlanAttribute)(nil), // 26: lemming.dataplane.sai.VlanAttribute - (VlanTaggingMode)(0), // 27: lemming.dataplane.sai.VlanTaggingMode - (*VlanMemberAttribute)(nil), // 28: lemming.dataplane.sai.VlanMemberAttribute - (VlanStat)(0), // 29: lemming.dataplane.sai.VlanStat + (StatsCountMode)(0), // 26: lemming.dataplane.sai.StatsCountMode + (*VlanAttribute)(nil), // 27: lemming.dataplane.sai.VlanAttribute + (VlanTaggingMode)(0), // 28: lemming.dataplane.sai.VlanTaggingMode + (*VlanMemberAttribute)(nil), // 29: lemming.dataplane.sai.VlanMemberAttribute + (VlanStat)(0), // 30: lemming.dataplane.sai.VlanStat } var file_dataplane_proto_sai_vlan_proto_depIdxs = []int32{ 24, // 0: lemming.dataplane.sai.CreateVlanRequest.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType @@ -2108,49 +2174,51 @@ var file_dataplane_proto_sai_vlan_proto_depIdxs = []int32{ 25, // 2: lemming.dataplane.sai.CreateVlanRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType 25, // 3: lemming.dataplane.sai.CreateVlanRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType 25, // 4: lemming.dataplane.sai.CreateVlanRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 24, // 5: lemming.dataplane.sai.SetVlanAttributeRequest.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 24, // 6: lemming.dataplane.sai.SetVlanAttributeRequest.ipv6_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType - 25, // 7: lemming.dataplane.sai.SetVlanAttributeRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 25, // 8: lemming.dataplane.sai.SetVlanAttributeRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 25, // 9: lemming.dataplane.sai.SetVlanAttributeRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType - 0, // 10: lemming.dataplane.sai.GetVlanAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.VlanAttr - 26, // 11: lemming.dataplane.sai.GetVlanAttributeResponse.attr:type_name -> lemming.dataplane.sai.VlanAttribute - 27, // 12: lemming.dataplane.sai.CreateVlanMemberRequest.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode - 27, // 13: lemming.dataplane.sai.SetVlanMemberAttributeRequest.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode - 1, // 14: lemming.dataplane.sai.GetVlanMemberAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.VlanMemberAttr - 28, // 15: lemming.dataplane.sai.GetVlanMemberAttributeResponse.attr:type_name -> lemming.dataplane.sai.VlanMemberAttribute - 10, // 16: lemming.dataplane.sai.CreateVlanMembersRequest.reqs:type_name -> lemming.dataplane.sai.CreateVlanMemberRequest - 11, // 17: lemming.dataplane.sai.CreateVlanMembersResponse.resps:type_name -> lemming.dataplane.sai.CreateVlanMemberResponse - 12, // 18: lemming.dataplane.sai.RemoveVlanMembersRequest.reqs:type_name -> lemming.dataplane.sai.RemoveVlanMemberRequest - 13, // 19: lemming.dataplane.sai.RemoveVlanMembersResponse.resps:type_name -> lemming.dataplane.sai.RemoveVlanMemberResponse - 29, // 20: lemming.dataplane.sai.GetVlanStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.VlanStat - 2, // 21: lemming.dataplane.sai.Vlan.CreateVlan:input_type -> lemming.dataplane.sai.CreateVlanRequest - 4, // 22: lemming.dataplane.sai.Vlan.RemoveVlan:input_type -> lemming.dataplane.sai.RemoveVlanRequest - 6, // 23: lemming.dataplane.sai.Vlan.SetVlanAttribute:input_type -> lemming.dataplane.sai.SetVlanAttributeRequest - 8, // 24: lemming.dataplane.sai.Vlan.GetVlanAttribute:input_type -> lemming.dataplane.sai.GetVlanAttributeRequest - 10, // 25: lemming.dataplane.sai.Vlan.CreateVlanMember:input_type -> lemming.dataplane.sai.CreateVlanMemberRequest - 12, // 26: lemming.dataplane.sai.Vlan.RemoveVlanMember:input_type -> lemming.dataplane.sai.RemoveVlanMemberRequest - 14, // 27: lemming.dataplane.sai.Vlan.SetVlanMemberAttribute:input_type -> lemming.dataplane.sai.SetVlanMemberAttributeRequest - 16, // 28: lemming.dataplane.sai.Vlan.GetVlanMemberAttribute:input_type -> lemming.dataplane.sai.GetVlanMemberAttributeRequest - 18, // 29: lemming.dataplane.sai.Vlan.CreateVlanMembers:input_type -> lemming.dataplane.sai.CreateVlanMembersRequest - 20, // 30: lemming.dataplane.sai.Vlan.RemoveVlanMembers:input_type -> lemming.dataplane.sai.RemoveVlanMembersRequest - 22, // 31: lemming.dataplane.sai.Vlan.GetVlanStats:input_type -> lemming.dataplane.sai.GetVlanStatsRequest - 3, // 32: lemming.dataplane.sai.Vlan.CreateVlan:output_type -> lemming.dataplane.sai.CreateVlanResponse - 5, // 33: lemming.dataplane.sai.Vlan.RemoveVlan:output_type -> lemming.dataplane.sai.RemoveVlanResponse - 7, // 34: lemming.dataplane.sai.Vlan.SetVlanAttribute:output_type -> lemming.dataplane.sai.SetVlanAttributeResponse - 9, // 35: lemming.dataplane.sai.Vlan.GetVlanAttribute:output_type -> lemming.dataplane.sai.GetVlanAttributeResponse - 11, // 36: lemming.dataplane.sai.Vlan.CreateVlanMember:output_type -> lemming.dataplane.sai.CreateVlanMemberResponse - 13, // 37: lemming.dataplane.sai.Vlan.RemoveVlanMember:output_type -> lemming.dataplane.sai.RemoveVlanMemberResponse - 15, // 38: lemming.dataplane.sai.Vlan.SetVlanMemberAttribute:output_type -> lemming.dataplane.sai.SetVlanMemberAttributeResponse - 17, // 39: lemming.dataplane.sai.Vlan.GetVlanMemberAttribute:output_type -> lemming.dataplane.sai.GetVlanMemberAttributeResponse - 19, // 40: lemming.dataplane.sai.Vlan.CreateVlanMembers:output_type -> lemming.dataplane.sai.CreateVlanMembersResponse - 21, // 41: lemming.dataplane.sai.Vlan.RemoveVlanMembers:output_type -> lemming.dataplane.sai.RemoveVlanMembersResponse - 23, // 42: lemming.dataplane.sai.Vlan.GetVlanStats:output_type -> lemming.dataplane.sai.GetVlanStatsResponse - 32, // [32:43] is the sub-list for method output_type - 21, // [21:32] is the sub-list for method input_type - 21, // [21:21] is the sub-list for extension type_name - 21, // [21:21] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 26, // 5: lemming.dataplane.sai.CreateVlanRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 24, // 6: lemming.dataplane.sai.SetVlanAttributeRequest.ipv4_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType + 24, // 7: lemming.dataplane.sai.SetVlanAttributeRequest.ipv6_mcast_lookup_key_type:type_name -> lemming.dataplane.sai.VlanMcastLookupKeyType + 25, // 8: lemming.dataplane.sai.SetVlanAttributeRequest.unknown_unicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 25, // 9: lemming.dataplane.sai.SetVlanAttributeRequest.unknown_multicast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 25, // 10: lemming.dataplane.sai.SetVlanAttributeRequest.broadcast_flood_control_type:type_name -> lemming.dataplane.sai.VlanFloodControlType + 26, // 11: lemming.dataplane.sai.SetVlanAttributeRequest.stats_count_mode:type_name -> lemming.dataplane.sai.StatsCountMode + 0, // 12: lemming.dataplane.sai.GetVlanAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.VlanAttr + 27, // 13: lemming.dataplane.sai.GetVlanAttributeResponse.attr:type_name -> lemming.dataplane.sai.VlanAttribute + 28, // 14: lemming.dataplane.sai.CreateVlanMemberRequest.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode + 28, // 15: lemming.dataplane.sai.SetVlanMemberAttributeRequest.vlan_tagging_mode:type_name -> lemming.dataplane.sai.VlanTaggingMode + 1, // 16: lemming.dataplane.sai.GetVlanMemberAttributeRequest.attr_type:type_name -> lemming.dataplane.sai.VlanMemberAttr + 29, // 17: lemming.dataplane.sai.GetVlanMemberAttributeResponse.attr:type_name -> lemming.dataplane.sai.VlanMemberAttribute + 10, // 18: lemming.dataplane.sai.CreateVlanMembersRequest.reqs:type_name -> lemming.dataplane.sai.CreateVlanMemberRequest + 11, // 19: lemming.dataplane.sai.CreateVlanMembersResponse.resps:type_name -> lemming.dataplane.sai.CreateVlanMemberResponse + 12, // 20: lemming.dataplane.sai.RemoveVlanMembersRequest.reqs:type_name -> lemming.dataplane.sai.RemoveVlanMemberRequest + 13, // 21: lemming.dataplane.sai.RemoveVlanMembersResponse.resps:type_name -> lemming.dataplane.sai.RemoveVlanMemberResponse + 30, // 22: lemming.dataplane.sai.GetVlanStatsRequest.counter_ids:type_name -> lemming.dataplane.sai.VlanStat + 2, // 23: lemming.dataplane.sai.Vlan.CreateVlan:input_type -> lemming.dataplane.sai.CreateVlanRequest + 4, // 24: lemming.dataplane.sai.Vlan.RemoveVlan:input_type -> lemming.dataplane.sai.RemoveVlanRequest + 6, // 25: lemming.dataplane.sai.Vlan.SetVlanAttribute:input_type -> lemming.dataplane.sai.SetVlanAttributeRequest + 8, // 26: lemming.dataplane.sai.Vlan.GetVlanAttribute:input_type -> lemming.dataplane.sai.GetVlanAttributeRequest + 10, // 27: lemming.dataplane.sai.Vlan.CreateVlanMember:input_type -> lemming.dataplane.sai.CreateVlanMemberRequest + 12, // 28: lemming.dataplane.sai.Vlan.RemoveVlanMember:input_type -> lemming.dataplane.sai.RemoveVlanMemberRequest + 14, // 29: lemming.dataplane.sai.Vlan.SetVlanMemberAttribute:input_type -> lemming.dataplane.sai.SetVlanMemberAttributeRequest + 16, // 30: lemming.dataplane.sai.Vlan.GetVlanMemberAttribute:input_type -> lemming.dataplane.sai.GetVlanMemberAttributeRequest + 18, // 31: lemming.dataplane.sai.Vlan.CreateVlanMembers:input_type -> lemming.dataplane.sai.CreateVlanMembersRequest + 20, // 32: lemming.dataplane.sai.Vlan.RemoveVlanMembers:input_type -> lemming.dataplane.sai.RemoveVlanMembersRequest + 22, // 33: lemming.dataplane.sai.Vlan.GetVlanStats:input_type -> lemming.dataplane.sai.GetVlanStatsRequest + 3, // 34: lemming.dataplane.sai.Vlan.CreateVlan:output_type -> lemming.dataplane.sai.CreateVlanResponse + 5, // 35: lemming.dataplane.sai.Vlan.RemoveVlan:output_type -> lemming.dataplane.sai.RemoveVlanResponse + 7, // 36: lemming.dataplane.sai.Vlan.SetVlanAttribute:output_type -> lemming.dataplane.sai.SetVlanAttributeResponse + 9, // 37: lemming.dataplane.sai.Vlan.GetVlanAttribute:output_type -> lemming.dataplane.sai.GetVlanAttributeResponse + 11, // 38: lemming.dataplane.sai.Vlan.CreateVlanMember:output_type -> lemming.dataplane.sai.CreateVlanMemberResponse + 13, // 39: lemming.dataplane.sai.Vlan.RemoveVlanMember:output_type -> lemming.dataplane.sai.RemoveVlanMemberResponse + 15, // 40: lemming.dataplane.sai.Vlan.SetVlanMemberAttribute:output_type -> lemming.dataplane.sai.SetVlanMemberAttributeResponse + 17, // 41: lemming.dataplane.sai.Vlan.GetVlanMemberAttribute:output_type -> lemming.dataplane.sai.GetVlanMemberAttributeResponse + 19, // 42: lemming.dataplane.sai.Vlan.CreateVlanMembers:output_type -> lemming.dataplane.sai.CreateVlanMembersResponse + 21, // 43: lemming.dataplane.sai.Vlan.RemoveVlanMembers:output_type -> lemming.dataplane.sai.RemoveVlanMembersResponse + 23, // 44: lemming.dataplane.sai.Vlan.GetVlanStats:output_type -> lemming.dataplane.sai.GetVlanStatsResponse + 34, // [34:45] is the sub-list for method output_type + 23, // [23:34] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] is the sub-list for field type_name } func init() { file_dataplane_proto_sai_vlan_proto_init() } diff --git a/dataplane/proto/sai/vlan.proto b/dataplane/proto/sai/vlan.proto index ad0bb1749..cf254f650 100644 --- a/dataplane/proto/sai/vlan.proto +++ b/dataplane/proto/sai/vlan.proto @@ -7,185 +7,211 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum VlanAttr { - VLAN_ATTR_UNSPECIFIED = 0; - VLAN_ATTR_VLAN_ID = 1; - VLAN_ATTR_MEMBER_LIST = 2; - VLAN_ATTR_MAX_LEARNED_ADDRESSES = 3; - VLAN_ATTR_STP_INSTANCE = 4; - VLAN_ATTR_LEARN_DISABLE = 5; - VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE = 6; - VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE = 7; - VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID = 8; - VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID = 9; - VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID = 10; - VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID = 11; - VLAN_ATTR_INGRESS_ACL = 12; - VLAN_ATTR_EGRESS_ACL = 13; - VLAN_ATTR_META_DATA = 14; - VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE = 15; - VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP = 16; - VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE = 17; - VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP = 18; - VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE = 19; - VLAN_ATTR_BROADCAST_FLOOD_GROUP = 20; - VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE = 21; - VLAN_ATTR_TAM_OBJECT = 22; + VLAN_ATTR_UNSPECIFIED = 0; + VLAN_ATTR_VLAN_ID = 1; + VLAN_ATTR_MEMBER_LIST = 2; + VLAN_ATTR_MAX_LEARNED_ADDRESSES = 3; + VLAN_ATTR_STP_INSTANCE = 4; + VLAN_ATTR_LEARN_DISABLE = 5; + VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE = 6; + VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE = 7; + VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID = 8; + VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID = 9; + VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID = 10; + VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID = 11; + VLAN_ATTR_INGRESS_ACL = 12; + VLAN_ATTR_EGRESS_ACL = 13; + VLAN_ATTR_META_DATA = 14; + VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE = 15; + VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP = 16; + VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE = 17; + VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP = 18; + VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE = 19; + VLAN_ATTR_BROADCAST_FLOOD_GROUP = 20; + VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE = 21; + VLAN_ATTR_TAM_OBJECT = 22; + VLAN_ATTR_STATS_COUNT_MODE = 23; + VLAN_ATTR_SELECTIVE_COUNTER_LIST = 24; } enum VlanMemberAttr { - VLAN_MEMBER_ATTR_UNSPECIFIED = 0; - VLAN_MEMBER_ATTR_VLAN_ID = 1; - VLAN_MEMBER_ATTR_BRIDGE_PORT_ID = 2; - VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE = 3; + VLAN_MEMBER_ATTR_UNSPECIFIED = 0; + VLAN_MEMBER_ATTR_VLAN_ID = 1; + VLAN_MEMBER_ATTR_BRIDGE_PORT_ID = 2; + VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE = 3; } message CreateVlanRequest { - option (sai_type) = OBJECT_TYPE_VLAN; - uint64 switch = 1; - optional uint32 vlan_id = 2[(attr_enum_value) = 1]; - optional uint32 max_learned_addresses = 3[(attr_enum_value) = 3]; - optional uint64 stp_instance = 4[(attr_enum_value) = 4]; - optional bool learn_disable = 5[(attr_enum_value) = 5]; - optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 6[(attr_enum_value) = 6]; - optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 7[(attr_enum_value) = 7]; - optional uint64 unknown_non_ip_mcast_output_group_id = 8[(attr_enum_value) = 8]; - optional uint64 unknown_ipv4_mcast_output_group_id = 9[(attr_enum_value) = 9]; - optional uint64 unknown_ipv6_mcast_output_group_id = 10[(attr_enum_value) = 10]; - optional uint64 unknown_linklocal_mcast_output_group_id = 11[(attr_enum_value) = 11]; - optional uint64 ingress_acl = 12[(attr_enum_value) = 12]; - optional uint64 egress_acl = 13[(attr_enum_value) = 13]; - optional uint32 meta_data = 14[(attr_enum_value) = 14]; - optional VlanFloodControlType unknown_unicast_flood_control_type = 15[(attr_enum_value) = 15]; - optional uint64 unknown_unicast_flood_group = 16[(attr_enum_value) = 16]; - optional VlanFloodControlType unknown_multicast_flood_control_type = 17[(attr_enum_value) = 17]; - optional uint64 unknown_multicast_flood_group = 18[(attr_enum_value) = 18]; - optional VlanFloodControlType broadcast_flood_control_type = 19[(attr_enum_value) = 19]; - optional uint64 broadcast_flood_group = 20[(attr_enum_value) = 20]; - optional bool custom_igmp_snooping_enable = 21[(attr_enum_value) = 21]; - repeated uint64 tam_object = 22[(attr_enum_value) = 22]; + option (sai_type) = OBJECT_TYPE_VLAN; + uint64 switch = 1; + optional uint32 vlan_id = 2 [(attr_enum_value) = 1]; + optional uint32 max_learned_addresses = 3 [(attr_enum_value) = 3]; + optional uint64 stp_instance = 4 [(attr_enum_value) = 4]; + optional bool learn_disable = 5 [(attr_enum_value) = 5]; + optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 6 + [(attr_enum_value) = 6]; + optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 7 + [(attr_enum_value) = 7]; + optional uint64 unknown_non_ip_mcast_output_group_id = 8 + [(attr_enum_value) = 8]; + optional uint64 unknown_ipv4_mcast_output_group_id = 9 + [(attr_enum_value) = 9]; + optional uint64 unknown_ipv6_mcast_output_group_id = 10 + [(attr_enum_value) = 10]; + optional uint64 unknown_linklocal_mcast_output_group_id = 11 + [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 12 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 13 [(attr_enum_value) = 13]; + optional uint32 meta_data = 14 [(attr_enum_value) = 14]; + optional VlanFloodControlType unknown_unicast_flood_control_type = 15 + [(attr_enum_value) = 15]; + optional uint64 unknown_unicast_flood_group = 16 [(attr_enum_value) = 16]; + optional VlanFloodControlType unknown_multicast_flood_control_type = 17 + [(attr_enum_value) = 17]; + optional uint64 unknown_multicast_flood_group = 18 [(attr_enum_value) = 18]; + optional VlanFloodControlType broadcast_flood_control_type = 19 + [(attr_enum_value) = 19]; + optional uint64 broadcast_flood_group = 20 [(attr_enum_value) = 20]; + optional bool custom_igmp_snooping_enable = 21 [(attr_enum_value) = 21]; + repeated uint64 tam_object = 22 [(attr_enum_value) = 22]; + optional StatsCountMode stats_count_mode = 23 [(attr_enum_value) = 23]; + repeated uint64 selective_counter_list = 24 [(attr_enum_value) = 24]; } message CreateVlanResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveVlanRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveVlanResponse { -} +message RemoveVlanResponse {} message SetVlanAttributeRequest { - uint64 oid = 1; - optional uint32 max_learned_addresses = 2[(attr_enum_value) = 3]; - optional uint64 stp_instance = 3[(attr_enum_value) = 4]; - optional bool learn_disable = 4[(attr_enum_value) = 5]; - optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 5[(attr_enum_value) = 6]; - optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 6[(attr_enum_value) = 7]; - optional uint64 unknown_non_ip_mcast_output_group_id = 7[(attr_enum_value) = 8]; - optional uint64 unknown_ipv4_mcast_output_group_id = 8[(attr_enum_value) = 9]; - optional uint64 unknown_ipv6_mcast_output_group_id = 9[(attr_enum_value) = 10]; - optional uint64 unknown_linklocal_mcast_output_group_id = 10[(attr_enum_value) = 11]; - optional uint64 ingress_acl = 11[(attr_enum_value) = 12]; - optional uint64 egress_acl = 12[(attr_enum_value) = 13]; - optional uint32 meta_data = 13[(attr_enum_value) = 14]; - optional VlanFloodControlType unknown_unicast_flood_control_type = 14[(attr_enum_value) = 15]; - optional uint64 unknown_unicast_flood_group = 15[(attr_enum_value) = 16]; - optional VlanFloodControlType unknown_multicast_flood_control_type = 16[(attr_enum_value) = 17]; - optional uint64 unknown_multicast_flood_group = 17[(attr_enum_value) = 18]; - optional VlanFloodControlType broadcast_flood_control_type = 18[(attr_enum_value) = 19]; - optional uint64 broadcast_flood_group = 19[(attr_enum_value) = 20]; - optional bool custom_igmp_snooping_enable = 20[(attr_enum_value) = 21]; - repeated uint64 tam_object = 21[(attr_enum_value) = 22]; -} - -message SetVlanAttributeResponse { -} + uint64 oid = 1; + optional uint32 max_learned_addresses = 2 [(attr_enum_value) = 3]; + optional uint64 stp_instance = 3 [(attr_enum_value) = 4]; + optional bool learn_disable = 4 [(attr_enum_value) = 5]; + optional VlanMcastLookupKeyType ipv4_mcast_lookup_key_type = 5 + [(attr_enum_value) = 6]; + optional VlanMcastLookupKeyType ipv6_mcast_lookup_key_type = 6 + [(attr_enum_value) = 7]; + optional uint64 unknown_non_ip_mcast_output_group_id = 7 + [(attr_enum_value) = 8]; + optional uint64 unknown_ipv4_mcast_output_group_id = 8 + [(attr_enum_value) = 9]; + optional uint64 unknown_ipv6_mcast_output_group_id = 9 + [(attr_enum_value) = 10]; + optional uint64 unknown_linklocal_mcast_output_group_id = 10 + [(attr_enum_value) = 11]; + optional uint64 ingress_acl = 11 [(attr_enum_value) = 12]; + optional uint64 egress_acl = 12 [(attr_enum_value) = 13]; + optional uint32 meta_data = 13 [(attr_enum_value) = 14]; + optional VlanFloodControlType unknown_unicast_flood_control_type = 14 + [(attr_enum_value) = 15]; + optional uint64 unknown_unicast_flood_group = 15 [(attr_enum_value) = 16]; + optional VlanFloodControlType unknown_multicast_flood_control_type = 16 + [(attr_enum_value) = 17]; + optional uint64 unknown_multicast_flood_group = 17 [(attr_enum_value) = 18]; + optional VlanFloodControlType broadcast_flood_control_type = 18 + [(attr_enum_value) = 19]; + optional uint64 broadcast_flood_group = 19 [(attr_enum_value) = 20]; + optional bool custom_igmp_snooping_enable = 20 [(attr_enum_value) = 21]; + repeated uint64 tam_object = 21 [(attr_enum_value) = 22]; + optional StatsCountMode stats_count_mode = 22 [(attr_enum_value) = 23]; + repeated uint64 selective_counter_list = 23 [(attr_enum_value) = 24]; +} + +message SetVlanAttributeResponse {} message GetVlanAttributeRequest { - uint64 oid = 1; - repeated VlanAttr attr_type = 2; + uint64 oid = 1; + repeated VlanAttr attr_type = 2; } message GetVlanAttributeResponse { - VlanAttribute attr = 1; + VlanAttribute attr = 1; } message CreateVlanMemberRequest { - option (sai_type) = OBJECT_TYPE_VLAN_MEMBER; - uint64 switch = 1; - optional uint64 vlan_id = 2[(attr_enum_value) = 1]; - optional uint64 bridge_port_id = 3[(attr_enum_value) = 2]; - optional VlanTaggingMode vlan_tagging_mode = 4[(attr_enum_value) = 3]; + option (sai_type) = OBJECT_TYPE_VLAN_MEMBER; + uint64 switch = 1; + optional uint64 vlan_id = 2 [(attr_enum_value) = 1]; + optional uint64 bridge_port_id = 3 [(attr_enum_value) = 2]; + optional VlanTaggingMode vlan_tagging_mode = 4 [(attr_enum_value) = 3]; } message CreateVlanMemberResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveVlanMemberRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveVlanMemberResponse { -} +message RemoveVlanMemberResponse {} message SetVlanMemberAttributeRequest { - uint64 oid = 1; - optional VlanTaggingMode vlan_tagging_mode = 2[(attr_enum_value) = 3]; + uint64 oid = 1; + optional VlanTaggingMode vlan_tagging_mode = 2 [(attr_enum_value) = 3]; } -message SetVlanMemberAttributeResponse { -} +message SetVlanMemberAttributeResponse {} message GetVlanMemberAttributeRequest { - uint64 oid = 1; - repeated VlanMemberAttr attr_type = 2; + uint64 oid = 1; + repeated VlanMemberAttr attr_type = 2; } message GetVlanMemberAttributeResponse { - VlanMemberAttribute attr = 1; + VlanMemberAttribute attr = 1; } message CreateVlanMembersRequest { - repeated CreateVlanMemberRequest reqs = 1; + repeated CreateVlanMemberRequest reqs = 1; } message CreateVlanMembersResponse { - repeated CreateVlanMemberResponse resps = 1; + repeated CreateVlanMemberResponse resps = 1; } message RemoveVlanMembersRequest { - repeated RemoveVlanMemberRequest reqs = 1; + repeated RemoveVlanMemberRequest reqs = 1; } message RemoveVlanMembersResponse { - repeated RemoveVlanMemberResponse resps = 1; + repeated RemoveVlanMemberResponse resps = 1; } message GetVlanStatsRequest { - uint64 oid = 1; - repeated VlanStat counter_ids = 2; + uint64 oid = 1; + repeated VlanStat counter_ids = 2; } message GetVlanStatsResponse { - repeated uint64 values = 1; + repeated uint64 values = 1; } - service Vlan { - rpc CreateVlan (CreateVlanRequest) returns (CreateVlanResponse) {} - rpc RemoveVlan (RemoveVlanRequest) returns (RemoveVlanResponse) {} - rpc SetVlanAttribute (SetVlanAttributeRequest) returns (SetVlanAttributeResponse) {} - rpc GetVlanAttribute (GetVlanAttributeRequest) returns (GetVlanAttributeResponse) {} - rpc CreateVlanMember (CreateVlanMemberRequest) returns (CreateVlanMemberResponse) {} - rpc RemoveVlanMember (RemoveVlanMemberRequest) returns (RemoveVlanMemberResponse) {} - rpc SetVlanMemberAttribute (SetVlanMemberAttributeRequest) returns (SetVlanMemberAttributeResponse) {} - rpc GetVlanMemberAttribute (GetVlanMemberAttributeRequest) returns (GetVlanMemberAttributeResponse) {} - rpc CreateVlanMembers (CreateVlanMembersRequest) returns (CreateVlanMembersResponse) {} - rpc RemoveVlanMembers (RemoveVlanMembersRequest) returns (RemoveVlanMembersResponse) {} - rpc GetVlanStats (GetVlanStatsRequest) returns (GetVlanStatsResponse) {} + rpc CreateVlan(CreateVlanRequest) returns (CreateVlanResponse) {} + rpc RemoveVlan(RemoveVlanRequest) returns (RemoveVlanResponse) {} + rpc SetVlanAttribute(SetVlanAttributeRequest) + returns (SetVlanAttributeResponse) {} + rpc GetVlanAttribute(GetVlanAttributeRequest) + returns (GetVlanAttributeResponse) {} + rpc CreateVlanMember(CreateVlanMemberRequest) + returns (CreateVlanMemberResponse) {} + rpc RemoveVlanMember(RemoveVlanMemberRequest) + returns (RemoveVlanMemberResponse) {} + rpc SetVlanMemberAttribute(SetVlanMemberAttributeRequest) + returns (SetVlanMemberAttributeResponse) {} + rpc GetVlanMemberAttribute(GetVlanMemberAttributeRequest) + returns (GetVlanMemberAttributeResponse) {} + rpc CreateVlanMembers(CreateVlanMembersRequest) + returns (CreateVlanMembersResponse) {} + rpc RemoveVlanMembers(RemoveVlanMembersRequest) + returns (RemoveVlanMembersResponse) {} + rpc GetVlanStats(GetVlanStatsRequest) returns (GetVlanStatsResponse) {} } diff --git a/dataplane/proto/sai/wred.proto b/dataplane/proto/sai/wred.proto index e992022c5..b273d7792 100644 --- a/dataplane/proto/sai/wred.proto +++ b/dataplane/proto/sai/wred.proto @@ -7,167 +7,171 @@ import "dataplane/proto/sai/common.proto"; option go_package = "github.com/openconfig/lemming/dataplane/proto/sai"; - enum WredAttr { - WRED_ATTR_UNSPECIFIED = 0; - WRED_ATTR_GREEN_ENABLE = 1; - WRED_ATTR_GREEN_MIN_THRESHOLD = 2; - WRED_ATTR_GREEN_MAX_THRESHOLD = 3; - WRED_ATTR_GREEN_DROP_PROBABILITY = 4; - WRED_ATTR_YELLOW_ENABLE = 5; - WRED_ATTR_YELLOW_MIN_THRESHOLD = 6; - WRED_ATTR_YELLOW_MAX_THRESHOLD = 7; - WRED_ATTR_YELLOW_DROP_PROBABILITY = 8; - WRED_ATTR_RED_ENABLE = 9; - WRED_ATTR_RED_MIN_THRESHOLD = 10; - WRED_ATTR_RED_MAX_THRESHOLD = 11; - WRED_ATTR_RED_DROP_PROBABILITY = 12; - WRED_ATTR_WEIGHT = 13; - WRED_ATTR_ECN_MARK_MODE = 14; - WRED_ATTR_ECN_GREEN_MIN_THRESHOLD = 15; - WRED_ATTR_ECN_GREEN_MAX_THRESHOLD = 16; - WRED_ATTR_ECN_GREEN_MARK_PROBABILITY = 17; - WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD = 18; - WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD = 19; - WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY = 20; - WRED_ATTR_ECN_RED_MIN_THRESHOLD = 21; - WRED_ATTR_ECN_RED_MAX_THRESHOLD = 22; - WRED_ATTR_ECN_RED_MARK_PROBABILITY = 23; - WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD = 24; - WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD = 25; - WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY = 26; - WRED_ATTR_GREEN_MIN_THRESHOLD_64 = 27; - WRED_ATTR_GREEN_MAX_THRESHOLD_64 = 28; - WRED_ATTR_YELLOW_MIN_THRESHOLD_64 = 29; - WRED_ATTR_YELLOW_MAX_THRESHOLD_64 = 30; - WRED_ATTR_RED_MIN_THRESHOLD_64 = 31; - WRED_ATTR_RED_MAX_THRESHOLD_64 = 32; - WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64 = 33; - WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64 = 34; - WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64 = 35; - WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64 = 36; - WRED_ATTR_ECN_RED_MIN_THRESHOLD_64 = 37; - WRED_ATTR_ECN_RED_MAX_THRESHOLD_64 = 38; - WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64 = 39; - WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64 = 40; + WRED_ATTR_UNSPECIFIED = 0; + WRED_ATTR_GREEN_ENABLE = 1; + WRED_ATTR_GREEN_MIN_THRESHOLD = 2; + WRED_ATTR_GREEN_MAX_THRESHOLD = 3; + WRED_ATTR_GREEN_DROP_PROBABILITY = 4; + WRED_ATTR_YELLOW_ENABLE = 5; + WRED_ATTR_YELLOW_MIN_THRESHOLD = 6; + WRED_ATTR_YELLOW_MAX_THRESHOLD = 7; + WRED_ATTR_YELLOW_DROP_PROBABILITY = 8; + WRED_ATTR_RED_ENABLE = 9; + WRED_ATTR_RED_MIN_THRESHOLD = 10; + WRED_ATTR_RED_MAX_THRESHOLD = 11; + WRED_ATTR_RED_DROP_PROBABILITY = 12; + WRED_ATTR_WEIGHT = 13; + WRED_ATTR_ECN_MARK_MODE = 14; + WRED_ATTR_ECN_GREEN_MIN_THRESHOLD = 15; + WRED_ATTR_ECN_GREEN_MAX_THRESHOLD = 16; + WRED_ATTR_ECN_GREEN_MARK_PROBABILITY = 17; + WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD = 18; + WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD = 19; + WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY = 20; + WRED_ATTR_ECN_RED_MIN_THRESHOLD = 21; + WRED_ATTR_ECN_RED_MAX_THRESHOLD = 22; + WRED_ATTR_ECN_RED_MARK_PROBABILITY = 23; + WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD = 24; + WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD = 25; + WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY = 26; + WRED_ATTR_GREEN_MIN_THRESHOLD_64 = 27; + WRED_ATTR_GREEN_MAX_THRESHOLD_64 = 28; + WRED_ATTR_YELLOW_MIN_THRESHOLD_64 = 29; + WRED_ATTR_YELLOW_MAX_THRESHOLD_64 = 30; + WRED_ATTR_RED_MIN_THRESHOLD_64 = 31; + WRED_ATTR_RED_MAX_THRESHOLD_64 = 32; + WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64 = 33; + WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64 = 34; + WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64 = 35; + WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64 = 36; + WRED_ATTR_ECN_RED_MIN_THRESHOLD_64 = 37; + WRED_ATTR_ECN_RED_MAX_THRESHOLD_64 = 38; + WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64 = 39; + WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64 = 40; } message CreateWredRequest { - option (sai_type) = OBJECT_TYPE_WRED; - uint64 switch = 1; - optional bool green_enable = 2[(attr_enum_value) = 1]; - optional uint32 green_min_threshold = 3[(attr_enum_value) = 2]; - optional uint32 green_max_threshold = 4[(attr_enum_value) = 3]; - optional uint32 green_drop_probability = 5[(attr_enum_value) = 4]; - optional bool yellow_enable = 6[(attr_enum_value) = 5]; - optional uint32 yellow_min_threshold = 7[(attr_enum_value) = 6]; - optional uint32 yellow_max_threshold = 8[(attr_enum_value) = 7]; - optional uint32 yellow_drop_probability = 9[(attr_enum_value) = 8]; - optional bool red_enable = 10[(attr_enum_value) = 9]; - optional uint32 red_min_threshold = 11[(attr_enum_value) = 10]; - optional uint32 red_max_threshold = 12[(attr_enum_value) = 11]; - optional uint32 red_drop_probability = 13[(attr_enum_value) = 12]; - optional uint32 weight = 14[(attr_enum_value) = 13]; - optional EcnMarkMode ecn_mark_mode = 15[(attr_enum_value) = 14]; - optional uint32 ecn_green_min_threshold = 16[(attr_enum_value) = 15]; - optional uint32 ecn_green_max_threshold = 17[(attr_enum_value) = 16]; - optional uint32 ecn_green_mark_probability = 18[(attr_enum_value) = 17]; - optional uint32 ecn_yellow_min_threshold = 19[(attr_enum_value) = 18]; - optional uint32 ecn_yellow_max_threshold = 20[(attr_enum_value) = 19]; - optional uint32 ecn_yellow_mark_probability = 21[(attr_enum_value) = 20]; - optional uint32 ecn_red_min_threshold = 22[(attr_enum_value) = 21]; - optional uint32 ecn_red_max_threshold = 23[(attr_enum_value) = 22]; - optional uint32 ecn_red_mark_probability = 24[(attr_enum_value) = 23]; - optional uint32 ecn_color_unaware_min_threshold = 25[(attr_enum_value) = 24]; - optional uint32 ecn_color_unaware_max_threshold = 26[(attr_enum_value) = 25]; - optional uint32 ecn_color_unaware_mark_probability = 27[(attr_enum_value) = 26]; - optional uint64 green_min_threshold_64 = 28[(attr_enum_value) = 27]; - optional uint64 green_max_threshold_64 = 29[(attr_enum_value) = 28]; - optional uint64 yellow_min_threshold_64 = 30[(attr_enum_value) = 29]; - optional uint64 yellow_max_threshold_64 = 31[(attr_enum_value) = 30]; - optional uint64 red_min_threshold_64 = 32[(attr_enum_value) = 31]; - optional uint64 red_max_threshold_64 = 33[(attr_enum_value) = 32]; - optional uint64 ecn_green_min_threshold_64 = 34[(attr_enum_value) = 33]; - optional uint64 ecn_green_max_threshold_64 = 35[(attr_enum_value) = 34]; - optional uint64 ecn_yellow_min_threshold_64 = 36[(attr_enum_value) = 35]; - optional uint64 ecn_yellow_max_threshold_64 = 37[(attr_enum_value) = 36]; - optional uint64 ecn_red_min_threshold_64 = 38[(attr_enum_value) = 37]; - optional uint64 ecn_red_max_threshold_64 = 39[(attr_enum_value) = 38]; - optional uint64 ecn_color_unaware_min_threshold_64 = 40[(attr_enum_value) = 39]; - optional uint64 ecn_color_unaware_max_threshold_64 = 41[(attr_enum_value) = 40]; + option (sai_type) = OBJECT_TYPE_WRED; + uint64 switch = 1; + optional bool green_enable = 2 [(attr_enum_value) = 1]; + optional uint32 green_min_threshold = 3 [(attr_enum_value) = 2]; + optional uint32 green_max_threshold = 4 [(attr_enum_value) = 3]; + optional uint32 green_drop_probability = 5 [(attr_enum_value) = 4]; + optional bool yellow_enable = 6 [(attr_enum_value) = 5]; + optional uint32 yellow_min_threshold = 7 [(attr_enum_value) = 6]; + optional uint32 yellow_max_threshold = 8 [(attr_enum_value) = 7]; + optional uint32 yellow_drop_probability = 9 [(attr_enum_value) = 8]; + optional bool red_enable = 10 [(attr_enum_value) = 9]; + optional uint32 red_min_threshold = 11 [(attr_enum_value) = 10]; + optional uint32 red_max_threshold = 12 [(attr_enum_value) = 11]; + optional uint32 red_drop_probability = 13 [(attr_enum_value) = 12]; + optional uint32 weight = 14 [(attr_enum_value) = 13]; + optional EcnMarkMode ecn_mark_mode = 15 [(attr_enum_value) = 14]; + optional uint32 ecn_green_min_threshold = 16 [(attr_enum_value) = 15]; + optional uint32 ecn_green_max_threshold = 17 [(attr_enum_value) = 16]; + optional uint32 ecn_green_mark_probability = 18 [(attr_enum_value) = 17]; + optional uint32 ecn_yellow_min_threshold = 19 [(attr_enum_value) = 18]; + optional uint32 ecn_yellow_max_threshold = 20 [(attr_enum_value) = 19]; + optional uint32 ecn_yellow_mark_probability = 21 [(attr_enum_value) = 20]; + optional uint32 ecn_red_min_threshold = 22 [(attr_enum_value) = 21]; + optional uint32 ecn_red_max_threshold = 23 [(attr_enum_value) = 22]; + optional uint32 ecn_red_mark_probability = 24 [(attr_enum_value) = 23]; + optional uint32 ecn_color_unaware_min_threshold = 25 [(attr_enum_value) = 24]; + optional uint32 ecn_color_unaware_max_threshold = 26 [(attr_enum_value) = 25]; + optional uint32 ecn_color_unaware_mark_probability = 27 + [(attr_enum_value) = 26]; + optional uint64 green_min_threshold_64 = 28 [(attr_enum_value) = 27]; + optional uint64 green_max_threshold_64 = 29 [(attr_enum_value) = 28]; + optional uint64 yellow_min_threshold_64 = 30 [(attr_enum_value) = 29]; + optional uint64 yellow_max_threshold_64 = 31 [(attr_enum_value) = 30]; + optional uint64 red_min_threshold_64 = 32 [(attr_enum_value) = 31]; + optional uint64 red_max_threshold_64 = 33 [(attr_enum_value) = 32]; + optional uint64 ecn_green_min_threshold_64 = 34 [(attr_enum_value) = 33]; + optional uint64 ecn_green_max_threshold_64 = 35 [(attr_enum_value) = 34]; + optional uint64 ecn_yellow_min_threshold_64 = 36 [(attr_enum_value) = 35]; + optional uint64 ecn_yellow_max_threshold_64 = 37 [(attr_enum_value) = 36]; + optional uint64 ecn_red_min_threshold_64 = 38 [(attr_enum_value) = 37]; + optional uint64 ecn_red_max_threshold_64 = 39 [(attr_enum_value) = 38]; + optional uint64 ecn_color_unaware_min_threshold_64 = 40 + [(attr_enum_value) = 39]; + optional uint64 ecn_color_unaware_max_threshold_64 = 41 + [(attr_enum_value) = 40]; } message CreateWredResponse { - uint64 oid = 1; + uint64 oid = 1; } message RemoveWredRequest { - uint64 oid = 1; + uint64 oid = 1; } -message RemoveWredResponse { -} +message RemoveWredResponse {} message SetWredAttributeRequest { - uint64 oid = 1; - optional bool green_enable = 2[(attr_enum_value) = 1]; - optional uint32 green_min_threshold = 3[(attr_enum_value) = 2]; - optional uint32 green_max_threshold = 4[(attr_enum_value) = 3]; - optional uint32 green_drop_probability = 5[(attr_enum_value) = 4]; - optional bool yellow_enable = 6[(attr_enum_value) = 5]; - optional uint32 yellow_min_threshold = 7[(attr_enum_value) = 6]; - optional uint32 yellow_max_threshold = 8[(attr_enum_value) = 7]; - optional uint32 yellow_drop_probability = 9[(attr_enum_value) = 8]; - optional bool red_enable = 10[(attr_enum_value) = 9]; - optional uint32 red_min_threshold = 11[(attr_enum_value) = 10]; - optional uint32 red_max_threshold = 12[(attr_enum_value) = 11]; - optional uint32 red_drop_probability = 13[(attr_enum_value) = 12]; - optional uint32 weight = 14[(attr_enum_value) = 13]; - optional EcnMarkMode ecn_mark_mode = 15[(attr_enum_value) = 14]; - optional uint32 ecn_green_min_threshold = 16[(attr_enum_value) = 15]; - optional uint32 ecn_green_max_threshold = 17[(attr_enum_value) = 16]; - optional uint32 ecn_green_mark_probability = 18[(attr_enum_value) = 17]; - optional uint32 ecn_yellow_min_threshold = 19[(attr_enum_value) = 18]; - optional uint32 ecn_yellow_max_threshold = 20[(attr_enum_value) = 19]; - optional uint32 ecn_yellow_mark_probability = 21[(attr_enum_value) = 20]; - optional uint32 ecn_red_min_threshold = 22[(attr_enum_value) = 21]; - optional uint32 ecn_red_max_threshold = 23[(attr_enum_value) = 22]; - optional uint32 ecn_red_mark_probability = 24[(attr_enum_value) = 23]; - optional uint32 ecn_color_unaware_min_threshold = 25[(attr_enum_value) = 24]; - optional uint32 ecn_color_unaware_max_threshold = 26[(attr_enum_value) = 25]; - optional uint32 ecn_color_unaware_mark_probability = 27[(attr_enum_value) = 26]; - optional uint64 green_min_threshold_64 = 28[(attr_enum_value) = 27]; - optional uint64 green_max_threshold_64 = 29[(attr_enum_value) = 28]; - optional uint64 yellow_min_threshold_64 = 30[(attr_enum_value) = 29]; - optional uint64 yellow_max_threshold_64 = 31[(attr_enum_value) = 30]; - optional uint64 red_min_threshold_64 = 32[(attr_enum_value) = 31]; - optional uint64 red_max_threshold_64 = 33[(attr_enum_value) = 32]; - optional uint64 ecn_green_min_threshold_64 = 34[(attr_enum_value) = 33]; - optional uint64 ecn_green_max_threshold_64 = 35[(attr_enum_value) = 34]; - optional uint64 ecn_yellow_min_threshold_64 = 36[(attr_enum_value) = 35]; - optional uint64 ecn_yellow_max_threshold_64 = 37[(attr_enum_value) = 36]; - optional uint64 ecn_red_min_threshold_64 = 38[(attr_enum_value) = 37]; - optional uint64 ecn_red_max_threshold_64 = 39[(attr_enum_value) = 38]; - optional uint64 ecn_color_unaware_min_threshold_64 = 40[(attr_enum_value) = 39]; - optional uint64 ecn_color_unaware_max_threshold_64 = 41[(attr_enum_value) = 40]; + uint64 oid = 1; + optional bool green_enable = 2 [(attr_enum_value) = 1]; + optional uint32 green_min_threshold = 3 [(attr_enum_value) = 2]; + optional uint32 green_max_threshold = 4 [(attr_enum_value) = 3]; + optional uint32 green_drop_probability = 5 [(attr_enum_value) = 4]; + optional bool yellow_enable = 6 [(attr_enum_value) = 5]; + optional uint32 yellow_min_threshold = 7 [(attr_enum_value) = 6]; + optional uint32 yellow_max_threshold = 8 [(attr_enum_value) = 7]; + optional uint32 yellow_drop_probability = 9 [(attr_enum_value) = 8]; + optional bool red_enable = 10 [(attr_enum_value) = 9]; + optional uint32 red_min_threshold = 11 [(attr_enum_value) = 10]; + optional uint32 red_max_threshold = 12 [(attr_enum_value) = 11]; + optional uint32 red_drop_probability = 13 [(attr_enum_value) = 12]; + optional uint32 weight = 14 [(attr_enum_value) = 13]; + optional EcnMarkMode ecn_mark_mode = 15 [(attr_enum_value) = 14]; + optional uint32 ecn_green_min_threshold = 16 [(attr_enum_value) = 15]; + optional uint32 ecn_green_max_threshold = 17 [(attr_enum_value) = 16]; + optional uint32 ecn_green_mark_probability = 18 [(attr_enum_value) = 17]; + optional uint32 ecn_yellow_min_threshold = 19 [(attr_enum_value) = 18]; + optional uint32 ecn_yellow_max_threshold = 20 [(attr_enum_value) = 19]; + optional uint32 ecn_yellow_mark_probability = 21 [(attr_enum_value) = 20]; + optional uint32 ecn_red_min_threshold = 22 [(attr_enum_value) = 21]; + optional uint32 ecn_red_max_threshold = 23 [(attr_enum_value) = 22]; + optional uint32 ecn_red_mark_probability = 24 [(attr_enum_value) = 23]; + optional uint32 ecn_color_unaware_min_threshold = 25 [(attr_enum_value) = 24]; + optional uint32 ecn_color_unaware_max_threshold = 26 [(attr_enum_value) = 25]; + optional uint32 ecn_color_unaware_mark_probability = 27 + [(attr_enum_value) = 26]; + optional uint64 green_min_threshold_64 = 28 [(attr_enum_value) = 27]; + optional uint64 green_max_threshold_64 = 29 [(attr_enum_value) = 28]; + optional uint64 yellow_min_threshold_64 = 30 [(attr_enum_value) = 29]; + optional uint64 yellow_max_threshold_64 = 31 [(attr_enum_value) = 30]; + optional uint64 red_min_threshold_64 = 32 [(attr_enum_value) = 31]; + optional uint64 red_max_threshold_64 = 33 [(attr_enum_value) = 32]; + optional uint64 ecn_green_min_threshold_64 = 34 [(attr_enum_value) = 33]; + optional uint64 ecn_green_max_threshold_64 = 35 [(attr_enum_value) = 34]; + optional uint64 ecn_yellow_min_threshold_64 = 36 [(attr_enum_value) = 35]; + optional uint64 ecn_yellow_max_threshold_64 = 37 [(attr_enum_value) = 36]; + optional uint64 ecn_red_min_threshold_64 = 38 [(attr_enum_value) = 37]; + optional uint64 ecn_red_max_threshold_64 = 39 [(attr_enum_value) = 38]; + optional uint64 ecn_color_unaware_min_threshold_64 = 40 + [(attr_enum_value) = 39]; + optional uint64 ecn_color_unaware_max_threshold_64 = 41 + [(attr_enum_value) = 40]; } -message SetWredAttributeResponse { -} +message SetWredAttributeResponse {} message GetWredAttributeRequest { - uint64 oid = 1; - repeated WredAttr attr_type = 2; + uint64 oid = 1; + repeated WredAttr attr_type = 2; } message GetWredAttributeResponse { - WredAttribute attr = 1; + WredAttribute attr = 1; } - service Wred { - rpc CreateWred (CreateWredRequest) returns (CreateWredResponse) {} - rpc RemoveWred (RemoveWredRequest) returns (RemoveWredResponse) {} - rpc SetWredAttribute (SetWredAttributeRequest) returns (SetWredAttributeResponse) {} - rpc GetWredAttribute (GetWredAttributeRequest) returns (GetWredAttributeResponse) {} + rpc CreateWred(CreateWredRequest) returns (CreateWredResponse) {} + rpc RemoveWred(RemoveWredRequest) returns (RemoveWredResponse) {} + rpc SetWredAttribute(SetWredAttributeRequest) + returns (SetWredAttributeResponse) {} + rpc GetWredAttribute(GetWredAttributeRequest) + returns (GetWredAttributeResponse) {} } diff --git a/dataplane/standalone/sai/acl.cc b/dataplane/standalone/sai/acl.cc index 6254725d3..9dc5f99e7 100644 --- a/dataplane/standalone/sai/acl.cc +++ b/dataplane/standalone/sai/acl.cc @@ -13,2481 +13,3165 @@ // limitations under the License. #include "dataplane/standalone/sai/acl.h" + +#include + +#include "dataplane/proto/sai/acl.pb.h" +#include "dataplane/proto/sai/common.pb.h" #include "dataplane/standalone/sai/common.h" #include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/acl.pb.h" -#include const sai_acl_api_t l_acl = { - .create_acl_table = l_create_acl_table, - .remove_acl_table = l_remove_acl_table, - .set_acl_table_attribute = l_set_acl_table_attribute, - .get_acl_table_attribute = l_get_acl_table_attribute, - .create_acl_entry = l_create_acl_entry, - .remove_acl_entry = l_remove_acl_entry, - .set_acl_entry_attribute = l_set_acl_entry_attribute, - .get_acl_entry_attribute = l_get_acl_entry_attribute, - .create_acl_counter = l_create_acl_counter, - .remove_acl_counter = l_remove_acl_counter, - .set_acl_counter_attribute = l_set_acl_counter_attribute, - .get_acl_counter_attribute = l_get_acl_counter_attribute, - .create_acl_range = l_create_acl_range, - .remove_acl_range = l_remove_acl_range, - .set_acl_range_attribute = l_set_acl_range_attribute, - .get_acl_range_attribute = l_get_acl_range_attribute, - .create_acl_table_group = l_create_acl_table_group, - .remove_acl_table_group = l_remove_acl_table_group, - .set_acl_table_group_attribute = l_set_acl_table_group_attribute, - .get_acl_table_group_attribute = l_get_acl_table_group_attribute, - .create_acl_table_group_member = l_create_acl_table_group_member, - .remove_acl_table_group_member = l_remove_acl_table_group_member, - .set_acl_table_group_member_attribute = l_set_acl_table_group_member_attribute, - .get_acl_table_group_member_attribute = l_get_acl_table_group_member_attribute, - .create_acl_table_chain_group = l_create_acl_table_chain_group, - .remove_acl_table_chain_group = l_remove_acl_table_chain_group, - .set_acl_table_chain_group_attribute = l_set_acl_table_chain_group_attribute, - .get_acl_table_chain_group_attribute = l_get_acl_table_chain_group_attribute, + .create_acl_table = l_create_acl_table, + .remove_acl_table = l_remove_acl_table, + .set_acl_table_attribute = l_set_acl_table_attribute, + .get_acl_table_attribute = l_get_acl_table_attribute, + .create_acl_entry = l_create_acl_entry, + .remove_acl_entry = l_remove_acl_entry, + .set_acl_entry_attribute = l_set_acl_entry_attribute, + .get_acl_entry_attribute = l_get_acl_entry_attribute, + .create_acl_counter = l_create_acl_counter, + .remove_acl_counter = l_remove_acl_counter, + .set_acl_counter_attribute = l_set_acl_counter_attribute, + .get_acl_counter_attribute = l_get_acl_counter_attribute, + .create_acl_range = l_create_acl_range, + .remove_acl_range = l_remove_acl_range, + .set_acl_range_attribute = l_set_acl_range_attribute, + .get_acl_range_attribute = l_get_acl_range_attribute, + .create_acl_table_group = l_create_acl_table_group, + .remove_acl_table_group = l_remove_acl_table_group, + .set_acl_table_group_attribute = l_set_acl_table_group_attribute, + .get_acl_table_group_attribute = l_get_acl_table_group_attribute, + .create_acl_table_group_member = l_create_acl_table_group_member, + .remove_acl_table_group_member = l_remove_acl_table_group_member, + .set_acl_table_group_member_attribute = + l_set_acl_table_group_member_attribute, + .get_acl_table_group_member_attribute = + l_get_acl_table_group_member_attribute, + .create_acl_table_chain_group = l_create_acl_table_chain_group, + .remove_acl_table_chain_group = l_remove_acl_table_chain_group, + .set_acl_table_chain_group_attribute = + l_set_acl_table_chain_group_attribute, + .get_acl_table_chain_group_attribute = + l_get_acl_table_chain_group_attribute, }; - -lemming::dataplane::sai::CreateAclTableRequest convert_create_acl_table(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclTableRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - -if (attr_list[i].id >= SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN && attr_list[i].id < SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { - (*msg.mutable_user_defined_field_group_min())[attr_list[i].id - SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN] = attr_list[i].value.oid; -} - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_ATTR_ACL_STAGE: - msg.set_acl_stage(convert_sai_acl_stage_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: - msg.mutable_acl_bind_point_type_list()->CopyFrom(convert_list_sai_acl_bind_point_type_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_ACL_TABLE_ATTR_SIZE: - msg.set_size(attr_list[i].value.u32); - break; - case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: - msg.mutable_acl_action_type_list()->CopyFrom(convert_list_sai_acl_action_type_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: - msg.set_field_src_ipv6(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: - msg.set_field_src_ipv6_word3(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: - msg.set_field_src_ipv6_word2(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: - msg.set_field_src_ipv6_word1(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: - msg.set_field_src_ipv6_word0(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: - msg.set_field_dst_ipv6(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: - msg.set_field_dst_ipv6_word3(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: - msg.set_field_dst_ipv6_word2(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: - msg.set_field_dst_ipv6_word1(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: - msg.set_field_dst_ipv6_word0(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: - msg.set_field_inner_src_ipv6(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: - msg.set_field_inner_dst_ipv6(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: - msg.set_field_src_mac(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: - msg.set_field_dst_mac(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: - msg.set_field_src_ip(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: - msg.set_field_dst_ip(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: - msg.set_field_inner_src_ip(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: - msg.set_field_inner_dst_ip(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: - msg.set_field_in_ports(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: - msg.set_field_out_ports(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: - msg.set_field_in_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: - msg.set_field_out_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: - msg.set_field_src_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: - msg.set_field_outer_vlan_id(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: - msg.set_field_outer_vlan_pri(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: - msg.set_field_outer_vlan_cfi(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: - msg.set_field_inner_vlan_id(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: - msg.set_field_inner_vlan_pri(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: - msg.set_field_inner_vlan_cfi(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: - msg.set_field_l4_src_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: - msg.set_field_l4_dst_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: - msg.set_field_inner_l4_src_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: - msg.set_field_inner_l4_dst_port(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: - msg.set_field_ether_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: - msg.set_field_inner_ether_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: - msg.set_field_ip_protocol(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: - msg.set_field_inner_ip_protocol(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: - msg.set_field_ip_identification(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DSCP: - msg.set_field_dscp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ECN: - msg.set_field_ecn(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TTL: - msg.set_field_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TOS: - msg.set_field_tos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: - msg.set_field_ip_flags(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: - msg.set_field_tcp_flags(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: - msg.set_field_acl_ip_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: - msg.set_field_acl_ip_frag(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: - msg.set_field_ipv6_flow_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TC: - msg.set_field_tc(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: - msg.set_field_icmp_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: - msg.set_field_icmp_code(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: - msg.set_field_icmpv6_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: - msg.set_field_icmpv6_code(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: - msg.set_field_packet_vlan(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: - msg.set_field_tunnel_vni(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: - msg.set_field_has_vlan_tag(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: - msg.set_field_macsec_sci(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: - msg.set_field_mpls_label0_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: - msg.set_field_mpls_label0_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: - msg.set_field_mpls_label0_exp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: - msg.set_field_mpls_label0_bos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: - msg.set_field_mpls_label1_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: - msg.set_field_mpls_label1_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: - msg.set_field_mpls_label1_exp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: - msg.set_field_mpls_label1_bos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: - msg.set_field_mpls_label2_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: - msg.set_field_mpls_label2_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: - msg.set_field_mpls_label2_exp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: - msg.set_field_mpls_label2_bos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: - msg.set_field_mpls_label3_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: - msg.set_field_mpls_label3_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: - msg.set_field_mpls_label3_exp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: - msg.set_field_mpls_label3_bos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: - msg.set_field_mpls_label4_label(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: - msg.set_field_mpls_label4_ttl(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: - msg.set_field_mpls_label4_exp(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: - msg.set_field_mpls_label4_bos(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: - msg.set_field_fdb_dst_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: - msg.set_field_route_dst_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: - msg.set_field_neighbor_dst_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: - msg.set_field_port_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: - msg.set_field_vlan_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: - msg.set_field_acl_user_meta(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: - msg.set_field_fdb_npu_meta_dst_hit(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: - msg.set_field_neighbor_npu_meta_dst_hit(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: - msg.set_field_route_npu_meta_dst_hit(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: - msg.set_field_bth_opcode(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: - msg.set_field_aeth_syndrome(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: - msg.mutable_field_acl_range_type()->CopyFrom(convert_list_sai_acl_range_type_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: - msg.set_field_ipv6_next_header(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: - msg.set_field_gre_key(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: - msg.set_field_tam_int_type(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: - msg.set_field_inner_src_mac(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: - msg.set_field_inner_dst_mac(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: - msg.set_field_vrf_id(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: - msg.set_field_ipmc_npu_meta_dst_hit(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: - msg.set_field_tunnel_terminated(attr_list[i].value.booldata); - break; - case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: - msg.set_acl_table_match_type(convert_sai_acl_table_match_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclEntryRequest convert_create_acl_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - -if (attr_list[i].id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && attr_list[i].id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { - *(*msg.mutable_user_defined_field_group_min())[attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN].mutable_data_u8list() = std::string(attr_list[i].value.aclfield.data.u8list.list, attr_list[i].value.aclfield.data.u8list.list + attr_list[i].value.aclfield.data.u8list.count); - *(*msg.mutable_user_defined_field_group_min())[attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN].mutable_mask_u8list() = std::string(attr_list[i].value.aclfield.mask.u8list.list, attr_list[i].value.aclfield.mask.u8list.list + attr_list[i].value.aclfield.mask.u8list.count); -} - - -switch (attr_list[i].id) { - - case SAI_ACL_ENTRY_ATTR_TABLE_ID: - msg.set_table_id(attr_list[i].value.oid); - break; - case SAI_ACL_ENTRY_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u32); - break; - case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: - msg.set_admin_state(attr_list[i].value.booldata); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: - *msg.mutable_field_src_ipv6() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: - *msg.mutable_field_src_ipv6_word3() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: - *msg.mutable_field_src_ipv6_word2() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: - *msg.mutable_field_src_ipv6_word1() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: - *msg.mutable_field_src_ipv6_word0() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: - *msg.mutable_field_dst_ipv6() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: - *msg.mutable_field_dst_ipv6_word3() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: - *msg.mutable_field_dst_ipv6_word2() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: - *msg.mutable_field_dst_ipv6_word1() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: - *msg.mutable_field_dst_ipv6_word0() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: - *msg.mutable_field_inner_src_ipv6() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: - *msg.mutable_field_inner_dst_ipv6() = convert_from_acl_field_data_ip6( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, attr_list[i].value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: - *msg.mutable_field_src_mac() = convert_from_acl_field_data_mac( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, attr_list[i].value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: - *msg.mutable_field_dst_mac() = convert_from_acl_field_data_mac( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, attr_list[i].value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: - *msg.mutable_field_src_ip() = convert_from_acl_field_data_ip4( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, attr_list[i].value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: - *msg.mutable_field_dst_ip() = convert_from_acl_field_data_ip4( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, attr_list[i].value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: - *msg.mutable_field_inner_src_ip() = convert_from_acl_field_data_ip4( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, attr_list[i].value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: - *msg.mutable_field_inner_dst_ip() = convert_from_acl_field_data_ip4( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, attr_list[i].value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: - *msg.mutable_field_in_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: - *msg.mutable_field_out_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: - *msg.mutable_field_src_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: - *msg.mutable_field_outer_vlan_id() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: - *msg.mutable_field_outer_vlan_pri() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: - *msg.mutable_field_outer_vlan_cfi() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: - *msg.mutable_field_inner_vlan_id() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: - *msg.mutable_field_inner_vlan_pri() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: - *msg.mutable_field_inner_vlan_cfi() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: - *msg.mutable_field_l4_src_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: - *msg.mutable_field_l4_dst_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: - *msg.mutable_field_inner_l4_src_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: - *msg.mutable_field_inner_l4_dst_port() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: - *msg.mutable_field_ether_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: - *msg.mutable_field_inner_ether_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: - *msg.mutable_field_ip_protocol() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: - *msg.mutable_field_inner_ip_protocol() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: - *msg.mutable_field_ip_identification() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: - *msg.mutable_field_dscp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ECN: - *msg.mutable_field_ecn() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TTL: - *msg.mutable_field_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TOS: - *msg.mutable_field_tos() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: - *msg.mutable_field_ip_flags() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: - *msg.mutable_field_tcp_flags() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: - *msg.mutable_field_acl_ip_type() = convert_from_acl_field_data_ip_type( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.s32, attr_list[i].value.aclfield.mask.s32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: - *msg.mutable_field_ipv6_flow_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TC: - *msg.mutable_field_tc() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: - *msg.mutable_field_icmp_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: - *msg.mutable_field_icmp_code() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: - *msg.mutable_field_icmpv6_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: - *msg.mutable_field_icmpv6_code() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: - *msg.mutable_field_tunnel_vni() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: - *msg.mutable_field_mpls_label0_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: - *msg.mutable_field_mpls_label0_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: - *msg.mutable_field_mpls_label0_exp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: - *msg.mutable_field_mpls_label1_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: - *msg.mutable_field_mpls_label1_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: - *msg.mutable_field_mpls_label1_exp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: - *msg.mutable_field_mpls_label2_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: - *msg.mutable_field_mpls_label2_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: - *msg.mutable_field_mpls_label2_exp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: - *msg.mutable_field_mpls_label3_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: - *msg.mutable_field_mpls_label3_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: - *msg.mutable_field_mpls_label3_exp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: - *msg.mutable_field_mpls_label4_label() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: - *msg.mutable_field_mpls_label4_ttl() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: - *msg.mutable_field_mpls_label4_exp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: - *msg.mutable_field_fdb_dst_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: - *msg.mutable_field_route_dst_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: - *msg.mutable_field_neighbor_dst_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: - *msg.mutable_field_port_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: - *msg.mutable_field_vlan_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: - *msg.mutable_field_acl_user_meta() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: - *msg.mutable_field_bth_opcode() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: - *msg.mutable_field_aeth_syndrome() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: - *msg.mutable_field_ipv6_next_header() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: - *msg.mutable_field_gre_key() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, attr_list[i].value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: - *msg.mutable_field_inner_src_mac() = convert_from_acl_field_data_mac( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, attr_list[i].value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: - *msg.mutable_field_inner_dst_mac() = convert_from_acl_field_data_mac( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, attr_list[i].value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: - *msg.mutable_field_vrf_id() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: - *msg.mutable_action_redirect() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: - *msg.mutable_action_packet_action() = convert_from_acl_action_data_action( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.s32 ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: - *msg.mutable_action_counter() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: - *msg.mutable_action_set_policer() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: - *msg.mutable_action_ingress_samplepacket_enable() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: - *msg.mutable_action_egress_samplepacket_enable() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: - *msg.mutable_action_set_user_trap_id() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: - *msg.mutable_action_dtel_int_session() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: - *msg.mutable_action_tam_int_object() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: - *msg.mutable_action_set_isolation_group() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: - *msg.mutable_action_macsec_flow() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: - *msg.mutable_action_set_lag_hash_id() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: - *msg.mutable_action_set_ecmp_hash_id() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: - *msg.mutable_action_set_vrf() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: - *msg.mutable_action_set_ars_monitoring() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: - *msg.mutable_action_set_ars_object() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: - *msg.mutable_action_chain_redirect() = convert_from_acl_action_data( attr_list[i].value.aclaction, attr_list[i].value.aclaction.parameter.oid ); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclCounterRequest convert_create_acl_counter(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclCounterRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_COUNTER_ATTR_TABLE_ID: - msg.set_table_id(attr_list[i].value.oid); - break; - case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: - msg.set_enable_packet_count(attr_list[i].value.booldata); - break; - case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: - msg.set_enable_byte_count(attr_list[i].value.booldata); - break; - case SAI_ACL_COUNTER_ATTR_PACKETS: - msg.set_packets(attr_list[i].value.u64); - break; - case SAI_ACL_COUNTER_ATTR_BYTES: - msg.set_bytes(attr_list[i].value.u64); - break; - case SAI_ACL_COUNTER_ATTR_LABEL: - msg.set_label(attr_list[i].value.chardata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclRangeRequest convert_create_acl_range(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclRangeRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_RANGE_ATTR_TYPE: - msg.set_type(convert_sai_acl_range_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclTableGroupRequest convert_create_acl_table_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclTableGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: - msg.set_acl_stage(convert_sai_acl_stage_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: - msg.mutable_acl_bind_point_type_list()->CopyFrom(convert_list_sai_acl_bind_point_type_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_ACL_TABLE_GROUP_ATTR_TYPE: - msg.set_type(convert_sai_acl_table_group_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclTableGroupMemberRequest convert_create_acl_table_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclTableGroupMemberRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: - msg.set_acl_table_group_id(attr_list[i].value.oid); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: - msg.set_acl_table_id(attr_list[i].value.oid); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u32); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: - msg.set_acl_table_chain_group_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateAclTableChainGroupRequest convert_create_acl_table_chain_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateAclTableChainGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: - msg.set_type(convert_sai_acl_table_chain_group_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: - msg.set_stage(convert_sai_acl_table_chain_group_stage_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -sai_status_t l_create_acl_table(sai_object_id_t *acl_table_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclTableRequest req = convert_create_acl_table(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclTableResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclTable(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_table_id) { - *acl_table_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateAclTableRequest convert_create_acl_table( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclTableRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + if (attr_list[i].id >= SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN && + attr_list[i].id < SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { + (*msg.mutable_user_defined_field_group_min()) + [attr_list[i].id - SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN] = + attr_list[i].value.oid; + } + + switch (attr_list[i].id) { + case SAI_ACL_TABLE_ATTR_ACL_STAGE: + msg.set_acl_stage( + convert_sai_acl_stage_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: + msg.mutable_acl_bind_point_type_list()->CopyFrom( + convert_list_sai_acl_bind_point_type_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_ACL_TABLE_ATTR_SIZE: + msg.set_size(attr_list[i].value.u32); + break; + case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: + msg.mutable_acl_action_type_list()->CopyFrom( + convert_list_sai_acl_action_type_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: + msg.set_field_src_ipv6(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: + msg.set_field_src_ipv6_word3(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: + msg.set_field_src_ipv6_word2(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: + msg.set_field_src_ipv6_word1(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: + msg.set_field_src_ipv6_word0(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: + msg.set_field_dst_ipv6(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: + msg.set_field_dst_ipv6_word3(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: + msg.set_field_dst_ipv6_word2(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: + msg.set_field_dst_ipv6_word1(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: + msg.set_field_dst_ipv6_word0(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: + msg.set_field_inner_src_ipv6(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: + msg.set_field_inner_dst_ipv6(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: + msg.set_field_src_mac(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: + msg.set_field_dst_mac(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: + msg.set_field_src_ip(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: + msg.set_field_dst_ip(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: + msg.set_field_inner_src_ip(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: + msg.set_field_inner_dst_ip(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: + msg.set_field_in_ports(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: + msg.set_field_out_ports(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: + msg.set_field_in_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: + msg.set_field_out_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: + msg.set_field_src_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: + msg.set_field_outer_vlan_id(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: + msg.set_field_outer_vlan_pri(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: + msg.set_field_outer_vlan_cfi(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: + msg.set_field_inner_vlan_id(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: + msg.set_field_inner_vlan_pri(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: + msg.set_field_inner_vlan_cfi(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: + msg.set_field_l4_src_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: + msg.set_field_l4_dst_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: + msg.set_field_inner_l4_src_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: + msg.set_field_inner_l4_dst_port(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: + msg.set_field_ether_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: + msg.set_field_inner_ether_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: + msg.set_field_ip_protocol(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: + msg.set_field_inner_ip_protocol(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: + msg.set_field_ip_identification(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DSCP: + msg.set_field_dscp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ECN: + msg.set_field_ecn(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TTL: + msg.set_field_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TOS: + msg.set_field_tos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: + msg.set_field_ip_flags(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: + msg.set_field_tcp_flags(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: + msg.set_field_acl_ip_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: + msg.set_field_acl_ip_frag(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: + msg.set_field_ipv6_flow_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TC: + msg.set_field_tc(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: + msg.set_field_icmp_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: + msg.set_field_icmp_code(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: + msg.set_field_icmpv6_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: + msg.set_field_icmpv6_code(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: + msg.set_field_packet_vlan(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: + msg.set_field_tunnel_vni(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: + msg.set_field_has_vlan_tag(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: + msg.set_field_macsec_sci(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: + msg.set_field_mpls_label0_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: + msg.set_field_mpls_label0_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: + msg.set_field_mpls_label0_exp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: + msg.set_field_mpls_label0_bos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: + msg.set_field_mpls_label1_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: + msg.set_field_mpls_label1_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: + msg.set_field_mpls_label1_exp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: + msg.set_field_mpls_label1_bos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: + msg.set_field_mpls_label2_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: + msg.set_field_mpls_label2_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: + msg.set_field_mpls_label2_exp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: + msg.set_field_mpls_label2_bos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: + msg.set_field_mpls_label3_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: + msg.set_field_mpls_label3_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: + msg.set_field_mpls_label3_exp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: + msg.set_field_mpls_label3_bos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: + msg.set_field_mpls_label4_label(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: + msg.set_field_mpls_label4_ttl(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: + msg.set_field_mpls_label4_exp(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: + msg.set_field_mpls_label4_bos(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: + msg.set_field_fdb_dst_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: + msg.set_field_route_dst_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: + msg.set_field_neighbor_dst_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: + msg.set_field_port_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: + msg.set_field_vlan_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: + msg.set_field_acl_user_meta(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: + msg.set_field_fdb_npu_meta_dst_hit(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + msg.set_field_neighbor_npu_meta_dst_hit(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + msg.set_field_route_npu_meta_dst_hit(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: + msg.set_field_bth_opcode(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: + msg.set_field_aeth_syndrome(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: + msg.mutable_field_acl_range_type()->CopyFrom( + convert_list_sai_acl_range_type_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: + msg.set_field_ipv6_next_header(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: + msg.set_field_gre_key(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: + msg.set_field_tam_int_type(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: + msg.set_field_inner_src_mac(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: + msg.set_field_inner_dst_mac(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: + msg.set_field_vrf_id(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + msg.set_field_ipmc_npu_meta_dst_hit(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: + msg.set_field_tunnel_terminated(attr_list[i].value.booldata); + break; + case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: + msg.set_acl_table_match_type( + convert_sai_acl_table_match_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclEntryRequest convert_create_acl_entry( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + if (attr_list[i].id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && + attr_list[i].id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { + *(*msg.mutable_user_defined_field_group_min()) + [attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN] + .mutable_data_u8list() = + std::string(attr_list[i].value.aclfield.data.u8list.list, + attr_list[i].value.aclfield.data.u8list.list + + attr_list[i].value.aclfield.data.u8list.count); + *(*msg.mutable_user_defined_field_group_min()) + [attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN] + .mutable_mask_u8list() = + std::string(attr_list[i].value.aclfield.mask.u8list.list, + attr_list[i].value.aclfield.mask.u8list.list + + attr_list[i].value.aclfield.mask.u8list.count); + } + + switch (attr_list[i].id) { + case SAI_ACL_ENTRY_ATTR_TABLE_ID: + msg.set_table_id(attr_list[i].value.oid); + break; + case SAI_ACL_ENTRY_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u32); + break; + case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: + msg.set_admin_state(attr_list[i].value.booldata); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: + *msg.mutable_field_src_ipv6() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: + *msg.mutable_field_src_ipv6_word3() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: + *msg.mutable_field_src_ipv6_word2() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: + *msg.mutable_field_src_ipv6_word1() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: + *msg.mutable_field_src_ipv6_word0() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: + *msg.mutable_field_dst_ipv6() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: + *msg.mutable_field_dst_ipv6_word3() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: + *msg.mutable_field_dst_ipv6_word2() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: + *msg.mutable_field_dst_ipv6_word1() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: + *msg.mutable_field_dst_ipv6_word0() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: + *msg.mutable_field_inner_src_ipv6() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: + *msg.mutable_field_inner_dst_ipv6() = convert_from_acl_field_data_ip6( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip6, + attr_list[i].value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: + *msg.mutable_field_src_mac() = convert_from_acl_field_data_mac( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, + attr_list[i].value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: + *msg.mutable_field_dst_mac() = convert_from_acl_field_data_mac( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, + attr_list[i].value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: + *msg.mutable_field_src_ip() = convert_from_acl_field_data_ip4( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, + attr_list[i].value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: + *msg.mutable_field_dst_ip() = convert_from_acl_field_data_ip4( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, + attr_list[i].value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: + *msg.mutable_field_inner_src_ip() = convert_from_acl_field_data_ip4( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, + attr_list[i].value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: + *msg.mutable_field_inner_dst_ip() = convert_from_acl_field_data_ip4( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.ip4, + attr_list[i].value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: + *msg.mutable_field_in_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: + *msg.mutable_field_out_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: + *msg.mutable_field_src_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: + *msg.mutable_field_outer_vlan_id() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: + *msg.mutable_field_outer_vlan_pri() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: + *msg.mutable_field_outer_vlan_cfi() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: + *msg.mutable_field_inner_vlan_id() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: + *msg.mutable_field_inner_vlan_pri() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: + *msg.mutable_field_inner_vlan_cfi() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: + *msg.mutable_field_l4_src_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: + *msg.mutable_field_l4_dst_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: + *msg.mutable_field_inner_l4_src_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: + *msg.mutable_field_inner_l4_dst_port() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: + *msg.mutable_field_ether_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: + *msg.mutable_field_inner_ether_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: + *msg.mutable_field_ip_protocol() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: + *msg.mutable_field_inner_ip_protocol() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: + *msg.mutable_field_ip_identification() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: + *msg.mutable_field_dscp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ECN: + *msg.mutable_field_ecn() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TTL: + *msg.mutable_field_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TOS: + *msg.mutable_field_tos() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: + *msg.mutable_field_ip_flags() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: + *msg.mutable_field_tcp_flags() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: + *msg.mutable_field_acl_ip_type() = convert_from_acl_field_data_ip_type( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.s32, + attr_list[i].value.aclfield.mask.s32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: + *msg.mutable_field_ipv6_flow_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TC: + *msg.mutable_field_tc() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: + *msg.mutable_field_icmp_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: + *msg.mutable_field_icmp_code() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: + *msg.mutable_field_icmpv6_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: + *msg.mutable_field_icmpv6_code() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: + *msg.mutable_field_tunnel_vni() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: + *msg.mutable_field_mpls_label0_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: + *msg.mutable_field_mpls_label0_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: + *msg.mutable_field_mpls_label0_exp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: + *msg.mutable_field_mpls_label1_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: + *msg.mutable_field_mpls_label1_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: + *msg.mutable_field_mpls_label1_exp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: + *msg.mutable_field_mpls_label2_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: + *msg.mutable_field_mpls_label2_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: + *msg.mutable_field_mpls_label2_exp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: + *msg.mutable_field_mpls_label3_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: + *msg.mutable_field_mpls_label3_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: + *msg.mutable_field_mpls_label3_exp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: + *msg.mutable_field_mpls_label4_label() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: + *msg.mutable_field_mpls_label4_ttl() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: + *msg.mutable_field_mpls_label4_exp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: + *msg.mutable_field_fdb_dst_user_meta() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: + *msg.mutable_field_route_dst_user_meta() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: + *msg.mutable_field_neighbor_dst_user_meta() = + convert_from_acl_field_data(attr_list[i].value.aclfield, + attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: + *msg.mutable_field_port_user_meta() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: + *msg.mutable_field_vlan_user_meta() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: + *msg.mutable_field_acl_user_meta() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: + *msg.mutable_field_bth_opcode() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: + *msg.mutable_field_aeth_syndrome() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: + *msg.mutable_field_ipv6_next_header() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: + *msg.mutable_field_gre_key() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u32, + attr_list[i].value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: + *msg.mutable_field_inner_src_mac() = convert_from_acl_field_data_mac( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, + attr_list[i].value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: + *msg.mutable_field_inner_dst_mac() = convert_from_acl_field_data_mac( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.mac, + attr_list[i].value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: + *msg.mutable_field_vrf_id() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: + *msg.mutable_action_redirect() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: + *msg.mutable_action_packet_action() = + convert_from_acl_action_data_action( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.s32); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: + *msg.mutable_action_counter() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: + *msg.mutable_action_set_policer() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: + *msg.mutable_action_ingress_samplepacket_enable() = + convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: + *msg.mutable_action_egress_samplepacket_enable() = + convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: + *msg.mutable_action_set_user_trap_id() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: + *msg.mutable_action_dtel_int_session() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: + *msg.mutable_action_tam_int_object() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: + *msg.mutable_action_set_isolation_group() = + convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: + *msg.mutable_action_macsec_flow() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: + *msg.mutable_action_set_lag_hash_id() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: + *msg.mutable_action_set_ecmp_hash_id() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: + *msg.mutable_action_set_vrf() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: + *msg.mutable_action_set_ars_monitoring() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: + *msg.mutable_action_set_ars_object() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: + *msg.mutable_action_chain_redirect() = convert_from_acl_action_data( + attr_list[i].value.aclaction, + attr_list[i].value.aclaction.parameter.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclCounterRequest convert_create_acl_counter( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclCounterRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_COUNTER_ATTR_TABLE_ID: + msg.set_table_id(attr_list[i].value.oid); + break; + case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: + msg.set_enable_packet_count(attr_list[i].value.booldata); + break; + case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: + msg.set_enable_byte_count(attr_list[i].value.booldata); + break; + case SAI_ACL_COUNTER_ATTR_PACKETS: + msg.set_packets(attr_list[i].value.u64); + break; + case SAI_ACL_COUNTER_ATTR_BYTES: + msg.set_bytes(attr_list[i].value.u64); + break; + case SAI_ACL_COUNTER_ATTR_LABEL: + msg.set_label(attr_list[i].value.chardata); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclRangeRequest convert_create_acl_range( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclRangeRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_RANGE_ATTR_TYPE: + msg.set_type( + convert_sai_acl_range_type_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclTableGroupRequest +convert_create_acl_table_group(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclTableGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: + msg.set_acl_stage( + convert_sai_acl_stage_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: + msg.mutable_acl_bind_point_type_list()->CopyFrom( + convert_list_sai_acl_bind_point_type_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_ACL_TABLE_GROUP_ATTR_TYPE: + msg.set_type(convert_sai_acl_table_group_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclTableGroupMemberRequest +convert_create_acl_table_group_member(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclTableGroupMemberRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: + msg.set_acl_table_group_id(attr_list[i].value.oid); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: + msg.set_acl_table_id(attr_list[i].value.oid); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u32); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: + msg.set_acl_table_chain_group_id(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateAclTableChainGroupRequest +convert_create_acl_table_chain_group(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateAclTableChainGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: + msg.set_type(convert_sai_acl_table_chain_group_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: + msg.set_stage(convert_sai_acl_table_chain_group_stage_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +sai_status_t l_create_acl_table(sai_object_id_t* acl_table_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclTableRequest req = + convert_create_acl_table(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclTableResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclTable(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_table_id) { + *acl_table_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_acl_table(sai_object_id_t acl_table_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclTableRequest req; - lemming::dataplane::sai::RemoveAclTableResponse resp; - grpc::ClientContext context; - req.set_oid(acl_table_id); - - grpc::Status status = acl->RemoveAclTable(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_table_attribute(sai_object_id_t acl_table_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_table_attribute(sai_object_id_t acl_table_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclTableAttributeRequest req; - lemming::dataplane::sai::GetAclTableAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_table_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_table_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclTableAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - -if (attr_list[i].id >= SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN && attr_list[i].id < SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { - attr_list[i].value.oid = resp.attr().user_defined_field_group_min().at(attr_list[i].id - SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN); -} - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_ATTR_ACL_STAGE: - attr_list[i].value.s32 = convert_sai_acl_stage_t_to_sai(resp.attr().acl_stage()); - break; - case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: - convert_list_sai_acl_bind_point_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().acl_bind_point_type_list(), &attr_list[i].value.s32list.count); - break; - case SAI_ACL_TABLE_ATTR_SIZE: - attr_list[i].value.u32 = resp.attr().size(); - break; - case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: - convert_list_sai_acl_action_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().acl_action_type_list(), &attr_list[i].value.s32list.count); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: - attr_list[i].value.booldata = resp.attr().field_src_ipv6(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: - attr_list[i].value.booldata = resp.attr().field_src_ipv6_word3(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: - attr_list[i].value.booldata = resp.attr().field_src_ipv6_word2(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: - attr_list[i].value.booldata = resp.attr().field_src_ipv6_word1(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: - attr_list[i].value.booldata = resp.attr().field_src_ipv6_word0(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: - attr_list[i].value.booldata = resp.attr().field_dst_ipv6(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: - attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word3(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: - attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word2(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: - attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word1(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: - attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word0(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: - attr_list[i].value.booldata = resp.attr().field_inner_src_ipv6(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: - attr_list[i].value.booldata = resp.attr().field_inner_dst_ipv6(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: - attr_list[i].value.booldata = resp.attr().field_src_mac(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: - attr_list[i].value.booldata = resp.attr().field_dst_mac(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: - attr_list[i].value.booldata = resp.attr().field_src_ip(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: - attr_list[i].value.booldata = resp.attr().field_dst_ip(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: - attr_list[i].value.booldata = resp.attr().field_inner_src_ip(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: - attr_list[i].value.booldata = resp.attr().field_inner_dst_ip(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: - attr_list[i].value.booldata = resp.attr().field_in_ports(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: - attr_list[i].value.booldata = resp.attr().field_out_ports(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: - attr_list[i].value.booldata = resp.attr().field_in_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: - attr_list[i].value.booldata = resp.attr().field_out_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: - attr_list[i].value.booldata = resp.attr().field_src_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: - attr_list[i].value.booldata = resp.attr().field_outer_vlan_id(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: - attr_list[i].value.booldata = resp.attr().field_outer_vlan_pri(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: - attr_list[i].value.booldata = resp.attr().field_outer_vlan_cfi(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: - attr_list[i].value.booldata = resp.attr().field_inner_vlan_id(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: - attr_list[i].value.booldata = resp.attr().field_inner_vlan_pri(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: - attr_list[i].value.booldata = resp.attr().field_inner_vlan_cfi(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: - attr_list[i].value.booldata = resp.attr().field_l4_src_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: - attr_list[i].value.booldata = resp.attr().field_l4_dst_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: - attr_list[i].value.booldata = resp.attr().field_inner_l4_src_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: - attr_list[i].value.booldata = resp.attr().field_inner_l4_dst_port(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: - attr_list[i].value.booldata = resp.attr().field_ether_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: - attr_list[i].value.booldata = resp.attr().field_inner_ether_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: - attr_list[i].value.booldata = resp.attr().field_ip_protocol(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: - attr_list[i].value.booldata = resp.attr().field_inner_ip_protocol(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: - attr_list[i].value.booldata = resp.attr().field_ip_identification(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_DSCP: - attr_list[i].value.booldata = resp.attr().field_dscp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ECN: - attr_list[i].value.booldata = resp.attr().field_ecn(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TTL: - attr_list[i].value.booldata = resp.attr().field_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TOS: - attr_list[i].value.booldata = resp.attr().field_tos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: - attr_list[i].value.booldata = resp.attr().field_ip_flags(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: - attr_list[i].value.booldata = resp.attr().field_tcp_flags(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: - attr_list[i].value.booldata = resp.attr().field_acl_ip_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: - attr_list[i].value.booldata = resp.attr().field_acl_ip_frag(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: - attr_list[i].value.booldata = resp.attr().field_ipv6_flow_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TC: - attr_list[i].value.booldata = resp.attr().field_tc(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: - attr_list[i].value.booldata = resp.attr().field_icmp_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: - attr_list[i].value.booldata = resp.attr().field_icmp_code(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: - attr_list[i].value.booldata = resp.attr().field_icmpv6_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: - attr_list[i].value.booldata = resp.attr().field_icmpv6_code(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: - attr_list[i].value.booldata = resp.attr().field_packet_vlan(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: - attr_list[i].value.booldata = resp.attr().field_tunnel_vni(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: - attr_list[i].value.booldata = resp.attr().field_has_vlan_tag(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: - attr_list[i].value.booldata = resp.attr().field_macsec_sci(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: - attr_list[i].value.booldata = resp.attr().field_mpls_label0_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: - attr_list[i].value.booldata = resp.attr().field_mpls_label0_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: - attr_list[i].value.booldata = resp.attr().field_mpls_label0_exp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: - attr_list[i].value.booldata = resp.attr().field_mpls_label0_bos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: - attr_list[i].value.booldata = resp.attr().field_mpls_label1_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: - attr_list[i].value.booldata = resp.attr().field_mpls_label1_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: - attr_list[i].value.booldata = resp.attr().field_mpls_label1_exp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: - attr_list[i].value.booldata = resp.attr().field_mpls_label1_bos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: - attr_list[i].value.booldata = resp.attr().field_mpls_label2_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: - attr_list[i].value.booldata = resp.attr().field_mpls_label2_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: - attr_list[i].value.booldata = resp.attr().field_mpls_label2_exp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: - attr_list[i].value.booldata = resp.attr().field_mpls_label2_bos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: - attr_list[i].value.booldata = resp.attr().field_mpls_label3_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: - attr_list[i].value.booldata = resp.attr().field_mpls_label3_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: - attr_list[i].value.booldata = resp.attr().field_mpls_label3_exp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: - attr_list[i].value.booldata = resp.attr().field_mpls_label3_bos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: - attr_list[i].value.booldata = resp.attr().field_mpls_label4_label(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: - attr_list[i].value.booldata = resp.attr().field_mpls_label4_ttl(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: - attr_list[i].value.booldata = resp.attr().field_mpls_label4_exp(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: - attr_list[i].value.booldata = resp.attr().field_mpls_label4_bos(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: - attr_list[i].value.booldata = resp.attr().field_fdb_dst_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: - attr_list[i].value.booldata = resp.attr().field_route_dst_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: - attr_list[i].value.booldata = resp.attr().field_neighbor_dst_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: - attr_list[i].value.booldata = resp.attr().field_port_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: - attr_list[i].value.booldata = resp.attr().field_vlan_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: - attr_list[i].value.booldata = resp.attr().field_acl_user_meta(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: - attr_list[i].value.booldata = resp.attr().field_fdb_npu_meta_dst_hit(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: - attr_list[i].value.booldata = resp.attr().field_neighbor_npu_meta_dst_hit(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: - attr_list[i].value.booldata = resp.attr().field_route_npu_meta_dst_hit(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: - attr_list[i].value.booldata = resp.attr().field_bth_opcode(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: - attr_list[i].value.booldata = resp.attr().field_aeth_syndrome(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: - convert_list_sai_acl_range_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().field_acl_range_type(), &attr_list[i].value.s32list.count); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: - attr_list[i].value.booldata = resp.attr().field_ipv6_next_header(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: - attr_list[i].value.booldata = resp.attr().field_gre_key(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: - attr_list[i].value.booldata = resp.attr().field_tam_int_type(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: - attr_list[i].value.booldata = resp.attr().field_inner_src_mac(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: - attr_list[i].value.booldata = resp.attr().field_inner_dst_mac(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: - attr_list[i].value.booldata = resp.attr().field_vrf_id(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: - attr_list[i].value.booldata = resp.attr().field_ipmc_npu_meta_dst_hit(); - break; - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: - attr_list[i].value.booldata = resp.attr().field_tunnel_terminated(); - break; - case SAI_ACL_TABLE_ATTR_ENTRY_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().entry_list(), &attr_list[i].value.objlist.count); - break; - case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: - attr_list[i].value.u32 = resp.attr().available_acl_entry(); - break; - case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: - attr_list[i].value.u32 = resp.attr().available_acl_counter(); - break; - case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: - attr_list[i].value.s32 = convert_sai_acl_table_match_type_t_to_sai(resp.attr().acl_table_match_type()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_entry(sai_object_id_t *acl_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclEntryRequest req = convert_create_acl_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_entry_id) { - *acl_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclTableRequest req; + lemming::dataplane::sai::RemoveAclTableResponse resp; + grpc::ClientContext context; + req.set_oid(acl_table_id); + + grpc::Status status = acl->RemoveAclTable(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_table_attribute(sai_object_id_t acl_table_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_table_attribute(sai_object_id_t acl_table_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclTableAttributeRequest req; + lemming::dataplane::sai::GetAclTableAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_table_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_acl_table_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = acl->GetAclTableAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + if (attr_list[i].id >= SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN && + attr_list[i].id < SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { + attr_list[i].value.oid = resp.attr().user_defined_field_group_min().at( + attr_list[i].id - SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN); + } + + switch (attr_list[i].id) { + case SAI_ACL_TABLE_ATTR_ACL_STAGE: + attr_list[i].value.s32 = + convert_sai_acl_stage_t_to_sai(resp.attr().acl_stage()); + break; + case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: + convert_list_sai_acl_bind_point_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().acl_bind_point_type_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_ACL_TABLE_ATTR_SIZE: + attr_list[i].value.u32 = resp.attr().size(); + break; + case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: + convert_list_sai_acl_action_type_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().acl_action_type_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: + attr_list[i].value.booldata = resp.attr().field_src_ipv6(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: + attr_list[i].value.booldata = resp.attr().field_src_ipv6_word3(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: + attr_list[i].value.booldata = resp.attr().field_src_ipv6_word2(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: + attr_list[i].value.booldata = resp.attr().field_src_ipv6_word1(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: + attr_list[i].value.booldata = resp.attr().field_src_ipv6_word0(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: + attr_list[i].value.booldata = resp.attr().field_dst_ipv6(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: + attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word3(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: + attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word2(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: + attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word1(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: + attr_list[i].value.booldata = resp.attr().field_dst_ipv6_word0(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: + attr_list[i].value.booldata = resp.attr().field_inner_src_ipv6(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: + attr_list[i].value.booldata = resp.attr().field_inner_dst_ipv6(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: + attr_list[i].value.booldata = resp.attr().field_src_mac(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: + attr_list[i].value.booldata = resp.attr().field_dst_mac(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: + attr_list[i].value.booldata = resp.attr().field_src_ip(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: + attr_list[i].value.booldata = resp.attr().field_dst_ip(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: + attr_list[i].value.booldata = resp.attr().field_inner_src_ip(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: + attr_list[i].value.booldata = resp.attr().field_inner_dst_ip(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: + attr_list[i].value.booldata = resp.attr().field_in_ports(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: + attr_list[i].value.booldata = resp.attr().field_out_ports(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: + attr_list[i].value.booldata = resp.attr().field_in_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: + attr_list[i].value.booldata = resp.attr().field_out_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: + attr_list[i].value.booldata = resp.attr().field_src_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: + attr_list[i].value.booldata = resp.attr().field_outer_vlan_id(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: + attr_list[i].value.booldata = resp.attr().field_outer_vlan_pri(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: + attr_list[i].value.booldata = resp.attr().field_outer_vlan_cfi(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: + attr_list[i].value.booldata = resp.attr().field_inner_vlan_id(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: + attr_list[i].value.booldata = resp.attr().field_inner_vlan_pri(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: + attr_list[i].value.booldata = resp.attr().field_inner_vlan_cfi(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: + attr_list[i].value.booldata = resp.attr().field_l4_src_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: + attr_list[i].value.booldata = resp.attr().field_l4_dst_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: + attr_list[i].value.booldata = resp.attr().field_inner_l4_src_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: + attr_list[i].value.booldata = resp.attr().field_inner_l4_dst_port(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: + attr_list[i].value.booldata = resp.attr().field_ether_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: + attr_list[i].value.booldata = resp.attr().field_inner_ether_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: + attr_list[i].value.booldata = resp.attr().field_ip_protocol(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: + attr_list[i].value.booldata = resp.attr().field_inner_ip_protocol(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: + attr_list[i].value.booldata = resp.attr().field_ip_identification(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_DSCP: + attr_list[i].value.booldata = resp.attr().field_dscp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ECN: + attr_list[i].value.booldata = resp.attr().field_ecn(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TTL: + attr_list[i].value.booldata = resp.attr().field_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TOS: + attr_list[i].value.booldata = resp.attr().field_tos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: + attr_list[i].value.booldata = resp.attr().field_ip_flags(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: + attr_list[i].value.booldata = resp.attr().field_tcp_flags(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: + attr_list[i].value.booldata = resp.attr().field_acl_ip_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: + attr_list[i].value.booldata = resp.attr().field_acl_ip_frag(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: + attr_list[i].value.booldata = resp.attr().field_ipv6_flow_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TC: + attr_list[i].value.booldata = resp.attr().field_tc(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: + attr_list[i].value.booldata = resp.attr().field_icmp_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: + attr_list[i].value.booldata = resp.attr().field_icmp_code(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: + attr_list[i].value.booldata = resp.attr().field_icmpv6_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: + attr_list[i].value.booldata = resp.attr().field_icmpv6_code(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: + attr_list[i].value.booldata = resp.attr().field_packet_vlan(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: + attr_list[i].value.booldata = resp.attr().field_tunnel_vni(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: + attr_list[i].value.booldata = resp.attr().field_has_vlan_tag(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: + attr_list[i].value.booldata = resp.attr().field_macsec_sci(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: + attr_list[i].value.booldata = resp.attr().field_mpls_label0_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: + attr_list[i].value.booldata = resp.attr().field_mpls_label0_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: + attr_list[i].value.booldata = resp.attr().field_mpls_label0_exp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: + attr_list[i].value.booldata = resp.attr().field_mpls_label0_bos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: + attr_list[i].value.booldata = resp.attr().field_mpls_label1_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: + attr_list[i].value.booldata = resp.attr().field_mpls_label1_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: + attr_list[i].value.booldata = resp.attr().field_mpls_label1_exp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: + attr_list[i].value.booldata = resp.attr().field_mpls_label1_bos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: + attr_list[i].value.booldata = resp.attr().field_mpls_label2_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: + attr_list[i].value.booldata = resp.attr().field_mpls_label2_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: + attr_list[i].value.booldata = resp.attr().field_mpls_label2_exp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: + attr_list[i].value.booldata = resp.attr().field_mpls_label2_bos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: + attr_list[i].value.booldata = resp.attr().field_mpls_label3_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: + attr_list[i].value.booldata = resp.attr().field_mpls_label3_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: + attr_list[i].value.booldata = resp.attr().field_mpls_label3_exp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: + attr_list[i].value.booldata = resp.attr().field_mpls_label3_bos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: + attr_list[i].value.booldata = resp.attr().field_mpls_label4_label(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: + attr_list[i].value.booldata = resp.attr().field_mpls_label4_ttl(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: + attr_list[i].value.booldata = resp.attr().field_mpls_label4_exp(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: + attr_list[i].value.booldata = resp.attr().field_mpls_label4_bos(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: + attr_list[i].value.booldata = resp.attr().field_fdb_dst_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: + attr_list[i].value.booldata = resp.attr().field_route_dst_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: + attr_list[i].value.booldata = + resp.attr().field_neighbor_dst_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: + attr_list[i].value.booldata = resp.attr().field_port_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: + attr_list[i].value.booldata = resp.attr().field_vlan_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: + attr_list[i].value.booldata = resp.attr().field_acl_user_meta(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: + attr_list[i].value.booldata = resp.attr().field_fdb_npu_meta_dst_hit(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + attr_list[i].value.booldata = + resp.attr().field_neighbor_npu_meta_dst_hit(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + attr_list[i].value.booldata = + resp.attr().field_route_npu_meta_dst_hit(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: + attr_list[i].value.booldata = resp.attr().field_bth_opcode(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: + attr_list[i].value.booldata = resp.attr().field_aeth_syndrome(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: + convert_list_sai_acl_range_type_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().field_acl_range_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: + attr_list[i].value.booldata = resp.attr().field_ipv6_next_header(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: + attr_list[i].value.booldata = resp.attr().field_gre_key(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: + attr_list[i].value.booldata = resp.attr().field_tam_int_type(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: + attr_list[i].value.booldata = resp.attr().field_inner_src_mac(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: + attr_list[i].value.booldata = resp.attr().field_inner_dst_mac(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: + attr_list[i].value.booldata = resp.attr().field_vrf_id(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + attr_list[i].value.booldata = resp.attr().field_ipmc_npu_meta_dst_hit(); + break; + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: + attr_list[i].value.booldata = resp.attr().field_tunnel_terminated(); + break; + case SAI_ACL_TABLE_ATTR_ENTRY_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().entry_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: + attr_list[i].value.u32 = resp.attr().available_acl_entry(); + break; + case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: + attr_list[i].value.u32 = resp.attr().available_acl_counter(); + break; + case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: + attr_list[i].value.s32 = convert_sai_acl_table_match_type_t_to_sai( + resp.attr().acl_table_match_type()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_entry(sai_object_id_t* acl_entry_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclEntryRequest req = + convert_create_acl_entry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_entry_id) { + *acl_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_acl_entry(sai_object_id_t acl_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclEntryRequest req; - lemming::dataplane::sai::RemoveAclEntryResponse resp; - grpc::ClientContext context; - req.set_oid(acl_entry_id); - - grpc::Status status = acl->RemoveAclEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_entry_attribute(sai_object_id_t acl_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetAclEntryAttributeRequest req; - lemming::dataplane::sai::SetAclEntryAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(acl_entry_id); - - -if (attr->id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && attr->id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { -*(*req.mutable_user_defined_field_group_min())[attr->id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN].mutable_data_u8list() = std::string(attr->value.aclfield.data.u8list.list, attr->value.aclfield.data.u8list.list + attr->value.aclfield.data.u8list.count); -*(*req.mutable_user_defined_field_group_min())[attr->id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN].mutable_mask_u8list() = std::string(attr->value.aclfield.mask.u8list.list, attr->value.aclfield.mask.u8list.list + attr->value.aclfield.mask.u8list.count); -} - - -switch (attr->id) { - - case SAI_ACL_ENTRY_ATTR_PRIORITY: - req.set_priority(attr->value.u32); - break; - case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: - req.set_admin_state(attr->value.booldata); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: - *req.mutable_field_src_ipv6() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: - *req.mutable_field_src_ipv6_word3() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: - *req.mutable_field_src_ipv6_word2() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: - *req.mutable_field_src_ipv6_word1() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: - *req.mutable_field_src_ipv6_word0() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: - *req.mutable_field_dst_ipv6() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: - *req.mutable_field_dst_ipv6_word3() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: - *req.mutable_field_dst_ipv6_word2() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: - *req.mutable_field_dst_ipv6_word1() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: - *req.mutable_field_dst_ipv6_word0() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: - *req.mutable_field_inner_src_ipv6() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: - *req.mutable_field_inner_dst_ipv6() = convert_from_acl_field_data_ip6( attr->value.aclfield, attr->value.aclfield.data.ip6, attr->value.aclfield.mask.ip6 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: - *req.mutable_field_src_mac() = convert_from_acl_field_data_mac( attr->value.aclfield, attr->value.aclfield.data.mac, attr->value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: - *req.mutable_field_dst_mac() = convert_from_acl_field_data_mac( attr->value.aclfield, attr->value.aclfield.data.mac, attr->value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: - *req.mutable_field_src_ip() = convert_from_acl_field_data_ip4( attr->value.aclfield, attr->value.aclfield.data.ip4, attr->value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: - *req.mutable_field_dst_ip() = convert_from_acl_field_data_ip4( attr->value.aclfield, attr->value.aclfield.data.ip4, attr->value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: - *req.mutable_field_inner_src_ip() = convert_from_acl_field_data_ip4( attr->value.aclfield, attr->value.aclfield.data.ip4, attr->value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: - *req.mutable_field_inner_dst_ip() = convert_from_acl_field_data_ip4( attr->value.aclfield, attr->value.aclfield.data.ip4, attr->value.aclfield.mask.ip4 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: - *req.mutable_field_in_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: - *req.mutable_field_out_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: - *req.mutable_field_src_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: - *req.mutable_field_outer_vlan_id() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: - *req.mutable_field_outer_vlan_pri() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: - *req.mutable_field_outer_vlan_cfi() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: - *req.mutable_field_inner_vlan_id() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: - *req.mutable_field_inner_vlan_pri() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: - *req.mutable_field_inner_vlan_cfi() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: - *req.mutable_field_l4_src_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: - *req.mutable_field_l4_dst_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: - *req.mutable_field_inner_l4_src_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: - *req.mutable_field_inner_l4_dst_port() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: - *req.mutable_field_ether_type() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: - *req.mutable_field_inner_ether_type() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: - *req.mutable_field_ip_protocol() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: - *req.mutable_field_inner_ip_protocol() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: - *req.mutable_field_ip_identification() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u16, attr->value.aclfield.mask.u16 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: - *req.mutable_field_dscp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ECN: - *req.mutable_field_ecn() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TTL: - *req.mutable_field_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TOS: - *req.mutable_field_tos() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: - *req.mutable_field_ip_flags() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: - *req.mutable_field_tcp_flags() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: - *req.mutable_field_acl_ip_type() = convert_from_acl_field_data_ip_type( attr->value.aclfield, attr->value.aclfield.data.s32, attr->value.aclfield.mask.s32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: - *req.mutable_field_ipv6_flow_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TC: - *req.mutable_field_tc() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: - *req.mutable_field_icmp_type() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: - *req.mutable_field_icmp_code() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: - *req.mutable_field_icmpv6_type() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: - *req.mutable_field_icmpv6_code() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: - *req.mutable_field_tunnel_vni() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: - *req.mutable_field_mpls_label0_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: - *req.mutable_field_mpls_label0_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: - *req.mutable_field_mpls_label0_exp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: - *req.mutable_field_mpls_label1_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: - *req.mutable_field_mpls_label1_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: - *req.mutable_field_mpls_label1_exp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: - *req.mutable_field_mpls_label2_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: - *req.mutable_field_mpls_label2_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: - *req.mutable_field_mpls_label2_exp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: - *req.mutable_field_mpls_label3_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: - *req.mutable_field_mpls_label3_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: - *req.mutable_field_mpls_label3_exp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: - *req.mutable_field_mpls_label4_label() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: - *req.mutable_field_mpls_label4_ttl() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: - *req.mutable_field_mpls_label4_exp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: - *req.mutable_field_fdb_dst_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: - *req.mutable_field_route_dst_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: - *req.mutable_field_neighbor_dst_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: - *req.mutable_field_port_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: - *req.mutable_field_vlan_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: - *req.mutable_field_acl_user_meta() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: - *req.mutable_field_bth_opcode() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: - *req.mutable_field_aeth_syndrome() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: - *req.mutable_field_ipv6_next_header() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: - *req.mutable_field_gre_key() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u32, attr->value.aclfield.mask.u32 ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: - *req.mutable_field_inner_src_mac() = convert_from_acl_field_data_mac( attr->value.aclfield, attr->value.aclfield.data.mac, attr->value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: - *req.mutable_field_inner_dst_mac() = convert_from_acl_field_data_mac( attr->value.aclfield, attr->value.aclfield.data.mac, attr->value.aclfield.mask.mac ); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: - *req.mutable_field_vrf_id() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: - *req.mutable_action_redirect() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: - *req.mutable_action_packet_action() = convert_from_acl_action_data_action( attr->value.aclaction, attr->value.aclaction.parameter.s32 ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: - *req.mutable_action_counter() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: - *req.mutable_action_set_policer() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: - *req.mutable_action_ingress_samplepacket_enable() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: - *req.mutable_action_egress_samplepacket_enable() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: - *req.mutable_action_set_user_trap_id() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: - *req.mutable_action_dtel_int_session() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: - *req.mutable_action_tam_int_object() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: - *req.mutable_action_set_isolation_group() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: - *req.mutable_action_macsec_flow() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: - *req.mutable_action_set_lag_hash_id() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: - *req.mutable_action_set_ecmp_hash_id() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: - *req.mutable_action_set_vrf() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: - *req.mutable_action_set_ars_monitoring() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: - *req.mutable_action_set_ars_object() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: - *req.mutable_action_chain_redirect() = convert_from_acl_action_data( attr->value.aclaction, attr->value.aclaction.parameter.oid ); - break; -} - - grpc::Status status = acl->SetAclEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_entry_attribute(sai_object_id_t acl_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclEntryAttributeRequest req; - lemming::dataplane::sai::GetAclEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - -if (attr_list[i].id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && attr_list[i].id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { - auto acl_attr = resp.attr().user_defined_field_group_min().at(attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN); - memcpy(attr_list[i].value.aclfield.data.u8list.list, acl_attr.data_u8list().data(), acl_attr.data_u8list().size()); - memcpy(attr_list[i].value.aclfield.mask.u8list.list, acl_attr.mask_u8list().data(), acl_attr.mask_u8list().size()); - attr_list[i].value.aclfield.data.u8list.count = acl_attr.data_u8list().size(); - attr_list[i].value.aclfield.mask.u8list.count = acl_attr.mask_u8list().size(); -} - - -switch (attr_list[i].id) { - - case SAI_ACL_ENTRY_ATTR_TABLE_ID: - attr_list[i].value.oid = resp.attr().table_id(); - break; - case SAI_ACL_ENTRY_ATTR_PRIORITY: - attr_list[i].value.u32 = resp.attr().priority(); - break; - case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: - attr_list[i].value.booldata = resp.attr().admin_state(); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_src_ipv6(), resp.attr().field_src_ipv6().data_ip(), resp.attr().field_src_ipv6().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_src_ipv6_word3(), resp.attr().field_src_ipv6_word3().data_ip(), resp.attr().field_src_ipv6_word3().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_src_ipv6_word2(), resp.attr().field_src_ipv6_word2().data_ip(), resp.attr().field_src_ipv6_word2().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_src_ipv6_word1(), resp.attr().field_src_ipv6_word1().data_ip(), resp.attr().field_src_ipv6_word1().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_src_ipv6_word0(), resp.attr().field_src_ipv6_word0().data_ip(), resp.attr().field_src_ipv6_word0().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_dst_ipv6(), resp.attr().field_dst_ipv6().data_ip(), resp.attr().field_dst_ipv6().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_dst_ipv6_word3(), resp.attr().field_dst_ipv6_word3().data_ip(), resp.attr().field_dst_ipv6_word3().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_dst_ipv6_word2(), resp.attr().field_dst_ipv6_word2().data_ip(), resp.attr().field_dst_ipv6_word2().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_dst_ipv6_word1(), resp.attr().field_dst_ipv6_word1().data_ip(), resp.attr().field_dst_ipv6_word1().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_dst_ipv6_word0(), resp.attr().field_dst_ipv6_word0().data_ip(), resp.attr().field_dst_ipv6_word0().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_inner_src_ipv6(), resp.attr().field_inner_src_ipv6().data_ip(), resp.attr().field_inner_src_ipv6().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip6(resp.attr().field_inner_dst_ipv6(), resp.attr().field_inner_dst_ipv6().data_ip(), resp.attr().field_inner_dst_ipv6().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: - attr_list[i].value.aclfield = convert_to_acl_field_data_mac(resp.attr().field_src_mac(), resp.attr().field_src_mac().data_mac(), resp.attr().field_src_mac().mask_mac()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: - attr_list[i].value.aclfield = convert_to_acl_field_data_mac(resp.attr().field_dst_mac(), resp.attr().field_dst_mac().data_mac(), resp.attr().field_dst_mac().mask_mac()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_src_ip(), resp.attr().field_src_ip().data_ip(), resp.attr().field_src_ip().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_dst_ip(), resp.attr().field_dst_ip().data_ip(), resp.attr().field_dst_ip().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_inner_src_ip(), resp.attr().field_inner_src_ip().data_ip(), resp.attr().field_inner_src_ip().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_inner_dst_ip(), resp.attr().field_inner_dst_ip().data_ip(), resp.attr().field_inner_dst_ip().mask_ip()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_in_port(), resp.attr().field_in_port().data_oid()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_out_port(), resp.attr().field_out_port().data_oid()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_src_port(), resp.attr().field_src_port().data_oid()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_outer_vlan_id(), resp.attr().field_outer_vlan_id().data_uint(), resp.attr().field_outer_vlan_id().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_outer_vlan_pri(), resp.attr().field_outer_vlan_pri().data_uint(), resp.attr().field_outer_vlan_pri().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_outer_vlan_cfi(), resp.attr().field_outer_vlan_cfi().data_uint(), resp.attr().field_outer_vlan_cfi().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_inner_vlan_id(), resp.attr().field_inner_vlan_id().data_uint(), resp.attr().field_inner_vlan_id().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_inner_vlan_pri(), resp.attr().field_inner_vlan_pri().data_uint(), resp.attr().field_inner_vlan_pri().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_inner_vlan_cfi(), resp.attr().field_inner_vlan_cfi().data_uint(), resp.attr().field_inner_vlan_cfi().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_l4_src_port(), resp.attr().field_l4_src_port().data_uint(), resp.attr().field_l4_src_port().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_l4_dst_port(), resp.attr().field_l4_dst_port().data_uint(), resp.attr().field_l4_dst_port().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_inner_l4_src_port(), resp.attr().field_inner_l4_src_port().data_uint(), resp.attr().field_inner_l4_src_port().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_inner_l4_dst_port(), resp.attr().field_inner_l4_dst_port().data_uint(), resp.attr().field_inner_l4_dst_port().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_ether_type(), resp.attr().field_ether_type().data_uint(), resp.attr().field_ether_type().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_inner_ether_type(), resp.attr().field_inner_ether_type().data_uint(), resp.attr().field_inner_ether_type().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_ip_protocol(), resp.attr().field_ip_protocol().data_uint(), resp.attr().field_ip_protocol().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_inner_ip_protocol(), resp.attr().field_inner_ip_protocol().data_uint(), resp.attr().field_inner_ip_protocol().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().field_ip_identification(), resp.attr().field_ip_identification().data_uint(), resp.attr().field_ip_identification().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_dscp(), resp.attr().field_dscp().data_uint(), resp.attr().field_dscp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ECN: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_ecn(), resp.attr().field_ecn().data_uint(), resp.attr().field_ecn().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_ttl(), resp.attr().field_ttl().data_uint(), resp.attr().field_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TOS: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_tos(), resp.attr().field_tos().data_uint(), resp.attr().field_tos().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_ip_flags(), resp.attr().field_ip_flags().data_uint(), resp.attr().field_ip_flags().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_tcp_flags(), resp.attr().field_tcp_flags().data_uint(), resp.attr().field_tcp_flags().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_ip_type(resp.attr().field_acl_ip_type(), resp.attr().field_acl_ip_type().data_ip_type()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_ipv6_flow_label(), resp.attr().field_ipv6_flow_label().data_uint(), resp.attr().field_ipv6_flow_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TC: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_tc(), resp.attr().field_tc().data_uint(), resp.attr().field_tc().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_icmp_type(), resp.attr().field_icmp_type().data_uint(), resp.attr().field_icmp_type().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_icmp_code(), resp.attr().field_icmp_code().data_uint(), resp.attr().field_icmp_code().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_icmpv6_type(), resp.attr().field_icmpv6_type().data_uint(), resp.attr().field_icmpv6_type().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_icmpv6_code(), resp.attr().field_icmpv6_code().data_uint(), resp.attr().field_icmpv6_code().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_tunnel_vni(), resp.attr().field_tunnel_vni().data_uint(), resp.attr().field_tunnel_vni().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_mpls_label0_label(), resp.attr().field_mpls_label0_label().data_uint(), resp.attr().field_mpls_label0_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label0_ttl(), resp.attr().field_mpls_label0_ttl().data_uint(), resp.attr().field_mpls_label0_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label0_exp(), resp.attr().field_mpls_label0_exp().data_uint(), resp.attr().field_mpls_label0_exp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_mpls_label1_label(), resp.attr().field_mpls_label1_label().data_uint(), resp.attr().field_mpls_label1_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label1_ttl(), resp.attr().field_mpls_label1_ttl().data_uint(), resp.attr().field_mpls_label1_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label1_exp(), resp.attr().field_mpls_label1_exp().data_uint(), resp.attr().field_mpls_label1_exp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_mpls_label2_label(), resp.attr().field_mpls_label2_label().data_uint(), resp.attr().field_mpls_label2_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label2_ttl(), resp.attr().field_mpls_label2_ttl().data_uint(), resp.attr().field_mpls_label2_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label2_exp(), resp.attr().field_mpls_label2_exp().data_uint(), resp.attr().field_mpls_label2_exp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_mpls_label3_label(), resp.attr().field_mpls_label3_label().data_uint(), resp.attr().field_mpls_label3_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label3_ttl(), resp.attr().field_mpls_label3_ttl().data_uint(), resp.attr().field_mpls_label3_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label3_exp(), resp.attr().field_mpls_label3_exp().data_uint(), resp.attr().field_mpls_label3_exp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_mpls_label4_label(), resp.attr().field_mpls_label4_label().data_uint(), resp.attr().field_mpls_label4_label().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label4_ttl(), resp.attr().field_mpls_label4_ttl().data_uint(), resp.attr().field_mpls_label4_ttl().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_mpls_label4_exp(), resp.attr().field_mpls_label4_exp().data_uint(), resp.attr().field_mpls_label4_exp().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_fdb_dst_user_meta(), resp.attr().field_fdb_dst_user_meta().data_uint(), resp.attr().field_fdb_dst_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_route_dst_user_meta(), resp.attr().field_route_dst_user_meta().data_uint(), resp.attr().field_route_dst_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_neighbor_dst_user_meta(), resp.attr().field_neighbor_dst_user_meta().data_uint(), resp.attr().field_neighbor_dst_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_port_user_meta(), resp.attr().field_port_user_meta().data_uint(), resp.attr().field_port_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_vlan_user_meta(), resp.attr().field_vlan_user_meta().data_uint(), resp.attr().field_vlan_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_acl_user_meta(), resp.attr().field_acl_user_meta().data_uint(), resp.attr().field_acl_user_meta().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_bth_opcode(), resp.attr().field_bth_opcode().data_uint(), resp.attr().field_bth_opcode().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_aeth_syndrome(), resp.attr().field_aeth_syndrome().data_uint(), resp.attr().field_aeth_syndrome().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().field_ipv6_next_header(), resp.attr().field_ipv6_next_header().data_uint(), resp.attr().field_ipv6_next_header().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: - attr_list[i].value.aclfield = convert_to_acl_field_data_u32(resp.attr().field_gre_key(), resp.attr().field_gre_key().data_uint(), resp.attr().field_gre_key().mask_uint()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: - attr_list[i].value.aclfield = convert_to_acl_field_data_mac(resp.attr().field_inner_src_mac(), resp.attr().field_inner_src_mac().data_mac(), resp.attr().field_inner_src_mac().mask_mac()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: - attr_list[i].value.aclfield = convert_to_acl_field_data_mac(resp.attr().field_inner_dst_mac(), resp.attr().field_inner_dst_mac().data_mac(), resp.attr().field_inner_dst_mac().mask_mac()); - break; - case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: - attr_list[i].value.aclfield = convert_to_acl_field_data(resp.attr().field_vrf_id(), resp.attr().field_vrf_id().data_oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_redirect(), resp.attr().action_redirect().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: - attr_list[i].value.aclaction = convert_to_acl_action_data_action(resp.attr().action_packet_action(), resp.attr().action_packet_action().packet_action()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_counter(), resp.attr().action_counter().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_policer(), resp.attr().action_set_policer().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_ingress_samplepacket_enable(), resp.attr().action_ingress_samplepacket_enable().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_egress_samplepacket_enable(), resp.attr().action_egress_samplepacket_enable().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_user_trap_id(), resp.attr().action_set_user_trap_id().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_dtel_int_session(), resp.attr().action_dtel_int_session().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_tam_int_object(), resp.attr().action_tam_int_object().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_isolation_group(), resp.attr().action_set_isolation_group().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_macsec_flow(), resp.attr().action_macsec_flow().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_lag_hash_id(), resp.attr().action_set_lag_hash_id().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_ecmp_hash_id(), resp.attr().action_set_ecmp_hash_id().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_vrf(), resp.attr().action_set_vrf().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_ars_monitoring(), resp.attr().action_set_ars_monitoring().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_set_ars_object(), resp.attr().action_set_ars_object().oid()); - break; - case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: - attr_list[i].value.aclaction = convert_to_acl_action_data(resp.attr().action_chain_redirect(), resp.attr().action_chain_redirect().oid()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_counter(sai_object_id_t *acl_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclCounterRequest req = convert_create_acl_counter(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclCounterResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_counter_id) { - *acl_counter_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclEntryRequest req; + lemming::dataplane::sai::RemoveAclEntryResponse resp; + grpc::ClientContext context; + req.set_oid(acl_entry_id); + + grpc::Status status = acl->RemoveAclEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_entry_attribute(sai_object_id_t acl_entry_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetAclEntryAttributeRequest req; + lemming::dataplane::sai::SetAclEntryAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(acl_entry_id); + + if (attr->id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && + attr->id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { + *(*req.mutable_user_defined_field_group_min()) + [attr->id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN] + .mutable_data_u8list() = + std::string(attr->value.aclfield.data.u8list.list, + attr->value.aclfield.data.u8list.list + + attr->value.aclfield.data.u8list.count); + *(*req.mutable_user_defined_field_group_min()) + [attr->id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN] + .mutable_mask_u8list() = + std::string(attr->value.aclfield.mask.u8list.list, + attr->value.aclfield.mask.u8list.list + + attr->value.aclfield.mask.u8list.count); + } + + switch (attr->id) { + case SAI_ACL_ENTRY_ATTR_PRIORITY: + req.set_priority(attr->value.u32); + break; + case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: + req.set_admin_state(attr->value.booldata); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: + *req.mutable_field_src_ipv6() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: + *req.mutable_field_src_ipv6_word3() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: + *req.mutable_field_src_ipv6_word2() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: + *req.mutable_field_src_ipv6_word1() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: + *req.mutable_field_src_ipv6_word0() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: + *req.mutable_field_dst_ipv6() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: + *req.mutable_field_dst_ipv6_word3() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: + *req.mutable_field_dst_ipv6_word2() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: + *req.mutable_field_dst_ipv6_word1() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: + *req.mutable_field_dst_ipv6_word0() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: + *req.mutable_field_inner_src_ipv6() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: + *req.mutable_field_inner_dst_ipv6() = convert_from_acl_field_data_ip6( + attr->value.aclfield, attr->value.aclfield.data.ip6, + attr->value.aclfield.mask.ip6); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: + *req.mutable_field_src_mac() = convert_from_acl_field_data_mac( + attr->value.aclfield, attr->value.aclfield.data.mac, + attr->value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: + *req.mutable_field_dst_mac() = convert_from_acl_field_data_mac( + attr->value.aclfield, attr->value.aclfield.data.mac, + attr->value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: + *req.mutable_field_src_ip() = convert_from_acl_field_data_ip4( + attr->value.aclfield, attr->value.aclfield.data.ip4, + attr->value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: + *req.mutable_field_dst_ip() = convert_from_acl_field_data_ip4( + attr->value.aclfield, attr->value.aclfield.data.ip4, + attr->value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: + *req.mutable_field_inner_src_ip() = convert_from_acl_field_data_ip4( + attr->value.aclfield, attr->value.aclfield.data.ip4, + attr->value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: + *req.mutable_field_inner_dst_ip() = convert_from_acl_field_data_ip4( + attr->value.aclfield, attr->value.aclfield.data.ip4, + attr->value.aclfield.mask.ip4); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: + *req.mutable_field_in_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: + *req.mutable_field_out_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: + *req.mutable_field_src_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: + *req.mutable_field_outer_vlan_id() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: + *req.mutable_field_outer_vlan_pri() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: + *req.mutable_field_outer_vlan_cfi() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: + *req.mutable_field_inner_vlan_id() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: + *req.mutable_field_inner_vlan_pri() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: + *req.mutable_field_inner_vlan_cfi() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: + *req.mutable_field_l4_src_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: + *req.mutable_field_l4_dst_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: + *req.mutable_field_inner_l4_src_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: + *req.mutable_field_inner_l4_dst_port() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: + *req.mutable_field_ether_type() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: + *req.mutable_field_inner_ether_type() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: + *req.mutable_field_ip_protocol() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: + *req.mutable_field_inner_ip_protocol() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: + *req.mutable_field_ip_identification() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u16, + attr->value.aclfield.mask.u16); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: + *req.mutable_field_dscp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ECN: + *req.mutable_field_ecn() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TTL: + *req.mutable_field_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TOS: + *req.mutable_field_tos() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: + *req.mutable_field_ip_flags() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: + *req.mutable_field_tcp_flags() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: + *req.mutable_field_acl_ip_type() = convert_from_acl_field_data_ip_type( + attr->value.aclfield, attr->value.aclfield.data.s32, + attr->value.aclfield.mask.s32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: + *req.mutable_field_ipv6_flow_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TC: + *req.mutable_field_tc() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: + *req.mutable_field_icmp_type() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: + *req.mutable_field_icmp_code() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: + *req.mutable_field_icmpv6_type() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: + *req.mutable_field_icmpv6_code() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: + *req.mutable_field_tunnel_vni() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: + *req.mutable_field_mpls_label0_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: + *req.mutable_field_mpls_label0_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: + *req.mutable_field_mpls_label0_exp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: + *req.mutable_field_mpls_label1_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: + *req.mutable_field_mpls_label1_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: + *req.mutable_field_mpls_label1_exp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: + *req.mutable_field_mpls_label2_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: + *req.mutable_field_mpls_label2_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: + *req.mutable_field_mpls_label2_exp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: + *req.mutable_field_mpls_label3_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: + *req.mutable_field_mpls_label3_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: + *req.mutable_field_mpls_label3_exp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: + *req.mutable_field_mpls_label4_label() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: + *req.mutable_field_mpls_label4_ttl() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: + *req.mutable_field_mpls_label4_exp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: + *req.mutable_field_fdb_dst_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: + *req.mutable_field_route_dst_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: + *req.mutable_field_neighbor_dst_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: + *req.mutable_field_port_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: + *req.mutable_field_vlan_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: + *req.mutable_field_acl_user_meta() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: + *req.mutable_field_bth_opcode() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: + *req.mutable_field_aeth_syndrome() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: + *req.mutable_field_ipv6_next_header() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: + *req.mutable_field_gre_key() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u32, + attr->value.aclfield.mask.u32); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: + *req.mutable_field_inner_src_mac() = convert_from_acl_field_data_mac( + attr->value.aclfield, attr->value.aclfield.data.mac, + attr->value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: + *req.mutable_field_inner_dst_mac() = convert_from_acl_field_data_mac( + attr->value.aclfield, attr->value.aclfield.data.mac, + attr->value.aclfield.mask.mac); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: + *req.mutable_field_vrf_id() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: + *req.mutable_action_redirect() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: + *req.mutable_action_packet_action() = convert_from_acl_action_data_action( + attr->value.aclaction, attr->value.aclaction.parameter.s32); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: + *req.mutable_action_counter() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: + *req.mutable_action_set_policer() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: + *req.mutable_action_ingress_samplepacket_enable() = + convert_from_acl_action_data(attr->value.aclaction, + attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: + *req.mutable_action_egress_samplepacket_enable() = + convert_from_acl_action_data(attr->value.aclaction, + attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: + *req.mutable_action_set_user_trap_id() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: + *req.mutable_action_dtel_int_session() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: + *req.mutable_action_tam_int_object() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: + *req.mutable_action_set_isolation_group() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: + *req.mutable_action_macsec_flow() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: + *req.mutable_action_set_lag_hash_id() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: + *req.mutable_action_set_ecmp_hash_id() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: + *req.mutable_action_set_vrf() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: + *req.mutable_action_set_ars_monitoring() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: + *req.mutable_action_set_ars_object() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: + *req.mutable_action_chain_redirect() = convert_from_acl_action_data( + attr->value.aclaction, attr->value.aclaction.parameter.oid); + break; + } + + grpc::Status status = acl->SetAclEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_entry_attribute(sai_object_id_t acl_entry_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclEntryAttributeRequest req; + lemming::dataplane::sai::GetAclEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_acl_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = acl->GetAclEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + if (attr_list[i].id >= SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN && + attr_list[i].id < SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MAX) { + auto acl_attr = resp.attr().user_defined_field_group_min().at( + attr_list[i].id - SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN); + memcpy(attr_list[i].value.aclfield.data.u8list.list, + acl_attr.data_u8list().data(), acl_attr.data_u8list().size()); + memcpy(attr_list[i].value.aclfield.mask.u8list.list, + acl_attr.mask_u8list().data(), acl_attr.mask_u8list().size()); + attr_list[i].value.aclfield.data.u8list.count = + acl_attr.data_u8list().size(); + attr_list[i].value.aclfield.mask.u8list.count = + acl_attr.mask_u8list().size(); + } + + switch (attr_list[i].id) { + case SAI_ACL_ENTRY_ATTR_TABLE_ID: + attr_list[i].value.oid = resp.attr().table_id(); + break; + case SAI_ACL_ENTRY_ATTR_PRIORITY: + attr_list[i].value.u32 = resp.attr().priority(); + break; + case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: + attr_list[i].value.booldata = resp.attr().admin_state(); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_src_ipv6(), + resp.attr().field_src_ipv6().data_ip(), + resp.attr().field_src_ipv6().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_src_ipv6_word3(), + resp.attr().field_src_ipv6_word3().data_ip(), + resp.attr().field_src_ipv6_word3().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_src_ipv6_word2(), + resp.attr().field_src_ipv6_word2().data_ip(), + resp.attr().field_src_ipv6_word2().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_src_ipv6_word1(), + resp.attr().field_src_ipv6_word1().data_ip(), + resp.attr().field_src_ipv6_word1().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_src_ipv6_word0(), + resp.attr().field_src_ipv6_word0().data_ip(), + resp.attr().field_src_ipv6_word0().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_dst_ipv6(), + resp.attr().field_dst_ipv6().data_ip(), + resp.attr().field_dst_ipv6().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_dst_ipv6_word3(), + resp.attr().field_dst_ipv6_word3().data_ip(), + resp.attr().field_dst_ipv6_word3().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_dst_ipv6_word2(), + resp.attr().field_dst_ipv6_word2().data_ip(), + resp.attr().field_dst_ipv6_word2().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_dst_ipv6_word1(), + resp.attr().field_dst_ipv6_word1().data_ip(), + resp.attr().field_dst_ipv6_word1().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_dst_ipv6_word0(), + resp.attr().field_dst_ipv6_word0().data_ip(), + resp.attr().field_dst_ipv6_word0().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_inner_src_ipv6(), + resp.attr().field_inner_src_ipv6().data_ip(), + resp.attr().field_inner_src_ipv6().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip6( + resp.attr().field_inner_dst_ipv6(), + resp.attr().field_inner_dst_ipv6().data_ip(), + resp.attr().field_inner_dst_ipv6().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: + attr_list[i].value.aclfield = convert_to_acl_field_data_mac( + resp.attr().field_src_mac(), resp.attr().field_src_mac().data_mac(), + resp.attr().field_src_mac().mask_mac()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: + attr_list[i].value.aclfield = convert_to_acl_field_data_mac( + resp.attr().field_dst_mac(), resp.attr().field_dst_mac().data_mac(), + resp.attr().field_dst_mac().mask_mac()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: + attr_list[i].value.aclfield = convert_to_acl_field_data( + resp.attr().field_src_ip(), resp.attr().field_src_ip().data_ip(), + resp.attr().field_src_ip().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: + attr_list[i].value.aclfield = convert_to_acl_field_data( + resp.attr().field_dst_ip(), resp.attr().field_dst_ip().data_ip(), + resp.attr().field_dst_ip().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: + attr_list[i].value.aclfield = convert_to_acl_field_data( + resp.attr().field_inner_src_ip(), + resp.attr().field_inner_src_ip().data_ip(), + resp.attr().field_inner_src_ip().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: + attr_list[i].value.aclfield = convert_to_acl_field_data( + resp.attr().field_inner_dst_ip(), + resp.attr().field_inner_dst_ip().data_ip(), + resp.attr().field_inner_dst_ip().mask_ip()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: + attr_list[i].value.aclfield = + convert_to_acl_field_data(resp.attr().field_in_port(), + resp.attr().field_in_port().data_oid()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: + attr_list[i].value.aclfield = + convert_to_acl_field_data(resp.attr().field_out_port(), + resp.attr().field_out_port().data_oid()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: + attr_list[i].value.aclfield = + convert_to_acl_field_data(resp.attr().field_src_port(), + resp.attr().field_src_port().data_oid()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_outer_vlan_id(), + resp.attr().field_outer_vlan_id().data_uint(), + resp.attr().field_outer_vlan_id().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_outer_vlan_pri(), + resp.attr().field_outer_vlan_pri().data_uint(), + resp.attr().field_outer_vlan_pri().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_outer_vlan_cfi(), + resp.attr().field_outer_vlan_cfi().data_uint(), + resp.attr().field_outer_vlan_cfi().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_inner_vlan_id(), + resp.attr().field_inner_vlan_id().data_uint(), + resp.attr().field_inner_vlan_id().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_inner_vlan_pri(), + resp.attr().field_inner_vlan_pri().data_uint(), + resp.attr().field_inner_vlan_pri().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_inner_vlan_cfi(), + resp.attr().field_inner_vlan_cfi().data_uint(), + resp.attr().field_inner_vlan_cfi().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_l4_src_port(), + resp.attr().field_l4_src_port().data_uint(), + resp.attr().field_l4_src_port().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_l4_dst_port(), + resp.attr().field_l4_dst_port().data_uint(), + resp.attr().field_l4_dst_port().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_inner_l4_src_port(), + resp.attr().field_inner_l4_src_port().data_uint(), + resp.attr().field_inner_l4_src_port().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_inner_l4_dst_port(), + resp.attr().field_inner_l4_dst_port().data_uint(), + resp.attr().field_inner_l4_dst_port().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_ether_type(), + resp.attr().field_ether_type().data_uint(), + resp.attr().field_ether_type().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_inner_ether_type(), + resp.attr().field_inner_ether_type().data_uint(), + resp.attr().field_inner_ether_type().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_ip_protocol(), + resp.attr().field_ip_protocol().data_uint(), + resp.attr().field_ip_protocol().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_inner_ip_protocol(), + resp.attr().field_inner_ip_protocol().data_uint(), + resp.attr().field_inner_ip_protocol().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().field_ip_identification(), + resp.attr().field_ip_identification().data_uint(), + resp.attr().field_ip_identification().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_dscp(), resp.attr().field_dscp().data_uint(), + resp.attr().field_dscp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ECN: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_ecn(), resp.attr().field_ecn().data_uint(), + resp.attr().field_ecn().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_ttl(), resp.attr().field_ttl().data_uint(), + resp.attr().field_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TOS: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_tos(), resp.attr().field_tos().data_uint(), + resp.attr().field_tos().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_ip_flags(), + resp.attr().field_ip_flags().data_uint(), + resp.attr().field_ip_flags().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_tcp_flags(), + resp.attr().field_tcp_flags().data_uint(), + resp.attr().field_tcp_flags().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_ip_type( + resp.attr().field_acl_ip_type(), + resp.attr().field_acl_ip_type().data_ip_type()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_ipv6_flow_label(), + resp.attr().field_ipv6_flow_label().data_uint(), + resp.attr().field_ipv6_flow_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TC: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_tc(), resp.attr().field_tc().data_uint(), + resp.attr().field_tc().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_icmp_type(), + resp.attr().field_icmp_type().data_uint(), + resp.attr().field_icmp_type().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_icmp_code(), + resp.attr().field_icmp_code().data_uint(), + resp.attr().field_icmp_code().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_icmpv6_type(), + resp.attr().field_icmpv6_type().data_uint(), + resp.attr().field_icmpv6_type().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_icmpv6_code(), + resp.attr().field_icmpv6_code().data_uint(), + resp.attr().field_icmpv6_code().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_tunnel_vni(), + resp.attr().field_tunnel_vni().data_uint(), + resp.attr().field_tunnel_vni().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_mpls_label0_label(), + resp.attr().field_mpls_label0_label().data_uint(), + resp.attr().field_mpls_label0_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label0_ttl(), + resp.attr().field_mpls_label0_ttl().data_uint(), + resp.attr().field_mpls_label0_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label0_exp(), + resp.attr().field_mpls_label0_exp().data_uint(), + resp.attr().field_mpls_label0_exp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_mpls_label1_label(), + resp.attr().field_mpls_label1_label().data_uint(), + resp.attr().field_mpls_label1_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label1_ttl(), + resp.attr().field_mpls_label1_ttl().data_uint(), + resp.attr().field_mpls_label1_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label1_exp(), + resp.attr().field_mpls_label1_exp().data_uint(), + resp.attr().field_mpls_label1_exp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_mpls_label2_label(), + resp.attr().field_mpls_label2_label().data_uint(), + resp.attr().field_mpls_label2_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label2_ttl(), + resp.attr().field_mpls_label2_ttl().data_uint(), + resp.attr().field_mpls_label2_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label2_exp(), + resp.attr().field_mpls_label2_exp().data_uint(), + resp.attr().field_mpls_label2_exp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_mpls_label3_label(), + resp.attr().field_mpls_label3_label().data_uint(), + resp.attr().field_mpls_label3_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label3_ttl(), + resp.attr().field_mpls_label3_ttl().data_uint(), + resp.attr().field_mpls_label3_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label3_exp(), + resp.attr().field_mpls_label3_exp().data_uint(), + resp.attr().field_mpls_label3_exp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_mpls_label4_label(), + resp.attr().field_mpls_label4_label().data_uint(), + resp.attr().field_mpls_label4_label().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label4_ttl(), + resp.attr().field_mpls_label4_ttl().data_uint(), + resp.attr().field_mpls_label4_ttl().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_mpls_label4_exp(), + resp.attr().field_mpls_label4_exp().data_uint(), + resp.attr().field_mpls_label4_exp().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_fdb_dst_user_meta(), + resp.attr().field_fdb_dst_user_meta().data_uint(), + resp.attr().field_fdb_dst_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_route_dst_user_meta(), + resp.attr().field_route_dst_user_meta().data_uint(), + resp.attr().field_route_dst_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_neighbor_dst_user_meta(), + resp.attr().field_neighbor_dst_user_meta().data_uint(), + resp.attr().field_neighbor_dst_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_port_user_meta(), + resp.attr().field_port_user_meta().data_uint(), + resp.attr().field_port_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_vlan_user_meta(), + resp.attr().field_vlan_user_meta().data_uint(), + resp.attr().field_vlan_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_acl_user_meta(), + resp.attr().field_acl_user_meta().data_uint(), + resp.attr().field_acl_user_meta().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_bth_opcode(), + resp.attr().field_bth_opcode().data_uint(), + resp.attr().field_bth_opcode().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_aeth_syndrome(), + resp.attr().field_aeth_syndrome().data_uint(), + resp.attr().field_aeth_syndrome().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().field_ipv6_next_header(), + resp.attr().field_ipv6_next_header().data_uint(), + resp.attr().field_ipv6_next_header().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: + attr_list[i].value.aclfield = convert_to_acl_field_data_u32( + resp.attr().field_gre_key(), + resp.attr().field_gre_key().data_uint(), + resp.attr().field_gre_key().mask_uint()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: + attr_list[i].value.aclfield = convert_to_acl_field_data_mac( + resp.attr().field_inner_src_mac(), + resp.attr().field_inner_src_mac().data_mac(), + resp.attr().field_inner_src_mac().mask_mac()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: + attr_list[i].value.aclfield = convert_to_acl_field_data_mac( + resp.attr().field_inner_dst_mac(), + resp.attr().field_inner_dst_mac().data_mac(), + resp.attr().field_inner_dst_mac().mask_mac()); + break; + case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: + attr_list[i].value.aclfield = convert_to_acl_field_data( + resp.attr().field_vrf_id(), resp.attr().field_vrf_id().data_oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_redirect(), resp.attr().action_redirect().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: + attr_list[i].value.aclaction = convert_to_acl_action_data_action( + resp.attr().action_packet_action(), + resp.attr().action_packet_action().packet_action()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_counter(), resp.attr().action_counter().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: + attr_list[i].value.aclaction = + convert_to_acl_action_data(resp.attr().action_set_policer(), + resp.attr().action_set_policer().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_ingress_samplepacket_enable(), + resp.attr().action_ingress_samplepacket_enable().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_egress_samplepacket_enable(), + resp.attr().action_egress_samplepacket_enable().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_user_trap_id(), + resp.attr().action_set_user_trap_id().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_dtel_int_session(), + resp.attr().action_dtel_int_session().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_tam_int_object(), + resp.attr().action_tam_int_object().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_isolation_group(), + resp.attr().action_set_isolation_group().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: + attr_list[i].value.aclaction = + convert_to_acl_action_data(resp.attr().action_macsec_flow(), + resp.attr().action_macsec_flow().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_lag_hash_id(), + resp.attr().action_set_lag_hash_id().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_ecmp_hash_id(), + resp.attr().action_set_ecmp_hash_id().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_vrf(), resp.attr().action_set_vrf().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_ars_monitoring(), + resp.attr().action_set_ars_monitoring().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_set_ars_object(), + resp.attr().action_set_ars_object().oid()); + break; + case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: + attr_list[i].value.aclaction = convert_to_acl_action_data( + resp.attr().action_chain_redirect(), + resp.attr().action_chain_redirect().oid()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_counter(sai_object_id_t* acl_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclCounterRequest req = + convert_create_acl_counter(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclCounterResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_counter_id) { + *acl_counter_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_acl_counter(sai_object_id_t acl_counter_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclCounterRequest req; - lemming::dataplane::sai::RemoveAclCounterResponse resp; - grpc::ClientContext context; - req.set_oid(acl_counter_id); - - grpc::Status status = acl->RemoveAclCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_counter_attribute(sai_object_id_t acl_counter_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetAclCounterAttributeRequest req; - lemming::dataplane::sai::SetAclCounterAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(acl_counter_id); - - - - -switch (attr->id) { - - case SAI_ACL_COUNTER_ATTR_PACKETS: - req.set_packets(attr->value.u64); - break; - case SAI_ACL_COUNTER_ATTR_BYTES: - req.set_bytes(attr->value.u64); - break; - case SAI_ACL_COUNTER_ATTR_LABEL: - req.set_label(attr->value.chardata); - break; -} - - grpc::Status status = acl->SetAclCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_counter_attribute(sai_object_id_t acl_counter_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclCounterAttributeRequest req; - lemming::dataplane::sai::GetAclCounterAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_counter_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_counter_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_COUNTER_ATTR_TABLE_ID: - attr_list[i].value.oid = resp.attr().table_id(); - break; - case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: - attr_list[i].value.booldata = resp.attr().enable_packet_count(); - break; - case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: - attr_list[i].value.booldata = resp.attr().enable_byte_count(); - break; - case SAI_ACL_COUNTER_ATTR_PACKETS: - attr_list[i].value.u64 = resp.attr().packets(); - break; - case SAI_ACL_COUNTER_ATTR_BYTES: - attr_list[i].value.u64 = resp.attr().bytes(); - break; - case SAI_ACL_COUNTER_ATTR_LABEL: - strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_range(sai_object_id_t *acl_range_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclRangeRequest req = convert_create_acl_range(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclRangeResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclRange(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_range_id) { - *acl_range_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclCounterRequest req; + lemming::dataplane::sai::RemoveAclCounterResponse resp; + grpc::ClientContext context; + req.set_oid(acl_counter_id); + + grpc::Status status = acl->RemoveAclCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_counter_attribute(sai_object_id_t acl_counter_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetAclCounterAttributeRequest req; + lemming::dataplane::sai::SetAclCounterAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(acl_counter_id); + + switch (attr->id) { + case SAI_ACL_COUNTER_ATTR_PACKETS: + req.set_packets(attr->value.u64); + break; + case SAI_ACL_COUNTER_ATTR_BYTES: + req.set_bytes(attr->value.u64); + break; + case SAI_ACL_COUNTER_ATTR_LABEL: + req.set_label(attr->value.chardata); + break; + } + + grpc::Status status = acl->SetAclCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_counter_attribute(sai_object_id_t acl_counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclCounterAttributeRequest req; + lemming::dataplane::sai::GetAclCounterAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_counter_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_acl_counter_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = acl->GetAclCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_COUNTER_ATTR_TABLE_ID: + attr_list[i].value.oid = resp.attr().table_id(); + break; + case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: + attr_list[i].value.booldata = resp.attr().enable_packet_count(); + break; + case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: + attr_list[i].value.booldata = resp.attr().enable_byte_count(); + break; + case SAI_ACL_COUNTER_ATTR_PACKETS: + attr_list[i].value.u64 = resp.attr().packets(); + break; + case SAI_ACL_COUNTER_ATTR_BYTES: + attr_list[i].value.u64 = resp.attr().bytes(); + break; + case SAI_ACL_COUNTER_ATTR_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_range(sai_object_id_t* acl_range_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclRangeRequest req = + convert_create_acl_range(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclRangeResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclRange(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_range_id) { + *acl_range_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_acl_range(sai_object_id_t acl_range_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclRangeRequest req; - lemming::dataplane::sai::RemoveAclRangeResponse resp; - grpc::ClientContext context; - req.set_oid(acl_range_id); - - grpc::Status status = acl->RemoveAclRange(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_range_attribute(sai_object_id_t acl_range_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_range_attribute(sai_object_id_t acl_range_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclRangeAttributeRequest req; - lemming::dataplane::sai::GetAclRangeAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_range_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_range_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclRangeAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_RANGE_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_acl_range_type_t_to_sai(resp.attr().type()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_table_group(sai_object_id_t *acl_table_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclTableGroupRequest req = convert_create_acl_table_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclTableGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclTableGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_table_group_id) { - *acl_table_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclRangeRequest req; + lemming::dataplane::sai::RemoveAclRangeResponse resp; + grpc::ClientContext context; + req.set_oid(acl_range_id); + + grpc::Status status = acl->RemoveAclRange(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_range_attribute(sai_object_id_t acl_range_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_range_attribute(sai_object_id_t acl_range_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclRangeAttributeRequest req; + lemming::dataplane::sai::GetAclRangeAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_range_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_acl_range_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = acl->GetAclRangeAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_RANGE_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_acl_range_type_t_to_sai(resp.attr().type()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_table_group(sai_object_id_t* acl_table_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclTableGroupRequest req = + convert_create_acl_table_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclTableGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclTableGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_table_group_id) { + *acl_table_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_acl_table_group(sai_object_id_t acl_table_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclTableGroupRequest req; - lemming::dataplane::sai::RemoveAclTableGroupResponse resp; - grpc::ClientContext context; - req.set_oid(acl_table_group_id); - - grpc::Status status = acl->RemoveAclTableGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclTableGroupRequest req; + lemming::dataplane::sai::RemoveAclTableGroupResponse resp; + grpc::ClientContext context; + req.set_oid(acl_table_group_id); + + grpc::Status status = acl->RemoveAclTableGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_table_group_attribute(sai_object_id_t acl_table_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_table_group_attribute(sai_object_id_t acl_table_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclTableGroupAttributeRequest req; + lemming::dataplane::sai::GetAclTableGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_table_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_acl_table_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = acl->GetAclTableGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: + attr_list[i].value.s32 = + convert_sai_acl_stage_t_to_sai(resp.attr().acl_stage()); + break; + case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: + convert_list_sai_acl_bind_point_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().acl_bind_point_type_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_ACL_TABLE_GROUP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_acl_table_group_type_t_to_sai(resp.attr().type()); + break; + case SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().member_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().chain_group_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_table_group_member( + sai_object_id_t* acl_table_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclTableGroupMemberRequest req = + convert_create_acl_table_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclTableGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclTableGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_table_group_member_id) { + *acl_table_group_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_acl_table_group_member( + sai_object_id_t acl_table_group_member_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclTableGroupMemberRequest req; + lemming::dataplane::sai::RemoveAclTableGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(acl_table_group_member_id); + + grpc::Status status = acl->RemoveAclTableGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_table_group_member_attribute( + sai_object_id_t acl_table_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetAclTableGroupMemberAttributeRequest req; + lemming::dataplane::sai::SetAclTableGroupMemberAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(acl_table_group_member_id); + + switch (attr->id) { + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: + req.set_acl_table_chain_group_id(attr->value.oid); + break; + } + + grpc::Status status = + acl->SetAclTableGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_table_group_member_attribute( + sai_object_id_t acl_table_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclTableGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetAclTableGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_table_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_acl_table_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + acl->GetAclTableGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: + attr_list[i].value.oid = resp.attr().acl_table_group_id(); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: + attr_list[i].value.oid = resp.attr().acl_table_id(); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: + attr_list[i].value.u32 = resp.attr().priority(); + break; + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: + attr_list[i].value.oid = resp.attr().acl_table_chain_group_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_acl_table_chain_group( + sai_object_id_t* acl_table_chain_group_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateAclTableChainGroupRequest req = + convert_create_acl_table_chain_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateAclTableChainGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = acl->CreateAclTableChainGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (acl_table_chain_group_id) { + *acl_table_chain_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_acl_table_chain_group( + sai_object_id_t acl_table_chain_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveAclTableChainGroupRequest req; + lemming::dataplane::sai::RemoveAclTableChainGroupResponse resp; + grpc::ClientContext context; + req.set_oid(acl_table_chain_group_id); + + grpc::Status status = acl->RemoveAclTableChainGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_acl_table_chain_group_attribute( + sai_object_id_t acl_table_chain_group_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_acl_table_chain_group_attribute( + sai_object_id_t acl_table_chain_group_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetAclTableChainGroupAttributeRequest req; + lemming::dataplane::sai::GetAclTableChainGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(acl_table_chain_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_acl_table_chain_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + acl->GetAclTableChainGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_acl_table_chain_group_type_t_to_sai(resp.attr().type()); + break; + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: + attr_list[i].value.s32 = + convert_sai_acl_table_chain_group_stage_t_to_sai( + resp.attr().stage()); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_set_acl_table_group_attribute(sai_object_id_t acl_table_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_table_group_attribute(sai_object_id_t acl_table_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclTableGroupAttributeRequest req; - lemming::dataplane::sai::GetAclTableGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_table_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_table_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclTableGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: - attr_list[i].value.s32 = convert_sai_acl_stage_t_to_sai(resp.attr().acl_stage()); - break; - case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: - convert_list_sai_acl_bind_point_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().acl_bind_point_type_list(), &attr_list[i].value.s32list.count); - break; - case SAI_ACL_TABLE_GROUP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_acl_table_group_type_t_to_sai(resp.attr().type()); - break; - case SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().member_list(), &attr_list[i].value.objlist.count); - break; - case SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().chain_group_list(), &attr_list[i].value.objlist.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_table_group_member(sai_object_id_t *acl_table_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclTableGroupMemberRequest req = convert_create_acl_table_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclTableGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclTableGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_table_group_member_id) { - *acl_table_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_acl_table_group_member(sai_object_id_t acl_table_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclTableGroupMemberRequest req; - lemming::dataplane::sai::RemoveAclTableGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(acl_table_group_member_id); - - grpc::Status status = acl->RemoveAclTableGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_table_group_member_attribute(sai_object_id_t acl_table_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetAclTableGroupMemberAttributeRequest req; - lemming::dataplane::sai::SetAclTableGroupMemberAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(acl_table_group_member_id); - - - - -switch (attr->id) { - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: - req.set_acl_table_chain_group_id(attr->value.oid); - break; -} - - grpc::Status status = acl->SetAclTableGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_table_group_member_attribute(sai_object_id_t acl_table_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclTableGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetAclTableGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_table_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_table_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclTableGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: - attr_list[i].value.oid = resp.attr().acl_table_group_id(); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: - attr_list[i].value.oid = resp.attr().acl_table_id(); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: - attr_list[i].value.u32 = resp.attr().priority(); - break; - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: - attr_list[i].value.oid = resp.attr().acl_table_chain_group_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_acl_table_chain_group(sai_object_id_t *acl_table_chain_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateAclTableChainGroupRequest req = convert_create_acl_table_chain_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateAclTableChainGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = acl->CreateAclTableChainGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (acl_table_chain_group_id) { - *acl_table_chain_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_acl_table_chain_group(sai_object_id_t acl_table_chain_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveAclTableChainGroupRequest req; - lemming::dataplane::sai::RemoveAclTableChainGroupResponse resp; - grpc::ClientContext context; - req.set_oid(acl_table_chain_group_id); - - grpc::Status status = acl->RemoveAclTableChainGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_acl_table_chain_group_attribute(sai_object_id_t acl_table_chain_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_acl_table_chain_group_attribute(sai_object_id_t acl_table_chain_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetAclTableChainGroupAttributeRequest req; - lemming::dataplane::sai::GetAclTableChainGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(acl_table_chain_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_acl_table_chain_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = acl->GetAclTableChainGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_acl_table_chain_group_type_t_to_sai(resp.attr().type()); - break; - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: - attr_list[i].value.s32 = convert_sai_acl_table_chain_group_stage_t_to_sai(resp.attr().stage()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/acl.h b/dataplane/standalone/sai/acl.h index 6be12fdbd..341c1ca16 100644 --- a/dataplane/standalone/sai/acl.h +++ b/dataplane/standalone/sai/acl.h @@ -25,62 +25,99 @@ extern "C" { extern const sai_acl_api_t l_acl; - -sai_status_t l_create_acl_table(sai_object_id_t *acl_table_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_acl_table(sai_object_id_t* acl_table_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_acl_table(sai_object_id_t acl_table_id); -sai_status_t l_set_acl_table_attribute(sai_object_id_t acl_table_id, const sai_attribute_t *attr); +sai_status_t l_set_acl_table_attribute(sai_object_id_t acl_table_id, + const sai_attribute_t* attr); -sai_status_t l_get_acl_table_attribute(sai_object_id_t acl_table_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_acl_table_attribute(sai_object_id_t acl_table_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_acl_entry(sai_object_id_t *acl_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_acl_entry(sai_object_id_t* acl_entry_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_acl_entry(sai_object_id_t acl_entry_id); -sai_status_t l_set_acl_entry_attribute(sai_object_id_t acl_entry_id, const sai_attribute_t *attr); +sai_status_t l_set_acl_entry_attribute(sai_object_id_t acl_entry_id, + const sai_attribute_t* attr); -sai_status_t l_get_acl_entry_attribute(sai_object_id_t acl_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_acl_entry_attribute(sai_object_id_t acl_entry_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_acl_counter(sai_object_id_t *acl_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_acl_counter(sai_object_id_t* acl_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_acl_counter(sai_object_id_t acl_counter_id); -sai_status_t l_set_acl_counter_attribute(sai_object_id_t acl_counter_id, const sai_attribute_t *attr); +sai_status_t l_set_acl_counter_attribute(sai_object_id_t acl_counter_id, + const sai_attribute_t* attr); -sai_status_t l_get_acl_counter_attribute(sai_object_id_t acl_counter_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_acl_counter_attribute(sai_object_id_t acl_counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_acl_range(sai_object_id_t *acl_range_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_acl_range(sai_object_id_t* acl_range_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_acl_range(sai_object_id_t acl_range_id); -sai_status_t l_set_acl_range_attribute(sai_object_id_t acl_range_id, const sai_attribute_t *attr); +sai_status_t l_set_acl_range_attribute(sai_object_id_t acl_range_id, + const sai_attribute_t* attr); -sai_status_t l_get_acl_range_attribute(sai_object_id_t acl_range_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_acl_range_attribute(sai_object_id_t acl_range_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_acl_table_group(sai_object_id_t *acl_table_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_acl_table_group(sai_object_id_t* acl_table_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_acl_table_group(sai_object_id_t acl_table_group_id); -sai_status_t l_set_acl_table_group_attribute(sai_object_id_t acl_table_group_id, const sai_attribute_t *attr); - -sai_status_t l_get_acl_table_group_attribute(sai_object_id_t acl_table_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_acl_table_group_attribute(sai_object_id_t acl_table_group_id, + const sai_attribute_t* attr); -sai_status_t l_create_acl_table_group_member(sai_object_id_t *acl_table_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_acl_table_group_attribute(sai_object_id_t acl_table_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_acl_table_group_member(sai_object_id_t acl_table_group_member_id); +sai_status_t l_create_acl_table_group_member( + sai_object_id_t* acl_table_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_acl_table_group_member_attribute(sai_object_id_t acl_table_group_member_id, const sai_attribute_t *attr); +sai_status_t l_remove_acl_table_group_member( + sai_object_id_t acl_table_group_member_id); -sai_status_t l_get_acl_table_group_member_attribute(sai_object_id_t acl_table_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_acl_table_group_member_attribute( + sai_object_id_t acl_table_group_member_id, const sai_attribute_t* attr); -sai_status_t l_create_acl_table_chain_group(sai_object_id_t *acl_table_chain_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_acl_table_group_member_attribute( + sai_object_id_t acl_table_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_acl_table_chain_group(sai_object_id_t acl_table_chain_group_id); +sai_status_t l_create_acl_table_chain_group( + sai_object_id_t* acl_table_chain_group_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_acl_table_chain_group_attribute(sai_object_id_t acl_table_chain_group_id, const sai_attribute_t *attr); +sai_status_t l_remove_acl_table_chain_group( + sai_object_id_t acl_table_chain_group_id); -sai_status_t l_get_acl_table_chain_group_attribute(sai_object_id_t acl_table_chain_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_acl_table_chain_group_attribute( + sai_object_id_t acl_table_chain_group_id, const sai_attribute_t* attr); +sai_status_t l_get_acl_table_chain_group_attribute( + sai_object_id_t acl_table_chain_group_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_ACL_H_ diff --git a/dataplane/standalone/sai/ars.cc b/dataplane/standalone/sai/ars.cc index 6e2a40467..33b0510c0 100644 --- a/dataplane/standalone/sai/ars.cc +++ b/dataplane/standalone/sai/ars.cc @@ -13,17 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/ars.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/ars.pb.h" -#include - -const sai_ars_api_t l_ars = { -}; - - - +#include +#include "dataplane/proto/sai/ars.pb.h" +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_ars_api_t l_ars = {}; diff --git a/dataplane/standalone/sai/ars.h b/dataplane/standalone/sai/ars.h index f14bac257..d5728d6c7 100644 --- a/dataplane/standalone/sai/ars.h +++ b/dataplane/standalone/sai/ars.h @@ -25,10 +25,4 @@ extern "C" { extern const sai_ars_api_t l_ars; - - - - - - #endif // DATAPLANE_STANDALONE_SAI_ARS_H_ diff --git a/dataplane/standalone/sai/ars_profile.cc b/dataplane/standalone/sai/ars_profile.cc index a8a9f7f39..da0e21f98 100644 --- a/dataplane/standalone/sai/ars_profile.cc +++ b/dataplane/standalone/sai/ars_profile.cc @@ -13,17 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/ars_profile.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/ars_profile.pb.h" -#include - -const sai_ars_profile_api_t l_ars_profile = { -}; - - - +#include +#include "dataplane/proto/sai/ars_profile.pb.h" +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_ars_profile_api_t l_ars_profile = {}; diff --git a/dataplane/standalone/sai/ars_profile.h b/dataplane/standalone/sai/ars_profile.h index 712cda169..23b057821 100644 --- a/dataplane/standalone/sai/ars_profile.h +++ b/dataplane/standalone/sai/ars_profile.h @@ -25,10 +25,4 @@ extern "C" { extern const sai_ars_profile_api_t l_ars_profile; - - - - - - #endif // DATAPLANE_STANDALONE_SAI_ARS_PROFILE_H_ diff --git a/dataplane/standalone/sai/bfd.cc b/dataplane/standalone/sai/bfd.cc index fea8f31b3..e011dc091 100644 --- a/dataplane/standalone/sai/bfd.cc +++ b/dataplane/standalone/sai/bfd.cc @@ -13,462 +13,517 @@ // limitations under the License. #include "dataplane/standalone/sai/bfd.h" + +#include + +#include "dataplane/proto/sai/bfd.pb.h" +#include "dataplane/proto/sai/common.pb.h" #include "dataplane/standalone/sai/common.h" #include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/bfd.pb.h" -#include const sai_bfd_api_t l_bfd = { - .create_bfd_session = l_create_bfd_session, - .remove_bfd_session = l_remove_bfd_session, - .set_bfd_session_attribute = l_set_bfd_session_attribute, - .get_bfd_session_attribute = l_get_bfd_session_attribute, - .get_bfd_session_stats = l_get_bfd_session_stats, - .get_bfd_session_stats_ext = l_get_bfd_session_stats_ext, - .clear_bfd_session_stats = l_clear_bfd_session_stats, + .create_bfd_session = l_create_bfd_session, + .remove_bfd_session = l_remove_bfd_session, + .set_bfd_session_attribute = l_set_bfd_session_attribute, + .get_bfd_session_attribute = l_get_bfd_session_attribute, + .get_bfd_session_stats = l_get_bfd_session_stats, + .get_bfd_session_stats_ext = l_get_bfd_session_stats_ext, + .clear_bfd_session_stats = l_clear_bfd_session_stats, }; +lemming::dataplane::sai::CreateBfdSessionRequest convert_create_bfd_session( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateBfdSessionRequest msg; -lemming::dataplane::sai::CreateBfdSessionRequest convert_create_bfd_session(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateBfdSessionRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BFD_SESSION_ATTR_TYPE: - msg.set_type(convert_sai_bfd_session_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: - msg.set_hw_lookup_valid(attr_list[i].value.booldata); - break; - case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: - msg.set_virtual_router(attr_list[i].value.oid); - break; - case SAI_BFD_SESSION_ATTR_PORT: - msg.set_port(attr_list[i].value.oid); - break; - case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: - msg.set_local_discriminator(attr_list[i].value.u32); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: - msg.set_remote_discriminator(attr_list[i].value.u32); - break; - case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: - msg.set_udp_src_port(attr_list[i].value.u32); - break; - case SAI_BFD_SESSION_ATTR_TC: - msg.set_tc(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_VLAN_TPID: - msg.set_vlan_tpid(attr_list[i].value.u16); - break; - case SAI_BFD_SESSION_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.u16); - break; - case SAI_BFD_SESSION_ATTR_VLAN_PRI: - msg.set_vlan_pri(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_VLAN_CFI: - msg.set_vlan_cfi(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: - msg.set_vlan_header_valid(attr_list[i].value.booldata); - break; - case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: - msg.set_bfd_encapsulation_type(convert_sai_bfd_encapsulation_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: - msg.set_iphdr_version(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_TOS: - msg.set_tos(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_TTL: - msg.set_ttl(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: - msg.set_src_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: - msg.set_dst_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: - msg.set_tunnel_tos(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: - msg.set_tunnel_ttl(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: - msg.set_tunnel_src_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: - msg.set_tunnel_dst_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: - msg.set_src_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: - msg.set_dst_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: - msg.set_echo_enable(attr_list[i].value.booldata); - break; - case SAI_BFD_SESSION_ATTR_MULTIHOP: - msg.set_multihop(attr_list[i].value.booldata); - break; - case SAI_BFD_SESSION_ATTR_CBIT: - msg.set_cbit(attr_list[i].value.booldata); - break; - case SAI_BFD_SESSION_ATTR_MIN_TX: - msg.set_min_tx(attr_list[i].value.u32); - break; - case SAI_BFD_SESSION_ATTR_MIN_RX: - msg.set_min_rx(attr_list[i].value.u32); - break; - case SAI_BFD_SESSION_ATTR_MULTIPLIER: - msg.set_multiplier(attr_list[i].value.u8); - break; - case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: - msg.set_offload_type(convert_sai_bfd_session_offload_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: - msg.set_srv6_sidlist_id(attr_list[i].value.oid); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BFD_SESSION_ATTR_TYPE: + msg.set_type( + convert_sai_bfd_session_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: + msg.set_hw_lookup_valid(attr_list[i].value.booldata); + break; + case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: + msg.set_virtual_router(attr_list[i].value.oid); + break; + case SAI_BFD_SESSION_ATTR_PORT: + msg.set_port(attr_list[i].value.oid); + break; + case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: + msg.set_local_discriminator(attr_list[i].value.u32); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: + msg.set_remote_discriminator(attr_list[i].value.u32); + break; + case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: + msg.set_udp_src_port(attr_list[i].value.u32); + break; + case SAI_BFD_SESSION_ATTR_TC: + msg.set_tc(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_VLAN_TPID: + msg.set_vlan_tpid(attr_list[i].value.u16); + break; + case SAI_BFD_SESSION_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.u16); + break; + case SAI_BFD_SESSION_ATTR_VLAN_PRI: + msg.set_vlan_pri(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_VLAN_CFI: + msg.set_vlan_cfi(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: + msg.set_vlan_header_valid(attr_list[i].value.booldata); + break; + case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: + msg.set_bfd_encapsulation_type( + convert_sai_bfd_encapsulation_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: + msg.set_iphdr_version(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_TOS: + msg.set_tos(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_TTL: + msg.set_ttl(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: + msg.set_src_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: + msg.set_dst_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: + msg.set_tunnel_tos(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: + msg.set_tunnel_ttl(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: + msg.set_tunnel_src_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: + msg.set_tunnel_dst_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: + msg.set_dst_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: + msg.set_echo_enable(attr_list[i].value.booldata); + break; + case SAI_BFD_SESSION_ATTR_MULTIHOP: + msg.set_multihop(attr_list[i].value.booldata); + break; + case SAI_BFD_SESSION_ATTR_CBIT: + msg.set_cbit(attr_list[i].value.booldata); + break; + case SAI_BFD_SESSION_ATTR_MIN_TX: + msg.set_min_tx(attr_list[i].value.u32); + break; + case SAI_BFD_SESSION_ATTR_MIN_RX: + msg.set_min_rx(attr_list[i].value.u32); + break; + case SAI_BFD_SESSION_ATTR_MULTIPLIER: + msg.set_multiplier(attr_list[i].value.u8); + break; + case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: + msg.set_offload_type(convert_sai_bfd_session_offload_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: + msg.set_srv6_sidlist_id(attr_list[i].value.oid); + break; + case SAI_BFD_SESSION_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_bfd_session(sai_object_id_t* bfd_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateBfdSessionRequest req = + convert_create_bfd_session(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateBfdSessionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = bfd->CreateBfdSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (bfd_session_id) { + *bfd_session_id = resp.oid(); + } -sai_status_t l_create_bfd_session(sai_object_id_t *bfd_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateBfdSessionRequest req = convert_create_bfd_session(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateBfdSessionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bfd->CreateBfdSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (bfd_session_id) { - *bfd_session_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_bfd_session(sai_object_id_t bfd_session_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveBfdSessionRequest req; - lemming::dataplane::sai::RemoveBfdSessionResponse resp; - grpc::ClientContext context; - req.set_oid(bfd_session_id); - - grpc::Status status = bfd->RemoveBfdSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_bfd_session_attribute(sai_object_id_t bfd_session_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetBfdSessionAttributeRequest req; - lemming::dataplane::sai::SetBfdSessionAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(bfd_session_id); - - - - -switch (attr->id) { - - case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: - req.set_virtual_router(attr->value.oid); - break; - case SAI_BFD_SESSION_ATTR_PORT: - req.set_port(attr->value.oid); - break; - case SAI_BFD_SESSION_ATTR_TC: - req.set_tc(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_VLAN_TPID: - req.set_vlan_tpid(attr->value.u16); - break; - case SAI_BFD_SESSION_ATTR_VLAN_PRI: - req.set_vlan_pri(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_VLAN_CFI: - req.set_vlan_cfi(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: - req.set_iphdr_version(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_TOS: - req.set_tos(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_TTL: - req.set_ttl(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: - req.set_tunnel_tos(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: - req.set_tunnel_ttl(attr->value.u8); - break; - case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: - req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: - req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: - req.set_echo_enable(attr->value.booldata); - break; - case SAI_BFD_SESSION_ATTR_MIN_TX: - req.set_min_tx(attr->value.u32); - break; - case SAI_BFD_SESSION_ATTR_MIN_RX: - req.set_min_rx(attr->value.u32); - break; - case SAI_BFD_SESSION_ATTR_MULTIPLIER: - req.set_multiplier(attr->value.u8); - break; -} + lemming::dataplane::sai::RemoveBfdSessionRequest req; + lemming::dataplane::sai::RemoveBfdSessionResponse resp; + grpc::ClientContext context; + req.set_oid(bfd_session_id); - grpc::Status status = bfd->SetBfdSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = bfd->RemoveBfdSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_bfd_session_attribute(sai_object_id_t bfd_session_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBfdSessionAttributeRequest req; - lemming::dataplane::sai::GetBfdSessionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(bfd_session_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_bfd_session_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bfd->GetBfdSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BFD_SESSION_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_bfd_session_type_t_to_sai(resp.attr().type()); - break; - case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: - attr_list[i].value.booldata = resp.attr().hw_lookup_valid(); - break; - case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: - attr_list[i].value.oid = resp.attr().virtual_router(); - break; - case SAI_BFD_SESSION_ATTR_PORT: - attr_list[i].value.oid = resp.attr().port(); - break; - case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: - attr_list[i].value.u32 = resp.attr().local_discriminator(); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: - attr_list[i].value.u32 = resp.attr().remote_discriminator(); - break; - case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: - attr_list[i].value.u32 = resp.attr().udp_src_port(); - break; - case SAI_BFD_SESSION_ATTR_TC: - attr_list[i].value.u8 = resp.attr().tc(); - break; - case SAI_BFD_SESSION_ATTR_VLAN_TPID: - attr_list[i].value.u16 = resp.attr().vlan_tpid(); - break; - case SAI_BFD_SESSION_ATTR_VLAN_ID: - attr_list[i].value.u16 = resp.attr().vlan_id(); - break; - case SAI_BFD_SESSION_ATTR_VLAN_PRI: - attr_list[i].value.u8 = resp.attr().vlan_pri(); - break; - case SAI_BFD_SESSION_ATTR_VLAN_CFI: - attr_list[i].value.u8 = resp.attr().vlan_cfi(); - break; - case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: - attr_list[i].value.booldata = resp.attr().vlan_header_valid(); - break; - case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: - attr_list[i].value.s32 = convert_sai_bfd_encapsulation_type_t_to_sai(resp.attr().bfd_encapsulation_type()); - break; - case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: - attr_list[i].value.u8 = resp.attr().iphdr_version(); - break; - case SAI_BFD_SESSION_ATTR_TOS: - attr_list[i].value.u8 = resp.attr().tos(); - break; - case SAI_BFD_SESSION_ATTR_TTL: - attr_list[i].value.u8 = resp.attr().ttl(); - break; - case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip_address()); - break; - case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip_address()); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: - attr_list[i].value.u8 = resp.attr().tunnel_tos(); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: - attr_list[i].value.u8 = resp.attr().tunnel_ttl(); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().tunnel_src_ip_address()); - break; - case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().tunnel_dst_ip_address()); - break; - case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: - attr_list[i].value.booldata = resp.attr().echo_enable(); - break; - case SAI_BFD_SESSION_ATTR_MULTIHOP: - attr_list[i].value.booldata = resp.attr().multihop(); - break; - case SAI_BFD_SESSION_ATTR_CBIT: - attr_list[i].value.booldata = resp.attr().cbit(); - break; - case SAI_BFD_SESSION_ATTR_MIN_TX: - attr_list[i].value.u32 = resp.attr().min_tx(); - break; - case SAI_BFD_SESSION_ATTR_MIN_RX: - attr_list[i].value.u32 = resp.attr().min_rx(); - break; - case SAI_BFD_SESSION_ATTR_MULTIPLIER: - attr_list[i].value.u8 = resp.attr().multiplier(); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX: - attr_list[i].value.u32 = resp.attr().remote_min_tx(); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX: - attr_list[i].value.u32 = resp.attr().remote_min_rx(); - break; - case SAI_BFD_SESSION_ATTR_STATE: - attr_list[i].value.s32 = convert_sai_bfd_session_state_t_to_sai(resp.attr().state()); - break; - case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: - attr_list[i].value.s32 = convert_sai_bfd_session_offload_type_t_to_sai(resp.attr().offload_type()); - break; - case SAI_BFD_SESSION_ATTR_NEGOTIATED_TX: - attr_list[i].value.u32 = resp.attr().negotiated_tx(); - break; - case SAI_BFD_SESSION_ATTR_NEGOTIATED_RX: - attr_list[i].value.u32 = resp.attr().negotiated_rx(); - break; - case SAI_BFD_SESSION_ATTR_LOCAL_DIAG: - attr_list[i].value.u8 = resp.attr().local_diag(); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_DIAG: - attr_list[i].value.u8 = resp.attr().remote_diag(); - break; - case SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER: - attr_list[i].value.u8 = resp.attr().remote_multiplier(); - break; - case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: - attr_list[i].value.oid = resp.attr().srv6_sidlist_id(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_bfd_session_attribute(sai_object_id_t bfd_session_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetBfdSessionAttributeRequest req; + lemming::dataplane::sai::SetBfdSessionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(bfd_session_id); + + switch (attr->id) { + case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: + req.set_virtual_router(attr->value.oid); + break; + case SAI_BFD_SESSION_ATTR_PORT: + req.set_port(attr->value.oid); + break; + case SAI_BFD_SESSION_ATTR_TC: + req.set_tc(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_VLAN_TPID: + req.set_vlan_tpid(attr->value.u16); + break; + case SAI_BFD_SESSION_ATTR_VLAN_PRI: + req.set_vlan_pri(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_VLAN_CFI: + req.set_vlan_cfi(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: + req.set_iphdr_version(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_TOS: + req.set_tos(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_TTL: + req.set_ttl(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: + req.set_tunnel_tos(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: + req.set_tunnel_ttl(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: + req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: + req.set_echo_enable(attr->value.booldata); + break; + case SAI_BFD_SESSION_ATTR_MIN_TX: + req.set_min_tx(attr->value.u32); + break; + case SAI_BFD_SESSION_ATTR_MIN_RX: + req.set_min_rx(attr->value.u32); + break; + case SAI_BFD_SESSION_ATTR_MULTIPLIER: + req.set_multiplier(attr->value.u8); + break; + case SAI_BFD_SESSION_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = bfd->SetBfdSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bfd_session_stats(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBfdSessionStatsRequest req; - lemming::dataplane::sai::GetBfdSessionStatsResponse resp; - grpc::ClientContext context; - req.set_oid(bfd_session_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_bfd_session_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bfd->GetBfdSessionStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_bfd_session_attribute(sai_object_id_t bfd_session_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBfdSessionAttributeRequest req; + lemming::dataplane::sai::GetBfdSessionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(bfd_session_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_bfd_session_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = bfd->GetBfdSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BFD_SESSION_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_bfd_session_type_t_to_sai(resp.attr().type()); + break; + case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: + attr_list[i].value.booldata = resp.attr().hw_lookup_valid(); + break; + case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: + attr_list[i].value.oid = resp.attr().virtual_router(); + break; + case SAI_BFD_SESSION_ATTR_PORT: + attr_list[i].value.oid = resp.attr().port(); + break; + case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: + attr_list[i].value.u32 = resp.attr().local_discriminator(); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: + attr_list[i].value.u32 = resp.attr().remote_discriminator(); + break; + case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: + attr_list[i].value.u32 = resp.attr().udp_src_port(); + break; + case SAI_BFD_SESSION_ATTR_TC: + attr_list[i].value.u8 = resp.attr().tc(); + break; + case SAI_BFD_SESSION_ATTR_VLAN_TPID: + attr_list[i].value.u16 = resp.attr().vlan_tpid(); + break; + case SAI_BFD_SESSION_ATTR_VLAN_ID: + attr_list[i].value.u16 = resp.attr().vlan_id(); + break; + case SAI_BFD_SESSION_ATTR_VLAN_PRI: + attr_list[i].value.u8 = resp.attr().vlan_pri(); + break; + case SAI_BFD_SESSION_ATTR_VLAN_CFI: + attr_list[i].value.u8 = resp.attr().vlan_cfi(); + break; + case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: + attr_list[i].value.booldata = resp.attr().vlan_header_valid(); + break; + case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: + attr_list[i].value.s32 = convert_sai_bfd_encapsulation_type_t_to_sai( + resp.attr().bfd_encapsulation_type()); + break; + case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: + attr_list[i].value.u8 = resp.attr().iphdr_version(); + break; + case SAI_BFD_SESSION_ATTR_TOS: + attr_list[i].value.u8 = resp.attr().tos(); + break; + case SAI_BFD_SESSION_ATTR_TTL: + attr_list[i].value.u8 = resp.attr().ttl(); + break; + case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().src_ip_address()); + break; + case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().dst_ip_address()); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: + attr_list[i].value.u8 = resp.attr().tunnel_tos(); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: + attr_list[i].value.u8 = resp.attr().tunnel_ttl(); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().tunnel_src_ip_address()); + break; + case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().tunnel_dst_ip_address()); + break; + case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: + attr_list[i].value.booldata = resp.attr().echo_enable(); + break; + case SAI_BFD_SESSION_ATTR_MULTIHOP: + attr_list[i].value.booldata = resp.attr().multihop(); + break; + case SAI_BFD_SESSION_ATTR_CBIT: + attr_list[i].value.booldata = resp.attr().cbit(); + break; + case SAI_BFD_SESSION_ATTR_MIN_TX: + attr_list[i].value.u32 = resp.attr().min_tx(); + break; + case SAI_BFD_SESSION_ATTR_MIN_RX: + attr_list[i].value.u32 = resp.attr().min_rx(); + break; + case SAI_BFD_SESSION_ATTR_MULTIPLIER: + attr_list[i].value.u8 = resp.attr().multiplier(); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX: + attr_list[i].value.u32 = resp.attr().remote_min_tx(); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX: + attr_list[i].value.u32 = resp.attr().remote_min_rx(); + break; + case SAI_BFD_SESSION_ATTR_STATE: + attr_list[i].value.s32 = + convert_sai_bfd_session_state_t_to_sai(resp.attr().state()); + break; + case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: + attr_list[i].value.s32 = convert_sai_bfd_session_offload_type_t_to_sai( + resp.attr().offload_type()); + break; + case SAI_BFD_SESSION_ATTR_NEGOTIATED_TX: + attr_list[i].value.u32 = resp.attr().negotiated_tx(); + break; + case SAI_BFD_SESSION_ATTR_NEGOTIATED_RX: + attr_list[i].value.u32 = resp.attr().negotiated_rx(); + break; + case SAI_BFD_SESSION_ATTR_LOCAL_DIAG: + attr_list[i].value.u8 = resp.attr().local_diag(); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_DIAG: + attr_list[i].value.u8 = resp.attr().remote_diag(); + break; + case SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER: + attr_list[i].value.u8 = resp.attr().remote_multiplier(); + break; + case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: + attr_list[i].value.oid = resp.attr().srv6_sidlist_id(); + break; + case SAI_BFD_SESSION_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bfd_session_stats_ext(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_bfd_session_stats(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBfdSessionStatsRequest req; + lemming::dataplane::sai::GetBfdSessionStatsResponse resp; + grpc::ClientContext context; + req.set_oid(bfd_session_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_bfd_session_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = bfd->GetBfdSessionStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_bfd_session_stats(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_bfd_session_stats_ext(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_clear_bfd_session_stats(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/bfd.h b/dataplane/standalone/sai/bfd.h index bdbe5bade..a3d4f1dc2 100644 --- a/dataplane/standalone/sai/bfd.h +++ b/dataplane/standalone/sai/bfd.h @@ -25,20 +25,33 @@ extern "C" { extern const sai_bfd_api_t l_bfd; - -sai_status_t l_create_bfd_session(sai_object_id_t *bfd_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_bfd_session(sai_object_id_t* bfd_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_bfd_session(sai_object_id_t bfd_session_id); -sai_status_t l_set_bfd_session_attribute(sai_object_id_t bfd_session_id, const sai_attribute_t *attr); - -sai_status_t l_get_bfd_session_attribute(sai_object_id_t bfd_session_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_bfd_session_attribute(sai_object_id_t bfd_session_id, + const sai_attribute_t* attr); -sai_status_t l_get_bfd_session_stats(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_bfd_session_attribute(sai_object_id_t bfd_session_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_bfd_session_stats_ext(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_bfd_session_stats(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_bfd_session_stats(sai_object_id_t bfd_session_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_bfd_session_stats_ext(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); +sai_status_t l_clear_bfd_session_stats(sai_object_id_t bfd_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_BFD_H_ diff --git a/dataplane/standalone/sai/bmtor.cc b/dataplane/standalone/sai/bmtor.cc index 093ddbd93..585d7b342 100644 --- a/dataplane/standalone/sai/bmtor.cc +++ b/dataplane/standalone/sai/bmtor.cc @@ -13,574 +13,654 @@ // limitations under the License. #include "dataplane/standalone/sai/bmtor.h" + +#include + +#include "dataplane/proto/sai/bmtor.pb.h" +#include "dataplane/proto/sai/common.pb.h" #include "dataplane/standalone/sai/common.h" #include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/bmtor.pb.h" -#include const sai_bmtor_api_t l_bmtor = { - .create_table_bitmap_classification_entry = l_create_table_bitmap_classification_entry, - .remove_table_bitmap_classification_entry = l_remove_table_bitmap_classification_entry, - .set_table_bitmap_classification_entry_attribute = l_set_table_bitmap_classification_entry_attribute, - .get_table_bitmap_classification_entry_attribute = l_get_table_bitmap_classification_entry_attribute, - .get_table_bitmap_classification_entry_stats = l_get_table_bitmap_classification_entry_stats, - .get_table_bitmap_classification_entry_stats_ext = l_get_table_bitmap_classification_entry_stats_ext, - .clear_table_bitmap_classification_entry_stats = l_clear_table_bitmap_classification_entry_stats, - .create_table_bitmap_router_entry = l_create_table_bitmap_router_entry, - .remove_table_bitmap_router_entry = l_remove_table_bitmap_router_entry, - .set_table_bitmap_router_entry_attribute = l_set_table_bitmap_router_entry_attribute, - .get_table_bitmap_router_entry_attribute = l_get_table_bitmap_router_entry_attribute, - .get_table_bitmap_router_entry_stats = l_get_table_bitmap_router_entry_stats, - .get_table_bitmap_router_entry_stats_ext = l_get_table_bitmap_router_entry_stats_ext, - .clear_table_bitmap_router_entry_stats = l_clear_table_bitmap_router_entry_stats, - .create_table_meta_tunnel_entry = l_create_table_meta_tunnel_entry, - .remove_table_meta_tunnel_entry = l_remove_table_meta_tunnel_entry, - .set_table_meta_tunnel_entry_attribute = l_set_table_meta_tunnel_entry_attribute, - .get_table_meta_tunnel_entry_attribute = l_get_table_meta_tunnel_entry_attribute, - .get_table_meta_tunnel_entry_stats = l_get_table_meta_tunnel_entry_stats, - .get_table_meta_tunnel_entry_stats_ext = l_get_table_meta_tunnel_entry_stats_ext, - .clear_table_meta_tunnel_entry_stats = l_clear_table_meta_tunnel_entry_stats, + .create_table_bitmap_classification_entry = + l_create_table_bitmap_classification_entry, + .remove_table_bitmap_classification_entry = + l_remove_table_bitmap_classification_entry, + .set_table_bitmap_classification_entry_attribute = + l_set_table_bitmap_classification_entry_attribute, + .get_table_bitmap_classification_entry_attribute = + l_get_table_bitmap_classification_entry_attribute, + .get_table_bitmap_classification_entry_stats = + l_get_table_bitmap_classification_entry_stats, + .get_table_bitmap_classification_entry_stats_ext = + l_get_table_bitmap_classification_entry_stats_ext, + .clear_table_bitmap_classification_entry_stats = + l_clear_table_bitmap_classification_entry_stats, + .create_table_bitmap_router_entry = l_create_table_bitmap_router_entry, + .remove_table_bitmap_router_entry = l_remove_table_bitmap_router_entry, + .set_table_bitmap_router_entry_attribute = + l_set_table_bitmap_router_entry_attribute, + .get_table_bitmap_router_entry_attribute = + l_get_table_bitmap_router_entry_attribute, + .get_table_bitmap_router_entry_stats = + l_get_table_bitmap_router_entry_stats, + .get_table_bitmap_router_entry_stats_ext = + l_get_table_bitmap_router_entry_stats_ext, + .clear_table_bitmap_router_entry_stats = + l_clear_table_bitmap_router_entry_stats, + .create_table_meta_tunnel_entry = l_create_table_meta_tunnel_entry, + .remove_table_meta_tunnel_entry = l_remove_table_meta_tunnel_entry, + .set_table_meta_tunnel_entry_attribute = + l_set_table_meta_tunnel_entry_attribute, + .get_table_meta_tunnel_entry_attribute = + l_get_table_meta_tunnel_entry_attribute, + .get_table_meta_tunnel_entry_stats = l_get_table_meta_tunnel_entry_stats, + .get_table_meta_tunnel_entry_stats_ext = + l_get_table_meta_tunnel_entry_stats_ext, + .clear_table_meta_tunnel_entry_stats = + l_clear_table_meta_tunnel_entry_stats, }; - -lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest convert_create_table_bitmap_classification_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: - msg.set_action(convert_sai_table_bitmap_classification_entry_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: - msg.set_router_interface_key(attr_list[i].value.oid); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: - msg.set_is_default(attr_list[i].value.booldata); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: - msg.set_in_rif_metadata(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest convert_create_table_bitmap_router_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: - msg.set_action(convert_sai_table_bitmap_router_entry_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u32); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: - msg.set_in_rif_metadata_key(attr_list[i].value.u32); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: - msg.set_in_rif_metadata_mask(attr_list[i].value.u32); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: - msg.set_tunnel_index(attr_list[i].value.u16); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: - msg.set_next_hop(attr_list[i].value.oid); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: - msg.set_router_interface(attr_list[i].value.oid); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: - msg.set_trap_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest convert_create_table_meta_tunnel_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: - msg.set_action(convert_sai_table_meta_tunnel_entry_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: - msg.set_metadata_key(attr_list[i].value.u16); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: - msg.set_is_default(attr_list[i].value.booldata); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: - msg.set_tunnel_id(attr_list[i].value.oid); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: - msg.set_underlay_dip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; -} - -} -return msg; -} - -sai_status_t l_create_table_bitmap_classification_entry(sai_object_id_t *table_bitmap_classification_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest req = convert_create_table_bitmap_classification_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTableBitmapClassificationEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bmtor->CreateTableBitmapClassificationEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (table_bitmap_classification_entry_id) { - *table_bitmap_classification_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_table_bitmap_classification_entry(sai_object_id_t table_bitmap_classification_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTableBitmapClassificationEntryRequest req; - lemming::dataplane::sai::RemoveTableBitmapClassificationEntryResponse resp; - grpc::ClientContext context; - req.set_oid(table_bitmap_classification_entry_id); - - grpc::Status status = bmtor->RemoveTableBitmapClassificationEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_table_bitmap_classification_entry_attribute(sai_object_id_t table_bitmap_classification_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_bitmap_classification_entry_attribute(sai_object_id_t table_bitmap_classification_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableBitmapClassificationEntryAttributeRequest req; - lemming::dataplane::sai::GetTableBitmapClassificationEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(table_bitmap_classification_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_table_bitmap_classification_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bmtor->GetTableBitmapClassificationEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: - attr_list[i].value.s32 = convert_sai_table_bitmap_classification_entry_action_t_to_sai(resp.attr().action()); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: - attr_list[i].value.oid = resp.attr().router_interface_key(); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: - attr_list[i].value.booldata = resp.attr().is_default(); - break; - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: - attr_list[i].value.u32 = resp.attr().in_rif_metadata(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_bitmap_classification_entry_stats(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableBitmapClassificationEntryStatsRequest req; - lemming::dataplane::sai::GetTableBitmapClassificationEntryStatsResponse resp; - grpc::ClientContext context; - req.set_oid(table_bitmap_classification_entry_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_table_bitmap_classification_entry_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bmtor->GetTableBitmapClassificationEntryStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest +convert_create_table_bitmap_classification_entry( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: + msg.set_action( + convert_sai_table_bitmap_classification_entry_action_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: + msg.set_router_interface_key(attr_list[i].value.oid); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: + msg.set_is_default(attr_list[i].value.booldata); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: + msg.set_in_rif_metadata(attr_list[i].value.u32); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest +convert_create_table_bitmap_router_entry(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: + msg.set_action(convert_sai_table_bitmap_router_entry_action_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u32); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: + msg.set_in_rif_metadata_key(attr_list[i].value.u32); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: + msg.set_in_rif_metadata_mask(attr_list[i].value.u32); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: + msg.set_tunnel_index(attr_list[i].value.u16); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: + msg.set_next_hop(attr_list[i].value.oid); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: + msg.set_router_interface(attr_list[i].value.oid); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: + msg.set_trap_id(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest +convert_create_table_meta_tunnel_entry(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: + msg.set_action(convert_sai_table_meta_tunnel_entry_action_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: + msg.set_metadata_key(attr_list[i].value.u16); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: + msg.set_is_default(attr_list[i].value.booldata); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: + msg.set_tunnel_id(attr_list[i].value.oid); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: + msg.set_underlay_dip( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + } + } + return msg; +} + +sai_status_t l_create_table_bitmap_classification_entry( + sai_object_id_t* table_bitmap_classification_entry_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTableBitmapClassificationEntryRequest req = + convert_create_table_bitmap_classification_entry(switch_id, attr_count, + attr_list); + lemming::dataplane::sai::CreateTableBitmapClassificationEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + bmtor->CreateTableBitmapClassificationEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (table_bitmap_classification_entry_id) { + *table_bitmap_classification_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_table_bitmap_classification_entry( + sai_object_id_t table_bitmap_classification_entry_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTableBitmapClassificationEntryRequest req; + lemming::dataplane::sai::RemoveTableBitmapClassificationEntryResponse resp; + grpc::ClientContext context; + req.set_oid(table_bitmap_classification_entry_id); + + grpc::Status status = + bmtor->RemoveTableBitmapClassificationEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_table_bitmap_classification_entry_attribute( + sai_object_id_t table_bitmap_classification_entry_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_classification_entry_attribute( + sai_object_id_t table_bitmap_classification_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableBitmapClassificationEntryAttributeRequest + req; + lemming::dataplane::sai::GetTableBitmapClassificationEntryAttributeResponse + resp; + grpc::ClientContext context; + + req.set_oid(table_bitmap_classification_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_table_bitmap_classification_entry_attr_t_to_proto( + attr_list[i].id)); + } + grpc::Status status = + bmtor->GetTableBitmapClassificationEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: + attr_list[i].value.s32 = + convert_sai_table_bitmap_classification_entry_action_t_to_sai( + resp.attr().action()); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: + attr_list[i].value.oid = resp.attr().router_interface_key(); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: + attr_list[i].value.booldata = resp.attr().is_default(); + break; + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: + attr_list[i].value.u32 = resp.attr().in_rif_metadata(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_classification_entry_stats( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableBitmapClassificationEntryStatsRequest req; + lemming::dataplane::sai::GetTableBitmapClassificationEntryStatsResponse resp; + grpc::ClientContext context; + req.set_oid(table_bitmap_classification_entry_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_table_bitmap_classification_entry_stat_t_to_proto( + counter_ids[i])); + } + grpc::Status status = + bmtor->GetTableBitmapClassificationEntryStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_classification_entry_stats_ext( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_table_bitmap_classification_entry_stats( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_table_bitmap_router_entry( + sai_object_id_t* table_bitmap_router_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest req = + convert_create_table_bitmap_router_entry(switch_id, attr_count, + attr_list); + lemming::dataplane::sai::CreateTableBitmapRouterEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + bmtor->CreateTableBitmapRouterEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (table_bitmap_router_entry_id) { + *table_bitmap_router_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_table_bitmap_router_entry( + sai_object_id_t table_bitmap_router_entry_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTableBitmapRouterEntryRequest req; + lemming::dataplane::sai::RemoveTableBitmapRouterEntryResponse resp; + grpc::ClientContext context; + req.set_oid(table_bitmap_router_entry_id); + + grpc::Status status = + bmtor->RemoveTableBitmapRouterEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_table_bitmap_router_entry_attribute( + sai_object_id_t table_bitmap_router_entry_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_router_entry_attribute( + sai_object_id_t table_bitmap_router_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableBitmapRouterEntryAttributeRequest req; + lemming::dataplane::sai::GetTableBitmapRouterEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(table_bitmap_router_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_table_bitmap_router_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + bmtor->GetTableBitmapRouterEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: + attr_list[i].value.s32 = + convert_sai_table_bitmap_router_entry_action_t_to_sai( + resp.attr().action()); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: + attr_list[i].value.u32 = resp.attr().priority(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: + attr_list[i].value.u32 = resp.attr().in_rif_metadata_key(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: + attr_list[i].value.u32 = resp.attr().in_rif_metadata_mask(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: + attr_list[i].value.u16 = resp.attr().tunnel_index(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: + attr_list[i].value.oid = resp.attr().next_hop(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: + attr_list[i].value.oid = resp.attr().router_interface(); + break; + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: + attr_list[i].value.oid = resp.attr().trap_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_router_entry_stats( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableBitmapRouterEntryStatsRequest req; + lemming::dataplane::sai::GetTableBitmapRouterEntryStatsResponse resp; + grpc::ClientContext context; + req.set_oid(table_bitmap_router_entry_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_table_bitmap_router_entry_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = + bmtor->GetTableBitmapRouterEntryStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_bitmap_router_entry_stats_ext( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_table_bitmap_router_entry_stats( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_table_meta_tunnel_entry( + sai_object_id_t* table_meta_tunnel_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest req = + convert_create_table_meta_tunnel_entry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTableMetaTunnelEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = bmtor->CreateTableMetaTunnelEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (table_meta_tunnel_entry_id) { + *table_meta_tunnel_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_table_meta_tunnel_entry( + sai_object_id_t table_meta_tunnel_entry_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTableMetaTunnelEntryRequest req; + lemming::dataplane::sai::RemoveTableMetaTunnelEntryResponse resp; + grpc::ClientContext context; + req.set_oid(table_meta_tunnel_entry_id); + + grpc::Status status = bmtor->RemoveTableMetaTunnelEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_table_meta_tunnel_entry_attribute( + sai_object_id_t table_meta_tunnel_entry_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_meta_tunnel_entry_attribute( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableMetaTunnelEntryAttributeRequest req; + lemming::dataplane::sai::GetTableMetaTunnelEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(table_meta_tunnel_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_table_meta_tunnel_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + bmtor->GetTableMetaTunnelEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: + attr_list[i].value.s32 = + convert_sai_table_meta_tunnel_entry_action_t_to_sai( + resp.attr().action()); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: + attr_list[i].value.u16 = resp.attr().metadata_key(); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: + attr_list[i].value.booldata = resp.attr().is_default(); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: + attr_list[i].value.oid = resp.attr().tunnel_id(); + break; + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().underlay_dip()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_meta_tunnel_entry_stats( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTableMetaTunnelEntryStatsRequest req; + lemming::dataplane::sai::GetTableMetaTunnelEntryStatsResponse resp; + grpc::ClientContext context; + req.set_oid(table_meta_tunnel_entry_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_table_meta_tunnel_entry_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = + bmtor->GetTableMetaTunnelEntryStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_table_meta_tunnel_entry_stats_ext( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_table_meta_tunnel_entry_stats( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_table_bitmap_classification_entry_stats_ext(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_table_bitmap_classification_entry_stats(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_table_bitmap_router_entry(sai_object_id_t *table_bitmap_router_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTableBitmapRouterEntryRequest req = convert_create_table_bitmap_router_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTableBitmapRouterEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bmtor->CreateTableBitmapRouterEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (table_bitmap_router_entry_id) { - *table_bitmap_router_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_table_bitmap_router_entry(sai_object_id_t table_bitmap_router_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTableBitmapRouterEntryRequest req; - lemming::dataplane::sai::RemoveTableBitmapRouterEntryResponse resp; - grpc::ClientContext context; - req.set_oid(table_bitmap_router_entry_id); - - grpc::Status status = bmtor->RemoveTableBitmapRouterEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_table_bitmap_router_entry_attribute(sai_object_id_t table_bitmap_router_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_bitmap_router_entry_attribute(sai_object_id_t table_bitmap_router_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableBitmapRouterEntryAttributeRequest req; - lemming::dataplane::sai::GetTableBitmapRouterEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(table_bitmap_router_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_table_bitmap_router_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bmtor->GetTableBitmapRouterEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: - attr_list[i].value.s32 = convert_sai_table_bitmap_router_entry_action_t_to_sai(resp.attr().action()); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: - attr_list[i].value.u32 = resp.attr().priority(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: - attr_list[i].value.u32 = resp.attr().in_rif_metadata_key(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: - attr_list[i].value.u32 = resp.attr().in_rif_metadata_mask(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: - attr_list[i].value.u16 = resp.attr().tunnel_index(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: - attr_list[i].value.oid = resp.attr().next_hop(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: - attr_list[i].value.oid = resp.attr().router_interface(); - break; - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: - attr_list[i].value.oid = resp.attr().trap_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_bitmap_router_entry_stats(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableBitmapRouterEntryStatsRequest req; - lemming::dataplane::sai::GetTableBitmapRouterEntryStatsResponse resp; - grpc::ClientContext context; - req.set_oid(table_bitmap_router_entry_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_table_bitmap_router_entry_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bmtor->GetTableBitmapRouterEntryStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_bitmap_router_entry_stats_ext(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_table_bitmap_router_entry_stats(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_table_meta_tunnel_entry(sai_object_id_t *table_meta_tunnel_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTableMetaTunnelEntryRequest req = convert_create_table_meta_tunnel_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTableMetaTunnelEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bmtor->CreateTableMetaTunnelEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (table_meta_tunnel_entry_id) { - *table_meta_tunnel_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_table_meta_tunnel_entry(sai_object_id_t table_meta_tunnel_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTableMetaTunnelEntryRequest req; - lemming::dataplane::sai::RemoveTableMetaTunnelEntryResponse resp; - grpc::ClientContext context; - req.set_oid(table_meta_tunnel_entry_id); - - grpc::Status status = bmtor->RemoveTableMetaTunnelEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_table_meta_tunnel_entry_attribute(sai_object_id_t table_meta_tunnel_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_meta_tunnel_entry_attribute(sai_object_id_t table_meta_tunnel_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableMetaTunnelEntryAttributeRequest req; - lemming::dataplane::sai::GetTableMetaTunnelEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(table_meta_tunnel_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_table_meta_tunnel_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bmtor->GetTableMetaTunnelEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: - attr_list[i].value.s32 = convert_sai_table_meta_tunnel_entry_action_t_to_sai(resp.attr().action()); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: - attr_list[i].value.u16 = resp.attr().metadata_key(); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: - attr_list[i].value.booldata = resp.attr().is_default(); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: - attr_list[i].value.oid = resp.attr().tunnel_id(); - break; - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().underlay_dip()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_meta_tunnel_entry_stats(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTableMetaTunnelEntryStatsRequest req; - lemming::dataplane::sai::GetTableMetaTunnelEntryStatsResponse resp; - grpc::ClientContext context; - req.set_oid(table_meta_tunnel_entry_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_table_meta_tunnel_entry_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bmtor->GetTableMetaTunnelEntryStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_table_meta_tunnel_entry_stats_ext(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_table_meta_tunnel_entry_stats(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/bmtor.h b/dataplane/standalone/sai/bmtor.h index 799049168..6eccff57e 100644 --- a/dataplane/standalone/sai/bmtor.h +++ b/dataplane/standalone/sai/bmtor.h @@ -25,48 +25,88 @@ extern "C" { extern const sai_bmtor_api_t l_bmtor; +sai_status_t l_create_table_bitmap_classification_entry( + sai_object_id_t* table_bitmap_classification_entry_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_table_bitmap_classification_entry(sai_object_id_t *table_bitmap_classification_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_table_bitmap_classification_entry( + sai_object_id_t table_bitmap_classification_entry_id); -sai_status_t l_remove_table_bitmap_classification_entry(sai_object_id_t table_bitmap_classification_entry_id); +sai_status_t l_set_table_bitmap_classification_entry_attribute( + sai_object_id_t table_bitmap_classification_entry_id, + const sai_attribute_t* attr); -sai_status_t l_set_table_bitmap_classification_entry_attribute(sai_object_id_t table_bitmap_classification_entry_id, const sai_attribute_t *attr); +sai_status_t l_get_table_bitmap_classification_entry_attribute( + sai_object_id_t table_bitmap_classification_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_table_bitmap_classification_entry_attribute(sai_object_id_t table_bitmap_classification_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_table_bitmap_classification_entry_stats( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_table_bitmap_classification_entry_stats(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_table_bitmap_classification_entry_stats_ext( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); -sai_status_t l_get_table_bitmap_classification_entry_stats_ext(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_clear_table_bitmap_classification_entry_stats( + sai_object_id_t table_bitmap_classification_entry_id, + uint32_t number_of_counters, const sai_stat_id_t* counter_ids); -sai_status_t l_clear_table_bitmap_classification_entry_stats(sai_object_id_t table_bitmap_classification_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_create_table_bitmap_router_entry( + sai_object_id_t* table_bitmap_router_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_create_table_bitmap_router_entry(sai_object_id_t *table_bitmap_router_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_table_bitmap_router_entry( + sai_object_id_t table_bitmap_router_entry_id); -sai_status_t l_remove_table_bitmap_router_entry(sai_object_id_t table_bitmap_router_entry_id); +sai_status_t l_set_table_bitmap_router_entry_attribute( + sai_object_id_t table_bitmap_router_entry_id, const sai_attribute_t* attr); -sai_status_t l_set_table_bitmap_router_entry_attribute(sai_object_id_t table_bitmap_router_entry_id, const sai_attribute_t *attr); +sai_status_t l_get_table_bitmap_router_entry_attribute( + sai_object_id_t table_bitmap_router_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_table_bitmap_router_entry_attribute(sai_object_id_t table_bitmap_router_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_table_bitmap_router_entry_stats( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters); -sai_status_t l_get_table_bitmap_router_entry_stats(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_table_bitmap_router_entry_stats_ext( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_get_table_bitmap_router_entry_stats_ext(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_clear_table_bitmap_router_entry_stats( + sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_clear_table_bitmap_router_entry_stats(sai_object_id_t table_bitmap_router_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_create_table_meta_tunnel_entry( + sai_object_id_t* table_meta_tunnel_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_create_table_meta_tunnel_entry(sai_object_id_t *table_meta_tunnel_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_table_meta_tunnel_entry( + sai_object_id_t table_meta_tunnel_entry_id); -sai_status_t l_remove_table_meta_tunnel_entry(sai_object_id_t table_meta_tunnel_entry_id); +sai_status_t l_set_table_meta_tunnel_entry_attribute( + sai_object_id_t table_meta_tunnel_entry_id, const sai_attribute_t* attr); -sai_status_t l_set_table_meta_tunnel_entry_attribute(sai_object_id_t table_meta_tunnel_entry_id, const sai_attribute_t *attr); +sai_status_t l_get_table_meta_tunnel_entry_attribute( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_table_meta_tunnel_entry_attribute(sai_object_id_t table_meta_tunnel_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_table_meta_tunnel_entry_stats( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters); -sai_status_t l_get_table_meta_tunnel_entry_stats(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); - -sai_status_t l_get_table_meta_tunnel_entry_stats_ext(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); - -sai_status_t l_clear_table_meta_tunnel_entry_stats(sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_table_meta_tunnel_entry_stats_ext( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters); +sai_status_t l_clear_table_meta_tunnel_entry_stats( + sai_object_id_t table_meta_tunnel_entry_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_BMTOR_H_ diff --git a/dataplane/standalone/sai/bridge.cc b/dataplane/standalone/sai/bridge.cc index 05f0d32f2..8e37edec4 100644 --- a/dataplane/standalone/sai/bridge.cc +++ b/dataplane/standalone/sai/bridge.cc @@ -13,557 +13,653 @@ // limitations under the License. #include "dataplane/standalone/sai/bridge.h" + +#include + +#include "dataplane/proto/sai/bridge.pb.h" +#include "dataplane/proto/sai/common.pb.h" #include "dataplane/standalone/sai/common.h" #include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/bridge.pb.h" -#include const sai_bridge_api_t l_bridge = { - .create_bridge = l_create_bridge, - .remove_bridge = l_remove_bridge, - .set_bridge_attribute = l_set_bridge_attribute, - .get_bridge_attribute = l_get_bridge_attribute, - .get_bridge_stats = l_get_bridge_stats, - .get_bridge_stats_ext = l_get_bridge_stats_ext, - .clear_bridge_stats = l_clear_bridge_stats, - .create_bridge_port = l_create_bridge_port, - .remove_bridge_port = l_remove_bridge_port, - .set_bridge_port_attribute = l_set_bridge_port_attribute, - .get_bridge_port_attribute = l_get_bridge_port_attribute, - .get_bridge_port_stats = l_get_bridge_port_stats, - .get_bridge_port_stats_ext = l_get_bridge_port_stats_ext, - .clear_bridge_port_stats = l_clear_bridge_port_stats, + .create_bridge = l_create_bridge, + .remove_bridge = l_remove_bridge, + .set_bridge_attribute = l_set_bridge_attribute, + .get_bridge_attribute = l_get_bridge_attribute, + .get_bridge_stats = l_get_bridge_stats, + .get_bridge_stats_ext = l_get_bridge_stats_ext, + .clear_bridge_stats = l_clear_bridge_stats, + .create_bridge_port = l_create_bridge_port, + .remove_bridge_port = l_remove_bridge_port, + .set_bridge_port_attribute = l_set_bridge_port_attribute, + .get_bridge_port_attribute = l_get_bridge_port_attribute, + .get_bridge_port_stats = l_get_bridge_port_stats, + .get_bridge_port_stats_ext = l_get_bridge_port_stats_ext, + .clear_bridge_port_stats = l_clear_bridge_port_stats, }; - -lemming::dataplane::sai::CreateBridgeRequest convert_create_bridge(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateBridgeRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BRIDGE_ATTR_TYPE: - msg.set_type(convert_sai_bridge_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: - msg.set_max_learned_addresses(attr_list[i].value.u32); - break; - case SAI_BRIDGE_ATTR_LEARN_DISABLE: - msg.set_learn_disable(attr_list[i].value.booldata); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - msg.set_unknown_unicast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - msg.set_unknown_unicast_flood_group(attr_list[i].value.oid); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - msg.set_unknown_multicast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - msg.set_unknown_multicast_flood_group(attr_list[i].value.oid); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - msg.set_broadcast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: - msg.set_broadcast_flood_group(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateBridgeRequest convert_create_bridge( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateBridgeRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BRIDGE_ATTR_TYPE: + msg.set_type( + convert_sai_bridge_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: + msg.set_max_learned_addresses(attr_list[i].value.u32); + break; + case SAI_BRIDGE_ATTR_LEARN_DISABLE: + msg.set_learn_disable(attr_list[i].value.booldata); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + msg.set_unknown_unicast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + msg.set_unknown_unicast_flood_group(attr_list[i].value.oid); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + msg.set_unknown_multicast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + msg.set_unknown_multicast_flood_group(attr_list[i].value.oid); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + msg.set_broadcast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: + msg.set_broadcast_flood_group(attr_list[i].value.oid); + break; + case SAI_BRIDGE_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateBridgePortRequest convert_create_bridge_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateBridgePortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BRIDGE_PORT_ATTR_TYPE: - msg.set_type(convert_sai_bridge_port_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: - msg.set_tagging_mode(convert_sai_bridge_port_tagging_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.u16); - break; - case SAI_BRIDGE_PORT_ATTR_RIF_ID: - msg.set_rif_id(attr_list[i].value.oid); - break; - case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: - msg.set_tunnel_id(attr_list[i].value.oid); - break; - case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: - msg.set_bridge_id(attr_list[i].value.oid); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: - msg.set_fdb_learning_mode(convert_sai_bridge_port_fdb_learning_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: - msg.set_max_learned_addresses(attr_list[i].value.u32); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: - msg.set_fdb_learning_limit_violation_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: - msg.set_admin_state(attr_list[i].value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: - msg.set_ingress_filtering(attr_list[i].value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: - msg.set_egress_filtering(attr_list[i].value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: - msg.set_isolation_group(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateBridgePortRequest convert_create_bridge_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateBridgePortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BRIDGE_PORT_ATTR_TYPE: + msg.set_type( + convert_sai_bridge_port_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: + msg.set_tagging_mode(convert_sai_bridge_port_tagging_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.u16); + break; + case SAI_BRIDGE_PORT_ATTR_RIF_ID: + msg.set_rif_id(attr_list[i].value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: + msg.set_tunnel_id(attr_list[i].value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: + msg.set_bridge_id(attr_list[i].value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: + msg.set_fdb_learning_mode( + convert_sai_bridge_port_fdb_learning_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: + msg.set_max_learned_addresses(attr_list[i].value.u32); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: + msg.set_fdb_learning_limit_violation_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: + msg.set_admin_state(attr_list[i].value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: + msg.set_ingress_filtering(attr_list[i].value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: + msg.set_egress_filtering(attr_list[i].value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: + msg.set_isolation_group(attr_list[i].value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -sai_status_t l_create_bridge(sai_object_id_t *bridge_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateBridgeRequest req = convert_create_bridge(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateBridgeResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bridge->CreateBridge(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (bridge_id) { - *bridge_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_bridge(sai_object_id_t* bridge_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateBridgeRequest req = + convert_create_bridge(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateBridgeResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = bridge->CreateBridge(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (bridge_id) { + *bridge_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_bridge(sai_object_id_t bridge_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveBridgeRequest req; - lemming::dataplane::sai::RemoveBridgeResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_id); - - grpc::Status status = bridge->RemoveBridge(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveBridgeRequest req; + lemming::dataplane::sai::RemoveBridgeResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_id); + + grpc::Status status = bridge->RemoveBridge(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_bridge_attribute(sai_object_id_t bridge_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetBridgeAttributeRequest req; - lemming::dataplane::sai::SetBridgeAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_id); - - - - -switch (attr->id) { - - case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: - req.set_max_learned_addresses(attr->value.u32); - break; - case SAI_BRIDGE_ATTR_LEARN_DISABLE: - req.set_learn_disable(attr->value.booldata); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - req.set_unknown_unicast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - req.set_unknown_unicast_flood_group(attr->value.oid); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - req.set_unknown_multicast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - req.set_unknown_multicast_flood_group(attr->value.oid); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - req.set_broadcast_flood_control_type(convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: - req.set_broadcast_flood_group(attr->value.oid); - break; +sai_status_t l_set_bridge_attribute(sai_object_id_t bridge_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetBridgeAttributeRequest req; + lemming::dataplane::sai::SetBridgeAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_id); + + switch (attr->id) { + case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: + req.set_max_learned_addresses(attr->value.u32); + break; + case SAI_BRIDGE_ATTR_LEARN_DISABLE: + req.set_learn_disable(attr->value.booldata); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + req.set_unknown_unicast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + req.set_unknown_unicast_flood_group(attr->value.oid); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + req.set_unknown_multicast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + req.set_unknown_multicast_flood_group(attr->value.oid); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + req.set_broadcast_flood_control_type( + convert_sai_bridge_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: + req.set_broadcast_flood_group(attr->value.oid); + break; + case SAI_BRIDGE_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = bridge->SetBridgeAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = bridge->SetBridgeAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_bridge_attribute(sai_object_id_t bridge_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBridgeAttributeRequest req; + lemming::dataplane::sai::GetBridgeAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(bridge_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_bridge_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = bridge->GetBridgeAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BRIDGE_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_bridge_type_t_to_sai(resp.attr().type()); + break; + case SAI_BRIDGE_ATTR_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: + attr_list[i].value.u32 = resp.attr().max_learned_addresses(); + break; + case SAI_BRIDGE_ATTR_LEARN_DISABLE: + attr_list[i].value.booldata = resp.attr().learn_disable(); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai( + resp.attr().unknown_unicast_flood_control_type()); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().unknown_unicast_flood_group(); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai( + resp.attr().unknown_multicast_flood_control_type()); + break; + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().unknown_multicast_flood_group(); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai( + resp.attr().broadcast_flood_control_type()); + break; + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().broadcast_flood_group(); + break; + case SAI_BRIDGE_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bridge_attribute(sai_object_id_t bridge_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBridgeAttributeRequest req; - lemming::dataplane::sai::GetBridgeAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(bridge_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_bridge_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bridge->GetBridgeAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BRIDGE_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_bridge_type_t_to_sai(resp.attr().type()); - break; - case SAI_BRIDGE_ATTR_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: - attr_list[i].value.u32 = resp.attr().max_learned_addresses(); - break; - case SAI_BRIDGE_ATTR_LEARN_DISABLE: - attr_list[i].value.booldata = resp.attr().learn_disable(); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai(resp.attr().unknown_unicast_flood_control_type()); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().unknown_unicast_flood_group(); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai(resp.attr().unknown_multicast_flood_control_type()); - break; - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().unknown_multicast_flood_group(); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_bridge_flood_control_type_t_to_sai(resp.attr().broadcast_flood_control_type()); - break; - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().broadcast_flood_group(); - break; +sai_status_t l_get_bridge_stats(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBridgeStatsRequest req; + lemming::dataplane::sai::GetBridgeStatsResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_bridge_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = bridge->GetBridgeStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_bridge_stats_ext(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_bridge_stats(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBridgeStatsRequest req; - lemming::dataplane::sai::GetBridgeStatsResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_bridge_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bridge->GetBridgeStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bridge_stats_ext(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_bridge_stats(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_bridge_stats(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_bridge_port(sai_object_id_t *bridge_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateBridgePortRequest req = convert_create_bridge_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateBridgePortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = bridge->CreateBridgePort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (bridge_port_id) { - *bridge_port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_bridge_port(sai_object_id_t* bridge_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateBridgePortRequest req = + convert_create_bridge_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateBridgePortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = bridge->CreateBridgePort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (bridge_port_id) { + *bridge_port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_bridge_port(sai_object_id_t bridge_port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveBridgePortRequest req; - lemming::dataplane::sai::RemoveBridgePortResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_port_id); - - grpc::Status status = bridge->RemoveBridgePort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveBridgePortRequest req; + lemming::dataplane::sai::RemoveBridgePortResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_port_id); + + grpc::Status status = bridge->RemoveBridgePort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_bridge_port_attribute(sai_object_id_t bridge_port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetBridgePortAttributeRequest req; - lemming::dataplane::sai::SetBridgePortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_port_id); - - - - -switch (attr->id) { - - case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: - req.set_tagging_mode(convert_sai_bridge_port_tagging_mode_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: - req.set_bridge_id(attr->value.oid); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: - req.set_fdb_learning_mode(convert_sai_bridge_port_fdb_learning_mode_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: - req.set_max_learned_addresses(attr->value.u32); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: - req.set_fdb_learning_limit_violation_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: - req.set_admin_state(attr->value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: - req.set_ingress_filtering(attr->value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: - req.set_egress_filtering(attr->value.booldata); - break; - case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: - req.set_isolation_group(attr->value.oid); - break; +sai_status_t l_set_bridge_port_attribute(sai_object_id_t bridge_port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetBridgePortAttributeRequest req; + lemming::dataplane::sai::SetBridgePortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_port_id); + + switch (attr->id) { + case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: + req.set_tagging_mode( + convert_sai_bridge_port_tagging_mode_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: + req.set_bridge_id(attr->value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: + req.set_fdb_learning_mode( + convert_sai_bridge_port_fdb_learning_mode_t_to_proto( + attr->value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: + req.set_max_learned_addresses(attr->value.u32); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: + req.set_fdb_learning_limit_violation_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: + req.set_admin_state(attr->value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: + req.set_ingress_filtering(attr->value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: + req.set_egress_filtering(attr->value.booldata); + break; + case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: + req.set_isolation_group(attr->value.oid); + break; + case SAI_BRIDGE_PORT_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = bridge->SetBridgePortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = bridge->SetBridgePortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_bridge_port_attribute(sai_object_id_t bridge_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBridgePortAttributeRequest req; + lemming::dataplane::sai::GetBridgePortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(bridge_port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_bridge_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = bridge->GetBridgePortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BRIDGE_PORT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_bridge_port_type_t_to_sai(resp.attr().type()); + break; + case SAI_BRIDGE_PORT_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: + attr_list[i].value.s32 = convert_sai_bridge_port_tagging_mode_t_to_sai( + resp.attr().tagging_mode()); + break; + case SAI_BRIDGE_PORT_ATTR_VLAN_ID: + attr_list[i].value.u16 = resp.attr().vlan_id(); + break; + case SAI_BRIDGE_PORT_ATTR_RIF_ID: + attr_list[i].value.oid = resp.attr().rif_id(); + break; + case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: + attr_list[i].value.oid = resp.attr().tunnel_id(); + break; + case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: + attr_list[i].value.oid = resp.attr().bridge_id(); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: + attr_list[i].value.s32 = + convert_sai_bridge_port_fdb_learning_mode_t_to_sai( + resp.attr().fdb_learning_mode()); + break; + case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: + attr_list[i].value.u32 = resp.attr().max_learned_addresses(); + break; + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().fdb_learning_limit_violation_packet_action()); + break; + case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: + attr_list[i].value.booldata = resp.attr().admin_state(); + break; + case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: + attr_list[i].value.booldata = resp.attr().ingress_filtering(); + break; + case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: + attr_list[i].value.booldata = resp.attr().egress_filtering(); + break; + case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: + attr_list[i].value.oid = resp.attr().isolation_group(); + break; + case SAI_BRIDGE_PORT_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bridge_port_attribute(sai_object_id_t bridge_port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBridgePortAttributeRequest req; - lemming::dataplane::sai::GetBridgePortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(bridge_port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_bridge_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = bridge->GetBridgePortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BRIDGE_PORT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_bridge_port_type_t_to_sai(resp.attr().type()); - break; - case SAI_BRIDGE_PORT_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: - attr_list[i].value.s32 = convert_sai_bridge_port_tagging_mode_t_to_sai(resp.attr().tagging_mode()); - break; - case SAI_BRIDGE_PORT_ATTR_VLAN_ID: - attr_list[i].value.u16 = resp.attr().vlan_id(); - break; - case SAI_BRIDGE_PORT_ATTR_RIF_ID: - attr_list[i].value.oid = resp.attr().rif_id(); - break; - case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: - attr_list[i].value.oid = resp.attr().tunnel_id(); - break; - case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: - attr_list[i].value.oid = resp.attr().bridge_id(); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: - attr_list[i].value.s32 = convert_sai_bridge_port_fdb_learning_mode_t_to_sai(resp.attr().fdb_learning_mode()); - break; - case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: - attr_list[i].value.u32 = resp.attr().max_learned_addresses(); - break; - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().fdb_learning_limit_violation_packet_action()); - break; - case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: - attr_list[i].value.booldata = resp.attr().admin_state(); - break; - case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: - attr_list[i].value.booldata = resp.attr().ingress_filtering(); - break; - case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: - attr_list[i].value.booldata = resp.attr().egress_filtering(); - break; - case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: - attr_list[i].value.oid = resp.attr().isolation_group(); - break; +sai_status_t l_get_bridge_port_stats(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBridgePortStatsRequest req; + lemming::dataplane::sai::GetBridgePortStatsResponse resp; + grpc::ClientContext context; + req.set_oid(bridge_port_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_bridge_port_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = bridge->GetBridgePortStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_bridge_port_stats_ext(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_bridge_port_stats(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBridgePortStatsRequest req; - lemming::dataplane::sai::GetBridgePortStatsResponse resp; - grpc::ClientContext context; - req.set_oid(bridge_port_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_bridge_port_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = bridge->GetBridgePortStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_bridge_port_stats_ext(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_bridge_port_stats(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_bridge_port_stats(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/bridge.h b/dataplane/standalone/sai/bridge.h index c711118d2..1e1c39e05 100644 --- a/dataplane/standalone/sai/bridge.h +++ b/dataplane/standalone/sai/bridge.h @@ -25,34 +25,60 @@ extern "C" { extern const sai_bridge_api_t l_bridge; - -sai_status_t l_create_bridge(sai_object_id_t *bridge_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_bridge(sai_object_id_t* bridge_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_bridge(sai_object_id_t bridge_id); -sai_status_t l_set_bridge_attribute(sai_object_id_t bridge_id, const sai_attribute_t *attr); +sai_status_t l_set_bridge_attribute(sai_object_id_t bridge_id, + const sai_attribute_t* attr); -sai_status_t l_get_bridge_attribute(sai_object_id_t bridge_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_bridge_attribute(sai_object_id_t bridge_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_bridge_stats(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_bridge_stats(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_bridge_stats_ext(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_bridge_stats_ext(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); -sai_status_t l_clear_bridge_stats(sai_object_id_t bridge_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_bridge_stats(sai_object_id_t bridge_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_bridge_port(sai_object_id_t *bridge_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_bridge_port(sai_object_id_t* bridge_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_bridge_port(sai_object_id_t bridge_port_id); -sai_status_t l_set_bridge_port_attribute(sai_object_id_t bridge_port_id, const sai_attribute_t *attr); - -sai_status_t l_get_bridge_port_attribute(sai_object_id_t bridge_port_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_bridge_port_attribute(sai_object_id_t bridge_port_id, + const sai_attribute_t* attr); -sai_status_t l_get_bridge_port_stats(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_bridge_port_attribute(sai_object_id_t bridge_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_bridge_port_stats_ext(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_bridge_port_stats(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_bridge_port_stats(sai_object_id_t bridge_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_bridge_port_stats_ext(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); +sai_status_t l_clear_bridge_port_stats(sai_object_id_t bridge_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_BRIDGE_H_ diff --git a/dataplane/standalone/sai/buffer.cc b/dataplane/standalone/sai/buffer.cc index fa16cddea..6b8926ab9 100644 --- a/dataplane/standalone/sai/buffer.cc +++ b/dataplane/standalone/sai/buffer.cc @@ -13,645 +13,760 @@ // limitations under the License. #include "dataplane/standalone/sai/buffer.h" + +#include + +#include "dataplane/proto/sai/buffer.pb.h" +#include "dataplane/proto/sai/common.pb.h" #include "dataplane/standalone/sai/common.h" #include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/buffer.pb.h" -#include const sai_buffer_api_t l_buffer = { - .create_buffer_pool = l_create_buffer_pool, - .remove_buffer_pool = l_remove_buffer_pool, - .set_buffer_pool_attribute = l_set_buffer_pool_attribute, - .get_buffer_pool_attribute = l_get_buffer_pool_attribute, - .get_buffer_pool_stats = l_get_buffer_pool_stats, - .get_buffer_pool_stats_ext = l_get_buffer_pool_stats_ext, - .clear_buffer_pool_stats = l_clear_buffer_pool_stats, - .create_ingress_priority_group = l_create_ingress_priority_group, - .remove_ingress_priority_group = l_remove_ingress_priority_group, - .set_ingress_priority_group_attribute = l_set_ingress_priority_group_attribute, - .get_ingress_priority_group_attribute = l_get_ingress_priority_group_attribute, - .get_ingress_priority_group_stats = l_get_ingress_priority_group_stats, - .get_ingress_priority_group_stats_ext = l_get_ingress_priority_group_stats_ext, - .clear_ingress_priority_group_stats = l_clear_ingress_priority_group_stats, - .create_buffer_profile = l_create_buffer_profile, - .remove_buffer_profile = l_remove_buffer_profile, - .set_buffer_profile_attribute = l_set_buffer_profile_attribute, - .get_buffer_profile_attribute = l_get_buffer_profile_attribute, + .create_buffer_pool = l_create_buffer_pool, + .remove_buffer_pool = l_remove_buffer_pool, + .set_buffer_pool_attribute = l_set_buffer_pool_attribute, + .get_buffer_pool_attribute = l_get_buffer_pool_attribute, + .get_buffer_pool_stats = l_get_buffer_pool_stats, + .get_buffer_pool_stats_ext = l_get_buffer_pool_stats_ext, + .clear_buffer_pool_stats = l_clear_buffer_pool_stats, + .create_ingress_priority_group = l_create_ingress_priority_group, + .remove_ingress_priority_group = l_remove_ingress_priority_group, + .set_ingress_priority_group_attribute = + l_set_ingress_priority_group_attribute, + .get_ingress_priority_group_attribute = + l_get_ingress_priority_group_attribute, + .get_ingress_priority_group_stats = l_get_ingress_priority_group_stats, + .get_ingress_priority_group_stats_ext = + l_get_ingress_priority_group_stats_ext, + .clear_ingress_priority_group_stats = l_clear_ingress_priority_group_stats, + .create_buffer_profile = l_create_buffer_profile, + .remove_buffer_profile = l_remove_buffer_profile, + .set_buffer_profile_attribute = l_set_buffer_profile_attribute, + .get_buffer_profile_attribute = l_get_buffer_profile_attribute, + .set_ingress_priority_groups_attribute = + l_set_ingress_priority_groups_attribute, + .get_ingress_priority_groups_attribute = + l_get_ingress_priority_groups_attribute, }; - -lemming::dataplane::sai::CreateBufferPoolRequest convert_create_buffer_pool(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateBufferPoolRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BUFFER_POOL_ATTR_TYPE: - msg.set_type(convert_sai_buffer_pool_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BUFFER_POOL_ATTR_SIZE: - msg.set_size(attr_list[i].value.u64); - break; - case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: - msg.set_threshold_mode(convert_sai_buffer_pool_threshold_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BUFFER_POOL_ATTR_TAM: - msg.mutable_tam()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: - msg.set_xoff_size(attr_list[i].value.u64); - break; - case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: - msg.set_wred_profile_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateIngressPriorityGroupRequest convert_create_ingress_priority_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateIngressPriorityGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: - msg.set_buffer_profile(attr_list[i].value.oid); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: - msg.set_port(attr_list[i].value.oid); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: - msg.mutable_tam()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: - msg.set_index(attr_list[i].value.u8); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateBufferProfileRequest convert_create_buffer_profile(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateBufferProfileRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BUFFER_PROFILE_ATTR_POOL_ID: - msg.set_pool_id(attr_list[i].value.oid); - break; - case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: - msg.set_reserved_buffer_size(attr_list[i].value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: - msg.set_threshold_mode(convert_sai_buffer_profile_threshold_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: - msg.set_shared_dynamic_th(attr_list[i].value.s8); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: - msg.set_shared_static_th(attr_list[i].value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: - msg.set_xoff_th(attr_list[i].value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_TH: - msg.set_xon_th(attr_list[i].value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: - msg.set_xon_offset_th(attr_list[i].value.u64); - break; -} - -} -return msg; -} - -sai_status_t l_create_buffer_pool(sai_object_id_t *buffer_pool_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateBufferPoolRequest req = convert_create_buffer_pool(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateBufferPoolResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = buffer->CreateBufferPool(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (buffer_pool_id) { - *buffer_pool_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateBufferPoolRequest convert_create_buffer_pool( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateBufferPoolRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BUFFER_POOL_ATTR_TYPE: + msg.set_type( + convert_sai_buffer_pool_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BUFFER_POOL_ATTR_SIZE: + msg.set_size(attr_list[i].value.u64); + break; + case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: + msg.set_threshold_mode( + convert_sai_buffer_pool_threshold_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BUFFER_POOL_ATTR_TAM: + msg.mutable_tam()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: + msg.set_xoff_size(attr_list[i].value.u64); + break; + case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: + msg.set_wred_profile_id(attr_list[i].value.oid); + break; + case SAI_BUFFER_POOL_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateIngressPriorityGroupRequest +convert_create_ingress_priority_group(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIngressPriorityGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: + msg.set_buffer_profile(attr_list[i].value.oid); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: + msg.set_port(attr_list[i].value.oid); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: + msg.mutable_tam()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: + msg.set_index(attr_list[i].value.u8); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateBufferProfileRequest +convert_create_buffer_profile(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateBufferProfileRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BUFFER_PROFILE_ATTR_POOL_ID: + msg.set_pool_id(attr_list[i].value.oid); + break; + case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: + msg.set_reserved_buffer_size(attr_list[i].value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: + msg.set_threshold_mode( + convert_sai_buffer_profile_threshold_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: + msg.set_shared_dynamic_th(attr_list[i].value.s8); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: + msg.set_shared_static_th(attr_list[i].value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: + msg.set_xoff_th(attr_list[i].value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_TH: + msg.set_xon_th(attr_list[i].value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: + msg.set_xon_offset_th(attr_list[i].value.u64); + break; + } + } + return msg; +} + +sai_status_t l_create_buffer_pool(sai_object_id_t* buffer_pool_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateBufferPoolRequest req = + convert_create_buffer_pool(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateBufferPoolResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = buffer->CreateBufferPool(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (buffer_pool_id) { + *buffer_pool_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_buffer_pool(sai_object_id_t buffer_pool_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveBufferPoolRequest req; - lemming::dataplane::sai::RemoveBufferPoolResponse resp; - grpc::ClientContext context; - req.set_oid(buffer_pool_id); - - grpc::Status status = buffer->RemoveBufferPool(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_buffer_pool_attribute(sai_object_id_t buffer_pool_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetBufferPoolAttributeRequest req; - lemming::dataplane::sai::SetBufferPoolAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(buffer_pool_id); - - - - -switch (attr->id) { - - case SAI_BUFFER_POOL_ATTR_SIZE: - req.set_size(attr->value.u64); - break; - case SAI_BUFFER_POOL_ATTR_TAM: - req.mutable_tam()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: - req.set_xoff_size(attr->value.u64); - break; - case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: - req.set_wred_profile_id(attr->value.oid); - break; -} - - grpc::Status status = buffer->SetBufferPoolAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_buffer_pool_attribute(sai_object_id_t buffer_pool_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBufferPoolAttributeRequest req; - lemming::dataplane::sai::GetBufferPoolAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(buffer_pool_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_buffer_pool_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = buffer->GetBufferPoolAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BUFFER_POOL_ATTR_SHARED_SIZE: - attr_list[i].value.u64 = resp.attr().shared_size(); - break; - case SAI_BUFFER_POOL_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_buffer_pool_type_t_to_sai(resp.attr().type()); - break; - case SAI_BUFFER_POOL_ATTR_SIZE: - attr_list[i].value.u64 = resp.attr().size(); - break; - case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: - attr_list[i].value.s32 = convert_sai_buffer_pool_threshold_mode_t_to_sai(resp.attr().threshold_mode()); - break; - case SAI_BUFFER_POOL_ATTR_TAM: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam(), &attr_list[i].value.objlist.count); - break; - case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: - attr_list[i].value.u64 = resp.attr().xoff_size(); - break; - case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: - attr_list[i].value.oid = resp.attr().wred_profile_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_buffer_pool_stats(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBufferPoolStatsRequest req; - lemming::dataplane::sai::GetBufferPoolStatsResponse resp; - grpc::ClientContext context; - req.set_oid(buffer_pool_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_buffer_pool_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = buffer->GetBufferPoolStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_buffer_pool_stats_ext(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_buffer_pool_stats(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_ingress_priority_group(sai_object_id_t *ingress_priority_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIngressPriorityGroupRequest req = convert_create_ingress_priority_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIngressPriorityGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = buffer->CreateIngressPriorityGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ingress_priority_group_id) { - *ingress_priority_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_ingress_priority_group(sai_object_id_t ingress_priority_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIngressPriorityGroupRequest req; - lemming::dataplane::sai::RemoveIngressPriorityGroupResponse resp; - grpc::ClientContext context; - req.set_oid(ingress_priority_group_id); - - grpc::Status status = buffer->RemoveIngressPriorityGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_ingress_priority_group_attribute(sai_object_id_t ingress_priority_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetIngressPriorityGroupAttributeRequest req; - lemming::dataplane::sai::SetIngressPriorityGroupAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(ingress_priority_group_id); - - - - -switch (attr->id) { - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: - req.set_buffer_profile(attr->value.oid); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: - req.mutable_tam()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; -} - - grpc::Status status = buffer->SetIngressPriorityGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ingress_priority_group_attribute(sai_object_id_t ingress_priority_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIngressPriorityGroupAttributeRequest req; - lemming::dataplane::sai::GetIngressPriorityGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ingress_priority_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ingress_priority_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = buffer->GetIngressPriorityGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: - attr_list[i].value.oid = resp.attr().buffer_profile(); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: - attr_list[i].value.oid = resp.attr().port(); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam(), &attr_list[i].value.objlist.count); - break; - case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: - attr_list[i].value.u8 = resp.attr().index(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ingress_priority_group_stats(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIngressPriorityGroupStatsRequest req; - lemming::dataplane::sai::GetIngressPriorityGroupStatsResponse resp; - grpc::ClientContext context; - req.set_oid(ingress_priority_group_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_ingress_priority_group_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = buffer->GetIngressPriorityGroupStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ingress_priority_group_stats_ext(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_ingress_priority_group_stats(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_buffer_profile(sai_object_id_t *buffer_profile_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateBufferProfileRequest req = convert_create_buffer_profile(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateBufferProfileResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = buffer->CreateBufferProfile(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (buffer_profile_id) { - *buffer_profile_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveBufferPoolRequest req; + lemming::dataplane::sai::RemoveBufferPoolResponse resp; + grpc::ClientContext context; + req.set_oid(buffer_pool_id); + + grpc::Status status = buffer->RemoveBufferPool(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_buffer_pool_attribute(sai_object_id_t buffer_pool_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetBufferPoolAttributeRequest req; + lemming::dataplane::sai::SetBufferPoolAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(buffer_pool_id); + + switch (attr->id) { + case SAI_BUFFER_POOL_ATTR_SIZE: + req.set_size(attr->value.u64); + break; + case SAI_BUFFER_POOL_ATTR_TAM: + req.mutable_tam()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: + req.set_xoff_size(attr->value.u64); + break; + case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: + req.set_wred_profile_id(attr->value.oid); + break; + case SAI_BUFFER_POOL_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = buffer->SetBufferPoolAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_buffer_pool_attribute(sai_object_id_t buffer_pool_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBufferPoolAttributeRequest req; + lemming::dataplane::sai::GetBufferPoolAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(buffer_pool_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_buffer_pool_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = buffer->GetBufferPoolAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BUFFER_POOL_ATTR_SHARED_SIZE: + attr_list[i].value.u64 = resp.attr().shared_size(); + break; + case SAI_BUFFER_POOL_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_buffer_pool_type_t_to_sai(resp.attr().type()); + break; + case SAI_BUFFER_POOL_ATTR_SIZE: + attr_list[i].value.u64 = resp.attr().size(); + break; + case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: + attr_list[i].value.s32 = + convert_sai_buffer_pool_threshold_mode_t_to_sai( + resp.attr().threshold_mode()); + break; + case SAI_BUFFER_POOL_ATTR_TAM: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam(), + &attr_list[i].value.objlist.count); + break; + case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: + attr_list[i].value.u64 = resp.attr().xoff_size(); + break; + case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: + attr_list[i].value.oid = resp.attr().wred_profile_id(); + break; + case SAI_BUFFER_POOL_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_buffer_pool_stats(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBufferPoolStatsRequest req; + lemming::dataplane::sai::GetBufferPoolStatsResponse resp; + grpc::ClientContext context; + req.set_oid(buffer_pool_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_buffer_pool_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = buffer->GetBufferPoolStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_buffer_pool_stats_ext(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_buffer_pool_stats(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_ingress_priority_group( + sai_object_id_t* ingress_priority_group_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIngressPriorityGroupRequest req = + convert_create_ingress_priority_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIngressPriorityGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + buffer->CreateIngressPriorityGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ingress_priority_group_id) { + *ingress_priority_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_ingress_priority_group( + sai_object_id_t ingress_priority_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIngressPriorityGroupRequest req; + lemming::dataplane::sai::RemoveIngressPriorityGroupResponse resp; + grpc::ClientContext context; + req.set_oid(ingress_priority_group_id); + + grpc::Status status = + buffer->RemoveIngressPriorityGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_ingress_priority_group_attribute( + sai_object_id_t ingress_priority_group_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIngressPriorityGroupAttributeRequest req; + lemming::dataplane::sai::SetIngressPriorityGroupAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(ingress_priority_group_id); + + switch (attr->id) { + case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: + req.set_buffer_profile(attr->value.oid); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: + req.mutable_tam()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = + buffer->SetIngressPriorityGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ingress_priority_group_attribute( + sai_object_id_t ingress_priority_group_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIngressPriorityGroupAttributeRequest req; + lemming::dataplane::sai::GetIngressPriorityGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(ingress_priority_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_ingress_priority_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + buffer->GetIngressPriorityGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: + attr_list[i].value.oid = resp.attr().buffer_profile(); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: + attr_list[i].value.oid = resp.attr().port(); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam(), + &attr_list[i].value.objlist.count); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: + attr_list[i].value.u8 = resp.attr().index(); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ingress_priority_group_stats( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIngressPriorityGroupStatsRequest req; + lemming::dataplane::sai::GetIngressPriorityGroupStatsResponse resp; + grpc::ClientContext context; + req.set_oid(ingress_priority_group_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_ingress_priority_group_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = + buffer->GetIngressPriorityGroupStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ingress_priority_group_stats_ext( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_ingress_priority_group_stats( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_buffer_profile(sai_object_id_t* buffer_profile_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateBufferProfileRequest req = + convert_create_buffer_profile(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateBufferProfileResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = buffer->CreateBufferProfile(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (buffer_profile_id) { + *buffer_profile_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_buffer_profile(sai_object_id_t buffer_profile_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveBufferProfileRequest req; - lemming::dataplane::sai::RemoveBufferProfileResponse resp; - grpc::ClientContext context; - req.set_oid(buffer_profile_id); - - grpc::Status status = buffer->RemoveBufferProfile(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_buffer_profile_attribute(sai_object_id_t buffer_profile_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetBufferProfileAttributeRequest req; - lemming::dataplane::sai::SetBufferProfileAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(buffer_profile_id); - - - - -switch (attr->id) { - - case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: - req.set_reserved_buffer_size(attr->value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: - req.set_shared_dynamic_th(attr->value.s8); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: - req.set_shared_static_th(attr->value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: - req.set_xoff_th(attr->value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_TH: - req.set_xon_th(attr->value.u64); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: - req.set_xon_offset_th(attr->value.u64); - break; -} - - grpc::Status status = buffer->SetBufferProfileAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_buffer_profile_attribute(sai_object_id_t buffer_profile_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetBufferProfileAttributeRequest req; - lemming::dataplane::sai::GetBufferProfileAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(buffer_profile_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_buffer_profile_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = buffer->GetBufferProfileAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_BUFFER_PROFILE_ATTR_POOL_ID: - attr_list[i].value.oid = resp.attr().pool_id(); - break; - case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: - attr_list[i].value.u64 = resp.attr().reserved_buffer_size(); - break; - case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: - attr_list[i].value.s32 = convert_sai_buffer_profile_threshold_mode_t_to_sai(resp.attr().threshold_mode()); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: - attr_list[i].value.s8 = resp.attr().shared_dynamic_th(); - break; - case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: - attr_list[i].value.u64 = resp.attr().shared_static_th(); - break; - case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: - attr_list[i].value.u64 = resp.attr().xoff_th(); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_TH: - attr_list[i].value.u64 = resp.attr().xon_th(); - break; - case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: - attr_list[i].value.u64 = resp.attr().xon_offset_th(); - break; -} - - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveBufferProfileRequest req; + lemming::dataplane::sai::RemoveBufferProfileResponse resp; + grpc::ClientContext context; + req.set_oid(buffer_profile_id); + + grpc::Status status = buffer->RemoveBufferProfile(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_buffer_profile_attribute(sai_object_id_t buffer_profile_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetBufferProfileAttributeRequest req; + lemming::dataplane::sai::SetBufferProfileAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(buffer_profile_id); + + switch (attr->id) { + case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: + req.set_reserved_buffer_size(attr->value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: + req.set_shared_dynamic_th(attr->value.s8); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: + req.set_shared_static_th(attr->value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: + req.set_xoff_th(attr->value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_TH: + req.set_xon_th(attr->value.u64); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: + req.set_xon_offset_th(attr->value.u64); + break; + } + + grpc::Status status = buffer->SetBufferProfileAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_buffer_profile_attribute(sai_object_id_t buffer_profile_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetBufferProfileAttributeRequest req; + lemming::dataplane::sai::GetBufferProfileAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(buffer_profile_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_buffer_profile_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = buffer->GetBufferProfileAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_BUFFER_PROFILE_ATTR_POOL_ID: + attr_list[i].value.oid = resp.attr().pool_id(); + break; + case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: + attr_list[i].value.u64 = resp.attr().reserved_buffer_size(); + break; + case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: + attr_list[i].value.s32 = + convert_sai_buffer_profile_threshold_mode_t_to_sai( + resp.attr().threshold_mode()); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: + attr_list[i].value.s8 = resp.attr().shared_dynamic_th(); + break; + case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: + attr_list[i].value.u64 = resp.attr().shared_static_th(); + break; + case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: + attr_list[i].value.u64 = resp.attr().xoff_th(); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_TH: + attr_list[i].value.u64 = resp.attr().xon_th(); + break; + case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: + attr_list[i].value.u64 = resp.attr().xon_offset_th(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_ingress_priority_groups_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_get_ingress_priority_groups_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - diff --git a/dataplane/standalone/sai/buffer.h b/dataplane/standalone/sai/buffer.h index 90a3446d0..01f53d3ba 100644 --- a/dataplane/standalone/sai/buffer.h +++ b/dataplane/standalone/sai/buffer.h @@ -25,42 +25,84 @@ extern "C" { extern const sai_buffer_api_t l_buffer; - -sai_status_t l_create_buffer_pool(sai_object_id_t *buffer_pool_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_buffer_pool(sai_object_id_t* buffer_pool_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_buffer_pool(sai_object_id_t buffer_pool_id); -sai_status_t l_set_buffer_pool_attribute(sai_object_id_t buffer_pool_id, const sai_attribute_t *attr); +sai_status_t l_set_buffer_pool_attribute(sai_object_id_t buffer_pool_id, + const sai_attribute_t* attr); -sai_status_t l_get_buffer_pool_attribute(sai_object_id_t buffer_pool_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_buffer_pool_attribute(sai_object_id_t buffer_pool_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_buffer_pool_stats(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_buffer_pool_stats(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_buffer_pool_stats_ext(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_buffer_pool_stats_ext(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_buffer_pool_stats(sai_object_id_t buffer_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_buffer_pool_stats(sai_object_id_t buffer_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_ingress_priority_group(sai_object_id_t *ingress_priority_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ingress_priority_group( + sai_object_id_t* ingress_priority_group_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_remove_ingress_priority_group(sai_object_id_t ingress_priority_group_id); +sai_status_t l_remove_ingress_priority_group( + sai_object_id_t ingress_priority_group_id); -sai_status_t l_set_ingress_priority_group_attribute(sai_object_id_t ingress_priority_group_id, const sai_attribute_t *attr); +sai_status_t l_set_ingress_priority_group_attribute( + sai_object_id_t ingress_priority_group_id, const sai_attribute_t* attr); -sai_status_t l_get_ingress_priority_group_attribute(sai_object_id_t ingress_priority_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_ingress_priority_group_attribute( + sai_object_id_t ingress_priority_group_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_ingress_priority_group_stats(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_ingress_priority_group_stats( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, uint64_t* counters); -sai_status_t l_get_ingress_priority_group_stats_ext(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_ingress_priority_group_stats_ext( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_ingress_priority_group_stats(sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_ingress_priority_group_stats( + sai_object_id_t ingress_priority_group_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_buffer_profile(sai_object_id_t *buffer_profile_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_buffer_profile(sai_object_id_t* buffer_profile_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_buffer_profile(sai_object_id_t buffer_profile_id); -sai_status_t l_set_buffer_profile_attribute(sai_object_id_t buffer_profile_id, const sai_attribute_t *attr); +sai_status_t l_set_buffer_profile_attribute(sai_object_id_t buffer_profile_id, + const sai_attribute_t* attr); + +sai_status_t l_get_buffer_profile_attribute(sai_object_id_t buffer_profile_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_buffer_profile_attribute(sai_object_id_t buffer_profile_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_ingress_priority_groups_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); +sai_status_t l_get_ingress_priority_groups_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_BUFFER_H_ diff --git a/dataplane/standalone/sai/common.h b/dataplane/standalone/sai/common.h index 46d0be89a..2ed7b09ed 100644 --- a/dataplane/standalone/sai/common.h +++ b/dataplane/standalone/sai/common.h @@ -34,6 +34,7 @@ #include "dataplane/proto/sai/generic_programmable.grpc.pb.h" #include "dataplane/proto/sai/hash.grpc.pb.h" #include "dataplane/proto/sai/hostif.grpc.pb.h" +#include "dataplane/proto/sai/icmp_echo.grpc.pb.h" #include "dataplane/proto/sai/ipmc.grpc.pb.h" #include "dataplane/proto/sai/ipmc_group.grpc.pb.h" #include "dataplane/proto/sai/ipsec.grpc.pb.h" @@ -91,6 +92,7 @@ extern std::unique_ptr hash; extern std::unique_ptr hostif; extern std::unique_ptr ipmc_group; extern std::unique_ptr ipmc; +extern std::unique_ptr icmp_echo; extern std::unique_ptr ipsec; extern std::unique_ptr isolation_group; @@ -133,105 +135,105 @@ extern std::unique_ptr vlan; extern std::unique_ptr wred; std::string convert_from_ip_addr(sai_ip_addr_family_t addr_family, - const sai_ip_addr_t &addr); -std::string convert_from_ip_address(const sai_ip_address_t &val); + const sai_ip_addr_t& addr); +std::string convert_from_ip_address(const sai_ip_address_t& val); lemming::dataplane::sai::RouteEntry convert_from_route_entry( - const sai_route_entry_t &entry); + const sai_route_entry_t& entry); lemming::dataplane::sai::IpPrefix convert_from_ip_prefix( - const sai_ip_prefix_t &ip_prefix); + const sai_ip_prefix_t& ip_prefix); sai_ip_addr_t convert_to_ip_addr(std::string val); sai_ip_address_t convert_to_ip_address(std::string str); sai_route_entry_t convert_to_route_entry( - const lemming::dataplane::sai::RouteEntry &entry); + const lemming::dataplane::sai::RouteEntry& entry); sai_ip_prefix_t convert_to_ip_prefix( - const lemming::dataplane::sai::IpPrefix &ip_prefix); + const lemming::dataplane::sai::IpPrefix& ip_prefix); std::vector convert_to_oper_status( - const lemming::dataplane::sai::PortStateChangeNotificationResponse &resp); + const lemming::dataplane::sai::PortStateChangeNotificationResponse& resp); lemming::dataplane::sai::NeighborEntry convert_from_neighbor_entry( - const sai_neighbor_entry_t &entry); + const sai_neighbor_entry_t& entry); sai_neighbor_entry_t convert_to_neighbor_entry( - const lemming::dataplane::sai::NeighborEntry &entry); + const lemming::dataplane::sai::NeighborEntry& entry); void convert_to_acl_capability( - sai_acl_capability_t &out, - const lemming::dataplane::sai::ACLCapability &in); + sai_acl_capability_t& out, + const lemming::dataplane::sai::ACLCapability& in); lemming::dataplane::sai::AclActionData convert_from_acl_action_data( - const sai_acl_action_data_t &in, sai_object_id_t id); + const sai_acl_action_data_t& in, sai_object_id_t id); lemming::dataplane::sai::AclActionData convert_from_acl_action_data_action( - const sai_acl_action_data_t &in, sai_int32_t id); + const sai_acl_action_data_t& in, sai_int32_t id); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data_ip_type( - const sai_acl_field_data_t &in, sai_int32_t type, sai_int32_t mask); + const sai_acl_field_data_t& in, sai_int32_t type, sai_int32_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data_ip4( - const sai_acl_field_data_t &in, sai_ip4_t data, sai_ip4_t mask); + const sai_acl_field_data_t& in, sai_ip4_t data, sai_ip4_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data( - const sai_acl_field_data_t &in, sai_uint8_t data, sai_uint8_t mask); + const sai_acl_field_data_t& in, sai_uint8_t data, sai_uint8_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data( - const sai_acl_field_data_t &in, sai_uint16_t data, sai_uint16_t mask); + const sai_acl_field_data_t& in, sai_uint16_t data, sai_uint16_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data( - const sai_acl_field_data_t &in, sai_uint32_t data, sai_uint32_t mask); + const sai_acl_field_data_t& in, sai_uint32_t data, sai_uint32_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data( - const sai_acl_field_data_t &in, sai_object_id_t data); + const sai_acl_field_data_t& in, sai_object_id_t data); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data_ip6( - const sai_acl_field_data_t &in, const sai_ip6_t data, const sai_ip6_t mask); + const sai_acl_field_data_t& in, const sai_ip6_t data, const sai_ip6_t mask); lemming::dataplane::sai::AclFieldData convert_from_acl_field_data_mac( - const sai_acl_field_data_t &in, const sai_mac_t data, const sai_mac_t mask); + const sai_acl_field_data_t& in, const sai_mac_t data, const sai_mac_t mask); sai_acl_action_data_t convert_to_acl_action_data( - const lemming::dataplane::sai::AclActionData &in, uint64_t id); + const lemming::dataplane::sai::AclActionData& in, uint64_t id); sai_acl_action_data_t convert_to_acl_action_data_action( - const lemming::dataplane::sai::AclActionData &in, + const lemming::dataplane::sai::AclActionData& in, lemming::dataplane::sai::PacketAction val); sai_acl_field_data_t convert_to_acl_field_data( - const lemming::dataplane::sai::AclFieldData &in, std::string data, + const lemming::dataplane::sai::AclFieldData& in, std::string data, std::string mask); sai_acl_field_data_t convert_to_acl_field_data_u8( - const lemming::dataplane::sai::AclFieldData &in, sai_uint8_t data, + const lemming::dataplane::sai::AclFieldData& in, sai_uint8_t data, sai_uint8_t mask); sai_acl_field_data_t convert_to_acl_field_data_u16( - const lemming::dataplane::sai::AclFieldData &in, sai_uint16_t data, + const lemming::dataplane::sai::AclFieldData& in, sai_uint16_t data, sai_uint16_t mask); sai_acl_field_data_t convert_to_acl_field_data_u32( - const lemming::dataplane::sai::AclFieldData &in, sai_uint32_t data, + const lemming::dataplane::sai::AclFieldData& in, sai_uint32_t data, sai_uint32_t mask); sai_acl_field_data_t convert_to_acl_field_data( - const lemming::dataplane::sai::AclFieldData &in, sai_object_id_t data); + const lemming::dataplane::sai::AclFieldData& in, sai_object_id_t data); sai_acl_field_data_t convert_to_acl_field_data_ip6( - const lemming::dataplane::sai::AclFieldData &in, std::string data, + const lemming::dataplane::sai::AclFieldData& in, std::string data, std::string mask); sai_acl_field_data_t convert_to_acl_field_data_mac( - const lemming::dataplane::sai::AclFieldData &in, const std::string data, + const lemming::dataplane::sai::AclFieldData& in, const std::string data, const std::string mask); sai_acl_field_data_t convert_to_acl_field_data_ip_type( - const lemming::dataplane::sai::AclFieldData &in, + const lemming::dataplane::sai::AclFieldData& in, lemming::dataplane::sai::AclIpType type); // copy_list copies a scalar proto list to an attribute. // Note: It is expected that the attribute list contains preallocated memory. template -void copy_list(S *dst, const google::protobuf::RepeatedField &src, - uint32_t *attr_len) { +void copy_list(S* dst, const google::protobuf::RepeatedField& src, + uint32_t* attr_len) { // It's not safe to just memcpy this because in some cases to proto types are // larger than the corresponding sai types. *attr_len = @@ -264,7 +266,7 @@ class PortStateReactor StartRead(&resp); } - void OnDone(const grpc::Status &status) override { + void OnDone(const grpc::Status& status) override { if (status.ok()) { LOG(INFO) << "PortStateChangeNotification RPC succeeded."; } else { @@ -299,7 +301,7 @@ class PortStateReactor StartRead(&resp); } - void OnDone(const grpc::Status &status) override { + void OnDone(const grpc::Status& status) override { if (status.ok()) { LOG(INFO) << "PortStateChangeNotification RPC succeeded."; } else { diff --git a/dataplane/standalone/sai/counter.cc b/dataplane/standalone/sai/counter.cc index 2732d5aed..468d84219 100644 --- a/dataplane/standalone/sai/counter.cc +++ b/dataplane/standalone/sai/counter.cc @@ -13,204 +13,246 @@ // limitations under the License. #include "dataplane/standalone/sai/counter.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/counter.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_counter_api_t l_counter = { - .create_counter = l_create_counter, - .remove_counter = l_remove_counter, - .set_counter_attribute = l_set_counter_attribute, - .get_counter_attribute = l_get_counter_attribute, - .get_counter_stats = l_get_counter_stats, - .get_counter_stats_ext = l_get_counter_stats_ext, - .clear_counter_stats = l_clear_counter_stats, + .create_counter = l_create_counter, + .remove_counter = l_remove_counter, + .set_counter_attribute = l_set_counter_attribute, + .get_counter_attribute = l_get_counter_attribute, + .get_counter_stats = l_get_counter_stats, + .get_counter_stats_ext = l_get_counter_stats_ext, + .clear_counter_stats = l_clear_counter_stats, }; +lemming::dataplane::sai::CreateCounterRequest convert_create_counter( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateCounterRequest msg; -lemming::dataplane::sai::CreateCounterRequest convert_create_counter(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_COUNTER_ATTR_TYPE: + msg.set_type( + convert_sai_counter_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_COUNTER_ATTR_LABEL: + msg.set_label(attr_list[i].value.chardata); + break; + case SAI_COUNTER_ATTR_ENABLE_PACKET_COUNT: + msg.set_enable_packet_count(attr_list[i].value.booldata); + break; + case SAI_COUNTER_ATTR_ENABLE_BYTE_COUNT: + msg.set_enable_byte_count(attr_list[i].value.booldata); + break; + case SAI_COUNTER_ATTR_OBJECT_TYPE: + msg.set_object_type( + convert_sai_object_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_COUNTER_ATTR_STAT_ID_LIST: + msg.mutable_stat_id_list()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + } + } + return msg; +} -lemming::dataplane::sai::CreateCounterRequest msg; +sai_status_t l_create_counter(sai_object_id_t* counter_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::CreateCounterRequest req = + convert_create_counter(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateCounterResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = counter->CreateCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (counter_id) { + *counter_id = resp.oid(); + } -switch (attr_list[i].id) { - - case SAI_COUNTER_ATTR_TYPE: - msg.set_type(convert_sai_counter_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_COUNTER_ATTR_LABEL: - msg.set_label(attr_list[i].value.chardata); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_remove_counter(sai_object_id_t counter_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_counter(sai_object_id_t *counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateCounterRequest req = convert_create_counter(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateCounterResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = counter->CreateCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (counter_id) { - *counter_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveCounterRequest req; + lemming::dataplane::sai::RemoveCounterResponse resp; + grpc::ClientContext context; + req.set_oid(counter_id); -sai_status_t l_remove_counter(sai_object_id_t counter_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveCounterRequest req; - lemming::dataplane::sai::RemoveCounterResponse resp; - grpc::ClientContext context; - req.set_oid(counter_id); - - grpc::Status status = counter->RemoveCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = counter->RemoveCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_set_counter_attribute(sai_object_id_t counter_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetCounterAttributeRequest req; - lemming::dataplane::sai::SetCounterAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(counter_id); - - - - -switch (attr->id) { - - case SAI_COUNTER_ATTR_LABEL: - req.set_label(attr->value.chardata); - break; + return SAI_STATUS_SUCCESS; } - grpc::Status status = counter->SetCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_counter_attribute(sai_object_id_t counter_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_counter_attribute(sai_object_id_t counter_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetCounterAttributeRequest req; - lemming::dataplane::sai::GetCounterAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(counter_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_counter_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = counter->GetCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_COUNTER_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_counter_type_t_to_sai(resp.attr().type()); - break; - case SAI_COUNTER_ATTR_LABEL: - strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); - break; -} + lemming::dataplane::sai::SetCounterAttributeRequest req; + lemming::dataplane::sai::SetCounterAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(counter_id); + + switch (attr->id) { + case SAI_COUNTER_ATTR_LABEL: + req.set_label(attr->value.chardata); + break; + case SAI_COUNTER_ATTR_STAT_ID_LIST: + req.mutable_stat_id_list()->Add( + attr->value.s32list.list, + attr->value.s32list.list + attr->value.s32list.count); + break; + } + + grpc::Status status = counter->SetCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_counter_stats(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetCounterStatsRequest req; - lemming::dataplane::sai::GetCounterStatsResponse resp; - grpc::ClientContext context; - req.set_oid(counter_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_counter_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = counter->GetCounterStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_counter_attribute(sai_object_id_t counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetCounterAttributeRequest req; + lemming::dataplane::sai::GetCounterAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(counter_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_counter_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = counter->GetCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_COUNTER_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_counter_type_t_to_sai(resp.attr().type()); + break; + case SAI_COUNTER_ATTR_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; + case SAI_COUNTER_ATTR_ENABLE_PACKET_COUNT: + attr_list[i].value.booldata = resp.attr().enable_packet_count(); + break; + case SAI_COUNTER_ATTR_ENABLE_BYTE_COUNT: + attr_list[i].value.booldata = resp.attr().enable_byte_count(); + break; + case SAI_COUNTER_ATTR_OBJECT_TYPE: + attr_list[i].value.s32 = + convert_sai_object_type_t_to_sai(resp.attr().object_type()); + break; + case SAI_COUNTER_ATTR_STAT_ID_LIST: + copy_list(attr_list[i].value.s32list.list, resp.attr().stat_id_list(), + &attr_list[i].value.s32list.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_counter_stats_ext(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_counter_stats(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetCounterStatsRequest req; + lemming::dataplane::sai::GetCounterStatsResponse resp; + grpc::ClientContext context; + req.set_oid(counter_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_counter_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = counter->GetCounterStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_counter_stats(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_counter_stats_ext(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_clear_counter_stats(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/counter.h b/dataplane/standalone/sai/counter.h index 15cdb3bd3..5eb15a52c 100644 --- a/dataplane/standalone/sai/counter.h +++ b/dataplane/standalone/sai/counter.h @@ -25,20 +25,31 @@ extern "C" { extern const sai_counter_api_t l_counter; - -sai_status_t l_create_counter(sai_object_id_t *counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_counter(sai_object_id_t* counter_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_counter(sai_object_id_t counter_id); -sai_status_t l_set_counter_attribute(sai_object_id_t counter_id, const sai_attribute_t *attr); - -sai_status_t l_get_counter_attribute(sai_object_id_t counter_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_counter_attribute(sai_object_id_t counter_id, + const sai_attribute_t* attr); -sai_status_t l_get_counter_stats(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_counter_attribute(sai_object_id_t counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_counter_stats_ext(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_counter_stats(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_counter_stats(sai_object_id_t counter_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_counter_stats_ext(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); +sai_status_t l_clear_counter_stats(sai_object_id_t counter_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_COUNTER_H_ diff --git a/dataplane/standalone/sai/dash_acl.cc b/dataplane/standalone/sai/dash_acl.cc index a6753abab..7f5e63c16 100644 --- a/dataplane/standalone/sai/dash_acl.cc +++ b/dataplane/standalone/sai/dash_acl.cc @@ -13,25 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_acl.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_acl.pb.h" -#include - -const sai_dash_acl_api_t l_dash_acl = { -}; - - - - - - - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_acl.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_acl_api_t l_dash_acl = {}; diff --git a/dataplane/standalone/sai/dash_acl.h b/dataplane/standalone/sai/dash_acl.h index 7f404ea22..eeca9337c 100644 --- a/dataplane/standalone/sai/dash_acl.h +++ b/dataplane/standalone/sai/dash_acl.h @@ -25,18 +25,4 @@ extern "C" { extern const sai_dash_acl_api_t l_dash_acl; - - - - - - - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_ACL_H_ diff --git a/dataplane/standalone/sai/dash_appliance.cc b/dataplane/standalone/sai/dash_appliance.cc new file mode 100644 index 000000000..31760f8e4 --- /dev/null +++ b/dataplane/standalone/sai/dash_appliance.cc @@ -0,0 +1,24 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dataplane/standalone/sai/dash_appliance.h" + +#include + +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_appliance.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" + +const sai_dash_appliance_api_t l_dash_appliance = {}; diff --git a/dataplane/standalone/sai/dash_appliance.h b/dataplane/standalone/sai/dash_appliance.h new file mode 100644 index 000000000..795343318 --- /dev/null +++ b/dataplane/standalone/sai/dash_appliance.h @@ -0,0 +1,28 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DATAPLANE_STANDALONE_SAI_DASH_APPLIANCE_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_APPLIANCE_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_appliance_api_t l_dash_appliance; + +#endif // DATAPLANE_STANDALONE_SAI_DASH_APPLIANCE_H_ diff --git a/dataplane/standalone/sai/dash_direction_lookup.cc b/dataplane/standalone/sai/dash_direction_lookup.cc index 701021e10..240d6c9d7 100644 --- a/dataplane/standalone/sai/dash_direction_lookup.cc +++ b/dataplane/standalone/sai/dash_direction_lookup.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_direction_lookup.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_direction_lookup.pb.h" -#include - -const sai_dash_direction_lookup_api_t l_dash_direction_lookup = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_direction_lookup.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_direction_lookup_api_t l_dash_direction_lookup = {}; diff --git a/dataplane/standalone/sai/dash_direction_lookup.h b/dataplane/standalone/sai/dash_direction_lookup.h index d2192a1e5..91bdd4434 100644 --- a/dataplane/standalone/sai/dash_direction_lookup.h +++ b/dataplane/standalone/sai/dash_direction_lookup.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_direction_lookup_api_t l_dash_direction_lookup; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_DIRECTION_LOOKUP_H_ diff --git a/dataplane/standalone/sai/dash_eni.cc b/dataplane/standalone/sai/dash_eni.cc index c3f82f59d..22c222c03 100644 --- a/dataplane/standalone/sai/dash_eni.cc +++ b/dataplane/standalone/sai/dash_eni.cc @@ -13,28 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_eni.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_eni.pb.h" -#include - -const sai_dash_eni_api_t l_dash_eni = { -}; - - - - - - - - - - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_eni.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_eni_api_t l_dash_eni = {}; diff --git a/dataplane/standalone/sai/dash_eni.h b/dataplane/standalone/sai/dash_eni.h index c3efe0029..1c2e07715 100644 --- a/dataplane/standalone/sai/dash_eni.h +++ b/dataplane/standalone/sai/dash_eni.h @@ -25,21 +25,4 @@ extern "C" { extern const sai_dash_eni_api_t l_dash_eni; - - - - - - - - - - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_ENI_H_ diff --git a/dataplane/standalone/sai/dash_flow.cc b/dataplane/standalone/sai/dash_flow.cc new file mode 100644 index 000000000..cf9a0b29b --- /dev/null +++ b/dataplane/standalone/sai/dash_flow.cc @@ -0,0 +1,24 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dataplane/standalone/sai/dash_flow.h" + +#include + +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_flow.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" + +const sai_dash_flow_api_t l_dash_flow = {}; diff --git a/dataplane/standalone/sai/dash_flow.h b/dataplane/standalone/sai/dash_flow.h new file mode 100644 index 000000000..4250be439 --- /dev/null +++ b/dataplane/standalone/sai/dash_flow.h @@ -0,0 +1,28 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DATAPLANE_STANDALONE_SAI_DASH_FLOW_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_FLOW_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_flow_api_t l_dash_flow; + +#endif // DATAPLANE_STANDALONE_SAI_DASH_FLOW_H_ diff --git a/dataplane/standalone/sai/dash_ha.cc b/dataplane/standalone/sai/dash_ha.cc new file mode 100644 index 000000000..890e2ed5e --- /dev/null +++ b/dataplane/standalone/sai/dash_ha.cc @@ -0,0 +1,24 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dataplane/standalone/sai/dash_ha.h" + +#include + +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_ha.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" + +const sai_dash_ha_api_t l_dash_ha = {}; diff --git a/dataplane/standalone/sai/dash_ha.h b/dataplane/standalone/sai/dash_ha.h new file mode 100644 index 000000000..2b902bdb1 --- /dev/null +++ b/dataplane/standalone/sai/dash_ha.h @@ -0,0 +1,28 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DATAPLANE_STANDALONE_SAI_DASH_HA_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_HA_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_ha_api_t l_dash_ha; + +#endif // DATAPLANE_STANDALONE_SAI_DASH_HA_H_ diff --git a/dataplane/standalone/sai/dash_inbound_routing.cc b/dataplane/standalone/sai/dash_inbound_routing.cc index 19c34f883..9b8ee82b9 100644 --- a/dataplane/standalone/sai/dash_inbound_routing.cc +++ b/dataplane/standalone/sai/dash_inbound_routing.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_inbound_routing.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_inbound_routing.pb.h" -#include - -const sai_dash_inbound_routing_api_t l_dash_inbound_routing = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_inbound_routing.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_inbound_routing_api_t l_dash_inbound_routing = {}; diff --git a/dataplane/standalone/sai/dash_inbound_routing.h b/dataplane/standalone/sai/dash_inbound_routing.h index 7b0403639..ec0b9f623 100644 --- a/dataplane/standalone/sai/dash_inbound_routing.h +++ b/dataplane/standalone/sai/dash_inbound_routing.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_inbound_routing_api_t l_dash_inbound_routing; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_INBOUND_ROUTING_H_ diff --git a/dataplane/standalone/sai/dash_meter.cc b/dataplane/standalone/sai/dash_meter.cc index 984034486..5a3366a07 100644 --- a/dataplane/standalone/sai/dash_meter.cc +++ b/dataplane/standalone/sai/dash_meter.cc @@ -13,31 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_meter.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_meter.pb.h" -#include - -const sai_dash_meter_api_t l_dash_meter = { -}; - - - - - - - - - - - - - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_meter.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_meter_api_t l_dash_meter = {}; diff --git a/dataplane/standalone/sai/dash_meter.h b/dataplane/standalone/sai/dash_meter.h index cfc14b98d..14f697647 100644 --- a/dataplane/standalone/sai/dash_meter.h +++ b/dataplane/standalone/sai/dash_meter.h @@ -24,25 +24,5 @@ extern "C" { } extern const sai_dash_meter_api_t l_dash_meter; - - - - - - - - - - - - - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_METER_H_ diff --git a/dataplane/standalone/sai/dash_outbound_ca_to_pa.cc b/dataplane/standalone/sai/dash_outbound_ca_to_pa.cc index 106947809..d058594fb 100644 --- a/dataplane/standalone/sai/dash_outbound_ca_to_pa.cc +++ b/dataplane/standalone/sai/dash_outbound_ca_to_pa.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_outbound_ca_to_pa.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_outbound_ca_to_pa.pb.h" -#include - -const sai_dash_outbound_ca_to_pa_api_t l_dash_outbound_ca_to_pa = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_outbound_ca_to_pa.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_outbound_ca_to_pa_api_t l_dash_outbound_ca_to_pa = {}; diff --git a/dataplane/standalone/sai/dash_outbound_ca_to_pa.h b/dataplane/standalone/sai/dash_outbound_ca_to_pa.h index 18f8aceea..e8a38813d 100644 --- a/dataplane/standalone/sai/dash_outbound_ca_to_pa.h +++ b/dataplane/standalone/sai/dash_outbound_ca_to_pa.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_outbound_ca_to_pa_api_t l_dash_outbound_ca_to_pa; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_OUTBOUND_CA_TO_PA_H_ diff --git a/dataplane/standalone/sai/dash_outbound_routing.cc b/dataplane/standalone/sai/dash_outbound_routing.cc index 2b29affbb..fcc1cede0 100644 --- a/dataplane/standalone/sai/dash_outbound_routing.cc +++ b/dataplane/standalone/sai/dash_outbound_routing.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_outbound_routing.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_outbound_routing.pb.h" -#include - -const sai_dash_outbound_routing_api_t l_dash_outbound_routing = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_outbound_routing.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_outbound_routing_api_t l_dash_outbound_routing = {}; diff --git a/dataplane/standalone/sai/dash_outbound_routing.h b/dataplane/standalone/sai/dash_outbound_routing.h index 925cabaf5..d7c793fdf 100644 --- a/dataplane/standalone/sai/dash_outbound_routing.h +++ b/dataplane/standalone/sai/dash_outbound_routing.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_outbound_routing_api_t l_dash_outbound_routing; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_OUTBOUND_ROUTING_H_ diff --git a/dataplane/standalone/sai/dash_pa_validation.cc b/dataplane/standalone/sai/dash_pa_validation.cc index 1987c7f8f..814c36c49 100644 --- a/dataplane/standalone/sai/dash_pa_validation.cc +++ b/dataplane/standalone/sai/dash_pa_validation.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_pa_validation.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_pa_validation.pb.h" -#include - -const sai_dash_pa_validation_api_t l_dash_pa_validation = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_pa_validation.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_pa_validation_api_t l_dash_pa_validation = {}; diff --git a/dataplane/standalone/sai/dash_pa_validation.h b/dataplane/standalone/sai/dash_pa_validation.h index e6e0d3e0a..c3f9faca8 100644 --- a/dataplane/standalone/sai/dash_pa_validation.h +++ b/dataplane/standalone/sai/dash_pa_validation.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_pa_validation_api_t l_dash_pa_validation; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_PA_VALIDATION_H_ diff --git a/dataplane/standalone/sai/dash_tunnel.cc b/dataplane/standalone/sai/dash_tunnel.cc new file mode 100644 index 000000000..b604b5073 --- /dev/null +++ b/dataplane/standalone/sai/dash_tunnel.cc @@ -0,0 +1,24 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dataplane/standalone/sai/dash_tunnel.h" + +#include + +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_tunnel.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" + +const sai_dash_tunnel_api_t l_dash_tunnel = {}; diff --git a/dataplane/standalone/sai/dash_tunnel.h b/dataplane/standalone/sai/dash_tunnel.h new file mode 100644 index 000000000..aff8b4554 --- /dev/null +++ b/dataplane/standalone/sai/dash_tunnel.h @@ -0,0 +1,28 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DATAPLANE_STANDALONE_SAI_DASH_TUNNEL_H_ +#define DATAPLANE_STANDALONE_SAI_DASH_TUNNEL_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_dash_tunnel_api_t l_dash_tunnel; + +#endif // DATAPLANE_STANDALONE_SAI_DASH_TUNNEL_H_ diff --git a/dataplane/standalone/sai/dash_vip.cc b/dataplane/standalone/sai/dash_vip.cc index ab8e131d3..3b2d79c1c 100644 --- a/dataplane/standalone/sai/dash_vip.cc +++ b/dataplane/standalone/sai/dash_vip.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_vip.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_vip.pb.h" -#include - -const sai_dash_vip_api_t l_dash_vip = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_vip.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_vip_api_t l_dash_vip = {}; diff --git a/dataplane/standalone/sai/dash_vip.h b/dataplane/standalone/sai/dash_vip.h index 09b408d73..921c9a6cb 100644 --- a/dataplane/standalone/sai/dash_vip.h +++ b/dataplane/standalone/sai/dash_vip.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_vip_api_t l_dash_vip; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_VIP_H_ diff --git a/dataplane/standalone/sai/dash_vnet.cc b/dataplane/standalone/sai/dash_vnet.cc index a16b13814..e33092f5c 100644 --- a/dataplane/standalone/sai/dash_vnet.cc +++ b/dataplane/standalone/sai/dash_vnet.cc @@ -13,19 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/dash_vnet.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/dash_vnet.pb.h" -#include - -const sai_dash_vnet_api_t l_dash_vnet = { -}; - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/dash_vnet.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_dash_vnet_api_t l_dash_vnet = {}; diff --git a/dataplane/standalone/sai/dash_vnet.h b/dataplane/standalone/sai/dash_vnet.h index cb10641e4..fdfc88aa5 100644 --- a/dataplane/standalone/sai/dash_vnet.h +++ b/dataplane/standalone/sai/dash_vnet.h @@ -25,12 +25,4 @@ extern "C" { extern const sai_dash_vnet_api_t l_dash_vnet; - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_DASH_VNET_H_ diff --git a/dataplane/standalone/sai/debug_counter.cc b/dataplane/standalone/sai/debug_counter.cc index 23ec8d7e9..87a371f94 100644 --- a/dataplane/standalone/sai/debug_counter.cc +++ b/dataplane/standalone/sai/debug_counter.cc @@ -13,179 +13,192 @@ // limitations under the License. #include "dataplane/standalone/sai/debug_counter.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/debug_counter.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_debug_counter_api_t l_debug_counter = { - .create_debug_counter = l_create_debug_counter, - .remove_debug_counter = l_remove_debug_counter, - .set_debug_counter_attribute = l_set_debug_counter_attribute, - .get_debug_counter_attribute = l_get_debug_counter_attribute, + .create_debug_counter = l_create_debug_counter, + .remove_debug_counter = l_remove_debug_counter, + .set_debug_counter_attribute = l_set_debug_counter_attribute, + .get_debug_counter_attribute = l_get_debug_counter_attribute, }; - -lemming::dataplane::sai::CreateDebugCounterRequest convert_create_debug_counter(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDebugCounterRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DEBUG_COUNTER_ATTR_TYPE: - msg.set_type(convert_sai_debug_counter_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: - msg.set_bind_method(convert_sai_debug_counter_bind_method_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: - msg.mutable_in_drop_reason_list()->CopyFrom(convert_list_sai_in_drop_reason_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: - msg.mutable_out_drop_reason_list()->CopyFrom(convert_list_sai_out_drop_reason_t_to_proto(attr_list[i].value.s32list)); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateDebugCounterRequest convert_create_debug_counter( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDebugCounterRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DEBUG_COUNTER_ATTR_TYPE: + msg.set_type( + convert_sai_debug_counter_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: + msg.set_bind_method(convert_sai_debug_counter_bind_method_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: + msg.mutable_in_drop_reason_list()->CopyFrom( + convert_list_sai_in_drop_reason_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: + msg.mutable_out_drop_reason_list()->CopyFrom( + convert_list_sai_out_drop_reason_t_to_proto( + attr_list[i].value.s32list)); + break; + } + } + return msg; } -sai_status_t l_create_debug_counter(sai_object_id_t *debug_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDebugCounterRequest req = convert_create_debug_counter(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDebugCounterResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = debug_counter->CreateDebugCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (debug_counter_id) { - *debug_counter_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_debug_counter(sai_object_id_t* debug_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDebugCounterRequest req = + convert_create_debug_counter(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDebugCounterResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = debug_counter->CreateDebugCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (debug_counter_id) { + *debug_counter_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_debug_counter(sai_object_id_t debug_counter_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDebugCounterRequest req; - lemming::dataplane::sai::RemoveDebugCounterResponse resp; - grpc::ClientContext context; - req.set_oid(debug_counter_id); - - grpc::Status status = debug_counter->RemoveDebugCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDebugCounterRequest req; + lemming::dataplane::sai::RemoveDebugCounterResponse resp; + grpc::ClientContext context; + req.set_oid(debug_counter_id); + + grpc::Status status = debug_counter->RemoveDebugCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_debug_counter_attribute(sai_object_id_t debug_counter_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDebugCounterAttributeRequest req; - lemming::dataplane::sai::SetDebugCounterAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(debug_counter_id); - - - - -switch (attr->id) { - - case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: - req.mutable_in_drop_reason_list()->CopyFrom(convert_list_sai_in_drop_reason_t_to_proto(attr->value.s32list)); - break; - case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: - req.mutable_out_drop_reason_list()->CopyFrom(convert_list_sai_out_drop_reason_t_to_proto(attr->value.s32list)); - break; +sai_status_t l_set_debug_counter_attribute(sai_object_id_t debug_counter_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDebugCounterAttributeRequest req; + lemming::dataplane::sai::SetDebugCounterAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(debug_counter_id); + + switch (attr->id) { + case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: + req.mutable_in_drop_reason_list()->CopyFrom( + convert_list_sai_in_drop_reason_t_to_proto(attr->value.s32list)); + break; + case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: + req.mutable_out_drop_reason_list()->CopyFrom( + convert_list_sai_out_drop_reason_t_to_proto(attr->value.s32list)); + break; + } + + grpc::Status status = + debug_counter->SetDebugCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = debug_counter->SetDebugCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_debug_counter_attribute(sai_object_id_t debug_counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDebugCounterAttributeRequest req; + lemming::dataplane::sai::GetDebugCounterAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(debug_counter_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_debug_counter_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + debug_counter->GetDebugCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DEBUG_COUNTER_ATTR_INDEX: + attr_list[i].value.u32 = resp.attr().index(); + break; + case SAI_DEBUG_COUNTER_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_debug_counter_type_t_to_sai(resp.attr().type()); + break; + case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: + attr_list[i].value.s32 = convert_sai_debug_counter_bind_method_t_to_sai( + resp.attr().bind_method()); + break; + case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: + convert_list_sai_in_drop_reason_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().in_drop_reason_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: + convert_list_sai_out_drop_reason_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().out_drop_reason_list(), + &attr_list[i].value.s32list.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_debug_counter_attribute(sai_object_id_t debug_counter_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDebugCounterAttributeRequest req; - lemming::dataplane::sai::GetDebugCounterAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(debug_counter_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_debug_counter_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = debug_counter->GetDebugCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DEBUG_COUNTER_ATTR_INDEX: - attr_list[i].value.u32 = resp.attr().index(); - break; - case SAI_DEBUG_COUNTER_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_debug_counter_type_t_to_sai(resp.attr().type()); - break; - case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: - attr_list[i].value.s32 = convert_sai_debug_counter_bind_method_t_to_sai(resp.attr().bind_method()); - break; - case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: - convert_list_sai_in_drop_reason_t_to_sai(attr_list[i].value.s32list.list, resp.attr().in_drop_reason_list(), &attr_list[i].value.s32list.count); - break; - case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: - convert_list_sai_out_drop_reason_t_to_sai(attr_list[i].value.s32list.list, resp.attr().out_drop_reason_list(), &attr_list[i].value.s32list.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/debug_counter.h b/dataplane/standalone/sai/debug_counter.h index efed3212b..c4abc3585 100644 --- a/dataplane/standalone/sai/debug_counter.h +++ b/dataplane/standalone/sai/debug_counter.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_debug_counter_api_t l_debug_counter; - -sai_status_t l_create_debug_counter(sai_object_id_t *debug_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_debug_counter(sai_object_id_t* debug_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_debug_counter(sai_object_id_t debug_counter_id); -sai_status_t l_set_debug_counter_attribute(sai_object_id_t debug_counter_id, const sai_attribute_t *attr); - -sai_status_t l_get_debug_counter_attribute(sai_object_id_t debug_counter_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_debug_counter_attribute(sai_object_id_t debug_counter_id, + const sai_attribute_t* attr); +sai_status_t l_get_debug_counter_attribute(sai_object_id_t debug_counter_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_DEBUG_COUNTER_H_ diff --git a/dataplane/standalone/sai/dtel.cc b/dataplane/standalone/sai/dtel.cc index 9fe61bfdb..68794c5e5 100644 --- a/dataplane/standalone/sai/dtel.cc +++ b/dataplane/standalone/sai/dtel.cc @@ -13,924 +13,920 @@ // limitations under the License. #include "dataplane/standalone/sai/dtel.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/dtel.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_dtel_api_t l_dtel = { - .create_dtel = l_create_dtel, - .remove_dtel = l_remove_dtel, - .set_dtel_attribute = l_set_dtel_attribute, - .get_dtel_attribute = l_get_dtel_attribute, - .create_dtel_queue_report = l_create_dtel_queue_report, - .remove_dtel_queue_report = l_remove_dtel_queue_report, - .set_dtel_queue_report_attribute = l_set_dtel_queue_report_attribute, - .get_dtel_queue_report_attribute = l_get_dtel_queue_report_attribute, - .create_dtel_int_session = l_create_dtel_int_session, - .remove_dtel_int_session = l_remove_dtel_int_session, - .set_dtel_int_session_attribute = l_set_dtel_int_session_attribute, - .get_dtel_int_session_attribute = l_get_dtel_int_session_attribute, - .create_dtel_report_session = l_create_dtel_report_session, - .remove_dtel_report_session = l_remove_dtel_report_session, - .set_dtel_report_session_attribute = l_set_dtel_report_session_attribute, - .get_dtel_report_session_attribute = l_get_dtel_report_session_attribute, - .create_dtel_event = l_create_dtel_event, - .remove_dtel_event = l_remove_dtel_event, - .set_dtel_event_attribute = l_set_dtel_event_attribute, - .get_dtel_event_attribute = l_get_dtel_event_attribute, + .create_dtel = l_create_dtel, + .remove_dtel = l_remove_dtel, + .set_dtel_attribute = l_set_dtel_attribute, + .get_dtel_attribute = l_get_dtel_attribute, + .create_dtel_queue_report = l_create_dtel_queue_report, + .remove_dtel_queue_report = l_remove_dtel_queue_report, + .set_dtel_queue_report_attribute = l_set_dtel_queue_report_attribute, + .get_dtel_queue_report_attribute = l_get_dtel_queue_report_attribute, + .create_dtel_int_session = l_create_dtel_int_session, + .remove_dtel_int_session = l_remove_dtel_int_session, + .set_dtel_int_session_attribute = l_set_dtel_int_session_attribute, + .get_dtel_int_session_attribute = l_get_dtel_int_session_attribute, + .create_dtel_report_session = l_create_dtel_report_session, + .remove_dtel_report_session = l_remove_dtel_report_session, + .set_dtel_report_session_attribute = l_set_dtel_report_session_attribute, + .get_dtel_report_session_attribute = l_get_dtel_report_session_attribute, + .create_dtel_event = l_create_dtel_event, + .remove_dtel_event = l_remove_dtel_event, + .set_dtel_event_attribute = l_set_dtel_event_attribute, + .get_dtel_event_attribute = l_get_dtel_event_attribute, }; - -lemming::dataplane::sai::CreateDtelRequest convert_create_dtel(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDtelRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: - msg.set_int_endpoint_enable(attr_list[i].value.booldata); - break; - case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: - msg.set_int_transit_enable(attr_list[i].value.booldata); - break; - case SAI_DTEL_ATTR_POSTCARD_ENABLE: - msg.set_postcard_enable(attr_list[i].value.booldata); - break; - case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: - msg.set_drop_report_enable(attr_list[i].value.booldata); - break; - case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: - msg.set_queue_report_enable(attr_list[i].value.booldata); - break; - case SAI_DTEL_ATTR_SWITCH_ID: - msg.set_switch_id(attr_list[i].value.u32); - break; - case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: - msg.set_flow_state_clear_cycle(attr_list[i].value.u16); - break; - case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: - msg.set_latency_sensitivity(attr_list[i].value.u8); - break; - case SAI_DTEL_ATTR_SINK_PORT_LIST: - msg.mutable_sink_port_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_DTEL_ATTR_INT_L4_DSCP: - *msg.mutable_int_l4_dscp() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateDtelQueueReportRequest convert_create_dtel_queue_report(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDtelQueueReportRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: - msg.set_queue_id(attr_list[i].value.oid); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: - msg.set_depth_threshold(attr_list[i].value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: - msg.set_latency_threshold(attr_list[i].value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: - msg.set_breach_quota(attr_list[i].value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: - msg.set_tail_drop(attr_list[i].value.booldata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateDtelIntSessionRequest convert_create_dtel_int_session(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDtelIntSessionRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: - msg.set_max_hop_count(attr_list[i].value.u8); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: - msg.set_collect_switch_id(attr_list[i].value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: - msg.set_collect_switch_ports(attr_list[i].value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: - msg.set_collect_ingress_timestamp(attr_list[i].value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: - msg.set_collect_egress_timestamp(attr_list[i].value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: - msg.set_collect_queue_info(attr_list[i].value.booldata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateDtelReportSessionRequest convert_create_dtel_report_session(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDtelReportSessionRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: - msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: - msg.set_virtual_router_id(attr_list[i].value.oid); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: - msg.set_truncate_size(attr_list[i].value.u16); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: - msg.set_udp_dst_port(attr_list[i].value.u16); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateDtelEventRequest convert_create_dtel_event(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateDtelEventRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_EVENT_ATTR_TYPE: - msg.set_type(convert_sai_dtel_event_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: - msg.set_report_session(attr_list[i].value.oid); - break; - case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: - msg.set_dscp_value(attr_list[i].value.u8); - break; -} - -} -return msg; -} - -sai_status_t l_create_dtel(sai_object_id_t *dtel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDtelRequest req = convert_create_dtel(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDtelResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = dtel->CreateDtel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (dtel_id) { - *dtel_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateDtelRequest convert_create_dtel( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDtelRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: + msg.set_int_endpoint_enable(attr_list[i].value.booldata); + break; + case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: + msg.set_int_transit_enable(attr_list[i].value.booldata); + break; + case SAI_DTEL_ATTR_POSTCARD_ENABLE: + msg.set_postcard_enable(attr_list[i].value.booldata); + break; + case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: + msg.set_drop_report_enable(attr_list[i].value.booldata); + break; + case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: + msg.set_queue_report_enable(attr_list[i].value.booldata); + break; + case SAI_DTEL_ATTR_SWITCH_ID: + msg.set_switch_id(attr_list[i].value.u32); + break; + case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: + msg.set_flow_state_clear_cycle(attr_list[i].value.u16); + break; + case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: + msg.set_latency_sensitivity(attr_list[i].value.u8); + break; + case SAI_DTEL_ATTR_SINK_PORT_LIST: + msg.mutable_sink_port_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_DTEL_ATTR_INT_L4_DSCP: + *msg.mutable_int_l4_dscp() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateDtelQueueReportRequest +convert_create_dtel_queue_report(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDtelQueueReportRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: + msg.set_queue_id(attr_list[i].value.oid); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: + msg.set_depth_threshold(attr_list[i].value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: + msg.set_latency_threshold(attr_list[i].value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: + msg.set_breach_quota(attr_list[i].value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: + msg.set_tail_drop(attr_list[i].value.booldata); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateDtelIntSessionRequest +convert_create_dtel_int_session(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDtelIntSessionRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: + msg.set_max_hop_count(attr_list[i].value.u8); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: + msg.set_collect_switch_id(attr_list[i].value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: + msg.set_collect_switch_ports(attr_list[i].value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: + msg.set_collect_ingress_timestamp(attr_list[i].value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: + msg.set_collect_egress_timestamp(attr_list[i].value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: + msg.set_collect_queue_info(attr_list[i].value.booldata); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateDtelReportSessionRequest +convert_create_dtel_report_session(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDtelReportSessionRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: + msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: + msg.set_virtual_router_id(attr_list[i].value.oid); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: + msg.set_truncate_size(attr_list[i].value.u16); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: + msg.set_udp_dst_port(attr_list[i].value.u16); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateDtelEventRequest convert_create_dtel_event( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateDtelEventRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_EVENT_ATTR_TYPE: + msg.set_type( + convert_sai_dtel_event_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: + msg.set_report_session(attr_list[i].value.oid); + break; + case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: + msg.set_dscp_value(attr_list[i].value.u8); + break; + } + } + return msg; +} + +sai_status_t l_create_dtel(sai_object_id_t* dtel_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDtelRequest req = + convert_create_dtel(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDtelResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = dtel->CreateDtel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (dtel_id) { + *dtel_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_dtel(sai_object_id_t dtel_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDtelRequest req; - lemming::dataplane::sai::RemoveDtelResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_id); - - grpc::Status status = dtel->RemoveDtel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_dtel_attribute(sai_object_id_t dtel_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDtelAttributeRequest req; - lemming::dataplane::sai::SetDtelAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_id); - - - - -switch (attr->id) { - - case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: - req.set_int_endpoint_enable(attr->value.booldata); - break; - case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: - req.set_int_transit_enable(attr->value.booldata); - break; - case SAI_DTEL_ATTR_POSTCARD_ENABLE: - req.set_postcard_enable(attr->value.booldata); - break; - case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: - req.set_drop_report_enable(attr->value.booldata); - break; - case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: - req.set_queue_report_enable(attr->value.booldata); - break; - case SAI_DTEL_ATTR_SWITCH_ID: - req.set_switch_id(attr->value.u32); - break; - case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: - req.set_flow_state_clear_cycle(attr->value.u16); - break; - case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: - req.set_latency_sensitivity(attr->value.u8); - break; - case SAI_DTEL_ATTR_SINK_PORT_LIST: - req.mutable_sink_port_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_DTEL_ATTR_INT_L4_DSCP: - *req.mutable_int_l4_dscp() = convert_from_acl_field_data( attr->value.aclfield, attr->value.aclfield.data.u8, attr->value.aclfield.mask.u8 ); - break; -} - - grpc::Status status = dtel->SetDtelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_dtel_attribute(sai_object_id_t dtel_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDtelAttributeRequest req; - lemming::dataplane::sai::GetDtelAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(dtel_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_dtel_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = dtel->GetDtelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: - attr_list[i].value.booldata = resp.attr().int_endpoint_enable(); - break; - case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: - attr_list[i].value.booldata = resp.attr().int_transit_enable(); - break; - case SAI_DTEL_ATTR_POSTCARD_ENABLE: - attr_list[i].value.booldata = resp.attr().postcard_enable(); - break; - case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: - attr_list[i].value.booldata = resp.attr().drop_report_enable(); - break; - case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: - attr_list[i].value.booldata = resp.attr().queue_report_enable(); - break; - case SAI_DTEL_ATTR_SWITCH_ID: - attr_list[i].value.u32 = resp.attr().switch_id(); - break; - case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: - attr_list[i].value.u16 = resp.attr().flow_state_clear_cycle(); - break; - case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: - attr_list[i].value.u8 = resp.attr().latency_sensitivity(); - break; - case SAI_DTEL_ATTR_SINK_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().sink_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_DTEL_ATTR_INT_L4_DSCP: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().int_l4_dscp(), resp.attr().int_l4_dscp().data_uint(), resp.attr().int_l4_dscp().mask_uint()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_dtel_queue_report(sai_object_id_t *dtel_queue_report_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDtelQueueReportRequest req = convert_create_dtel_queue_report(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDtelQueueReportResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = dtel->CreateDtelQueueReport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (dtel_queue_report_id) { - *dtel_queue_report_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDtelRequest req; + lemming::dataplane::sai::RemoveDtelResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_id); + + grpc::Status status = dtel->RemoveDtel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_dtel_attribute(sai_object_id_t dtel_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDtelAttributeRequest req; + lemming::dataplane::sai::SetDtelAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_id); + + switch (attr->id) { + case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: + req.set_int_endpoint_enable(attr->value.booldata); + break; + case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: + req.set_int_transit_enable(attr->value.booldata); + break; + case SAI_DTEL_ATTR_POSTCARD_ENABLE: + req.set_postcard_enable(attr->value.booldata); + break; + case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: + req.set_drop_report_enable(attr->value.booldata); + break; + case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: + req.set_queue_report_enable(attr->value.booldata); + break; + case SAI_DTEL_ATTR_SWITCH_ID: + req.set_switch_id(attr->value.u32); + break; + case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: + req.set_flow_state_clear_cycle(attr->value.u16); + break; + case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: + req.set_latency_sensitivity(attr->value.u8); + break; + case SAI_DTEL_ATTR_SINK_PORT_LIST: + req.mutable_sink_port_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_DTEL_ATTR_INT_L4_DSCP: + *req.mutable_int_l4_dscp() = convert_from_acl_field_data( + attr->value.aclfield, attr->value.aclfield.data.u8, + attr->value.aclfield.mask.u8); + break; + } + + grpc::Status status = dtel->SetDtelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_dtel_attribute(sai_object_id_t dtel_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDtelAttributeRequest req; + lemming::dataplane::sai::GetDtelAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(dtel_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_dtel_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = dtel->GetDtelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: + attr_list[i].value.booldata = resp.attr().int_endpoint_enable(); + break; + case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: + attr_list[i].value.booldata = resp.attr().int_transit_enable(); + break; + case SAI_DTEL_ATTR_POSTCARD_ENABLE: + attr_list[i].value.booldata = resp.attr().postcard_enable(); + break; + case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: + attr_list[i].value.booldata = resp.attr().drop_report_enable(); + break; + case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: + attr_list[i].value.booldata = resp.attr().queue_report_enable(); + break; + case SAI_DTEL_ATTR_SWITCH_ID: + attr_list[i].value.u32 = resp.attr().switch_id(); + break; + case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: + attr_list[i].value.u16 = resp.attr().flow_state_clear_cycle(); + break; + case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: + attr_list[i].value.u8 = resp.attr().latency_sensitivity(); + break; + case SAI_DTEL_ATTR_SINK_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().sink_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_DTEL_ATTR_INT_L4_DSCP: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().int_l4_dscp(), resp.attr().int_l4_dscp().data_uint(), + resp.attr().int_l4_dscp().mask_uint()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_dtel_queue_report(sai_object_id_t* dtel_queue_report_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDtelQueueReportRequest req = + convert_create_dtel_queue_report(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDtelQueueReportResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = dtel->CreateDtelQueueReport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (dtel_queue_report_id) { + *dtel_queue_report_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_dtel_queue_report(sai_object_id_t dtel_queue_report_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDtelQueueReportRequest req; - lemming::dataplane::sai::RemoveDtelQueueReportResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_queue_report_id); - - grpc::Status status = dtel->RemoveDtelQueueReport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_dtel_queue_report_attribute(sai_object_id_t dtel_queue_report_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDtelQueueReportAttributeRequest req; - lemming::dataplane::sai::SetDtelQueueReportAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_queue_report_id); - - - - -switch (attr->id) { - - case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: - req.set_depth_threshold(attr->value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: - req.set_latency_threshold(attr->value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: - req.set_breach_quota(attr->value.u32); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: - req.set_tail_drop(attr->value.booldata); - break; -} - - grpc::Status status = dtel->SetDtelQueueReportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_dtel_queue_report_attribute(sai_object_id_t dtel_queue_report_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDtelQueueReportAttributeRequest req; - lemming::dataplane::sai::GetDtelQueueReportAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(dtel_queue_report_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_dtel_queue_report_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = dtel->GetDtelQueueReportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: - attr_list[i].value.oid = resp.attr().queue_id(); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: - attr_list[i].value.u32 = resp.attr().depth_threshold(); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: - attr_list[i].value.u32 = resp.attr().latency_threshold(); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: - attr_list[i].value.u32 = resp.attr().breach_quota(); - break; - case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: - attr_list[i].value.booldata = resp.attr().tail_drop(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_dtel_int_session(sai_object_id_t *dtel_int_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDtelIntSessionRequest req = convert_create_dtel_int_session(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDtelIntSessionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = dtel->CreateDtelIntSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (dtel_int_session_id) { - *dtel_int_session_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDtelQueueReportRequest req; + lemming::dataplane::sai::RemoveDtelQueueReportResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_queue_report_id); + + grpc::Status status = dtel->RemoveDtelQueueReport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_dtel_queue_report_attribute( + sai_object_id_t dtel_queue_report_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDtelQueueReportAttributeRequest req; + lemming::dataplane::sai::SetDtelQueueReportAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_queue_report_id); + + switch (attr->id) { + case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: + req.set_depth_threshold(attr->value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: + req.set_latency_threshold(attr->value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: + req.set_breach_quota(attr->value.u32); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: + req.set_tail_drop(attr->value.booldata); + break; + } + + grpc::Status status = dtel->SetDtelQueueReportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_dtel_queue_report_attribute( + sai_object_id_t dtel_queue_report_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDtelQueueReportAttributeRequest req; + lemming::dataplane::sai::GetDtelQueueReportAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(dtel_queue_report_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_dtel_queue_report_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = dtel->GetDtelQueueReportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: + attr_list[i].value.oid = resp.attr().queue_id(); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: + attr_list[i].value.u32 = resp.attr().depth_threshold(); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: + attr_list[i].value.u32 = resp.attr().latency_threshold(); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: + attr_list[i].value.u32 = resp.attr().breach_quota(); + break; + case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: + attr_list[i].value.booldata = resp.attr().tail_drop(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_dtel_int_session(sai_object_id_t* dtel_int_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDtelIntSessionRequest req = + convert_create_dtel_int_session(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDtelIntSessionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = dtel->CreateDtelIntSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (dtel_int_session_id) { + *dtel_int_session_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_dtel_int_session(sai_object_id_t dtel_int_session_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDtelIntSessionRequest req; - lemming::dataplane::sai::RemoveDtelIntSessionResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_int_session_id); - - grpc::Status status = dtel->RemoveDtelIntSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_dtel_int_session_attribute(sai_object_id_t dtel_int_session_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDtelIntSessionAttributeRequest req; - lemming::dataplane::sai::SetDtelIntSessionAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_int_session_id); - - - - -switch (attr->id) { - - case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: - req.set_max_hop_count(attr->value.u8); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: - req.set_collect_switch_id(attr->value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: - req.set_collect_switch_ports(attr->value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: - req.set_collect_ingress_timestamp(attr->value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: - req.set_collect_egress_timestamp(attr->value.booldata); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: - req.set_collect_queue_info(attr->value.booldata); - break; -} - - grpc::Status status = dtel->SetDtelIntSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_dtel_int_session_attribute(sai_object_id_t dtel_int_session_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDtelIntSessionAttributeRequest req; - lemming::dataplane::sai::GetDtelIntSessionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(dtel_int_session_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_dtel_int_session_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = dtel->GetDtelIntSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: - attr_list[i].value.u8 = resp.attr().max_hop_count(); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: - attr_list[i].value.booldata = resp.attr().collect_switch_id(); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: - attr_list[i].value.booldata = resp.attr().collect_switch_ports(); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: - attr_list[i].value.booldata = resp.attr().collect_ingress_timestamp(); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: - attr_list[i].value.booldata = resp.attr().collect_egress_timestamp(); - break; - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: - attr_list[i].value.booldata = resp.attr().collect_queue_info(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_dtel_report_session(sai_object_id_t *dtel_report_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDtelReportSessionRequest req = convert_create_dtel_report_session(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDtelReportSessionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = dtel->CreateDtelReportSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (dtel_report_session_id) { - *dtel_report_session_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_dtel_report_session(sai_object_id_t dtel_report_session_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDtelReportSessionRequest req; - lemming::dataplane::sai::RemoveDtelReportSessionResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_report_session_id); - - grpc::Status status = dtel->RemoveDtelReportSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_dtel_report_session_attribute(sai_object_id_t dtel_report_session_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDtelReportSessionAttributeRequest req; - lemming::dataplane::sai::SetDtelReportSessionAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_report_session_id); - - - - -switch (attr->id) { - - case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: - req.set_src_ip(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: - req.set_virtual_router_id(attr->value.oid); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: - req.set_truncate_size(attr->value.u16); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: - req.set_udp_dst_port(attr->value.u16); - break; -} - - grpc::Status status = dtel->SetDtelReportSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_dtel_report_session_attribute(sai_object_id_t dtel_report_session_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDtelReportSessionAttributeRequest req; - lemming::dataplane::sai::GetDtelReportSessionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(dtel_report_session_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_dtel_report_session_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = dtel->GetDtelReportSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: - attr_list[i].value.oid = resp.attr().virtual_router_id(); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: - attr_list[i].value.u16 = resp.attr().truncate_size(); - break; - case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: - attr_list[i].value.u16 = resp.attr().udp_dst_port(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_dtel_event(sai_object_id_t *dtel_event_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateDtelEventRequest req = convert_create_dtel_event(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateDtelEventResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = dtel->CreateDtelEvent(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (dtel_event_id) { - *dtel_event_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDtelIntSessionRequest req; + lemming::dataplane::sai::RemoveDtelIntSessionResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_int_session_id); + + grpc::Status status = dtel->RemoveDtelIntSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_dtel_int_session_attribute( + sai_object_id_t dtel_int_session_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDtelIntSessionAttributeRequest req; + lemming::dataplane::sai::SetDtelIntSessionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_int_session_id); + + switch (attr->id) { + case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: + req.set_max_hop_count(attr->value.u8); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: + req.set_collect_switch_id(attr->value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: + req.set_collect_switch_ports(attr->value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: + req.set_collect_ingress_timestamp(attr->value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: + req.set_collect_egress_timestamp(attr->value.booldata); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: + req.set_collect_queue_info(attr->value.booldata); + break; + } + + grpc::Status status = dtel->SetDtelIntSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_dtel_int_session_attribute( + sai_object_id_t dtel_int_session_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDtelIntSessionAttributeRequest req; + lemming::dataplane::sai::GetDtelIntSessionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(dtel_int_session_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_dtel_int_session_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = dtel->GetDtelIntSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: + attr_list[i].value.u8 = resp.attr().max_hop_count(); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: + attr_list[i].value.booldata = resp.attr().collect_switch_id(); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: + attr_list[i].value.booldata = resp.attr().collect_switch_ports(); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: + attr_list[i].value.booldata = resp.attr().collect_ingress_timestamp(); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: + attr_list[i].value.booldata = resp.attr().collect_egress_timestamp(); + break; + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: + attr_list[i].value.booldata = resp.attr().collect_queue_info(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_dtel_report_session( + sai_object_id_t* dtel_report_session_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDtelReportSessionRequest req = + convert_create_dtel_report_session(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDtelReportSessionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = dtel->CreateDtelReportSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (dtel_report_session_id) { + *dtel_report_session_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_dtel_report_session( + sai_object_id_t dtel_report_session_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDtelReportSessionRequest req; + lemming::dataplane::sai::RemoveDtelReportSessionResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_report_session_id); + + grpc::Status status = dtel->RemoveDtelReportSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_dtel_report_session_attribute( + sai_object_id_t dtel_report_session_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDtelReportSessionAttributeRequest req; + lemming::dataplane::sai::SetDtelReportSessionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_report_session_id); + + switch (attr->id) { + case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: + req.set_src_ip(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: + req.set_virtual_router_id(attr->value.oid); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: + req.set_truncate_size(attr->value.u16); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: + req.set_udp_dst_port(attr->value.u16); + break; + } + + grpc::Status status = + dtel->SetDtelReportSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_dtel_report_session_attribute( + sai_object_id_t dtel_report_session_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDtelReportSessionAttributeRequest req; + lemming::dataplane::sai::GetDtelReportSessionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(dtel_report_session_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_dtel_report_session_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + dtel->GetDtelReportSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: + attr_list[i].value.oid = resp.attr().virtual_router_id(); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: + attr_list[i].value.u16 = resp.attr().truncate_size(); + break; + case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: + attr_list[i].value.u16 = resp.attr().udp_dst_port(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_dtel_event(sai_object_id_t* dtel_event_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateDtelEventRequest req = + convert_create_dtel_event(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateDtelEventResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = dtel->CreateDtelEvent(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (dtel_event_id) { + *dtel_event_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_dtel_event(sai_object_id_t dtel_event_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveDtelEventRequest req; - lemming::dataplane::sai::RemoveDtelEventResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_event_id); - - grpc::Status status = dtel->RemoveDtelEvent(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_dtel_event_attribute(sai_object_id_t dtel_event_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetDtelEventAttributeRequest req; - lemming::dataplane::sai::SetDtelEventAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(dtel_event_id); - - - - -switch (attr->id) { - - case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: - req.set_report_session(attr->value.oid); - break; - case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: - req.set_dscp_value(attr->value.u8); - break; -} - - grpc::Status status = dtel->SetDtelEventAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveDtelEventRequest req; + lemming::dataplane::sai::RemoveDtelEventResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_event_id); + + grpc::Status status = dtel->RemoveDtelEvent(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_dtel_event_attribute(sai_object_id_t dtel_event_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetDtelEventAttributeRequest req; + lemming::dataplane::sai::SetDtelEventAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(dtel_event_id); + + switch (attr->id) { + case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: + req.set_report_session(attr->value.oid); + break; + case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: + req.set_dscp_value(attr->value.u8); + break; + } + + grpc::Status status = dtel->SetDtelEventAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_dtel_event_attribute(sai_object_id_t dtel_event_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetDtelEventAttributeRequest req; + lemming::dataplane::sai::GetDtelEventAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(dtel_event_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_dtel_event_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = dtel->GetDtelEventAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_DTEL_EVENT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_dtel_event_type_t_to_sai(resp.attr().type()); + break; + case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: + attr_list[i].value.oid = resp.attr().report_session(); + break; + case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: + attr_list[i].value.u8 = resp.attr().dscp_value(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_dtel_event_attribute(sai_object_id_t dtel_event_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetDtelEventAttributeRequest req; - lemming::dataplane::sai::GetDtelEventAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(dtel_event_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_dtel_event_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = dtel->GetDtelEventAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_DTEL_EVENT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_dtel_event_type_t_to_sai(resp.attr().type()); - break; - case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: - attr_list[i].value.oid = resp.attr().report_session(); - break; - case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: - attr_list[i].value.u8 = resp.attr().dscp_value(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/dtel.h b/dataplane/standalone/sai/dtel.h index 523beca5b..952c6fe30 100644 --- a/dataplane/standalone/sai/dtel.h +++ b/dataplane/standalone/sai/dtel.h @@ -25,46 +25,71 @@ extern "C" { extern const sai_dtel_api_t l_dtel; - -sai_status_t l_create_dtel(sai_object_id_t *dtel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_dtel(sai_object_id_t* dtel_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_dtel(sai_object_id_t dtel_id); -sai_status_t l_set_dtel_attribute(sai_object_id_t dtel_id, const sai_attribute_t *attr); +sai_status_t l_set_dtel_attribute(sai_object_id_t dtel_id, + const sai_attribute_t* attr); -sai_status_t l_get_dtel_attribute(sai_object_id_t dtel_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_dtel_attribute(sai_object_id_t dtel_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_dtel_queue_report(sai_object_id_t *dtel_queue_report_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_dtel_queue_report(sai_object_id_t* dtel_queue_report_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_dtel_queue_report(sai_object_id_t dtel_queue_report_id); -sai_status_t l_set_dtel_queue_report_attribute(sai_object_id_t dtel_queue_report_id, const sai_attribute_t *attr); +sai_status_t l_set_dtel_queue_report_attribute( + sai_object_id_t dtel_queue_report_id, const sai_attribute_t* attr); -sai_status_t l_get_dtel_queue_report_attribute(sai_object_id_t dtel_queue_report_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_dtel_queue_report_attribute( + sai_object_id_t dtel_queue_report_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_dtel_int_session(sai_object_id_t *dtel_int_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_dtel_int_session(sai_object_id_t* dtel_int_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_dtel_int_session(sai_object_id_t dtel_int_session_id); -sai_status_t l_set_dtel_int_session_attribute(sai_object_id_t dtel_int_session_id, const sai_attribute_t *attr); +sai_status_t l_set_dtel_int_session_attribute( + sai_object_id_t dtel_int_session_id, const sai_attribute_t* attr); -sai_status_t l_get_dtel_int_session_attribute(sai_object_id_t dtel_int_session_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_dtel_int_session_attribute( + sai_object_id_t dtel_int_session_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_dtel_report_session(sai_object_id_t *dtel_report_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_dtel_report_session( + sai_object_id_t* dtel_report_session_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_remove_dtel_report_session(sai_object_id_t dtel_report_session_id); +sai_status_t l_remove_dtel_report_session( + sai_object_id_t dtel_report_session_id); -sai_status_t l_set_dtel_report_session_attribute(sai_object_id_t dtel_report_session_id, const sai_attribute_t *attr); +sai_status_t l_set_dtel_report_session_attribute( + sai_object_id_t dtel_report_session_id, const sai_attribute_t* attr); -sai_status_t l_get_dtel_report_session_attribute(sai_object_id_t dtel_report_session_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_dtel_report_session_attribute( + sai_object_id_t dtel_report_session_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_dtel_event(sai_object_id_t *dtel_event_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_dtel_event(sai_object_id_t* dtel_event_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_dtel_event(sai_object_id_t dtel_event_id); -sai_status_t l_set_dtel_event_attribute(sai_object_id_t dtel_event_id, const sai_attribute_t *attr); - -sai_status_t l_get_dtel_event_attribute(sai_object_id_t dtel_event_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_dtel_event_attribute(sai_object_id_t dtel_event_id, + const sai_attribute_t* attr); +sai_status_t l_get_dtel_event_attribute(sai_object_id_t dtel_event_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_DTEL_H_ diff --git a/dataplane/standalone/sai/enum.cc b/dataplane/standalone/sai/enum.cc index 315b79b39..163227cc7 100644 --- a/dataplane/standalone/sai/enum.cc +++ b/dataplane/standalone/sai/enum.cc @@ -15,21260 +15,31375 @@ #include "dataplane/standalone/sai/enum.h" +lemming::dataplane::sai::AclActionType convert_sai_acl_action_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_ACTION_TYPE_REDIRECT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT; + case SAI_ACL_ACTION_TYPE_ENDPOINT_IP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_ENDPOINT_IP; -lemming::dataplane::sai::AclActionType convert_sai_acl_action_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_ACTION_TYPE_REDIRECT: return lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT; - - case SAI_ACL_ACTION_TYPE_ENDPOINT_IP: return lemming::dataplane::sai::ACL_ACTION_TYPE_ENDPOINT_IP; - - case SAI_ACL_ACTION_TYPE_REDIRECT_LIST: return lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT_LIST; - - case SAI_ACL_ACTION_TYPE_PACKET_ACTION: return lemming::dataplane::sai::ACL_ACTION_TYPE_PACKET_ACTION; - - case SAI_ACL_ACTION_TYPE_FLOOD: return lemming::dataplane::sai::ACL_ACTION_TYPE_FLOOD; - - case SAI_ACL_ACTION_TYPE_COUNTER: return lemming::dataplane::sai::ACL_ACTION_TYPE_COUNTER; - - case SAI_ACL_ACTION_TYPE_MIRROR_INGRESS: return lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_INGRESS; - - case SAI_ACL_ACTION_TYPE_MIRROR_EGRESS: return lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_EGRESS; - - case SAI_ACL_ACTION_TYPE_SET_POLICER: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_POLICER; - - case SAI_ACL_ACTION_TYPE_DECREMENT_TTL: return lemming::dataplane::sai::ACL_ACTION_TYPE_DECREMENT_TTL; - - case SAI_ACL_ACTION_TYPE_SET_TC: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_TC; - - case SAI_ACL_ACTION_TYPE_SET_PACKET_COLOR: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_PACKET_COLOR; - - case SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_ID; - - case SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_PRI: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_PRI; - - case SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_ID; - - case SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI; - - case SAI_ACL_ACTION_TYPE_ADD_VLAN_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_ID; - - case SAI_ACL_ACTION_TYPE_ADD_VLAN_PRI: return lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_PRI; - - case SAI_ACL_ACTION_TYPE_SET_SRC_MAC: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_MAC; - - case SAI_ACL_ACTION_TYPE_SET_DST_MAC: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_MAC; - - case SAI_ACL_ACTION_TYPE_SET_SRC_IP: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IP; - - case SAI_ACL_ACTION_TYPE_SET_DST_IP: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IP; - - case SAI_ACL_ACTION_TYPE_SET_SRC_IPV6: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IPV6; - - case SAI_ACL_ACTION_TYPE_SET_DST_IPV6: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IPV6; - - case SAI_ACL_ACTION_TYPE_SET_DSCP: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DSCP; - - case SAI_ACL_ACTION_TYPE_SET_ECN: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECN; - - case SAI_ACL_ACTION_TYPE_SET_L4_SRC_PORT: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_SRC_PORT; - - case SAI_ACL_ACTION_TYPE_SET_L4_DST_PORT: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_DST_PORT; - - case SAI_ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE; - - case SAI_ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE; - - case SAI_ACL_ACTION_TYPE_SET_ACL_META_DATA: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ACL_META_DATA; - - case SAI_ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST: return lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST; - - case SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_USER_TRAP_ID; - - case SAI_ACL_ACTION_TYPE_SET_DO_NOT_LEARN: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DO_NOT_LEARN; - - case SAI_ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP: return lemming::dataplane::sai::ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP; - - case SAI_ACL_ACTION_TYPE_DTEL_INT_SESSION: return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_INT_SESSION; - - case SAI_ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE: return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE; - - case SAI_ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE: return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE; - - case SAI_ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT: return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT; - - case SAI_ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS: return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS; - - case SAI_ACL_ACTION_TYPE_NO_NAT: return lemming::dataplane::sai::ACL_ACTION_TYPE_NO_NAT; - - case SAI_ACL_ACTION_TYPE_INT_INSERT: return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_INSERT; - - case SAI_ACL_ACTION_TYPE_INT_DELETE: return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_DELETE; - - case SAI_ACL_ACTION_TYPE_INT_REPORT_FLOW: return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_FLOW; - - case SAI_ACL_ACTION_TYPE_INT_REPORT_DROPS: return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_DROPS; - - case SAI_ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS: return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS; - - case SAI_ACL_ACTION_TYPE_TAM_INT_OBJECT: return lemming::dataplane::sai::ACL_ACTION_TYPE_TAM_INT_OBJECT; - - case SAI_ACL_ACTION_TYPE_SET_ISOLATION_GROUP: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ISOLATION_GROUP; - - case SAI_ACL_ACTION_TYPE_MACSEC_FLOW: return lemming::dataplane::sai::ACL_ACTION_TYPE_MACSEC_FLOW; - - case SAI_ACL_ACTION_TYPE_SET_LAG_HASH_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_LAG_HASH_ID; - - case SAI_ACL_ACTION_TYPE_SET_ECMP_HASH_ID: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECMP_HASH_ID; - - case SAI_ACL_ACTION_TYPE_SET_VRF: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_VRF; - - case SAI_ACL_ACTION_TYPE_SET_FORWARDING_CLASS: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_FORWARDING_CLASS; - - case SAI_ACL_ACTION_TYPE_SET_ARS_MONITORING: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_MONITORING; - - case SAI_ACL_ACTION_TYPE_SET_ARS_OBJECT: return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_OBJECT; - - case SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING: return lemming::dataplane::sai::ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING; - - case SAI_ACL_ACTION_TYPE_CHAIN_REDIRECT: return lemming::dataplane::sai::ACL_ACTION_TYPE_CHAIN_REDIRECT; - - default: return lemming::dataplane::sai::ACL_ACTION_TYPE_UNSPECIFIED; - } -} -sai_acl_action_type_t convert_sai_acl_action_type_t_to_sai(lemming::dataplane::sai::AclActionType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT: return SAI_ACL_ACTION_TYPE_REDIRECT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_ENDPOINT_IP: return SAI_ACL_ACTION_TYPE_ENDPOINT_IP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT_LIST: return SAI_ACL_ACTION_TYPE_REDIRECT_LIST; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_PACKET_ACTION: return SAI_ACL_ACTION_TYPE_PACKET_ACTION; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_FLOOD: return SAI_ACL_ACTION_TYPE_FLOOD; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_COUNTER: return SAI_ACL_ACTION_TYPE_COUNTER; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_INGRESS: return SAI_ACL_ACTION_TYPE_MIRROR_INGRESS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_EGRESS: return SAI_ACL_ACTION_TYPE_MIRROR_EGRESS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_POLICER: return SAI_ACL_ACTION_TYPE_SET_POLICER; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DECREMENT_TTL: return SAI_ACL_ACTION_TYPE_DECREMENT_TTL; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_TC: return SAI_ACL_ACTION_TYPE_SET_TC; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_PACKET_COLOR: return SAI_ACL_ACTION_TYPE_SET_PACKET_COLOR; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_ID: return SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_PRI: return SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_ID: return SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI: return SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_ID: return SAI_ACL_ACTION_TYPE_ADD_VLAN_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_PRI: return SAI_ACL_ACTION_TYPE_ADD_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_MAC: return SAI_ACL_ACTION_TYPE_SET_SRC_MAC; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_MAC: return SAI_ACL_ACTION_TYPE_SET_DST_MAC; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IP: return SAI_ACL_ACTION_TYPE_SET_SRC_IP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IP: return SAI_ACL_ACTION_TYPE_SET_DST_IP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IPV6: return SAI_ACL_ACTION_TYPE_SET_SRC_IPV6; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IPV6: return SAI_ACL_ACTION_TYPE_SET_DST_IPV6; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DSCP: return SAI_ACL_ACTION_TYPE_SET_DSCP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECN: return SAI_ACL_ACTION_TYPE_SET_ECN; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_SRC_PORT: return SAI_ACL_ACTION_TYPE_SET_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_DST_PORT: return SAI_ACL_ACTION_TYPE_SET_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE: return SAI_ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE: return SAI_ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ACL_META_DATA: return SAI_ACL_ACTION_TYPE_SET_ACL_META_DATA; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST: return SAI_ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_USER_TRAP_ID: return SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DO_NOT_LEARN: return SAI_ACL_ACTION_TYPE_SET_DO_NOT_LEARN; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP: return SAI_ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_INT_SESSION: return SAI_ACL_ACTION_TYPE_DTEL_INT_SESSION; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE: return SAI_ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE: return SAI_ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT: return SAI_ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS: return SAI_ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_NO_NAT: return SAI_ACL_ACTION_TYPE_NO_NAT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_INSERT: return SAI_ACL_ACTION_TYPE_INT_INSERT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_DELETE: return SAI_ACL_ACTION_TYPE_INT_DELETE; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_FLOW: return SAI_ACL_ACTION_TYPE_INT_REPORT_FLOW; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_DROPS: return SAI_ACL_ACTION_TYPE_INT_REPORT_DROPS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS: return SAI_ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_TAM_INT_OBJECT: return SAI_ACL_ACTION_TYPE_TAM_INT_OBJECT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ISOLATION_GROUP: return SAI_ACL_ACTION_TYPE_SET_ISOLATION_GROUP; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_MACSEC_FLOW: return SAI_ACL_ACTION_TYPE_MACSEC_FLOW; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_LAG_HASH_ID: return SAI_ACL_ACTION_TYPE_SET_LAG_HASH_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECMP_HASH_ID: return SAI_ACL_ACTION_TYPE_SET_ECMP_HASH_ID; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_VRF: return SAI_ACL_ACTION_TYPE_SET_VRF; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_FORWARDING_CLASS: return SAI_ACL_ACTION_TYPE_SET_FORWARDING_CLASS; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_MONITORING: return SAI_ACL_ACTION_TYPE_SET_ARS_MONITORING; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_OBJECT: return SAI_ACL_ACTION_TYPE_SET_ARS_OBJECT; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING: return SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING; - - case lemming::dataplane::sai::ACL_ACTION_TYPE_CHAIN_REDIRECT: return SAI_ACL_ACTION_TYPE_CHAIN_REDIRECT; - - default: return SAI_ACL_ACTION_TYPE_REDIRECT; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_action_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_action_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_action_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_action_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclBindPointType convert_sai_acl_bind_point_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_BIND_POINT_TYPE_PORT: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_PORT; - - case SAI_ACL_BIND_POINT_TYPE_LAG: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_LAG; - - case SAI_ACL_BIND_POINT_TYPE_VLAN: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_VLAN; - - case SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_ROUTER_INTERFACE; - - case SAI_ACL_BIND_POINT_TYPE_SWITCH: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_SWITCH; - - default: return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_UNSPECIFIED; - } -} -sai_acl_bind_point_type_t convert_sai_acl_bind_point_type_t_to_sai(lemming::dataplane::sai::AclBindPointType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_PORT: return SAI_ACL_BIND_POINT_TYPE_PORT; - - case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_LAG: return SAI_ACL_BIND_POINT_TYPE_LAG; - - case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_VLAN: return SAI_ACL_BIND_POINT_TYPE_VLAN; - - case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_ROUTER_INTERFACE: return SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE; - - case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_SWITCH: return SAI_ACL_BIND_POINT_TYPE_SWITCH; - - default: return SAI_ACL_BIND_POINT_TYPE_PORT; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_bind_point_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_bind_point_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_bind_point_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_bind_point_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclCounterAttr convert_sai_acl_counter_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_COUNTER_ATTR_TABLE_ID: return lemming::dataplane::sai::ACL_COUNTER_ATTR_TABLE_ID; - - case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: return lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT; - - case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: return lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT; - - case SAI_ACL_COUNTER_ATTR_PACKETS: return lemming::dataplane::sai::ACL_COUNTER_ATTR_PACKETS; - - case SAI_ACL_COUNTER_ATTR_BYTES: return lemming::dataplane::sai::ACL_COUNTER_ATTR_BYTES; - - case SAI_ACL_COUNTER_ATTR_LABEL: return lemming::dataplane::sai::ACL_COUNTER_ATTR_LABEL; - - default: return lemming::dataplane::sai::ACL_COUNTER_ATTR_UNSPECIFIED; - } -} -sai_acl_counter_attr_t convert_sai_acl_counter_attr_t_to_sai(lemming::dataplane::sai::AclCounterAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_TABLE_ID: return SAI_ACL_COUNTER_ATTR_TABLE_ID; - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: return SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT; - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: return SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT; - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_PACKETS: return SAI_ACL_COUNTER_ATTR_PACKETS; - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_BYTES: return SAI_ACL_COUNTER_ATTR_BYTES; - - case lemming::dataplane::sai::ACL_COUNTER_ATTR_LABEL: return SAI_ACL_COUNTER_ATTR_LABEL; - - default: return SAI_ACL_COUNTER_ATTR_TABLE_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_counter_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_counter_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_counter_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclDtelFlowOp convert_sai_acl_dtel_flow_op_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_DTEL_FLOW_OP_NOP: return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_NOP; - - case SAI_ACL_DTEL_FLOW_OP_INT: return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_INT; - - case SAI_ACL_DTEL_FLOW_OP_IOAM: return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_IOAM; - - case SAI_ACL_DTEL_FLOW_OP_POSTCARD: return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_POSTCARD; - - default: return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_UNSPECIFIED; - } -} -sai_acl_dtel_flow_op_t convert_sai_acl_dtel_flow_op_t_to_sai(lemming::dataplane::sai::AclDtelFlowOp val) { - switch (val) { - - case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_NOP: return SAI_ACL_DTEL_FLOW_OP_NOP; - - case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_INT: return SAI_ACL_DTEL_FLOW_OP_INT; - - case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_IOAM: return SAI_ACL_DTEL_FLOW_OP_IOAM; - - case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_POSTCARD: return SAI_ACL_DTEL_FLOW_OP_POSTCARD; - - default: return SAI_ACL_DTEL_FLOW_OP_NOP; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_dtel_flow_op_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_dtel_flow_op_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_dtel_flow_op_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_dtel_flow_op_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclEntryAttr convert_sai_acl_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_ENTRY_ATTR_TABLE_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_TABLE_ID; - - case SAI_ACL_ENTRY_ATTR_PRIORITY: return lemming::dataplane::sai::ACL_ENTRY_ATTR_PRIORITY; - - case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ADMIN_STATE; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_MAC; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_MAC; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IP; - - case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IP; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IP; - - case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORTS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORTS; - - case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORTS; - - case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID; - - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI; - - case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI; - - case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_DST_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT; - - case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ETHER_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL; - - case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION; - - case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DSCP; - - case SAI_ACL_ENTRY_ATTR_FIELD_ECN: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ECN; - - case SAI_ACL_ENTRY_ATTR_FIELD_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_TOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_FLAGS; - - case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TCP_FLAGS; - - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG; - - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_TC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TC; - - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_CODE; - - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE; - - case SAI_ACL_ENTRY_ATTR_FIELD_PACKET_VLAN: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PACKET_VLAN; - - case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI; - - case SAI_ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG; - - case SAI_ACL_ENTRY_ATTR_FIELD_MACSEC_SCI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MACSEC_SCI; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP; - - case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS; - - case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PORT_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VLAN_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_USER_META; - - case SAI_ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT; - - case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; - - case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; - - case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_BTH_OPCODE; - - case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME; - - case SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN: return lemming::dataplane::sai::ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN; - - case SAI_ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER; - - case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_GRE_KEY; - - case SAI_ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC; - - case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC; - - case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VRF_ID; - - case SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT; - - case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED: return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED; - - case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT; - - case SAI_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP; - - case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST; - - case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_PACKET_ACTION; - - case SAI_ACL_ENTRY_ATTR_ACTION_FLOOD: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_FLOOD; - - case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_COUNTER; - - case SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS; - - case SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_POLICER; - - case SAI_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_TC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_TC; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI; - - case SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_MAC; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IP; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IP; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_DSCP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DSCP; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECN: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECN; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT; - - case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE; - - case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA; - - case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN; - - case SAI_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP; - - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION; - - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE; - - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE; - - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT; - - case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS; - - case SAI_ACL_ENTRY_ATTR_ACTION_NO_NAT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_NO_NAT; - - case SAI_ACL_ENTRY_ATTR_ACTION_INT_INSERT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_INSERT; - - case SAI_ACL_ENTRY_ATTR_ACTION_INT_DELETE: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_DELETE; - - case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW; - - case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS; - - case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS; - - case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP; - - case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_VRF; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING; - - case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT; - - case SAI_ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING; - - case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT; - - default: return lemming::dataplane::sai::ACL_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_acl_entry_attr_t convert_sai_acl_entry_attr_t_to_sai(lemming::dataplane::sai::AclEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_TABLE_ID: return SAI_ACL_ENTRY_ATTR_TABLE_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_PRIORITY: return SAI_ACL_ENTRY_ATTR_PRIORITY; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ADMIN_STATE: return SAI_ACL_ENTRY_ATTR_ADMIN_STATE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_MAC: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_MAC: return SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IP: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IP: return SAI_ACL_ENTRY_ATTR_FIELD_DST_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORTS: return SAI_ACL_ENTRY_ATTR_FIELD_IN_PORTS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORTS: return SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: return SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: return SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DSCP: return SAI_ACL_ENTRY_ATTR_FIELD_DSCP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ECN: return SAI_ACL_ENTRY_ATTR_FIELD_ECN; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TOS: return SAI_ACL_ENTRY_ATTR_FIELD_TOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_FLAGS: return SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: return SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG: return SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TC: return SAI_ACL_ENTRY_ATTR_FIELD_TC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_CODE: return SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: return SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PACKET_VLAN: return SAI_ACL_ENTRY_ATTR_FIELD_PACKET_VLAN; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: return SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG: return SAI_ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MACSEC_SCI: return SAI_ACL_ENTRY_ATTR_FIELD_MACSEC_SCI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS: return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PORT_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_USER_META: return SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT: return SAI_ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: return SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: return SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: return SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: return SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN: return SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: return SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_GRE_KEY: return SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE: return SAI_ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VRF_ID: return SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT: return SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED: return SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT: return SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP: return SAI_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST: return SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: return SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_FLOOD: return SAI_ACL_ENTRY_ATTR_ACTION_FLOOD; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_COUNTER: return SAI_ACL_ENTRY_ATTR_ACTION_COUNTER; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS: return SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS: return SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_POLICER: return SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL: return SAI_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_TC: return SAI_ACL_ENTRY_ATTR_ACTION_SET_TC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR: return SAI_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID: return SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI: return SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID: return SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI: return SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID: return SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI: return SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC: return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_MAC: return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IP: return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IP: return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6: return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6: return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DSCP: return SAI_ACL_ENTRY_ATTR_ACTION_SET_DSCP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECN: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ECN; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT: return SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT: return SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: return SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: return SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST: return SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: return SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN: return SAI_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP: return SAI_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE: return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE: return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT: return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS: return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_NO_NAT: return SAI_ACL_ENTRY_ATTR_ACTION_NO_NAT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_INSERT: return SAI_ACL_ENTRY_ATTR_ACTION_INT_INSERT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_DELETE: return SAI_ACL_ENTRY_ATTR_ACTION_INT_DELETE; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW: return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS: return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS: return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: return SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: return SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: return SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_VRF: return SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS: return SAI_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: return SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING: return SAI_ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING; - - case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: return SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT; - - default: return SAI_ACL_ENTRY_ATTR_TABLE_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclIpFrag convert_sai_acl_ip_frag_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_IP_FRAG_ANY: return lemming::dataplane::sai::ACL_IP_FRAG_ANY; - - case SAI_ACL_IP_FRAG_NON_FRAG: return lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG; - - case SAI_ACL_IP_FRAG_NON_FRAG_OR_HEAD: return lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG_OR_HEAD; - - case SAI_ACL_IP_FRAG_HEAD: return lemming::dataplane::sai::ACL_IP_FRAG_HEAD; - - case SAI_ACL_IP_FRAG_NON_HEAD: return lemming::dataplane::sai::ACL_IP_FRAG_NON_HEAD; - - default: return lemming::dataplane::sai::ACL_IP_FRAG_UNSPECIFIED; - } -} -sai_acl_ip_frag_t convert_sai_acl_ip_frag_t_to_sai(lemming::dataplane::sai::AclIpFrag val) { - switch (val) { - - case lemming::dataplane::sai::ACL_IP_FRAG_ANY: return SAI_ACL_IP_FRAG_ANY; - - case lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG: return SAI_ACL_IP_FRAG_NON_FRAG; - - case lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG_OR_HEAD: return SAI_ACL_IP_FRAG_NON_FRAG_OR_HEAD; - - case lemming::dataplane::sai::ACL_IP_FRAG_HEAD: return SAI_ACL_IP_FRAG_HEAD; - - case lemming::dataplane::sai::ACL_IP_FRAG_NON_HEAD: return SAI_ACL_IP_FRAG_NON_HEAD; - - default: return SAI_ACL_IP_FRAG_ANY; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_ip_frag_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_ip_frag_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_ip_frag_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_ip_frag_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclIpType convert_sai_acl_ip_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_IP_TYPE_ANY: return lemming::dataplane::sai::ACL_IP_TYPE_ANY; - - case SAI_ACL_IP_TYPE_IP: return lemming::dataplane::sai::ACL_IP_TYPE_IP; - - case SAI_ACL_IP_TYPE_NON_IP: return lemming::dataplane::sai::ACL_IP_TYPE_NON_IP; - - case SAI_ACL_IP_TYPE_IPV4ANY: return lemming::dataplane::sai::ACL_IP_TYPE_IPV4ANY; - - case SAI_ACL_IP_TYPE_NON_IPV4: return lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV4; - - case SAI_ACL_IP_TYPE_IPV6ANY: return lemming::dataplane::sai::ACL_IP_TYPE_IPV6ANY; - - case SAI_ACL_IP_TYPE_NON_IPV6: return lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV6; - - case SAI_ACL_IP_TYPE_ARP: return lemming::dataplane::sai::ACL_IP_TYPE_ARP; - - case SAI_ACL_IP_TYPE_ARP_REQUEST: return lemming::dataplane::sai::ACL_IP_TYPE_ARP_REQUEST; - - case SAI_ACL_IP_TYPE_ARP_REPLY: return lemming::dataplane::sai::ACL_IP_TYPE_ARP_REPLY; - - default: return lemming::dataplane::sai::ACL_IP_TYPE_UNSPECIFIED; - } -} -sai_acl_ip_type_t convert_sai_acl_ip_type_t_to_sai(lemming::dataplane::sai::AclIpType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_IP_TYPE_ANY: return SAI_ACL_IP_TYPE_ANY; - - case lemming::dataplane::sai::ACL_IP_TYPE_IP: return SAI_ACL_IP_TYPE_IP; - - case lemming::dataplane::sai::ACL_IP_TYPE_NON_IP: return SAI_ACL_IP_TYPE_NON_IP; - - case lemming::dataplane::sai::ACL_IP_TYPE_IPV4ANY: return SAI_ACL_IP_TYPE_IPV4ANY; - - case lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV4: return SAI_ACL_IP_TYPE_NON_IPV4; - - case lemming::dataplane::sai::ACL_IP_TYPE_IPV6ANY: return SAI_ACL_IP_TYPE_IPV6ANY; - - case lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV6: return SAI_ACL_IP_TYPE_NON_IPV6; - - case lemming::dataplane::sai::ACL_IP_TYPE_ARP: return SAI_ACL_IP_TYPE_ARP; - - case lemming::dataplane::sai::ACL_IP_TYPE_ARP_REQUEST: return SAI_ACL_IP_TYPE_ARP_REQUEST; - - case lemming::dataplane::sai::ACL_IP_TYPE_ARP_REPLY: return SAI_ACL_IP_TYPE_ARP_REPLY; - - default: return SAI_ACL_IP_TYPE_ANY; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_ip_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_ip_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_ip_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_ip_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclRangeAttr convert_sai_acl_range_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_RANGE_ATTR_TYPE: return lemming::dataplane::sai::ACL_RANGE_ATTR_TYPE; - - case SAI_ACL_RANGE_ATTR_LIMIT: return lemming::dataplane::sai::ACL_RANGE_ATTR_LIMIT; - - default: return lemming::dataplane::sai::ACL_RANGE_ATTR_UNSPECIFIED; - } -} -sai_acl_range_attr_t convert_sai_acl_range_attr_t_to_sai(lemming::dataplane::sai::AclRangeAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_RANGE_ATTR_TYPE: return SAI_ACL_RANGE_ATTR_TYPE; - - case lemming::dataplane::sai::ACL_RANGE_ATTR_LIMIT: return SAI_ACL_RANGE_ATTR_LIMIT; - - default: return SAI_ACL_RANGE_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_range_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_range_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_range_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_range_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclRangeType convert_sai_acl_range_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE: return lemming::dataplane::sai::ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; - - case SAI_ACL_RANGE_TYPE_L4_DST_PORT_RANGE: return lemming::dataplane::sai::ACL_RANGE_TYPE_L4_DST_PORT_RANGE; - - case SAI_ACL_RANGE_TYPE_OUTER_VLAN: return lemming::dataplane::sai::ACL_RANGE_TYPE_OUTER_VLAN; - - case SAI_ACL_RANGE_TYPE_INNER_VLAN: return lemming::dataplane::sai::ACL_RANGE_TYPE_INNER_VLAN; - - case SAI_ACL_RANGE_TYPE_PACKET_LENGTH: return lemming::dataplane::sai::ACL_RANGE_TYPE_PACKET_LENGTH; - - default: return lemming::dataplane::sai::ACL_RANGE_TYPE_UNSPECIFIED; - } -} -sai_acl_range_type_t convert_sai_acl_range_type_t_to_sai(lemming::dataplane::sai::AclRangeType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_RANGE_TYPE_L4_SRC_PORT_RANGE: return SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; - - case lemming::dataplane::sai::ACL_RANGE_TYPE_L4_DST_PORT_RANGE: return SAI_ACL_RANGE_TYPE_L4_DST_PORT_RANGE; - - case lemming::dataplane::sai::ACL_RANGE_TYPE_OUTER_VLAN: return SAI_ACL_RANGE_TYPE_OUTER_VLAN; - - case lemming::dataplane::sai::ACL_RANGE_TYPE_INNER_VLAN: return SAI_ACL_RANGE_TYPE_INNER_VLAN; - - case lemming::dataplane::sai::ACL_RANGE_TYPE_PACKET_LENGTH: return SAI_ACL_RANGE_TYPE_PACKET_LENGTH; - - default: return SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_range_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_range_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_range_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_range_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclStage convert_sai_acl_stage_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_STAGE_INGRESS: return lemming::dataplane::sai::ACL_STAGE_INGRESS; - - case SAI_ACL_STAGE_EGRESS: return lemming::dataplane::sai::ACL_STAGE_EGRESS; - - case SAI_ACL_STAGE_INGRESS_MACSEC: return lemming::dataplane::sai::ACL_STAGE_INGRESS_MACSEC; - - case SAI_ACL_STAGE_EGRESS_MACSEC: return lemming::dataplane::sai::ACL_STAGE_EGRESS_MACSEC; - - case SAI_ACL_STAGE_PRE_INGRESS: return lemming::dataplane::sai::ACL_STAGE_PRE_INGRESS; - - case SAI_ACL_STAGE_POST_INGRESS: return lemming::dataplane::sai::ACL_STAGE_POST_INGRESS; - - default: return lemming::dataplane::sai::ACL_STAGE_UNSPECIFIED; - } -} -sai_acl_stage_t convert_sai_acl_stage_t_to_sai(lemming::dataplane::sai::AclStage val) { - switch (val) { - - case lemming::dataplane::sai::ACL_STAGE_INGRESS: return SAI_ACL_STAGE_INGRESS; - - case lemming::dataplane::sai::ACL_STAGE_EGRESS: return SAI_ACL_STAGE_EGRESS; - - case lemming::dataplane::sai::ACL_STAGE_INGRESS_MACSEC: return SAI_ACL_STAGE_INGRESS_MACSEC; - - case lemming::dataplane::sai::ACL_STAGE_EGRESS_MACSEC: return SAI_ACL_STAGE_EGRESS_MACSEC; - - case lemming::dataplane::sai::ACL_STAGE_PRE_INGRESS: return SAI_ACL_STAGE_PRE_INGRESS; - - case lemming::dataplane::sai::ACL_STAGE_POST_INGRESS: return SAI_ACL_STAGE_POST_INGRESS; - - default: return SAI_ACL_STAGE_INGRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_stage_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_stage_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_stage_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableAttr convert_sai_acl_table_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_ATTR_ACL_STAGE: return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_STAGE; - - case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST; - - case SAI_ACL_TABLE_ATTR_SIZE: return lemming::dataplane::sai::ACL_TABLE_ATTR_SIZE; - - case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_MAC; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_MAC; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IP; - - case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IP; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IP; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IP; - - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORTS; - - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORTS; - - case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID; - - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI; - - case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI; - - case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_SRC_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_DST_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT; - - case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ETHER_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_PROTOCOL; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL; - - case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION; - - case SAI_ACL_TABLE_ATTR_FIELD_DSCP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DSCP; - - case SAI_ACL_TABLE_ATTR_FIELD_ECN: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ECN; - - case SAI_ACL_TABLE_ATTR_FIELD_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_TOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TOS; - - case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_FLAGS; - - case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TCP_FLAGS; - - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG; - - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_TC: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TC; - - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_CODE; - - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_CODE; - - case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PACKET_VLAN; - - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_VNI; - - case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG; - - case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MACSEC_SCI; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP; - - case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS; - - case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PORT_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VLAN_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_USER_META; - - case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT; - - case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; - - case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; - - case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_BTH_OPCODE; - - case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_AETH_SYNDROME; - - case SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN: return lemming::dataplane::sai::ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN; - - case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER; - - case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_GRE_KEY; - - case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC; - - case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_MAC; - - case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VRF_ID; - - case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT; - - case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED; - - case SAI_ACL_TABLE_ATTR_ENTRY_LIST: return lemming::dataplane::sai::ACL_TABLE_ATTR_ENTRY_LIST; - - case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: return lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY; - - case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: return lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER; - - case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE; - - case SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6; - - case SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6: return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6; - - default: return lemming::dataplane::sai::ACL_TABLE_ATTR_UNSPECIFIED; - } -} -sai_acl_table_attr_t convert_sai_acl_table_attr_t_to_sai(lemming::dataplane::sai::AclTableAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_STAGE: return SAI_ACL_TABLE_ATTR_ACL_STAGE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: return SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_SIZE: return SAI_ACL_TABLE_ATTR_SIZE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: return SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_MAC: return SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_MAC: return SAI_ACL_TABLE_ATTR_FIELD_DST_MAC; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IP: return SAI_ACL_TABLE_ATTR_FIELD_SRC_IP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IP: return SAI_ACL_TABLE_ATTR_FIELD_DST_IP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IP: return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORTS: return SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORTS: return SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORT: return SAI_ACL_TABLE_ATTR_FIELD_IN_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORT: return SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_PORT: return SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: return SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_DST_PORT: return SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: return SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: return SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ETHER_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: return SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: return SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: return SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DSCP: return SAI_ACL_TABLE_ATTR_FIELD_DSCP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ECN: return SAI_ACL_TABLE_ATTR_FIELD_ECN; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TTL: return SAI_ACL_TABLE_ATTR_FIELD_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TOS: return SAI_ACL_TABLE_ATTR_FIELD_TOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_FLAGS: return SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TCP_FLAGS: return SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: return SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TC: return SAI_ACL_TABLE_ATTR_FIELD_TC; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_CODE: return SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: return SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PACKET_VLAN: return SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: return SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: return SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MACSEC_SCI: return SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PORT_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VLAN_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_USER_META: return SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: return SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: return SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: return SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_BTH_OPCODE: return SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: return SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN: return SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: return SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_GRE_KEY: return SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: return SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VRF_ID: return SAI_ACL_TABLE_ATTR_FIELD_VRF_ID; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: return SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: return SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_ENTRY_LIST: return SAI_ACL_TABLE_ATTR_ENTRY_LIST; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: return SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: return SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: return SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6; - - case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6: return SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6; - - default: return SAI_ACL_TABLE_ATTR_ACL_STAGE; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableChainGroupAttr convert_sai_acl_table_chain_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; - - case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_STAGE; - - default: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED; - } -} -sai_acl_table_chain_group_attr_t convert_sai_acl_table_chain_group_attr_t_to_sai(lemming::dataplane::sai::AclTableChainGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE; - - default: return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_chain_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_chain_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_chain_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableChainGroupStage convert_sai_acl_table_chain_group_stage_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_0; - - case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_1: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_1; - - case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_2: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_2; - - case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_3: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_3; - - default: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED; - } -} -sai_acl_table_chain_group_stage_t convert_sai_acl_table_chain_group_stage_t_to_sai(lemming::dataplane::sai::AclTableChainGroupStage val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_0: return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0; - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_1: return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_1; - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_2: return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_2; - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_3: return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_3; - - default: return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_stage_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_chain_group_stage_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_chain_group_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_chain_group_stage_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableChainGroupType convert_sai_acl_table_chain_group_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; - - case SAI_ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL; - - default: return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED; - } -} -sai_acl_table_chain_group_type_t convert_sai_acl_table_chain_group_type_t_to_sai(lemming::dataplane::sai::AclTableChainGroupType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL: return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; - - case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL: return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL; - - default: return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_chain_group_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_chain_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_chain_group_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableGroupAttr convert_sai_acl_table_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_STAGE; - - case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST; - - case SAI_ACL_TABLE_GROUP_ATTR_TYPE: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_TYPE; - - case SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_MEMBER_LIST; - - case SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST; - - default: return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_UNSPECIFIED; - } -} -sai_acl_table_group_attr_t convert_sai_acl_table_group_attr_t_to_sai(lemming::dataplane::sai::AclTableGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_STAGE: return SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: return SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_TYPE: return SAI_ACL_TABLE_GROUP_ATTR_TYPE; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_MEMBER_LIST: return SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: return SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST; - - default: return SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableGroupMemberAttr convert_sai_acl_table_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID; - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY; - - case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID; - - default: return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_acl_table_group_member_attr_t convert_sai_acl_table_group_member_attr_t_to_sai(lemming::dataplane::sai::AclTableGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID; - - default: return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableGroupType convert_sai_acl_table_group_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL: return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_SEQUENTIAL; - - case SAI_ACL_TABLE_GROUP_TYPE_PARALLEL: return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_PARALLEL; - - default: return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_UNSPECIFIED; - } -} -sai_acl_table_group_type_t convert_sai_acl_table_group_type_t_to_sai(lemming::dataplane::sai::AclTableGroupType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_SEQUENTIAL: return SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL; - - case lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_PARALLEL: return SAI_ACL_TABLE_GROUP_TYPE_PARALLEL; - - default: return SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_group_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_group_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_group_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableMatchType convert_sai_acl_table_match_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_MATCH_TYPE_TERNARY: return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_TERNARY; - - case SAI_ACL_TABLE_MATCH_TYPE_EXACT: return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_EXACT; - - default: return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_UNSPECIFIED; - } -} -sai_acl_table_match_type_t convert_sai_acl_table_match_type_t_to_sai(lemming::dataplane::sai::AclTableMatchType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_TERNARY: return SAI_ACL_TABLE_MATCH_TYPE_TERNARY; - - case lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_EXACT: return SAI_ACL_TABLE_MATCH_TYPE_EXACT; - - default: return SAI_ACL_TABLE_MATCH_TYPE_TERNARY; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_match_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_match_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_match_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_match_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::AclTableSupportedMatchType convert_sai_acl_table_supported_match_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY: return lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; - - case SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT: return lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT; - - default: return lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED; - } -} -sai_acl_table_supported_match_type_t convert_sai_acl_table_supported_match_type_t_to_sai(lemming::dataplane::sai::AclTableSupportedMatchType val) { - switch (val) { - - case lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY: return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; - - case lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT: return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT; - - default: return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; - } -} - -google::protobuf::RepeatedField convert_list_sai_acl_table_supported_match_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_acl_table_supported_match_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_acl_table_supported_match_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_acl_table_supported_match_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::ApiExtensions convert_sai_api_extensions_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_API_EXTENSIONS_RANGE_START: return lemming::dataplane::sai::API_EXTENSIONS_RANGE_START; - - case SAI_API_DASH_ACL: return lemming::dataplane::sai::API_DASH_ACL; - - case SAI_API_DASH_DIRECTION_LOOKUP: return lemming::dataplane::sai::API_DASH_DIRECTION_LOOKUP; - - case SAI_API_DASH_ENI: return lemming::dataplane::sai::API_DASH_ENI; - - case SAI_API_DASH_INBOUND_ROUTING: return lemming::dataplane::sai::API_DASH_INBOUND_ROUTING; - - case SAI_API_DASH_METER: return lemming::dataplane::sai::API_DASH_METER; - - case SAI_API_DASH_OUTBOUND_CA_TO_PA: return lemming::dataplane::sai::API_DASH_OUTBOUND_CA_TO_PA; - - case SAI_API_DASH_OUTBOUND_ROUTING: return lemming::dataplane::sai::API_DASH_OUTBOUND_ROUTING; - - case SAI_API_DASH_VNET: return lemming::dataplane::sai::API_DASH_VNET; - - case SAI_API_DASH_PA_VALIDATION: return lemming::dataplane::sai::API_DASH_PA_VALIDATION; - - case SAI_API_DASH_VIP: return lemming::dataplane::sai::API_DASH_VIP; - - case SAI_API_EXTENSIONS_RANGE_END: return lemming::dataplane::sai::API_EXTENSIONS_RANGE_END; - - default: return lemming::dataplane::sai::API_EXTENSIONS_UNSPECIFIED; - } -} -sai_api_extensions_t convert_sai_api_extensions_t_to_sai(lemming::dataplane::sai::ApiExtensions val) { - switch (val) { - - case lemming::dataplane::sai::API_EXTENSIONS_RANGE_START: return SAI_API_EXTENSIONS_RANGE_START; - - case lemming::dataplane::sai::API_DASH_ACL: return SAI_API_DASH_ACL; - - case lemming::dataplane::sai::API_DASH_DIRECTION_LOOKUP: return SAI_API_DASH_DIRECTION_LOOKUP; - - case lemming::dataplane::sai::API_DASH_ENI: return SAI_API_DASH_ENI; - - case lemming::dataplane::sai::API_DASH_INBOUND_ROUTING: return SAI_API_DASH_INBOUND_ROUTING; - - case lemming::dataplane::sai::API_DASH_METER: return SAI_API_DASH_METER; - - case lemming::dataplane::sai::API_DASH_OUTBOUND_CA_TO_PA: return SAI_API_DASH_OUTBOUND_CA_TO_PA; - - case lemming::dataplane::sai::API_DASH_OUTBOUND_ROUTING: return SAI_API_DASH_OUTBOUND_ROUTING; - - case lemming::dataplane::sai::API_DASH_VNET: return SAI_API_DASH_VNET; - - case lemming::dataplane::sai::API_DASH_PA_VALIDATION: return SAI_API_DASH_PA_VALIDATION; - - case lemming::dataplane::sai::API_DASH_VIP: return SAI_API_DASH_VIP; - - case lemming::dataplane::sai::API_EXTENSIONS_RANGE_END: return SAI_API_EXTENSIONS_RANGE_END; - - default: return SAI_API_EXTENSIONS_RANGE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_api_extensions_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_api_extensions_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_api_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_api_extensions_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); + case SAI_ACL_ACTION_TYPE_REDIRECT_LIST: + return lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT_LIST; + + case SAI_ACL_ACTION_TYPE_PACKET_ACTION: + return lemming::dataplane::sai::ACL_ACTION_TYPE_PACKET_ACTION; + + case SAI_ACL_ACTION_TYPE_FLOOD: + return lemming::dataplane::sai::ACL_ACTION_TYPE_FLOOD; + + case SAI_ACL_ACTION_TYPE_COUNTER: + return lemming::dataplane::sai::ACL_ACTION_TYPE_COUNTER; + + case SAI_ACL_ACTION_TYPE_MIRROR_INGRESS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_INGRESS; + + case SAI_ACL_ACTION_TYPE_MIRROR_EGRESS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_EGRESS; + + case SAI_ACL_ACTION_TYPE_SET_POLICER: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_POLICER; + + case SAI_ACL_ACTION_TYPE_DECREMENT_TTL: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DECREMENT_TTL; + + case SAI_ACL_ACTION_TYPE_SET_TC: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_TC; + + case SAI_ACL_ACTION_TYPE_SET_PACKET_COLOR: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_PACKET_COLOR; + + case SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_ID; + + case SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_PRI; + + case SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_ID; + + case SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI; + + case SAI_ACL_ACTION_TYPE_ADD_VLAN_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_ID; + + case SAI_ACL_ACTION_TYPE_ADD_VLAN_PRI: + return lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_PRI; + + case SAI_ACL_ACTION_TYPE_SET_SRC_MAC: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_MAC; + + case SAI_ACL_ACTION_TYPE_SET_DST_MAC: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_MAC; + + case SAI_ACL_ACTION_TYPE_SET_SRC_IP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IP; + + case SAI_ACL_ACTION_TYPE_SET_DST_IP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IP; + + case SAI_ACL_ACTION_TYPE_SET_SRC_IPV6: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IPV6; + + case SAI_ACL_ACTION_TYPE_SET_DST_IPV6: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IPV6; + + case SAI_ACL_ACTION_TYPE_SET_DSCP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DSCP; + + case SAI_ACL_ACTION_TYPE_SET_ECN: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECN; + + case SAI_ACL_ACTION_TYPE_SET_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_SRC_PORT; + + case SAI_ACL_ACTION_TYPE_SET_L4_DST_PORT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_DST_PORT; + + case SAI_ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai:: + ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE; + + case SAI_ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai:: + ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE; + + case SAI_ACL_ACTION_TYPE_SET_ACL_META_DATA: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ACL_META_DATA; + + case SAI_ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST: + return lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST; + + case SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_USER_TRAP_ID; + + case SAI_ACL_ACTION_TYPE_SET_DO_NOT_LEARN: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DO_NOT_LEARN; + + case SAI_ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP; + + case SAI_ACL_ACTION_TYPE_DTEL_INT_SESSION: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_INT_SESSION; + + case SAI_ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE; + + case SAI_ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE: + return lemming::dataplane::sai:: + ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE; + + case SAI_ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT; + + case SAI_ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS; + + case SAI_ACL_ACTION_TYPE_NO_NAT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_NO_NAT; + + case SAI_ACL_ACTION_TYPE_INT_INSERT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_INSERT; + + case SAI_ACL_ACTION_TYPE_INT_DELETE: + return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_DELETE; + + case SAI_ACL_ACTION_TYPE_INT_REPORT_FLOW: + return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_FLOW; + + case SAI_ACL_ACTION_TYPE_INT_REPORT_DROPS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_DROPS; + + case SAI_ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS; + + case SAI_ACL_ACTION_TYPE_TAM_INT_OBJECT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_TAM_INT_OBJECT; + + case SAI_ACL_ACTION_TYPE_SET_ISOLATION_GROUP: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ISOLATION_GROUP; + + case SAI_ACL_ACTION_TYPE_MACSEC_FLOW: + return lemming::dataplane::sai::ACL_ACTION_TYPE_MACSEC_FLOW; + + case SAI_ACL_ACTION_TYPE_SET_LAG_HASH_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_LAG_HASH_ID; + + case SAI_ACL_ACTION_TYPE_SET_ECMP_HASH_ID: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECMP_HASH_ID; + + case SAI_ACL_ACTION_TYPE_SET_VRF: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_VRF; + + case SAI_ACL_ACTION_TYPE_SET_FORWARDING_CLASS: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_FORWARDING_CLASS; + + case SAI_ACL_ACTION_TYPE_SET_ARS_MONITORING: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_MONITORING; + + case SAI_ACL_ACTION_TYPE_SET_ARS_OBJECT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_OBJECT; + + case SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING: + return lemming::dataplane::sai::ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING; + + case SAI_ACL_ACTION_TYPE_CHAIN_REDIRECT: + return lemming::dataplane::sai::ACL_ACTION_TYPE_CHAIN_REDIRECT; + + default: + return lemming::dataplane::sai::ACL_ACTION_TYPE_UNSPECIFIED; + } +} +sai_acl_action_type_t convert_sai_acl_action_type_t_to_sai( + lemming::dataplane::sai::AclActionType val) { + switch (val) { + case lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT: + return SAI_ACL_ACTION_TYPE_REDIRECT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_ENDPOINT_IP: + return SAI_ACL_ACTION_TYPE_ENDPOINT_IP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_REDIRECT_LIST: + return SAI_ACL_ACTION_TYPE_REDIRECT_LIST; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_PACKET_ACTION: + return SAI_ACL_ACTION_TYPE_PACKET_ACTION; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_FLOOD: + return SAI_ACL_ACTION_TYPE_FLOOD; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_COUNTER: + return SAI_ACL_ACTION_TYPE_COUNTER; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_INGRESS: + return SAI_ACL_ACTION_TYPE_MIRROR_INGRESS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_MIRROR_EGRESS: + return SAI_ACL_ACTION_TYPE_MIRROR_EGRESS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_POLICER: + return SAI_ACL_ACTION_TYPE_SET_POLICER; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DECREMENT_TTL: + return SAI_ACL_ACTION_TYPE_DECREMENT_TTL; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_TC: + return SAI_ACL_ACTION_TYPE_SET_TC; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_PACKET_COLOR: + return SAI_ACL_ACTION_TYPE_SET_PACKET_COLOR; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_ID: + return SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_INNER_VLAN_PRI: + return SAI_ACL_ACTION_TYPE_SET_INNER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_ID: + return SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI: + return SAI_ACL_ACTION_TYPE_SET_OUTER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_ID: + return SAI_ACL_ACTION_TYPE_ADD_VLAN_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_ADD_VLAN_PRI: + return SAI_ACL_ACTION_TYPE_ADD_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_MAC: + return SAI_ACL_ACTION_TYPE_SET_SRC_MAC; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_MAC: + return SAI_ACL_ACTION_TYPE_SET_DST_MAC; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IP: + return SAI_ACL_ACTION_TYPE_SET_SRC_IP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IP: + return SAI_ACL_ACTION_TYPE_SET_DST_IP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_SRC_IPV6: + return SAI_ACL_ACTION_TYPE_SET_SRC_IPV6; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DST_IPV6: + return SAI_ACL_ACTION_TYPE_SET_DST_IPV6; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DSCP: + return SAI_ACL_ACTION_TYPE_SET_DSCP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECN: + return SAI_ACL_ACTION_TYPE_SET_ECN; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_SRC_PORT: + return SAI_ACL_ACTION_TYPE_SET_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_L4_DST_PORT: + return SAI_ACL_ACTION_TYPE_SET_L4_DST_PORT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE: + return SAI_ACL_ACTION_TYPE_INGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE: + return SAI_ACL_ACTION_TYPE_EGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ACL_META_DATA: + return SAI_ACL_ACTION_TYPE_SET_ACL_META_DATA; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST: + return SAI_ACL_ACTION_TYPE_EGRESS_BLOCK_PORT_LIST; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_USER_TRAP_ID: + return SAI_ACL_ACTION_TYPE_SET_USER_TRAP_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_DO_NOT_LEARN: + return SAI_ACL_ACTION_TYPE_SET_DO_NOT_LEARN; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP: + return SAI_ACL_ACTION_TYPE_ACL_DTEL_FLOW_OP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_INT_SESSION: + return SAI_ACL_ACTION_TYPE_DTEL_INT_SESSION; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE: + return SAI_ACL_ACTION_TYPE_DTEL_DROP_REPORT_ENABLE; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE: + return SAI_ACL_ACTION_TYPE_DTEL_TAIL_DROP_REPORT_ENABLE; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT: + return SAI_ACL_ACTION_TYPE_DTEL_FLOW_SAMPLE_PERCENT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS: + return SAI_ACL_ACTION_TYPE_DTEL_REPORT_ALL_PACKETS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_NO_NAT: + return SAI_ACL_ACTION_TYPE_NO_NAT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_INSERT: + return SAI_ACL_ACTION_TYPE_INT_INSERT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_DELETE: + return SAI_ACL_ACTION_TYPE_INT_DELETE; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_FLOW: + return SAI_ACL_ACTION_TYPE_INT_REPORT_FLOW; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_DROPS: + return SAI_ACL_ACTION_TYPE_INT_REPORT_DROPS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS: + return SAI_ACL_ACTION_TYPE_INT_REPORT_TAIL_DROPS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_TAM_INT_OBJECT: + return SAI_ACL_ACTION_TYPE_TAM_INT_OBJECT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ISOLATION_GROUP: + return SAI_ACL_ACTION_TYPE_SET_ISOLATION_GROUP; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_MACSEC_FLOW: + return SAI_ACL_ACTION_TYPE_MACSEC_FLOW; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_LAG_HASH_ID: + return SAI_ACL_ACTION_TYPE_SET_LAG_HASH_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ECMP_HASH_ID: + return SAI_ACL_ACTION_TYPE_SET_ECMP_HASH_ID; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_VRF: + return SAI_ACL_ACTION_TYPE_SET_VRF; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_FORWARDING_CLASS: + return SAI_ACL_ACTION_TYPE_SET_FORWARDING_CLASS; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_MONITORING: + return SAI_ACL_ACTION_TYPE_SET_ARS_MONITORING; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_SET_ARS_OBJECT: + return SAI_ACL_ACTION_TYPE_SET_ARS_OBJECT; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING: + return SAI_ACL_ACTION_TYPE_DISABLE_ARS_FORWARDING; + + case lemming::dataplane::sai::ACL_ACTION_TYPE_CHAIN_REDIRECT: + return SAI_ACL_ACTION_TYPE_CHAIN_REDIRECT; + + default: + return SAI_ACL_ACTION_TYPE_REDIRECT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_action_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_action_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_action_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_action_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclBindPointType +convert_sai_acl_bind_point_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_BIND_POINT_TYPE_PORT: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_PORT; + + case SAI_ACL_BIND_POINT_TYPE_LAG: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_LAG; + + case SAI_ACL_BIND_POINT_TYPE_VLAN: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_VLAN; + + case SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_ROUTER_INTERFACE; + + case SAI_ACL_BIND_POINT_TYPE_SWITCH: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_SWITCH; + + default: + return lemming::dataplane::sai::ACL_BIND_POINT_TYPE_UNSPECIFIED; + } +} +sai_acl_bind_point_type_t convert_sai_acl_bind_point_type_t_to_sai( + lemming::dataplane::sai::AclBindPointType val) { + switch (val) { + case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_PORT: + return SAI_ACL_BIND_POINT_TYPE_PORT; + + case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_LAG: + return SAI_ACL_BIND_POINT_TYPE_LAG; + + case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_VLAN: + return SAI_ACL_BIND_POINT_TYPE_VLAN; + + case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_ROUTER_INTERFACE: + return SAI_ACL_BIND_POINT_TYPE_ROUTER_INTERFACE; + + case lemming::dataplane::sai::ACL_BIND_POINT_TYPE_SWITCH: + return SAI_ACL_BIND_POINT_TYPE_SWITCH; + + default: + return SAI_ACL_BIND_POINT_TYPE_PORT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_bind_point_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_bind_point_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_bind_point_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_bind_point_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclCounterAttr convert_sai_acl_counter_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_COUNTER_ATTR_TABLE_ID: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_TABLE_ID; + + case SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT; + + case SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT; + + case SAI_ACL_COUNTER_ATTR_PACKETS: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_PACKETS; + + case SAI_ACL_COUNTER_ATTR_BYTES: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_BYTES; + + case SAI_ACL_COUNTER_ATTR_LABEL: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_LABEL; + + default: + return lemming::dataplane::sai::ACL_COUNTER_ATTR_UNSPECIFIED; + } +} +sai_acl_counter_attr_t convert_sai_acl_counter_attr_t_to_sai( + lemming::dataplane::sai::AclCounterAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_COUNTER_ATTR_TABLE_ID: + return SAI_ACL_COUNTER_ATTR_TABLE_ID; + + case lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT: + return SAI_ACL_COUNTER_ATTR_ENABLE_PACKET_COUNT; + + case lemming::dataplane::sai::ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT: + return SAI_ACL_COUNTER_ATTR_ENABLE_BYTE_COUNT; + + case lemming::dataplane::sai::ACL_COUNTER_ATTR_PACKETS: + return SAI_ACL_COUNTER_ATTR_PACKETS; + + case lemming::dataplane::sai::ACL_COUNTER_ATTR_BYTES: + return SAI_ACL_COUNTER_ATTR_BYTES; + + case lemming::dataplane::sai::ACL_COUNTER_ATTR_LABEL: + return SAI_ACL_COUNTER_ATTR_LABEL; + + default: + return SAI_ACL_COUNTER_ATTR_TABLE_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_counter_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_counter_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_counter_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclDtelFlowOp convert_sai_acl_dtel_flow_op_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_DTEL_FLOW_OP_NOP: + return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_NOP; + + case SAI_ACL_DTEL_FLOW_OP_INT: + return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_INT; + + case SAI_ACL_DTEL_FLOW_OP_IOAM: + return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_IOAM; + + case SAI_ACL_DTEL_FLOW_OP_POSTCARD: + return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_POSTCARD; + + default: + return lemming::dataplane::sai::ACL_DTEL_FLOW_OP_UNSPECIFIED; + } +} +sai_acl_dtel_flow_op_t convert_sai_acl_dtel_flow_op_t_to_sai( + lemming::dataplane::sai::AclDtelFlowOp val) { + switch (val) { + case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_NOP: + return SAI_ACL_DTEL_FLOW_OP_NOP; + + case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_INT: + return SAI_ACL_DTEL_FLOW_OP_INT; + + case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_IOAM: + return SAI_ACL_DTEL_FLOW_OP_IOAM; + + case lemming::dataplane::sai::ACL_DTEL_FLOW_OP_POSTCARD: + return SAI_ACL_DTEL_FLOW_OP_POSTCARD; + + default: + return SAI_ACL_DTEL_FLOW_OP_NOP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_dtel_flow_op_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_dtel_flow_op_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_dtel_flow_op_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_dtel_flow_op_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclEntryAttr convert_sai_acl_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_ENTRY_ATTR_TABLE_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_TABLE_ID; + + case SAI_ACL_ENTRY_ATTR_PRIORITY: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_PRIORITY; + + case SAI_ACL_ENTRY_ATTR_ADMIN_STATE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ADMIN_STATE; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_MAC; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_MAC; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IP; + + case SAI_ACL_ENTRY_ATTR_FIELD_DST_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IP; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IP; + + case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORTS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORTS; + + case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORTS; + + case SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID; + + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI; + + case SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI; + + case SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_DST_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT; + + case SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ETHER_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL; + + case SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION; + + case SAI_ACL_ENTRY_ATTR_FIELD_DSCP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DSCP; + + case SAI_ACL_ENTRY_ATTR_FIELD_ECN: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ECN; + + case SAI_ACL_ENTRY_ATTR_FIELD_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_TOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_FLAGS; + + case SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TCP_FLAGS; + + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG; + + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_TC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TC; + + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_CODE; + + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE; + + case SAI_ACL_ENTRY_ATTR_FIELD_PACKET_VLAN: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PACKET_VLAN; + + case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI; + + case SAI_ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG; + + case SAI_ACL_ENTRY_ATTR_FIELD_MACSEC_SCI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MACSEC_SCI; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP; + + case SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS; + + case SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PORT_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VLAN_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_USER_META; + + case SAI_ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT; + + case SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; + + case SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; + + case SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_BTH_OPCODE; + + case SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME; + + case SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN; + + case SAI_ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER; + + case SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_GRE_KEY; + + case SAI_ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC; + + case SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC; + + case SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VRF_ID; + + case SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT; + + case SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED; + + case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT; + + case SAI_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP; + + case SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST; + + case SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_PACKET_ACTION; + + case SAI_ACL_ENTRY_ATTR_ACTION_FLOOD: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_FLOOD; + + case SAI_ACL_ENTRY_ATTR_ACTION_COUNTER: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_COUNTER; + + case SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS; + + case SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_POLICER; + + case SAI_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_TC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_TC; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI; + + case SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_MAC; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IP; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IP; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_DSCP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DSCP; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECN: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECN; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT; + + case SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE; + + case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA; + + case SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN; + + case SAI_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP; + + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION; + + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE; + + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE; + + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT; + + case SAI_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS; + + case SAI_ACL_ENTRY_ATTR_ACTION_NO_NAT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_NO_NAT; + + case SAI_ACL_ENTRY_ATTR_ACTION_INT_INSERT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_INSERT; + + case SAI_ACL_ENTRY_ATTR_ACTION_INT_DELETE: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_DELETE; + + case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW; + + case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS; + + case SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS; + + case SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP; + + case SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_VRF; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING; + + case SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT; + + case SAI_ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING: + return lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING; + + case SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT; + + default: + return lemming::dataplane::sai::ACL_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_acl_entry_attr_t convert_sai_acl_entry_attr_t_to_sai( + lemming::dataplane::sai::AclEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_ENTRY_ATTR_TABLE_ID: + return SAI_ACL_ENTRY_ATTR_TABLE_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_PRIORITY: + return SAI_ACL_ENTRY_ATTR_PRIORITY; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ADMIN_STATE: + return SAI_ACL_ENTRY_ATTR_ADMIN_STATE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD3; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD2; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD1; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IPV6_WORD0; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD3; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD2; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD1; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IPV6_WORD0; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_MAC: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_MAC: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_IP: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DST_IP: + return SAI_ACL_ENTRY_ATTR_FIELD_DST_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_IP: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORTS: + return SAI_ACL_ENTRY_ATTR_FIELD_IN_PORTS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORTS: + return SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORTS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IN_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_IN_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUT_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_OUT_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_SRC_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_SRC_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID: + return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI: + return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI: + return SAI_ACL_ENTRY_ATTR_FIELD_OUTER_VLAN_CFI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_VLAN_CFI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_L4_DST_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_L4_DST_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_L4_DST_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ETHER_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_ETHER_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_ETHER_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL: + return SAI_ACL_ENTRY_ATTR_FIELD_IP_PROTOCOL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_IP_PROTOCOL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION: + return SAI_ACL_ENTRY_ATTR_FIELD_IP_IDENTIFICATION; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_DSCP: + return SAI_ACL_ENTRY_ATTR_FIELD_DSCP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ECN: + return SAI_ACL_ENTRY_ATTR_FIELD_ECN; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TOS: + return SAI_ACL_ENTRY_ATTR_FIELD_TOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IP_FLAGS: + return SAI_ACL_ENTRY_ATTR_FIELD_IP_FLAGS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TCP_FLAGS: + return SAI_ACL_ENTRY_ATTR_FIELD_TCP_FLAGS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG: + return SAI_ACL_ENTRY_ATTR_FIELD_ACL_IP_FRAG; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_IPV6_FLOW_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TC: + return SAI_ACL_ENTRY_ATTR_FIELD_TC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_ICMP_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMP_CODE: + return SAI_ACL_ENTRY_ATTR_FIELD_ICMP_CODE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE: + return SAI_ACL_ENTRY_ATTR_FIELD_ICMPV6_CODE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PACKET_VLAN: + return SAI_ACL_ENTRY_ATTR_FIELD_PACKET_VLAN; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI: + return SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_VNI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG: + return SAI_ACL_ENTRY_ATTR_FIELD_HAS_VLAN_TAG; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MACSEC_SCI: + return SAI_ACL_ENTRY_ATTR_FIELD_MACSEC_SCI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_EXP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL0_BOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_EXP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL1_BOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_EXP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL2_BOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_EXP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL3_BOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_LABEL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_EXP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS: + return SAI_ACL_ENTRY_ATTR_FIELD_MPLS_LABEL4_BOS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_FDB_DST_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_DST_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_DST_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_PORT_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_PORT_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VLAN_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_VLAN_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_USER_META: + return SAI_ACL_ENTRY_ATTR_FIELD_ACL_USER_META; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT: + return SAI_ACL_ENTRY_ATTR_FIELD_FDB_NPU_META_DST_HIT; + + case lemming::dataplane::sai:: + ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + return SAI_ACL_ENTRY_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + return SAI_ACL_ENTRY_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_BTH_OPCODE: + return SAI_ACL_ENTRY_ATTR_FIELD_BTH_OPCODE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME: + return SAI_ACL_ENTRY_ATTR_FIELD_AETH_SYNDROME; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN: + return SAI_ACL_ENTRY_ATTR_USER_DEFINED_FIELD_GROUP_MIN; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_ACL_RANGE_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER: + return SAI_ACL_ENTRY_ATTR_FIELD_IPV6_NEXT_HEADER; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_GRE_KEY: + return SAI_ACL_ENTRY_ATTR_FIELD_GRE_KEY; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE: + return SAI_ACL_ENTRY_ATTR_FIELD_TAM_INT_TYPE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_SRC_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC: + return SAI_ACL_ENTRY_ATTR_FIELD_INNER_DST_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_VRF_ID: + return SAI_ACL_ENTRY_ATTR_FIELD_VRF_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + return SAI_ACL_ENTRY_ATTR_FIELD_IPMC_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED: + return SAI_ACL_ENTRY_ATTR_FIELD_TUNNEL_TERMINATED; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT: + return SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP: + return SAI_ACL_ENTRY_ATTR_ACTION_ENDPOINT_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST: + return SAI_ACL_ENTRY_ATTR_ACTION_REDIRECT_LIST; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_PACKET_ACTION: + return SAI_ACL_ENTRY_ATTR_ACTION_PACKET_ACTION; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_FLOOD: + return SAI_ACL_ENTRY_ATTR_ACTION_FLOOD; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_COUNTER: + return SAI_ACL_ENTRY_ATTR_ACTION_COUNTER; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS: + return SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_INGRESS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS: + return SAI_ACL_ENTRY_ATTR_ACTION_MIRROR_EGRESS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_POLICER: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_POLICER; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL: + return SAI_ACL_ENTRY_ATTR_ACTION_DECREMENT_TTL; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_TC: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_TC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_PACKET_COLOR; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_INNER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_OUTER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI: + return SAI_ACL_ENTRY_ATTR_ACTION_ADD_VLAN_PRI; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_MAC: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_MAC; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IP: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IP: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_SRC_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_DST_IPV6; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DSCP: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_DSCP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECN: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ECN; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_L4_DST_PORT; + + case lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE: + return SAI_ACL_ENTRY_ATTR_ACTION_INGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE: + return SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ACL_META_DATA; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST: + return SAI_ACL_ENTRY_ATTR_ACTION_EGRESS_BLOCK_PORT_LIST; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_USER_TRAP_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_DO_NOT_LEARN; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP: + return SAI_ACL_ENTRY_ATTR_ACTION_ACL_DTEL_FLOW_OP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION: + return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_INT_SESSION; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE: + return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_DROP_REPORT_ENABLE; + + case lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE: + return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_TAIL_DROP_REPORT_ENABLE; + + case lemming::dataplane::sai:: + ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT: + return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_FLOW_SAMPLE_PERCENT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS: + return SAI_ACL_ENTRY_ATTR_ACTION_DTEL_REPORT_ALL_PACKETS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_NO_NAT: + return SAI_ACL_ENTRY_ATTR_ACTION_NO_NAT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_INSERT: + return SAI_ACL_ENTRY_ATTR_ACTION_INT_INSERT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_DELETE: + return SAI_ACL_ENTRY_ATTR_ACTION_INT_DELETE; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW: + return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_FLOW; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS: + return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_DROPS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS: + return SAI_ACL_ENTRY_ATTR_ACTION_INT_REPORT_TAIL_DROPS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT: + return SAI_ACL_ENTRY_ATTR_ACTION_TAM_INT_OBJECT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ISOLATION_GROUP; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW: + return SAI_ACL_ENTRY_ATTR_ACTION_MACSEC_FLOW; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_LAG_HASH_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ECMP_HASH_ID; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_VRF: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_VRF; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_FORWARDING_CLASS; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_MONITORING; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT: + return SAI_ACL_ENTRY_ATTR_ACTION_SET_ARS_OBJECT; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING: + return SAI_ACL_ENTRY_ATTR_ACTION_DISABLE_ARS_FORWARDING; + + case lemming::dataplane::sai::ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT: + return SAI_ACL_ENTRY_ATTR_ACTION_CHAIN_REDIRECT; + + default: + return SAI_ACL_ENTRY_ATTR_TABLE_ID; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclIpFrag convert_sai_acl_ip_frag_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_IP_FRAG_ANY: + return lemming::dataplane::sai::ACL_IP_FRAG_ANY; + + case SAI_ACL_IP_FRAG_NON_FRAG: + return lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG; + + case SAI_ACL_IP_FRAG_NON_FRAG_OR_HEAD: + return lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG_OR_HEAD; + + case SAI_ACL_IP_FRAG_HEAD: + return lemming::dataplane::sai::ACL_IP_FRAG_HEAD; + + case SAI_ACL_IP_FRAG_NON_HEAD: + return lemming::dataplane::sai::ACL_IP_FRAG_NON_HEAD; + + default: + return lemming::dataplane::sai::ACL_IP_FRAG_UNSPECIFIED; + } +} +sai_acl_ip_frag_t convert_sai_acl_ip_frag_t_to_sai( + lemming::dataplane::sai::AclIpFrag val) { + switch (val) { + case lemming::dataplane::sai::ACL_IP_FRAG_ANY: + return SAI_ACL_IP_FRAG_ANY; + + case lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG: + return SAI_ACL_IP_FRAG_NON_FRAG; + + case lemming::dataplane::sai::ACL_IP_FRAG_NON_FRAG_OR_HEAD: + return SAI_ACL_IP_FRAG_NON_FRAG_OR_HEAD; + + case lemming::dataplane::sai::ACL_IP_FRAG_HEAD: + return SAI_ACL_IP_FRAG_HEAD; + + case lemming::dataplane::sai::ACL_IP_FRAG_NON_HEAD: + return SAI_ACL_IP_FRAG_NON_HEAD; + + default: + return SAI_ACL_IP_FRAG_ANY; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_ip_frag_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_ip_frag_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_ip_frag_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_ip_frag_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclIpType convert_sai_acl_ip_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_IP_TYPE_ANY: + return lemming::dataplane::sai::ACL_IP_TYPE_ANY; + + case SAI_ACL_IP_TYPE_IP: + return lemming::dataplane::sai::ACL_IP_TYPE_IP; + + case SAI_ACL_IP_TYPE_NON_IP: + return lemming::dataplane::sai::ACL_IP_TYPE_NON_IP; + + case SAI_ACL_IP_TYPE_IPV4ANY: + return lemming::dataplane::sai::ACL_IP_TYPE_IPV4ANY; + + case SAI_ACL_IP_TYPE_NON_IPV4: + return lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV4; + + case SAI_ACL_IP_TYPE_IPV6ANY: + return lemming::dataplane::sai::ACL_IP_TYPE_IPV6ANY; + + case SAI_ACL_IP_TYPE_NON_IPV6: + return lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV6; + + case SAI_ACL_IP_TYPE_ARP: + return lemming::dataplane::sai::ACL_IP_TYPE_ARP; + + case SAI_ACL_IP_TYPE_ARP_REQUEST: + return lemming::dataplane::sai::ACL_IP_TYPE_ARP_REQUEST; + + case SAI_ACL_IP_TYPE_ARP_REPLY: + return lemming::dataplane::sai::ACL_IP_TYPE_ARP_REPLY; + + default: + return lemming::dataplane::sai::ACL_IP_TYPE_UNSPECIFIED; + } +} +sai_acl_ip_type_t convert_sai_acl_ip_type_t_to_sai( + lemming::dataplane::sai::AclIpType val) { + switch (val) { + case lemming::dataplane::sai::ACL_IP_TYPE_ANY: + return SAI_ACL_IP_TYPE_ANY; + + case lemming::dataplane::sai::ACL_IP_TYPE_IP: + return SAI_ACL_IP_TYPE_IP; + + case lemming::dataplane::sai::ACL_IP_TYPE_NON_IP: + return SAI_ACL_IP_TYPE_NON_IP; + + case lemming::dataplane::sai::ACL_IP_TYPE_IPV4ANY: + return SAI_ACL_IP_TYPE_IPV4ANY; + + case lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV4: + return SAI_ACL_IP_TYPE_NON_IPV4; + + case lemming::dataplane::sai::ACL_IP_TYPE_IPV6ANY: + return SAI_ACL_IP_TYPE_IPV6ANY; + + case lemming::dataplane::sai::ACL_IP_TYPE_NON_IPV6: + return SAI_ACL_IP_TYPE_NON_IPV6; + + case lemming::dataplane::sai::ACL_IP_TYPE_ARP: + return SAI_ACL_IP_TYPE_ARP; + + case lemming::dataplane::sai::ACL_IP_TYPE_ARP_REQUEST: + return SAI_ACL_IP_TYPE_ARP_REQUEST; + + case lemming::dataplane::sai::ACL_IP_TYPE_ARP_REPLY: + return SAI_ACL_IP_TYPE_ARP_REPLY; + + default: + return SAI_ACL_IP_TYPE_ANY; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_ip_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_ip_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_ip_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_ip_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclRangeAttr convert_sai_acl_range_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_RANGE_ATTR_TYPE: + return lemming::dataplane::sai::ACL_RANGE_ATTR_TYPE; + + case SAI_ACL_RANGE_ATTR_LIMIT: + return lemming::dataplane::sai::ACL_RANGE_ATTR_LIMIT; + + default: + return lemming::dataplane::sai::ACL_RANGE_ATTR_UNSPECIFIED; + } +} +sai_acl_range_attr_t convert_sai_acl_range_attr_t_to_sai( + lemming::dataplane::sai::AclRangeAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_RANGE_ATTR_TYPE: + return SAI_ACL_RANGE_ATTR_TYPE; + + case lemming::dataplane::sai::ACL_RANGE_ATTR_LIMIT: + return SAI_ACL_RANGE_ATTR_LIMIT; + + default: + return SAI_ACL_RANGE_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_range_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_range_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_range_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_range_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclRangeType convert_sai_acl_range_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE: + return lemming::dataplane::sai::ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; + + case SAI_ACL_RANGE_TYPE_L4_DST_PORT_RANGE: + return lemming::dataplane::sai::ACL_RANGE_TYPE_L4_DST_PORT_RANGE; + + case SAI_ACL_RANGE_TYPE_OUTER_VLAN: + return lemming::dataplane::sai::ACL_RANGE_TYPE_OUTER_VLAN; + + case SAI_ACL_RANGE_TYPE_INNER_VLAN: + return lemming::dataplane::sai::ACL_RANGE_TYPE_INNER_VLAN; + + case SAI_ACL_RANGE_TYPE_PACKET_LENGTH: + return lemming::dataplane::sai::ACL_RANGE_TYPE_PACKET_LENGTH; + + default: + return lemming::dataplane::sai::ACL_RANGE_TYPE_UNSPECIFIED; + } +} +sai_acl_range_type_t convert_sai_acl_range_type_t_to_sai( + lemming::dataplane::sai::AclRangeType val) { + switch (val) { + case lemming::dataplane::sai::ACL_RANGE_TYPE_L4_SRC_PORT_RANGE: + return SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; + + case lemming::dataplane::sai::ACL_RANGE_TYPE_L4_DST_PORT_RANGE: + return SAI_ACL_RANGE_TYPE_L4_DST_PORT_RANGE; + + case lemming::dataplane::sai::ACL_RANGE_TYPE_OUTER_VLAN: + return SAI_ACL_RANGE_TYPE_OUTER_VLAN; + + case lemming::dataplane::sai::ACL_RANGE_TYPE_INNER_VLAN: + return SAI_ACL_RANGE_TYPE_INNER_VLAN; + + case lemming::dataplane::sai::ACL_RANGE_TYPE_PACKET_LENGTH: + return SAI_ACL_RANGE_TYPE_PACKET_LENGTH; + + default: + return SAI_ACL_RANGE_TYPE_L4_SRC_PORT_RANGE; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_range_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_range_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_range_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_range_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclStage convert_sai_acl_stage_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_STAGE_INGRESS: + return lemming::dataplane::sai::ACL_STAGE_INGRESS; + + case SAI_ACL_STAGE_EGRESS: + return lemming::dataplane::sai::ACL_STAGE_EGRESS; + + case SAI_ACL_STAGE_INGRESS_MACSEC: + return lemming::dataplane::sai::ACL_STAGE_INGRESS_MACSEC; + + case SAI_ACL_STAGE_EGRESS_MACSEC: + return lemming::dataplane::sai::ACL_STAGE_EGRESS_MACSEC; + + case SAI_ACL_STAGE_PRE_INGRESS: + return lemming::dataplane::sai::ACL_STAGE_PRE_INGRESS; + + case SAI_ACL_STAGE_POST_INGRESS: + return lemming::dataplane::sai::ACL_STAGE_POST_INGRESS; + + default: + return lemming::dataplane::sai::ACL_STAGE_UNSPECIFIED; + } +} +sai_acl_stage_t convert_sai_acl_stage_t_to_sai( + lemming::dataplane::sai::AclStage val) { + switch (val) { + case lemming::dataplane::sai::ACL_STAGE_INGRESS: + return SAI_ACL_STAGE_INGRESS; + + case lemming::dataplane::sai::ACL_STAGE_EGRESS: + return SAI_ACL_STAGE_EGRESS; + + case lemming::dataplane::sai::ACL_STAGE_INGRESS_MACSEC: + return SAI_ACL_STAGE_INGRESS_MACSEC; + + case lemming::dataplane::sai::ACL_STAGE_EGRESS_MACSEC: + return SAI_ACL_STAGE_EGRESS_MACSEC; + + case lemming::dataplane::sai::ACL_STAGE_PRE_INGRESS: + return SAI_ACL_STAGE_PRE_INGRESS; + + case lemming::dataplane::sai::ACL_STAGE_POST_INGRESS: + return SAI_ACL_STAGE_POST_INGRESS; + + default: + return SAI_ACL_STAGE_INGRESS; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_stage_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_stage_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_stage_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableAttr convert_sai_acl_table_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_ATTR_ACL_STAGE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_STAGE; + + case SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: + return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST; + + case SAI_ACL_TABLE_ATTR_SIZE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_SIZE; + + case SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: + return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_MAC; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_MAC: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_MAC; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_IP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IP; + + case SAI_ACL_TABLE_ATTR_FIELD_DST_IP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IP; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IP; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IP; + + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORTS; + + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORTS; + + case SAI_ACL_TABLE_ATTR_FIELD_IN_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID; + + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI; + + case SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI; + + case SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_SRC_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_DST_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT; + + case SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ETHER_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_PROTOCOL; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL; + + case SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION; + + case SAI_ACL_TABLE_ATTR_FIELD_DSCP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DSCP; + + case SAI_ACL_TABLE_ATTR_FIELD_ECN: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ECN; + + case SAI_ACL_TABLE_ATTR_FIELD_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_TOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TOS; + + case SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_FLAGS; + + case SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TCP_FLAGS; + + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG; + + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_TC: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TC; + + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_CODE; + + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_CODE; + + case SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PACKET_VLAN; + + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_VNI; + + case SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG; + + case SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MACSEC_SCI; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP; + + case SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS; + + case SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: + return lemming::dataplane::sai:: + ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PORT_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VLAN_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_USER_META; + + case SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT; + + case SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; + + case SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; + + case SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_BTH_OPCODE; + + case SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_AETH_SYNDROME; + + case SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN: + return lemming::dataplane::sai:: + ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN; + + case SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER; + + case SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_GRE_KEY; + + case SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC; + + case SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_MAC; + + case SAI_ACL_TABLE_ATTR_FIELD_VRF_ID: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VRF_ID; + + case SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + return lemming::dataplane::sai:: + ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT; + + case SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED; + + case SAI_ACL_TABLE_ATTR_ENTRY_LIST: + return lemming::dataplane::sai::ACL_TABLE_ATTR_ENTRY_LIST; + + case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: + return lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY; + + case SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: + return lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER; + + case SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: + return lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE; + + case SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6; + + case SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6: + return lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6; + + default: + return lemming::dataplane::sai::ACL_TABLE_ATTR_UNSPECIFIED; + } +} +sai_acl_table_attr_t convert_sai_acl_table_attr_t_to_sai( + lemming::dataplane::sai::AclTableAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_STAGE: + return SAI_ACL_TABLE_ATTR_ACL_STAGE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST: + return SAI_ACL_TABLE_ATTR_ACL_BIND_POINT_TYPE_LIST; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_SIZE: + return SAI_ACL_TABLE_ATTR_SIZE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST: + return SAI_ACL_TABLE_ATTR_ACL_ACTION_TYPE_LIST; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD3; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD2; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD1; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IPV6_WORD0; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD3; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD2; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD1; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IPV6_WORD0; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IPV6; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IPV6; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_MAC: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_MAC; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_MAC: + return SAI_ACL_TABLE_ATTR_FIELD_DST_MAC; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_IP: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_IP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DST_IP: + return SAI_ACL_TABLE_ATTR_FIELD_DST_IP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_IP: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_IP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_IP: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_IP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORTS: + return SAI_ACL_TABLE_ATTR_FIELD_IN_PORTS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORTS: + return SAI_ACL_TABLE_ATTR_FIELD_OUT_PORTS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IN_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_IN_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUT_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_OUT_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_SRC_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_SRC_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID: + return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_ID; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI: + return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI: + return SAI_ACL_TABLE_ATTR_FIELD_OUTER_VLAN_CFI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_ID; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_PRI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_VLAN_CFI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_SRC_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_L4_DST_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_L4_DST_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_SRC_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_L4_DST_PORT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ETHER_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_ETHER_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_ETHER_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_PROTOCOL: + return SAI_ACL_TABLE_ATTR_FIELD_IP_PROTOCOL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_IP_PROTOCOL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION: + return SAI_ACL_TABLE_ATTR_FIELD_IP_IDENTIFICATION; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_DSCP: + return SAI_ACL_TABLE_ATTR_FIELD_DSCP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ECN: + return SAI_ACL_TABLE_ATTR_FIELD_ECN; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TOS: + return SAI_ACL_TABLE_ATTR_FIELD_TOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IP_FLAGS: + return SAI_ACL_TABLE_ATTR_FIELD_IP_FLAGS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TCP_FLAGS: + return SAI_ACL_TABLE_ATTR_FIELD_TCP_FLAGS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG: + return SAI_ACL_TABLE_ATTR_FIELD_ACL_IP_FRAG; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_IPV6_FLOW_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TC: + return SAI_ACL_TABLE_ATTR_FIELD_TC; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_ICMP_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMP_CODE: + return SAI_ACL_TABLE_ATTR_FIELD_ICMP_CODE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ICMPV6_CODE: + return SAI_ACL_TABLE_ATTR_FIELD_ICMPV6_CODE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PACKET_VLAN: + return SAI_ACL_TABLE_ATTR_FIELD_PACKET_VLAN; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_VNI: + return SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_VNI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG: + return SAI_ACL_TABLE_ATTR_FIELD_HAS_VLAN_TAG; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MACSEC_SCI: + return SAI_ACL_TABLE_ATTR_FIELD_MACSEC_SCI; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_EXP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL0_BOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_EXP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL1_BOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_EXP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL2_BOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_EXP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL3_BOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_LABEL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_TTL; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_EXP; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS: + return SAI_ACL_TABLE_ATTR_FIELD_MPLS_LABEL4_BOS; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_FDB_DST_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_ROUTE_DST_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_DST_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_PORT_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_PORT_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VLAN_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_VLAN_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_USER_META: + return SAI_ACL_TABLE_ATTR_FIELD_ACL_USER_META; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT: + return SAI_ACL_TABLE_ATTR_FIELD_FDB_NPU_META_DST_HIT; + + case lemming::dataplane::sai:: + ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT: + return SAI_ACL_TABLE_ATTR_FIELD_NEIGHBOR_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT: + return SAI_ACL_TABLE_ATTR_FIELD_ROUTE_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_BTH_OPCODE: + return SAI_ACL_TABLE_ATTR_FIELD_BTH_OPCODE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_AETH_SYNDROME: + return SAI_ACL_TABLE_ATTR_FIELD_AETH_SYNDROME; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN: + return SAI_ACL_TABLE_ATTR_USER_DEFINED_FIELD_GROUP_MIN; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_ACL_RANGE_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER: + return SAI_ACL_TABLE_ATTR_FIELD_IPV6_NEXT_HEADER; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_GRE_KEY: + return SAI_ACL_TABLE_ATTR_FIELD_GRE_KEY; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE: + return SAI_ACL_TABLE_ATTR_FIELD_TAM_INT_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_SRC_MAC; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_INNER_DST_MAC: + return SAI_ACL_TABLE_ATTR_FIELD_INNER_DST_MAC; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VRF_ID: + return SAI_ACL_TABLE_ATTR_FIELD_VRF_ID; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT: + return SAI_ACL_TABLE_ATTR_FIELD_IPMC_NPU_META_DST_HIT; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED: + return SAI_ACL_TABLE_ATTR_FIELD_TUNNEL_TERMINATED; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_ENTRY_LIST: + return SAI_ACL_TABLE_ATTR_ENTRY_LIST; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY: + return SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_ENTRY; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER: + return SAI_ACL_TABLE_ATTR_AVAILABLE_ACL_COUNTER; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE: + return SAI_ACL_TABLE_ATTR_ACL_TABLE_MATCH_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_SRC_IPV6; + + case lemming::dataplane::sai::ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6: + return SAI_ACL_TABLE_ATTR_FIELD_VALID_BITS_DST_IPV6; + + default: + return SAI_ACL_TABLE_ATTR_ACL_STAGE; + } +} + +google::protobuf::RepeatedField convert_list_sai_acl_table_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_table_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableChainGroupAttr +convert_sai_acl_table_chain_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; + + case SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_STAGE; + + default: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_UNSPECIFIED; + } +} +sai_acl_table_chain_group_attr_t +convert_sai_acl_table_chain_group_attr_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_TYPE: + return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_ATTR_STAGE: + return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_STAGE; + + default: + return SAI_ACL_TABLE_CHAIN_GROUP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_acl_table_chain_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_chain_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_chain_group_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableChainGroupStage +convert_sai_acl_table_chain_group_stage_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_0; + + case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_1: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_1; + + case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_2: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_2; + + case SAI_ACL_TABLE_CHAIN_GROUP_STAGE_3: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_3; + + default: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_UNSPECIFIED; + } +} +sai_acl_table_chain_group_stage_t +convert_sai_acl_table_chain_group_stage_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupStage val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_0: + return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0; + + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_1: + return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_1; + + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_2: + return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_2; + + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_STAGE_3: + return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_3; + + default: + return SAI_ACL_TABLE_CHAIN_GROUP_STAGE_0; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_stage_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_acl_table_chain_group_stage_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_chain_group_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_chain_group_stage_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableChainGroupType +convert_sai_acl_table_chain_group_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; + + case SAI_ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL; + + default: + return lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_UNSPECIFIED; + } +} +sai_acl_table_chain_group_type_t +convert_sai_acl_table_chain_group_type_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupType val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL: + return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; + + case lemming::dataplane::sai::ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL: + return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_PARALLEL; + + default: + return SAI_ACL_TABLE_CHAIN_GROUP_TYPE_SEQUENTIAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_acl_table_chain_group_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_chain_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_chain_group_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableGroupAttr +convert_sai_acl_table_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE: + return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_STAGE; + + case SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: + return lemming::dataplane::sai:: + ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST; + + case SAI_ACL_TABLE_GROUP_ATTR_TYPE: + return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_TYPE; + + case SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST: + return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_MEMBER_LIST; + + case SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: + return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST; + + default: + return lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_UNSPECIFIED; + } +} +sai_acl_table_group_attr_t convert_sai_acl_table_group_attr_t_to_sai( + lemming::dataplane::sai::AclTableGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_STAGE: + return SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST: + return SAI_ACL_TABLE_GROUP_ATTR_ACL_BIND_POINT_TYPE_LIST; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_TYPE: + return SAI_ACL_TABLE_GROUP_ATTR_TYPE; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_MEMBER_LIST: + return SAI_ACL_TABLE_GROUP_ATTR_MEMBER_LIST; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST: + return SAI_ACL_TABLE_GROUP_ATTR_CHAIN_GROUP_LIST; + + default: + return SAI_ACL_TABLE_GROUP_ATTR_ACL_STAGE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_table_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableGroupMemberAttr +convert_sai_acl_table_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: + return lemming::dataplane::sai:: + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; + + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: + return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID; + + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: + return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY; + + case SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: + return lemming::dataplane::sai:: + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID; + + default: + return lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_acl_table_group_member_attr_t +convert_sai_acl_table_group_member_attr_t_to_sai( + lemming::dataplane::sai::AclTableGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai:: + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID: + return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID: + return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_ID; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY: + return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_PRIORITY; + + case lemming::dataplane::sai:: + ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID: + return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_CHAIN_GROUP_ID; + + default: + return SAI_ACL_TABLE_GROUP_MEMBER_ATTR_ACL_TABLE_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_member_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_acl_table_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableGroupType +convert_sai_acl_table_group_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL: + return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_SEQUENTIAL; + + case SAI_ACL_TABLE_GROUP_TYPE_PARALLEL: + return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_PARALLEL; + + default: + return lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_UNSPECIFIED; + } +} +sai_acl_table_group_type_t convert_sai_acl_table_group_type_t_to_sai( + lemming::dataplane::sai::AclTableGroupType val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_SEQUENTIAL: + return SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL; + + case lemming::dataplane::sai::ACL_TABLE_GROUP_TYPE_PARALLEL: + return SAI_ACL_TABLE_GROUP_TYPE_PARALLEL; + + default: + return SAI_ACL_TABLE_GROUP_TYPE_SEQUENTIAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_table_group_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_group_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableMatchType +convert_sai_acl_table_match_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_MATCH_TYPE_TERNARY: + return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_TERNARY; + + case SAI_ACL_TABLE_MATCH_TYPE_EXACT: + return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_EXACT; + + default: + return lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_UNSPECIFIED; + } +} +sai_acl_table_match_type_t convert_sai_acl_table_match_type_t_to_sai( + lemming::dataplane::sai::AclTableMatchType val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_TERNARY: + return SAI_ACL_TABLE_MATCH_TYPE_TERNARY; + + case lemming::dataplane::sai::ACL_TABLE_MATCH_TYPE_EXACT: + return SAI_ACL_TABLE_MATCH_TYPE_EXACT; + + default: + return SAI_ACL_TABLE_MATCH_TYPE_TERNARY; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_match_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_acl_table_match_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_match_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_match_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::AclTableSupportedMatchType +convert_sai_acl_table_supported_match_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY: + return lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; + + case SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT: + return lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT; + + default: + return lemming::dataplane::sai:: + ACL_TABLE_SUPPORTED_MATCH_TYPE_UNSPECIFIED; + } +} +sai_acl_table_supported_match_type_t +convert_sai_acl_table_supported_match_type_t_to_sai( + lemming::dataplane::sai::AclTableSupportedMatchType val) { + switch (val) { + case lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY: + return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; + + case lemming::dataplane::sai::ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT: + return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_EXACT; + + default: + return SAI_ACL_TABLE_SUPPORTED_MATCH_TYPE_TERNARY; + } +} + +google::protobuf::RepeatedField +convert_list_sai_acl_table_supported_match_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_acl_table_supported_match_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_acl_table_supported_match_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_acl_table_supported_match_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::ApiExtensions convert_sai_api_extensions_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_API_EXTENSIONS_RANGE_START: + return lemming::dataplane::sai::API_EXTENSIONS_RANGE_START; + + case SAI_API_DASH_ACL: + return lemming::dataplane::sai::API_DASH_ACL; + + case SAI_API_DASH_DIRECTION_LOOKUP: + return lemming::dataplane::sai::API_DASH_DIRECTION_LOOKUP; + + case SAI_API_DASH_ENI: + return lemming::dataplane::sai::API_DASH_ENI; + + case SAI_API_DASH_INBOUND_ROUTING: + return lemming::dataplane::sai::API_DASH_INBOUND_ROUTING; + + case SAI_API_DASH_METER: + return lemming::dataplane::sai::API_DASH_METER; + + case SAI_API_DASH_OUTBOUND_CA_TO_PA: + return lemming::dataplane::sai::API_DASH_OUTBOUND_CA_TO_PA; + + case SAI_API_DASH_OUTBOUND_ROUTING: + return lemming::dataplane::sai::API_DASH_OUTBOUND_ROUTING; + + case SAI_API_DASH_VNET: + return lemming::dataplane::sai::API_DASH_VNET; + + case SAI_API_DASH_PA_VALIDATION: + return lemming::dataplane::sai::API_DASH_PA_VALIDATION; + + case SAI_API_DASH_VIP: + return lemming::dataplane::sai::API_DASH_VIP; + + case SAI_API_DASH_HA: + return lemming::dataplane::sai::API_DASH_HA; + + case SAI_API_DASH_TUNNEL: + return lemming::dataplane::sai::API_DASH_TUNNEL; + + case SAI_API_DASH_FLOW: + return lemming::dataplane::sai::API_DASH_FLOW; + + case SAI_API_DASH_APPLIANCE: + return lemming::dataplane::sai::API_DASH_APPLIANCE; + + case SAI_API_EXTENSIONS_RANGE_END: + return lemming::dataplane::sai::API_EXTENSIONS_RANGE_END; + + default: + return lemming::dataplane::sai::API_EXTENSIONS_UNSPECIFIED; + } +} +sai_api_extensions_t convert_sai_api_extensions_t_to_sai( + lemming::dataplane::sai::ApiExtensions val) { + switch (val) { + case lemming::dataplane::sai::API_EXTENSIONS_RANGE_START: + return SAI_API_EXTENSIONS_RANGE_START; + + case lemming::dataplane::sai::API_DASH_ACL: + return SAI_API_DASH_ACL; + + case lemming::dataplane::sai::API_DASH_DIRECTION_LOOKUP: + return SAI_API_DASH_DIRECTION_LOOKUP; + + case lemming::dataplane::sai::API_DASH_ENI: + return SAI_API_DASH_ENI; + + case lemming::dataplane::sai::API_DASH_INBOUND_ROUTING: + return SAI_API_DASH_INBOUND_ROUTING; + + case lemming::dataplane::sai::API_DASH_METER: + return SAI_API_DASH_METER; + + case lemming::dataplane::sai::API_DASH_OUTBOUND_CA_TO_PA: + return SAI_API_DASH_OUTBOUND_CA_TO_PA; + + case lemming::dataplane::sai::API_DASH_OUTBOUND_ROUTING: + return SAI_API_DASH_OUTBOUND_ROUTING; + + case lemming::dataplane::sai::API_DASH_VNET: + return SAI_API_DASH_VNET; + + case lemming::dataplane::sai::API_DASH_PA_VALIDATION: + return SAI_API_DASH_PA_VALIDATION; + + case lemming::dataplane::sai::API_DASH_VIP: + return SAI_API_DASH_VIP; + + case lemming::dataplane::sai::API_DASH_HA: + return SAI_API_DASH_HA; + + case lemming::dataplane::sai::API_DASH_TUNNEL: + return SAI_API_DASH_TUNNEL; + + case lemming::dataplane::sai::API_DASH_FLOW: + return SAI_API_DASH_FLOW; + + case lemming::dataplane::sai::API_DASH_APPLIANCE: + return SAI_API_DASH_APPLIANCE; + + case lemming::dataplane::sai::API_EXTENSIONS_RANGE_END: + return SAI_API_EXTENSIONS_RANGE_END; + + default: + return SAI_API_EXTENSIONS_RANGE_START; + } +} + +google::protobuf::RepeatedField convert_list_sai_api_extensions_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_api_extensions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_api_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_api_extensions_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::Api convert_sai_api_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_API_UNSPECIFIED: + return lemming::dataplane::sai::API_SAI_UNSPECIFIED; + + case SAI_API_SWITCH: + return lemming::dataplane::sai::API_SWITCH; + + case SAI_API_PORT: + return lemming::dataplane::sai::API_PORT; + + case SAI_API_FDB: + return lemming::dataplane::sai::API_FDB; + + case SAI_API_VLAN: + return lemming::dataplane::sai::API_VLAN; + + case SAI_API_VIRTUAL_ROUTER: + return lemming::dataplane::sai::API_VIRTUAL_ROUTER; + + case SAI_API_ROUTE: + return lemming::dataplane::sai::API_ROUTE; + + case SAI_API_NEXT_HOP: + return lemming::dataplane::sai::API_NEXT_HOP; + + case SAI_API_NEXT_HOP_GROUP: + return lemming::dataplane::sai::API_NEXT_HOP_GROUP; + + case SAI_API_ROUTER_INTERFACE: + return lemming::dataplane::sai::API_ROUTER_INTERFACE; + + case SAI_API_NEIGHBOR: + return lemming::dataplane::sai::API_NEIGHBOR; + + case SAI_API_ACL: + return lemming::dataplane::sai::API_ACL; + + case SAI_API_HOSTIF: + return lemming::dataplane::sai::API_HOSTIF; + + case SAI_API_MIRROR: + return lemming::dataplane::sai::API_MIRROR; + + case SAI_API_SAMPLEPACKET: + return lemming::dataplane::sai::API_SAMPLEPACKET; + + case SAI_API_STP: + return lemming::dataplane::sai::API_STP; + + case SAI_API_LAG: + return lemming::dataplane::sai::API_LAG; + + case SAI_API_POLICER: + return lemming::dataplane::sai::API_POLICER; + + case SAI_API_WRED: + return lemming::dataplane::sai::API_WRED; + + case SAI_API_QOS_MAP: + return lemming::dataplane::sai::API_QOS_MAP; + + case SAI_API_QUEUE: + return lemming::dataplane::sai::API_QUEUE; + + case SAI_API_SCHEDULER: + return lemming::dataplane::sai::API_SCHEDULER; + + case SAI_API_SCHEDULER_GROUP: + return lemming::dataplane::sai::API_SCHEDULER_GROUP; + + case SAI_API_BUFFER: + return lemming::dataplane::sai::API_BUFFER; + + case SAI_API_HASH: + return lemming::dataplane::sai::API_HASH; + + case SAI_API_UDF: + return lemming::dataplane::sai::API_UDF; + + case SAI_API_TUNNEL: + return lemming::dataplane::sai::API_TUNNEL; + + case SAI_API_L2MC: + return lemming::dataplane::sai::API_L2MC; + + case SAI_API_IPMC: + return lemming::dataplane::sai::API_IPMC; + + case SAI_API_RPF_GROUP: + return lemming::dataplane::sai::API_RPF_GROUP; + + case SAI_API_L2MC_GROUP: + return lemming::dataplane::sai::API_L2MC_GROUP; + + case SAI_API_IPMC_GROUP: + return lemming::dataplane::sai::API_IPMC_GROUP; + + case SAI_API_MCAST_FDB: + return lemming::dataplane::sai::API_MCAST_FDB; + + case SAI_API_BRIDGE: + return lemming::dataplane::sai::API_BRIDGE; + + case SAI_API_TAM: + return lemming::dataplane::sai::API_TAM; + + case SAI_API_SRV6: + return lemming::dataplane::sai::API_SRV6; + + case SAI_API_MPLS: + return lemming::dataplane::sai::API_MPLS; + + case SAI_API_DTEL: + return lemming::dataplane::sai::API_DTEL; + + case SAI_API_BFD: + return lemming::dataplane::sai::API_BFD; + + case SAI_API_ISOLATION_GROUP: + return lemming::dataplane::sai::API_ISOLATION_GROUP; + + case SAI_API_NAT: + return lemming::dataplane::sai::API_NAT; + + case SAI_API_COUNTER: + return lemming::dataplane::sai::API_COUNTER; + + case SAI_API_DEBUG_COUNTER: + return lemming::dataplane::sai::API_DEBUG_COUNTER; + + case SAI_API_MACSEC: + return lemming::dataplane::sai::API_MACSEC; + + case SAI_API_SYSTEM_PORT: + return lemming::dataplane::sai::API_SYSTEM_PORT; + + case SAI_API_MY_MAC: + return lemming::dataplane::sai::API_MY_MAC; + + case SAI_API_IPSEC: + return lemming::dataplane::sai::API_IPSEC; + + case SAI_API_GENERIC_PROGRAMMABLE: + return lemming::dataplane::sai::API_GENERIC_PROGRAMMABLE; + + case SAI_API_ARS: + return lemming::dataplane::sai::API_ARS; + + case SAI_API_ARS_PROFILE: + return lemming::dataplane::sai::API_ARS_PROFILE; + + case SAI_API_TWAMP: + return lemming::dataplane::sai::API_TWAMP; + + case SAI_API_POE: + return lemming::dataplane::sai::API_POE; + + case SAI_API_ICMP_ECHO: + return lemming::dataplane::sai::API_ICMP_ECHO; + + case SAI_API_MAX: + return lemming::dataplane::sai::API_MAX; + + case SAI_API_EXTENSIONS_RANGE_BASE: + return lemming::dataplane::sai::API_EXTENSIONS_RANGE_BASE; + + default: + return lemming::dataplane::sai::API_UNSPECIFIED; + } +} +sai_api_t convert_sai_api_t_to_sai(lemming::dataplane::sai::Api val) { + switch (val) { + case lemming::dataplane::sai::API_SAI_UNSPECIFIED: + return SAI_API_UNSPECIFIED; + + case lemming::dataplane::sai::API_SWITCH: + return SAI_API_SWITCH; + + case lemming::dataplane::sai::API_PORT: + return SAI_API_PORT; + + case lemming::dataplane::sai::API_FDB: + return SAI_API_FDB; + + case lemming::dataplane::sai::API_VLAN: + return SAI_API_VLAN; + + case lemming::dataplane::sai::API_VIRTUAL_ROUTER: + return SAI_API_VIRTUAL_ROUTER; + + case lemming::dataplane::sai::API_ROUTE: + return SAI_API_ROUTE; + + case lemming::dataplane::sai::API_NEXT_HOP: + return SAI_API_NEXT_HOP; + + case lemming::dataplane::sai::API_NEXT_HOP_GROUP: + return SAI_API_NEXT_HOP_GROUP; + + case lemming::dataplane::sai::API_ROUTER_INTERFACE: + return SAI_API_ROUTER_INTERFACE; + + case lemming::dataplane::sai::API_NEIGHBOR: + return SAI_API_NEIGHBOR; + + case lemming::dataplane::sai::API_ACL: + return SAI_API_ACL; + + case lemming::dataplane::sai::API_HOSTIF: + return SAI_API_HOSTIF; + + case lemming::dataplane::sai::API_MIRROR: + return SAI_API_MIRROR; + + case lemming::dataplane::sai::API_SAMPLEPACKET: + return SAI_API_SAMPLEPACKET; + + case lemming::dataplane::sai::API_STP: + return SAI_API_STP; + + case lemming::dataplane::sai::API_LAG: + return SAI_API_LAG; + + case lemming::dataplane::sai::API_POLICER: + return SAI_API_POLICER; + + case lemming::dataplane::sai::API_WRED: + return SAI_API_WRED; + + case lemming::dataplane::sai::API_QOS_MAP: + return SAI_API_QOS_MAP; + + case lemming::dataplane::sai::API_QUEUE: + return SAI_API_QUEUE; + + case lemming::dataplane::sai::API_SCHEDULER: + return SAI_API_SCHEDULER; + + case lemming::dataplane::sai::API_SCHEDULER_GROUP: + return SAI_API_SCHEDULER_GROUP; + + case lemming::dataplane::sai::API_BUFFER: + return SAI_API_BUFFER; + + case lemming::dataplane::sai::API_HASH: + return SAI_API_HASH; + + case lemming::dataplane::sai::API_UDF: + return SAI_API_UDF; + + case lemming::dataplane::sai::API_TUNNEL: + return SAI_API_TUNNEL; + + case lemming::dataplane::sai::API_L2MC: + return SAI_API_L2MC; + + case lemming::dataplane::sai::API_IPMC: + return SAI_API_IPMC; + + case lemming::dataplane::sai::API_RPF_GROUP: + return SAI_API_RPF_GROUP; + + case lemming::dataplane::sai::API_L2MC_GROUP: + return SAI_API_L2MC_GROUP; + + case lemming::dataplane::sai::API_IPMC_GROUP: + return SAI_API_IPMC_GROUP; + + case lemming::dataplane::sai::API_MCAST_FDB: + return SAI_API_MCAST_FDB; + + case lemming::dataplane::sai::API_BRIDGE: + return SAI_API_BRIDGE; + + case lemming::dataplane::sai::API_TAM: + return SAI_API_TAM; + + case lemming::dataplane::sai::API_SRV6: + return SAI_API_SRV6; + + case lemming::dataplane::sai::API_MPLS: + return SAI_API_MPLS; + + case lemming::dataplane::sai::API_DTEL: + return SAI_API_DTEL; + + case lemming::dataplane::sai::API_BFD: + return SAI_API_BFD; + + case lemming::dataplane::sai::API_ISOLATION_GROUP: + return SAI_API_ISOLATION_GROUP; + + case lemming::dataplane::sai::API_NAT: + return SAI_API_NAT; + + case lemming::dataplane::sai::API_COUNTER: + return SAI_API_COUNTER; + + case lemming::dataplane::sai::API_DEBUG_COUNTER: + return SAI_API_DEBUG_COUNTER; + + case lemming::dataplane::sai::API_MACSEC: + return SAI_API_MACSEC; + + case lemming::dataplane::sai::API_SYSTEM_PORT: + return SAI_API_SYSTEM_PORT; + + case lemming::dataplane::sai::API_MY_MAC: + return SAI_API_MY_MAC; + + case lemming::dataplane::sai::API_IPSEC: + return SAI_API_IPSEC; + + case lemming::dataplane::sai::API_GENERIC_PROGRAMMABLE: + return SAI_API_GENERIC_PROGRAMMABLE; + + case lemming::dataplane::sai::API_ARS: + return SAI_API_ARS; + + case lemming::dataplane::sai::API_ARS_PROFILE: + return SAI_API_ARS_PROFILE; + + case lemming::dataplane::sai::API_TWAMP: + return SAI_API_TWAMP; + + case lemming::dataplane::sai::API_POE: + return SAI_API_POE; + + case lemming::dataplane::sai::API_ICMP_ECHO: + return SAI_API_ICMP_ECHO; + + case lemming::dataplane::sai::API_MAX: + return SAI_API_MAX; + + case lemming::dataplane::sai::API_EXTENSIONS_RANGE_BASE: + return SAI_API_EXTENSIONS_RANGE_BASE; + + default: + return SAI_API_UNSPECIFIED; + } +} + +google::protobuf::RepeatedField convert_list_sai_api_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_api_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_api_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_api_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdEncapsulationType +convert_sai_bfd_encapsulation_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP: + return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_IP_IN_IP; + + case SAI_BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL: + return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL; + + case SAI_BFD_ENCAPSULATION_TYPE_NONE: + return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_NONE; + + case SAI_BFD_ENCAPSULATION_TYPE_SRV6: + return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_SRV6; + + default: + return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_UNSPECIFIED; + } +} +sai_bfd_encapsulation_type_t convert_sai_bfd_encapsulation_type_t_to_sai( + lemming::dataplane::sai::BfdEncapsulationType val) { + switch (val) { + case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_IP_IN_IP: + return SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP; + + case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL: + return SAI_BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL; + + case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_NONE: + return SAI_BFD_ENCAPSULATION_TYPE_NONE; + + case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_SRV6: + return SAI_BFD_ENCAPSULATION_TYPE_SRV6; + + default: + return SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_encapsulation_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bfd_encapsulation_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_encapsulation_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_encapsulation_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdSessionAttr convert_sai_bfd_session_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BFD_SESSION_ATTR_TYPE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TYPE; + + case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: + return lemming::dataplane::sai::BFD_SESSION_ATTR_HW_LOOKUP_VALID; + + case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VIRTUAL_ROUTER; + + case SAI_BFD_SESSION_ATTR_PORT: + return lemming::dataplane::sai::BFD_SESSION_ATTR_PORT; + + case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: + return lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR; + + case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: + return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR; + + case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: + return lemming::dataplane::sai::BFD_SESSION_ATTR_UDP_SRC_PORT; + + case SAI_BFD_SESSION_ATTR_TC: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TC; + + case SAI_BFD_SESSION_ATTR_VLAN_TPID: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_TPID; + + case SAI_BFD_SESSION_ATTR_VLAN_ID: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_ID; + + case SAI_BFD_SESSION_ATTR_VLAN_PRI: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_PRI; + + case SAI_BFD_SESSION_ATTR_VLAN_CFI: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_CFI; + + case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: + return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_HEADER_VALID; + + case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE; + + case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: + return lemming::dataplane::sai::BFD_SESSION_ATTR_IPHDR_VERSION; + + case SAI_BFD_SESSION_ATTR_TOS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TOS; + + case SAI_BFD_SESSION_ATTR_TTL: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TTL; + + case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_IP_ADDRESS; + + case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_DST_IP_ADDRESS; + + case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TOS; + + case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TTL; + + case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS; + + case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS; + + case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_MAC_ADDRESS; + + case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: + return lemming::dataplane::sai::BFD_SESSION_ATTR_DST_MAC_ADDRESS; + + case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_ECHO_ENABLE; + + case SAI_BFD_SESSION_ATTR_MULTIHOP: + return lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIHOP; + + case SAI_BFD_SESSION_ATTR_CBIT: + return lemming::dataplane::sai::BFD_SESSION_ATTR_CBIT; + + case SAI_BFD_SESSION_ATTR_MIN_TX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_TX; + + case SAI_BFD_SESSION_ATTR_MIN_RX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_RX; + + case SAI_BFD_SESSION_ATTR_MULTIPLIER: + return lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIPLIER; + + case SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_TX; + + case SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_RX; + + case SAI_BFD_SESSION_ATTR_STATE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_STATE; + + case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_OFFLOAD_TYPE; + + case SAI_BFD_SESSION_ATTR_NEGOTIATED_TX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_TX; + + case SAI_BFD_SESSION_ATTR_NEGOTIATED_RX: + return lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_RX; + + case SAI_BFD_SESSION_ATTR_LOCAL_DIAG: + return lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DIAG; + + case SAI_BFD_SESSION_ATTR_REMOTE_DIAG: + return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DIAG; + + case SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER: + return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MULTIPLIER; + + case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: + return lemming::dataplane::sai::BFD_SESSION_ATTR_SRV6_SIDLIST_ID; + + case SAI_BFD_SESSION_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::BFD_SESSION_ATTR_STATS_COUNT_MODE; + + case SAI_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::BFD_SESSION_ATTR_UNSPECIFIED; + } +} +sai_bfd_session_attr_t convert_sai_bfd_session_attr_t_to_sai( + lemming::dataplane::sai::BfdSessionAttr val) { + switch (val) { + case lemming::dataplane::sai::BFD_SESSION_ATTR_TYPE: + return SAI_BFD_SESSION_ATTR_TYPE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_HW_LOOKUP_VALID: + return SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VIRTUAL_ROUTER: + return SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_PORT: + return SAI_BFD_SESSION_ATTR_PORT; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: + return SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: + return SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_UDP_SRC_PORT: + return SAI_BFD_SESSION_ATTR_UDP_SRC_PORT; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TC: + return SAI_BFD_SESSION_ATTR_TC; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_TPID: + return SAI_BFD_SESSION_ATTR_VLAN_TPID; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_ID: + return SAI_BFD_SESSION_ATTR_VLAN_ID; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_PRI: + return SAI_BFD_SESSION_ATTR_VLAN_PRI; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_CFI: + return SAI_BFD_SESSION_ATTR_VLAN_CFI; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_HEADER_VALID: + return SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: + return SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_IPHDR_VERSION: + return SAI_BFD_SESSION_ATTR_IPHDR_VERSION; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TOS: + return SAI_BFD_SESSION_ATTR_TOS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TTL: + return SAI_BFD_SESSION_ATTR_TTL; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_IP_ADDRESS: + return SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_DST_IP_ADDRESS: + return SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TOS: + return SAI_BFD_SESSION_ATTR_TUNNEL_TOS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TTL: + return SAI_BFD_SESSION_ATTR_TUNNEL_TTL; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: + return SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: + return SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_MAC_ADDRESS: + return SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_DST_MAC_ADDRESS: + return SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_ECHO_ENABLE: + return SAI_BFD_SESSION_ATTR_ECHO_ENABLE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIHOP: + return SAI_BFD_SESSION_ATTR_MULTIHOP; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_CBIT: + return SAI_BFD_SESSION_ATTR_CBIT; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_TX: + return SAI_BFD_SESSION_ATTR_MIN_TX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_RX: + return SAI_BFD_SESSION_ATTR_MIN_RX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIPLIER: + return SAI_BFD_SESSION_ATTR_MULTIPLIER; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_TX: + return SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_RX: + return SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_STATE: + return SAI_BFD_SESSION_ATTR_STATE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_OFFLOAD_TYPE: + return SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_TX: + return SAI_BFD_SESSION_ATTR_NEGOTIATED_TX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_RX: + return SAI_BFD_SESSION_ATTR_NEGOTIATED_RX; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DIAG: + return SAI_BFD_SESSION_ATTR_LOCAL_DIAG; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DIAG: + return SAI_BFD_SESSION_ATTR_REMOTE_DIAG; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MULTIPLIER: + return SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_SRV6_SIDLIST_ID: + return SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_STATS_COUNT_MODE: + return SAI_BFD_SESSION_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_BFD_SESSION_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_BFD_SESSION_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_session_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bfd_session_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_session_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdSessionOffloadType +convert_sai_bfd_session_offload_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BFD_SESSION_OFFLOAD_TYPE_NONE: + return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_NONE; + + case SAI_BFD_SESSION_OFFLOAD_TYPE_FULL: + return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_FULL; + + case SAI_BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE: + return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE; + + default: + return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_UNSPECIFIED; + } +} +sai_bfd_session_offload_type_t convert_sai_bfd_session_offload_type_t_to_sai( + lemming::dataplane::sai::BfdSessionOffloadType val) { + switch (val) { + case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_NONE: + return SAI_BFD_SESSION_OFFLOAD_TYPE_NONE; + + case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_FULL: + return SAI_BFD_SESSION_OFFLOAD_TYPE_FULL; + + case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE: + return SAI_BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE; + + default: + return SAI_BFD_SESSION_OFFLOAD_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_session_offload_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_bfd_session_offload_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_session_offload_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_session_offload_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdSessionStat convert_sai_bfd_session_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BFD_SESSION_STAT_IN_PACKETS: + return lemming::dataplane::sai::BFD_SESSION_STAT_IN_PACKETS; + + case SAI_BFD_SESSION_STAT_OUT_PACKETS: + return lemming::dataplane::sai::BFD_SESSION_STAT_OUT_PACKETS; + + case SAI_BFD_SESSION_STAT_DROP_PACKETS: + return lemming::dataplane::sai::BFD_SESSION_STAT_DROP_PACKETS; + + default: + return lemming::dataplane::sai::BFD_SESSION_STAT_UNSPECIFIED; + } +} +sai_bfd_session_stat_t convert_sai_bfd_session_stat_t_to_sai( + lemming::dataplane::sai::BfdSessionStat val) { + switch (val) { + case lemming::dataplane::sai::BFD_SESSION_STAT_IN_PACKETS: + return SAI_BFD_SESSION_STAT_IN_PACKETS; + + case lemming::dataplane::sai::BFD_SESSION_STAT_OUT_PACKETS: + return SAI_BFD_SESSION_STAT_OUT_PACKETS; + + case lemming::dataplane::sai::BFD_SESSION_STAT_DROP_PACKETS: + return SAI_BFD_SESSION_STAT_DROP_PACKETS; + + default: + return SAI_BFD_SESSION_STAT_IN_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_session_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bfd_session_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_session_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_session_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdSessionState +convert_sai_bfd_session_state_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BFD_SESSION_STATE_ADMIN_DOWN: + return lemming::dataplane::sai::BFD_SESSION_STATE_ADMIN_DOWN; + + case SAI_BFD_SESSION_STATE_DOWN: + return lemming::dataplane::sai::BFD_SESSION_STATE_DOWN; + + case SAI_BFD_SESSION_STATE_INIT: + return lemming::dataplane::sai::BFD_SESSION_STATE_INIT; + + case SAI_BFD_SESSION_STATE_UP: + return lemming::dataplane::sai::BFD_SESSION_STATE_UP; + + default: + return lemming::dataplane::sai::BFD_SESSION_STATE_UNSPECIFIED; + } +} +sai_bfd_session_state_t convert_sai_bfd_session_state_t_to_sai( + lemming::dataplane::sai::BfdSessionState val) { + switch (val) { + case lemming::dataplane::sai::BFD_SESSION_STATE_ADMIN_DOWN: + return SAI_BFD_SESSION_STATE_ADMIN_DOWN; + + case lemming::dataplane::sai::BFD_SESSION_STATE_DOWN: + return SAI_BFD_SESSION_STATE_DOWN; + + case lemming::dataplane::sai::BFD_SESSION_STATE_INIT: + return SAI_BFD_SESSION_STATE_INIT; + + case lemming::dataplane::sai::BFD_SESSION_STATE_UP: + return SAI_BFD_SESSION_STATE_UP; + + default: + return SAI_BFD_SESSION_STATE_ADMIN_DOWN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_session_state_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bfd_session_state_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_session_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_session_state_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BfdSessionType convert_sai_bfd_session_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE: + return lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_ACTIVE; + + case SAI_BFD_SESSION_TYPE_DEMAND_PASSIVE: + return lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_PASSIVE; + + case SAI_BFD_SESSION_TYPE_ASYNC_ACTIVE: + return lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_ACTIVE; + + case SAI_BFD_SESSION_TYPE_ASYNC_PASSIVE: + return lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_PASSIVE; + + default: + return lemming::dataplane::sai::BFD_SESSION_TYPE_UNSPECIFIED; + } +} +sai_bfd_session_type_t convert_sai_bfd_session_type_t_to_sai( + lemming::dataplane::sai::BfdSessionType val) { + switch (val) { + case lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_ACTIVE: + return SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE; + + case lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_PASSIVE: + return SAI_BFD_SESSION_TYPE_DEMAND_PASSIVE; + + case lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_ACTIVE: + return SAI_BFD_SESSION_TYPE_ASYNC_ACTIVE; + + case lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_PASSIVE: + return SAI_BFD_SESSION_TYPE_ASYNC_PASSIVE; + + default: + return SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bfd_session_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bfd_session_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bfd_session_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bfd_session_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgeAttr convert_sai_bridge_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_ATTR_TYPE: + return lemming::dataplane::sai::BRIDGE_ATTR_TYPE; + + case SAI_BRIDGE_ATTR_PORT_LIST: + return lemming::dataplane::sai::BRIDGE_ATTR_PORT_LIST; + + case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: + return lemming::dataplane::sai::BRIDGE_ATTR_MAX_LEARNED_ADDRESSES; + + case SAI_BRIDGE_ATTR_LEARN_DISABLE: + return lemming::dataplane::sai::BRIDGE_ATTR_LEARN_DISABLE; + + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai:: + BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; + + case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; + + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai:: + BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; + + case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; + + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; + + case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: + return lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_GROUP; + + case SAI_BRIDGE_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::BRIDGE_ATTR_STATS_COUNT_MODE; + + case SAI_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::BRIDGE_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::BRIDGE_ATTR_UNSPECIFIED; + } +} +sai_bridge_attr_t convert_sai_bridge_attr_t_to_sai( + lemming::dataplane::sai::BridgeAttr val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_ATTR_TYPE: + return SAI_BRIDGE_ATTR_TYPE; + + case lemming::dataplane::sai::BRIDGE_ATTR_PORT_LIST: + return SAI_BRIDGE_ATTR_PORT_LIST; + + case lemming::dataplane::sai::BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: + return SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES; + + case lemming::dataplane::sai::BRIDGE_ATTR_LEARN_DISABLE: + return SAI_BRIDGE_ATTR_LEARN_DISABLE; + + case lemming::dataplane::sai:: + BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + return SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + return SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; + + case lemming::dataplane::sai:: + BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + return SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + return SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; + + case lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + return SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: + return SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP; + + case lemming::dataplane::sai::BRIDGE_ATTR_STATS_COUNT_MODE: + return SAI_BRIDGE_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::BRIDGE_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_BRIDGE_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_BRIDGE_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_bridge_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgeFloodControlType +convert_sai_bridge_flood_control_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS: + return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; + + case SAI_BRIDGE_FLOOD_CONTROL_TYPE_NONE: + return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_NONE; + + case SAI_BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP: + return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP; + + case SAI_BRIDGE_FLOOD_CONTROL_TYPE_COMBINED: + return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_COMBINED; + + default: + return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_UNSPECIFIED; + } +} +sai_bridge_flood_control_type_t convert_sai_bridge_flood_control_type_t_to_sai( + lemming::dataplane::sai::BridgeFloodControlType val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS: + return SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; + + case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_NONE: + return SAI_BRIDGE_FLOOD_CONTROL_TYPE_NONE; + + case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP: + return SAI_BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP; + + case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_COMBINED: + return SAI_BRIDGE_FLOOD_CONTROL_TYPE_COMBINED; + + default: + return SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_flood_control_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_bridge_flood_control_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_flood_control_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_flood_control_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgePortAttr convert_sai_bridge_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_PORT_ATTR_TYPE: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TYPE; + + case SAI_BRIDGE_PORT_ATTR_PORT_ID: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_PORT_ID; + + case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TAGGING_MODE; + + case SAI_BRIDGE_PORT_ATTR_VLAN_ID: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_VLAN_ID; + + case SAI_BRIDGE_PORT_ATTR_RIF_ID: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_RIF_ID; + + case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TUNNEL_ID; + + case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_BRIDGE_ID; + + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_MODE; + + case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES; + + case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: + return lemming::dataplane::sai:: + BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION; + + case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_ADMIN_STATE; + + case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_INGRESS_FILTERING; + + case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_EGRESS_FILTERING; + + case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_ISOLATION_GROUP; + + case SAI_BRIDGE_PORT_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_STATS_COUNT_MODE; + + case SAI_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::BRIDGE_PORT_ATTR_UNSPECIFIED; + } +} +sai_bridge_port_attr_t convert_sai_bridge_port_attr_t_to_sai( + lemming::dataplane::sai::BridgePortAttr val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TYPE: + return SAI_BRIDGE_PORT_ATTR_TYPE; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_PORT_ID: + return SAI_BRIDGE_PORT_ATTR_PORT_ID; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TAGGING_MODE: + return SAI_BRIDGE_PORT_ATTR_TAGGING_MODE; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_VLAN_ID: + return SAI_BRIDGE_PORT_ATTR_VLAN_ID; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_RIF_ID: + return SAI_BRIDGE_PORT_ATTR_RIF_ID; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TUNNEL_ID: + return SAI_BRIDGE_PORT_ATTR_TUNNEL_ID; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_BRIDGE_ID: + return SAI_BRIDGE_PORT_ATTR_BRIDGE_ID; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: + return SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: + return SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES; + + case lemming::dataplane::sai:: + BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: + return SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_ADMIN_STATE: + return SAI_BRIDGE_PORT_ATTR_ADMIN_STATE; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_INGRESS_FILTERING: + return SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_EGRESS_FILTERING: + return SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_ISOLATION_GROUP: + return SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_STATS_COUNT_MODE: + return SAI_BRIDGE_PORT_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_BRIDGE_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_BRIDGE_PORT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_port_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgePortFdbLearningMode +convert_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DROP; + + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE; + + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_HW: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_HW; + + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP; + + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG; + + case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION: + return lemming::dataplane::sai:: + BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION; + + default: + return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_UNSPECIFIED; + } +} +sai_bridge_port_fdb_learning_mode_t +convert_sai_bridge_port_fdb_learning_mode_t_to_sai( + lemming::dataplane::sai::BridgePortFdbLearningMode val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DROP: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP; + + case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE; + + case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_HW: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_HW; + + case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP; + + case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG; + + case lemming::dataplane::sai:: + BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION; + + default: + return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_port_fdb_learning_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_bridge_port_fdb_learning_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_port_fdb_learning_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_port_fdb_learning_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgePortStat convert_sai_bridge_port_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_PORT_STAT_IN_OCTETS: + return lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_OCTETS; + + case SAI_BRIDGE_PORT_STAT_IN_PACKETS: + return lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_PACKETS; + + case SAI_BRIDGE_PORT_STAT_OUT_OCTETS: + return lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_OCTETS; + + case SAI_BRIDGE_PORT_STAT_OUT_PACKETS: + return lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_PACKETS; + + default: + return lemming::dataplane::sai::BRIDGE_PORT_STAT_UNSPECIFIED; + } +} +sai_bridge_port_stat_t convert_sai_bridge_port_stat_t_to_sai( + lemming::dataplane::sai::BridgePortStat val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_OCTETS: + return SAI_BRIDGE_PORT_STAT_IN_OCTETS; + + case lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_PACKETS: + return SAI_BRIDGE_PORT_STAT_IN_PACKETS; + + case lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_OCTETS: + return SAI_BRIDGE_PORT_STAT_OUT_OCTETS; + + case lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_PACKETS: + return SAI_BRIDGE_PORT_STAT_OUT_PACKETS; + + default: + return SAI_BRIDGE_PORT_STAT_IN_OCTETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_port_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_port_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_port_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgePortTaggingMode +convert_sai_bridge_port_tagging_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED: + return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNTAGGED; + + case SAI_BRIDGE_PORT_TAGGING_MODE_TAGGED: + return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_TAGGED; + + default: + return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNSPECIFIED; + } +} +sai_bridge_port_tagging_mode_t convert_sai_bridge_port_tagging_mode_t_to_sai( + lemming::dataplane::sai::BridgePortTaggingMode val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNTAGGED: + return SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED; + + case lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_TAGGED: + return SAI_BRIDGE_PORT_TAGGING_MODE_TAGGED; + + default: + return SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_port_tagging_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_bridge_port_tagging_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_port_tagging_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_port_tagging_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgePortType convert_sai_bridge_port_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_PORT_TYPE_PORT: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_PORT; + + case SAI_BRIDGE_PORT_TYPE_SUB_PORT: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_SUB_PORT; + + case SAI_BRIDGE_PORT_TYPE_1Q_ROUTER: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_1Q_ROUTER; + + case SAI_BRIDGE_PORT_TYPE_1D_ROUTER: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_1D_ROUTER; + + case SAI_BRIDGE_PORT_TYPE_TUNNEL: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_TUNNEL; + + default: + return lemming::dataplane::sai::BRIDGE_PORT_TYPE_UNSPECIFIED; + } +} +sai_bridge_port_type_t convert_sai_bridge_port_type_t_to_sai( + lemming::dataplane::sai::BridgePortType val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_PORT_TYPE_PORT: + return SAI_BRIDGE_PORT_TYPE_PORT; + + case lemming::dataplane::sai::BRIDGE_PORT_TYPE_SUB_PORT: + return SAI_BRIDGE_PORT_TYPE_SUB_PORT; + + case lemming::dataplane::sai::BRIDGE_PORT_TYPE_1Q_ROUTER: + return SAI_BRIDGE_PORT_TYPE_1Q_ROUTER; + + case lemming::dataplane::sai::BRIDGE_PORT_TYPE_1D_ROUTER: + return SAI_BRIDGE_PORT_TYPE_1D_ROUTER; + + case lemming::dataplane::sai::BRIDGE_PORT_TYPE_TUNNEL: + return SAI_BRIDGE_PORT_TYPE_TUNNEL; + + default: + return SAI_BRIDGE_PORT_TYPE_PORT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bridge_port_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_port_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_port_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgeStat convert_sai_bridge_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_STAT_IN_OCTETS: + return lemming::dataplane::sai::BRIDGE_STAT_IN_OCTETS; + + case SAI_BRIDGE_STAT_IN_PACKETS: + return lemming::dataplane::sai::BRIDGE_STAT_IN_PACKETS; + + case SAI_BRIDGE_STAT_OUT_OCTETS: + return lemming::dataplane::sai::BRIDGE_STAT_OUT_OCTETS; + + case SAI_BRIDGE_STAT_OUT_PACKETS: + return lemming::dataplane::sai::BRIDGE_STAT_OUT_PACKETS; + + default: + return lemming::dataplane::sai::BRIDGE_STAT_UNSPECIFIED; + } +} +sai_bridge_stat_t convert_sai_bridge_stat_t_to_sai( + lemming::dataplane::sai::BridgeStat val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_STAT_IN_OCTETS: + return SAI_BRIDGE_STAT_IN_OCTETS; + + case lemming::dataplane::sai::BRIDGE_STAT_IN_PACKETS: + return SAI_BRIDGE_STAT_IN_PACKETS; + + case lemming::dataplane::sai::BRIDGE_STAT_OUT_OCTETS: + return SAI_BRIDGE_STAT_OUT_OCTETS; + + case lemming::dataplane::sai::BRIDGE_STAT_OUT_PACKETS: + return SAI_BRIDGE_STAT_OUT_PACKETS; + + default: + return SAI_BRIDGE_STAT_IN_OCTETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_bridge_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BridgeType convert_sai_bridge_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BRIDGE_TYPE_1Q: + return lemming::dataplane::sai::BRIDGE_TYPE_1Q; + + case SAI_BRIDGE_TYPE_1D: + return lemming::dataplane::sai::BRIDGE_TYPE_1D; + + default: + return lemming::dataplane::sai::BRIDGE_TYPE_UNSPECIFIED; + } +} +sai_bridge_type_t convert_sai_bridge_type_t_to_sai( + lemming::dataplane::sai::BridgeType val) { + switch (val) { + case lemming::dataplane::sai::BRIDGE_TYPE_1Q: + return SAI_BRIDGE_TYPE_1Q; + + case lemming::dataplane::sai::BRIDGE_TYPE_1D: + return SAI_BRIDGE_TYPE_1D; + + default: + return SAI_BRIDGE_TYPE_1Q; + } +} + +google::protobuf::RepeatedField convert_list_sai_bridge_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bridge_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bridge_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bridge_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferPoolAttr convert_sai_buffer_pool_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_POOL_ATTR_SHARED_SIZE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_SHARED_SIZE; + + case SAI_BUFFER_POOL_ATTR_TYPE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_TYPE; + + case SAI_BUFFER_POOL_ATTR_SIZE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_SIZE; + + case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_THRESHOLD_MODE; + + case SAI_BUFFER_POOL_ATTR_TAM: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_TAM; + + case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_XOFF_SIZE; + + case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_WRED_PROFILE_ID; + + case SAI_BUFFER_POOL_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_STATS_COUNT_MODE; + + case SAI_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::BUFFER_POOL_ATTR_UNSPECIFIED; + } +} +sai_buffer_pool_attr_t convert_sai_buffer_pool_attr_t_to_sai( + lemming::dataplane::sai::BufferPoolAttr val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_POOL_ATTR_SHARED_SIZE: + return SAI_BUFFER_POOL_ATTR_SHARED_SIZE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_TYPE: + return SAI_BUFFER_POOL_ATTR_TYPE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_SIZE: + return SAI_BUFFER_POOL_ATTR_SIZE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_THRESHOLD_MODE: + return SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_TAM: + return SAI_BUFFER_POOL_ATTR_TAM; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_XOFF_SIZE: + return SAI_BUFFER_POOL_ATTR_XOFF_SIZE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_WRED_PROFILE_ID: + return SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_STATS_COUNT_MODE: + return SAI_BUFFER_POOL_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_BUFFER_POOL_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_BUFFER_POOL_ATTR_SHARED_SIZE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_buffer_pool_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_pool_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_pool_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferPoolStat convert_sai_buffer_pool_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; + + case SAI_BUFFER_POOL_STAT_WATERMARK_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_WATERMARK_BYTES; + + case SAI_BUFFER_POOL_STAT_DROPPED_PACKETS: + return lemming::dataplane::sai::BUFFER_POOL_STAT_DROPPED_PACKETS; + + case SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; + + case SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES; + + case SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; + + case SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS; + + case SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES; + + case SAI_BUFFER_POOL_STAT_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_PACKETS; + + case SAI_BUFFER_POOL_STAT_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_BYTES; + + case SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; + + case SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS; + + case SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES; + + case SAI_BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; + + case SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES: + return lemming::dataplane::sai:: + BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES; + + case SAI_BUFFER_POOL_STAT_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::BUFFER_POOL_STAT_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::BUFFER_POOL_STAT_UNSPECIFIED; + } +} +sai_buffer_pool_stat_t convert_sai_buffer_pool_stat_t_to_sai( + lemming::dataplane::sai::BufferPoolStat val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES: + return SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_WATERMARK_BYTES: + return SAI_BUFFER_POOL_STAT_WATERMARK_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_DROPPED_PACKETS: + return SAI_BUFFER_POOL_STAT_DROPPED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: + return SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES: + return SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: + return SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: + return SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS: + return SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES: + return SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_PACKETS: + return SAI_BUFFER_POOL_STAT_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_BYTES: + return SAI_BUFFER_POOL_STAT_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai:: + BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai:: + BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: + return SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: + return SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS: + return SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES: + return SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai:: + BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: + return SAI_BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES: + return SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES; + + case lemming::dataplane::sai::BUFFER_POOL_STAT_CUSTOM_RANGE_BASE: + return SAI_BUFFER_POOL_STAT_CUSTOM_RANGE_BASE; + + default: + return SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_buffer_pool_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_pool_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_pool_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferPoolThresholdMode +convert_sai_buffer_pool_threshold_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC: + return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_STATIC; + + case SAI_BUFFER_POOL_THRESHOLD_MODE_DYNAMIC: + return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_DYNAMIC; + + default: + return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_UNSPECIFIED; + } +} +sai_buffer_pool_threshold_mode_t +convert_sai_buffer_pool_threshold_mode_t_to_sai( + lemming::dataplane::sai::BufferPoolThresholdMode val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_STATIC: + return SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC; + + case lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_DYNAMIC: + return SAI_BUFFER_POOL_THRESHOLD_MODE_DYNAMIC; + + default: + return SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_threshold_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_buffer_pool_threshold_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_pool_threshold_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_pool_threshold_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferPoolType convert_sai_buffer_pool_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_POOL_TYPE_INGRESS: + return lemming::dataplane::sai::BUFFER_POOL_TYPE_INGRESS; + + case SAI_BUFFER_POOL_TYPE_EGRESS: + return lemming::dataplane::sai::BUFFER_POOL_TYPE_EGRESS; + + case SAI_BUFFER_POOL_TYPE_BOTH: + return lemming::dataplane::sai::BUFFER_POOL_TYPE_BOTH; + + default: + return lemming::dataplane::sai::BUFFER_POOL_TYPE_UNSPECIFIED; + } +} +sai_buffer_pool_type_t convert_sai_buffer_pool_type_t_to_sai( + lemming::dataplane::sai::BufferPoolType val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_POOL_TYPE_INGRESS: + return SAI_BUFFER_POOL_TYPE_INGRESS; + + case lemming::dataplane::sai::BUFFER_POOL_TYPE_EGRESS: + return SAI_BUFFER_POOL_TYPE_EGRESS; + + case lemming::dataplane::sai::BUFFER_POOL_TYPE_BOTH: + return SAI_BUFFER_POOL_TYPE_BOTH; + + default: + return SAI_BUFFER_POOL_TYPE_INGRESS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_buffer_pool_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_pool_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_pool_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferProfileAttr +convert_sai_buffer_profile_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_PROFILE_ATTR_POOL_ID: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_POOL_ID; + + case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE; + + case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_THRESHOLD_MODE; + + case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH; + + case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_STATIC_TH; + + case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XOFF_TH; + + case SAI_BUFFER_PROFILE_ATTR_XON_TH: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_TH; + + case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_OFFSET_TH; + + default: + return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_UNSPECIFIED; + } +} +sai_buffer_profile_attr_t convert_sai_buffer_profile_attr_t_to_sai( + lemming::dataplane::sai::BufferProfileAttr val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_POOL_ID: + return SAI_BUFFER_PROFILE_ATTR_POOL_ID; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: + return SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_THRESHOLD_MODE: + return SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: + return SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: + return SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XOFF_TH: + return SAI_BUFFER_PROFILE_ATTR_XOFF_TH; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_TH: + return SAI_BUFFER_PROFILE_ATTR_XON_TH; + + case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_OFFSET_TH: + return SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH; + + default: + return SAI_BUFFER_PROFILE_ATTR_POOL_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_profile_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_buffer_profile_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_profile_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_profile_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BufferProfileThresholdMode +convert_sai_buffer_profile_threshold_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC: + return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_STATIC; + + case SAI_BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC: + return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC; + + default: + return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_UNSPECIFIED; + } +} +sai_buffer_profile_threshold_mode_t +convert_sai_buffer_profile_threshold_mode_t_to_sai( + lemming::dataplane::sai::BufferProfileThresholdMode val) { + switch (val) { + case lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_STATIC: + return SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC; + + case lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC: + return SAI_BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC; + + default: + return SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_buffer_profile_threshold_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_buffer_profile_threshold_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_buffer_profile_threshold_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_buffer_profile_threshold_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::BulkOpErrorMode +convert_sai_bulk_op_error_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR: + return lemming::dataplane::sai::BULK_OP_ERROR_MODE_STOP_ON_ERROR; + + case SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR: + return lemming::dataplane::sai::BULK_OP_ERROR_MODE_IGNORE_ERROR; + + default: + return lemming::dataplane::sai::BULK_OP_ERROR_MODE_UNSPECIFIED; + } +} +sai_bulk_op_error_mode_t convert_sai_bulk_op_error_mode_t_to_sai( + lemming::dataplane::sai::BulkOpErrorMode val) { + switch (val) { + case lemming::dataplane::sai::BULK_OP_ERROR_MODE_STOP_ON_ERROR: + return SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR; + + case lemming::dataplane::sai::BULK_OP_ERROR_MODE_IGNORE_ERROR: + return SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR; + + default: + return SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_bulk_op_error_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_bulk_op_error_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_bulk_op_error_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_bulk_op_error_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::CommonApi convert_sai_common_api_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_COMMON_API_CREATE: + return lemming::dataplane::sai::COMMON_API_CREATE; + + case SAI_COMMON_API_REMOVE: + return lemming::dataplane::sai::COMMON_API_REMOVE; + + case SAI_COMMON_API_SET: + return lemming::dataplane::sai::COMMON_API_SET; + + case SAI_COMMON_API_GET: + return lemming::dataplane::sai::COMMON_API_GET; + + case SAI_COMMON_API_BULK_CREATE: + return lemming::dataplane::sai::COMMON_API_BULK_CREATE; + + case SAI_COMMON_API_BULK_REMOVE: + return lemming::dataplane::sai::COMMON_API_BULK_REMOVE; + + case SAI_COMMON_API_BULK_SET: + return lemming::dataplane::sai::COMMON_API_BULK_SET; + + case SAI_COMMON_API_BULK_GET: + return lemming::dataplane::sai::COMMON_API_BULK_GET; + + case SAI_COMMON_API_MAX: + return lemming::dataplane::sai::COMMON_API_MAX; + + default: + return lemming::dataplane::sai::COMMON_API_UNSPECIFIED; + } +} +sai_common_api_t convert_sai_common_api_t_to_sai( + lemming::dataplane::sai::CommonApi val) { + switch (val) { + case lemming::dataplane::sai::COMMON_API_CREATE: + return SAI_COMMON_API_CREATE; + + case lemming::dataplane::sai::COMMON_API_REMOVE: + return SAI_COMMON_API_REMOVE; + + case lemming::dataplane::sai::COMMON_API_SET: + return SAI_COMMON_API_SET; + + case lemming::dataplane::sai::COMMON_API_GET: + return SAI_COMMON_API_GET; + + case lemming::dataplane::sai::COMMON_API_BULK_CREATE: + return SAI_COMMON_API_BULK_CREATE; + + case lemming::dataplane::sai::COMMON_API_BULK_REMOVE: + return SAI_COMMON_API_BULK_REMOVE; + + case lemming::dataplane::sai::COMMON_API_BULK_SET: + return SAI_COMMON_API_BULK_SET; + + case lemming::dataplane::sai::COMMON_API_BULK_GET: + return SAI_COMMON_API_BULK_GET; + + case lemming::dataplane::sai::COMMON_API_MAX: + return SAI_COMMON_API_MAX; + + default: + return SAI_COMMON_API_CREATE; + } +} + +google::protobuf::RepeatedField convert_list_sai_common_api_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_common_api_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_common_api_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_common_api_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::CounterAttr convert_sai_counter_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_COUNTER_ATTR_TYPE: + return lemming::dataplane::sai::COUNTER_ATTR_TYPE; + + case SAI_COUNTER_ATTR_LABEL: + return lemming::dataplane::sai::COUNTER_ATTR_LABEL; + + case SAI_COUNTER_ATTR_ENABLE_PACKET_COUNT: + return lemming::dataplane::sai::COUNTER_ATTR_ENABLE_PACKET_COUNT; + + case SAI_COUNTER_ATTR_ENABLE_BYTE_COUNT: + return lemming::dataplane::sai::COUNTER_ATTR_ENABLE_BYTE_COUNT; + + case SAI_COUNTER_ATTR_OBJECT_TYPE: + return lemming::dataplane::sai::COUNTER_ATTR_OBJECT_TYPE; + + case SAI_COUNTER_ATTR_STAT_ID_LIST: + return lemming::dataplane::sai::COUNTER_ATTR_STAT_ID_LIST; + + default: + return lemming::dataplane::sai::COUNTER_ATTR_UNSPECIFIED; + } +} +sai_counter_attr_t convert_sai_counter_attr_t_to_sai( + lemming::dataplane::sai::CounterAttr val) { + switch (val) { + case lemming::dataplane::sai::COUNTER_ATTR_TYPE: + return SAI_COUNTER_ATTR_TYPE; + + case lemming::dataplane::sai::COUNTER_ATTR_LABEL: + return SAI_COUNTER_ATTR_LABEL; + + case lemming::dataplane::sai::COUNTER_ATTR_ENABLE_PACKET_COUNT: + return SAI_COUNTER_ATTR_ENABLE_PACKET_COUNT; + + case lemming::dataplane::sai::COUNTER_ATTR_ENABLE_BYTE_COUNT: + return SAI_COUNTER_ATTR_ENABLE_BYTE_COUNT; + + case lemming::dataplane::sai::COUNTER_ATTR_OBJECT_TYPE: + return SAI_COUNTER_ATTR_OBJECT_TYPE; + + case lemming::dataplane::sai::COUNTER_ATTR_STAT_ID_LIST: + return SAI_COUNTER_ATTR_STAT_ID_LIST; + + default: + return SAI_COUNTER_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_counter_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_counter_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_counter_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::CounterStat convert_sai_counter_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_COUNTER_STAT_PACKETS: + return lemming::dataplane::sai::COUNTER_STAT_PACKETS; + + case SAI_COUNTER_STAT_BYTES: + return lemming::dataplane::sai::COUNTER_STAT_BYTES; + + case SAI_COUNTER_STAT_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::COUNTER_STAT_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::COUNTER_STAT_UNSPECIFIED; + } +} +sai_counter_stat_t convert_sai_counter_stat_t_to_sai( + lemming::dataplane::sai::CounterStat val) { + switch (val) { + case lemming::dataplane::sai::COUNTER_STAT_PACKETS: + return SAI_COUNTER_STAT_PACKETS; + + case lemming::dataplane::sai::COUNTER_STAT_BYTES: + return SAI_COUNTER_STAT_BYTES; + + case lemming::dataplane::sai::COUNTER_STAT_CUSTOM_RANGE_BASE: + return SAI_COUNTER_STAT_CUSTOM_RANGE_BASE; + + default: + return SAI_COUNTER_STAT_PACKETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_counter_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_counter_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_counter_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_counter_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::CounterType convert_sai_counter_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_COUNTER_TYPE_REGULAR: + return lemming::dataplane::sai::COUNTER_TYPE_REGULAR; + + case SAI_COUNTER_TYPE_SELECTIVE: + return lemming::dataplane::sai::COUNTER_TYPE_SELECTIVE; + + default: + return lemming::dataplane::sai::COUNTER_TYPE_UNSPECIFIED; + } +} +sai_counter_type_t convert_sai_counter_type_t_to_sai( + lemming::dataplane::sai::CounterType val) { + switch (val) { + case lemming::dataplane::sai::COUNTER_TYPE_REGULAR: + return SAI_COUNTER_TYPE_REGULAR; + + case lemming::dataplane::sai::COUNTER_TYPE_SELECTIVE: + return SAI_COUNTER_TYPE_SELECTIVE; + + default: + return SAI_COUNTER_TYPE_REGULAR; + } +} + +google::protobuf::RepeatedField convert_list_sai_counter_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_counter_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_counter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_counter_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashCapsHaScopeLevel +convert_sai_dash_caps_ha_scope_level_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_CAPS_HA_SCOPE_LEVEL_CARD: + return lemming::dataplane::sai::DASH_CAPS_HA_SCOPE_LEVEL_CARD; + + case SAI_DASH_CAPS_HA_SCOPE_LEVEL_ENI: + return lemming::dataplane::sai::DASH_CAPS_HA_SCOPE_LEVEL_ENI; + + default: + return lemming::dataplane::sai::DASH_CAPS_HA_SCOPE_LEVEL_UNSPECIFIED; + } +} +sai_dash_caps_ha_scope_level_t convert_sai_dash_caps_ha_scope_level_t_to_sai( + lemming::dataplane::sai::DashCapsHaScopeLevel val) { + switch (val) { + case lemming::dataplane::sai::DASH_CAPS_HA_SCOPE_LEVEL_CARD: + return SAI_DASH_CAPS_HA_SCOPE_LEVEL_CARD; + + case lemming::dataplane::sai::DASH_CAPS_HA_SCOPE_LEVEL_ENI: + return SAI_DASH_CAPS_HA_SCOPE_LEVEL_ENI; + + default: + return SAI_DASH_CAPS_HA_SCOPE_LEVEL_CARD; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_caps_ha_scope_level_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_dash_caps_ha_scope_level_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_caps_ha_scope_level_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_caps_ha_scope_level_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashDirection convert_sai_dash_direction_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_DIRECTION_INVALID: + return lemming::dataplane::sai::DASH_DIRECTION_INVALID; + + case SAI_DASH_DIRECTION_OUTBOUND: + return lemming::dataplane::sai::DASH_DIRECTION_OUTBOUND; + + case SAI_DASH_DIRECTION_INBOUND: + return lemming::dataplane::sai::DASH_DIRECTION_INBOUND; + + default: + return lemming::dataplane::sai::DASH_DIRECTION_UNSPECIFIED; + } +} +sai_dash_direction_t convert_sai_dash_direction_t_to_sai( + lemming::dataplane::sai::DashDirection val) { + switch (val) { + case lemming::dataplane::sai::DASH_DIRECTION_INVALID: + return SAI_DASH_DIRECTION_INVALID; + + case lemming::dataplane::sai::DASH_DIRECTION_OUTBOUND: + return SAI_DASH_DIRECTION_OUTBOUND; + + case lemming::dataplane::sai::DASH_DIRECTION_INBOUND: + return SAI_DASH_DIRECTION_INBOUND; + + default: + return SAI_DASH_DIRECTION_INVALID; + } +} + +google::protobuf::RepeatedField convert_list_sai_dash_direction_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_direction_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_direction_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashEncapsulation +convert_sai_dash_encapsulation_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_ENCAPSULATION_INVALID: + return lemming::dataplane::sai::DASH_ENCAPSULATION_INVALID; + + case SAI_DASH_ENCAPSULATION_VXLAN: + return lemming::dataplane::sai::DASH_ENCAPSULATION_VXLAN; + + case SAI_DASH_ENCAPSULATION_NVGRE: + return lemming::dataplane::sai::DASH_ENCAPSULATION_NVGRE; + + default: + return lemming::dataplane::sai::DASH_ENCAPSULATION_UNSPECIFIED; + } +} +sai_dash_encapsulation_t convert_sai_dash_encapsulation_t_to_sai( + lemming::dataplane::sai::DashEncapsulation val) { + switch (val) { + case lemming::dataplane::sai::DASH_ENCAPSULATION_INVALID: + return SAI_DASH_ENCAPSULATION_INVALID; + + case lemming::dataplane::sai::DASH_ENCAPSULATION_VXLAN: + return SAI_DASH_ENCAPSULATION_VXLAN; + + case lemming::dataplane::sai::DASH_ENCAPSULATION_NVGRE: + return SAI_DASH_ENCAPSULATION_NVGRE; + + default: + return SAI_DASH_ENCAPSULATION_INVALID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_encapsulation_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_encapsulation_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_encapsulation_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_encapsulation_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashEniMacOverrideType +convert_sai_dash_eni_mac_override_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_ENI_MAC_OVERRIDE_TYPE_NONE: + return lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_NONE; + + case SAI_DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC: + return lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC; + + case SAI_DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC: + return lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC; + + default: + return lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_UNSPECIFIED; + } +} +sai_dash_eni_mac_override_type_t +convert_sai_dash_eni_mac_override_type_t_to_sai( + lemming::dataplane::sai::DashEniMacOverrideType val) { + switch (val) { + case lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_NONE: + return SAI_DASH_ENI_MAC_OVERRIDE_TYPE_NONE; + + case lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC: + return SAI_DASH_ENI_MAC_OVERRIDE_TYPE_SRC_MAC; + + case lemming::dataplane::sai::DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC: + return SAI_DASH_ENI_MAC_OVERRIDE_TYPE_DST_MAC; + + default: + return SAI_DASH_ENI_MAC_OVERRIDE_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_eni_mac_override_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_dash_eni_mac_override_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_eni_mac_override_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_eni_mac_override_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashFlowAction convert_sai_dash_flow_action_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_FLOW_ACTION_NONE: + return lemming::dataplane::sai::DASH_FLOW_ACTION_NONE; + + default: + return lemming::dataplane::sai::DASH_FLOW_ACTION_UNSPECIFIED; + } +} +sai_dash_flow_action_t convert_sai_dash_flow_action_t_to_sai( + lemming::dataplane::sai::DashFlowAction val) { + switch (val) { + case lemming::dataplane::sai::DASH_FLOW_ACTION_NONE: + return SAI_DASH_FLOW_ACTION_NONE; + + default: + return SAI_DASH_FLOW_ACTION_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_flow_action_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_flow_action_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_flow_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_flow_action_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashFlowEnabledKey +convert_sai_dash_flow_enabled_key_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_FLOW_ENABLED_KEY_ENI_MAC: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_ENI_MAC; + + case SAI_DASH_FLOW_ENABLED_KEY_VNI: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_VNI; + + case SAI_DASH_FLOW_ENABLED_KEY_PROTOCOL: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_PROTOCOL; + + case SAI_DASH_FLOW_ENABLED_KEY_SRC_IP: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_SRC_IP; + + case SAI_DASH_FLOW_ENABLED_KEY_DST_IP: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_DST_IP; + + case SAI_DASH_FLOW_ENABLED_KEY_SRC_PORT: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_SRC_PORT; + + case SAI_DASH_FLOW_ENABLED_KEY_DST_PORT: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_DST_PORT; + + default: + return lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_UNSPECIFIED; + } +} +sai_dash_flow_enabled_key_t convert_sai_dash_flow_enabled_key_t_to_sai( + lemming::dataplane::sai::DashFlowEnabledKey val) { + switch (val) { + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_ENI_MAC: + return SAI_DASH_FLOW_ENABLED_KEY_ENI_MAC; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_VNI: + return SAI_DASH_FLOW_ENABLED_KEY_VNI; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_PROTOCOL: + return SAI_DASH_FLOW_ENABLED_KEY_PROTOCOL; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_SRC_IP: + return SAI_DASH_FLOW_ENABLED_KEY_SRC_IP; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_DST_IP: + return SAI_DASH_FLOW_ENABLED_KEY_DST_IP; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_SRC_PORT: + return SAI_DASH_FLOW_ENABLED_KEY_SRC_PORT; + + case lemming::dataplane::sai::DASH_FLOW_ENABLED_KEY_DST_PORT: + return SAI_DASH_FLOW_ENABLED_KEY_DST_PORT; + + default: + return SAI_DASH_FLOW_ENABLED_KEY_ENI_MAC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_flow_enabled_key_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_flow_enabled_key_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_flow_enabled_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_flow_enabled_key_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionFilterKey +convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION; + + default: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_UNSPECIFIED; + } +} +sai_dash_flow_entry_bulk_get_session_filter_key_t +convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionFilterKey val) { + switch (val) { + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_FLOW_TABLE_ID; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_ENI_ADDR; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_IP_PROTOCOL; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_IP_ADDR; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_IP_ADDR; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_SRC_L4_PORT; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_DST_L4_PORT; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_KEY_VERSION; + + default: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_FILTER_KEY_INVAILD; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_sai( + static_cast< + lemming::dataplane::sai::DashFlowEntryBulkGetSessionFilterKey>( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionMode +convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE; + + default: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_UNSPECIFIED; + } +} +sai_dash_flow_entry_bulk_get_session_mode_t +convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionMode val) { + switch (val) { + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_VENDOR; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_EVENT_WITHOUT_FLOW_STATE; + + default: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_MODE_GRPC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_flow_entry_bulk_get_session_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionOpKey +convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN; + + case SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO; + + default: + return lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_UNSPECIFIED; + } +} +sai_dash_flow_entry_bulk_get_session_op_key_t +convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionOpKey val) { + switch (val) { + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_EQUAL_TO; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_GREATER_THAN_OR_EQUAL_TO; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN; + + case lemming::dataplane::sai:: + DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_LESS_THAN_OR_EQUAL_TO; + + default: + return SAI_DASH_FLOW_ENTRY_BULK_GET_SESSION_OP_KEY_FILTER_OP_INVALID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_op_key_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_flow_entry_bulk_get_session_op_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashHaRole convert_sai_dash_ha_role_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_HA_ROLE_DEAD: + return lemming::dataplane::sai::DASH_HA_ROLE_DEAD; + + case SAI_DASH_HA_ROLE_ACTIVE: + return lemming::dataplane::sai::DASH_HA_ROLE_ACTIVE; + + case SAI_DASH_HA_ROLE_STANDBY: + return lemming::dataplane::sai::DASH_HA_ROLE_STANDBY; + + case SAI_DASH_HA_ROLE_STANDALONE: + return lemming::dataplane::sai::DASH_HA_ROLE_STANDALONE; + + case SAI_DASH_HA_ROLE_SWITCHING_TO_ACTIVE: + return lemming::dataplane::sai::DASH_HA_ROLE_SWITCHING_TO_ACTIVE; + + default: + return lemming::dataplane::sai::DASH_HA_ROLE_UNSPECIFIED; + } +} +sai_dash_ha_role_t convert_sai_dash_ha_role_t_to_sai( + lemming::dataplane::sai::DashHaRole val) { + switch (val) { + case lemming::dataplane::sai::DASH_HA_ROLE_DEAD: + return SAI_DASH_HA_ROLE_DEAD; + + case lemming::dataplane::sai::DASH_HA_ROLE_ACTIVE: + return SAI_DASH_HA_ROLE_ACTIVE; + + case lemming::dataplane::sai::DASH_HA_ROLE_STANDBY: + return SAI_DASH_HA_ROLE_STANDBY; + + case lemming::dataplane::sai::DASH_HA_ROLE_STANDALONE: + return SAI_DASH_HA_ROLE_STANDALONE; + + case lemming::dataplane::sai::DASH_HA_ROLE_SWITCHING_TO_ACTIVE: + return SAI_DASH_HA_ROLE_SWITCHING_TO_ACTIVE; + + default: + return SAI_DASH_HA_ROLE_DEAD; + } +} + +google::protobuf::RepeatedField convert_list_sai_dash_ha_role_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_ha_role_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_ha_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_ha_role_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashHaState convert_sai_dash_ha_state_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DASH_HA_STATE_DEAD: + return lemming::dataplane::sai::DASH_HA_STATE_DEAD; + + case SAI_DASH_HA_STATE_CONNECTING: + return lemming::dataplane::sai::DASH_HA_STATE_CONNECTING; + + case SAI_DASH_HA_STATE_CONNECTED: + return lemming::dataplane::sai::DASH_HA_STATE_CONNECTED; + + case SAI_DASH_HA_STATE_INITIALIZING_TO_ACTIVE: + return lemming::dataplane::sai::DASH_HA_STATE_INITIALIZING_TO_ACTIVE; + + case SAI_DASH_HA_STATE_INITIALIZING_TO_STANDBY: + return lemming::dataplane::sai::DASH_HA_STATE_INITIALIZING_TO_STANDBY; + + case SAI_DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION: + return lemming::dataplane::sai:: + DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION; + + case SAI_DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION: + return lemming::dataplane::sai::DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION; + + case SAI_DASH_HA_STATE_PENDING_STANDBY_ACTIVATION: + return lemming::dataplane::sai::DASH_HA_STATE_PENDING_STANDBY_ACTIVATION; + + case SAI_DASH_HA_STATE_STANDALONE: + return lemming::dataplane::sai::DASH_HA_STATE_STANDALONE; + + case SAI_DASH_HA_STATE_ACTIVE: + return lemming::dataplane::sai::DASH_HA_STATE_ACTIVE; + + case SAI_DASH_HA_STATE_STANDBY: + return lemming::dataplane::sai::DASH_HA_STATE_STANDBY; + + case SAI_DASH_HA_STATE_DESTROYING: + return lemming::dataplane::sai::DASH_HA_STATE_DESTROYING; + + case SAI_DASH_HA_STATE_SWITCHING_TO_STANDALONE: + return lemming::dataplane::sai::DASH_HA_STATE_SWITCHING_TO_STANDALONE; + + default: + return lemming::dataplane::sai::DASH_HA_STATE_UNSPECIFIED; + } +} +sai_dash_ha_state_t convert_sai_dash_ha_state_t_to_sai( + lemming::dataplane::sai::DashHaState val) { + switch (val) { + case lemming::dataplane::sai::DASH_HA_STATE_DEAD: + return SAI_DASH_HA_STATE_DEAD; + + case lemming::dataplane::sai::DASH_HA_STATE_CONNECTING: + return SAI_DASH_HA_STATE_CONNECTING; + + case lemming::dataplane::sai::DASH_HA_STATE_CONNECTED: + return SAI_DASH_HA_STATE_CONNECTED; + + case lemming::dataplane::sai::DASH_HA_STATE_INITIALIZING_TO_ACTIVE: + return SAI_DASH_HA_STATE_INITIALIZING_TO_ACTIVE; + + case lemming::dataplane::sai::DASH_HA_STATE_INITIALIZING_TO_STANDBY: + return SAI_DASH_HA_STATE_INITIALIZING_TO_STANDBY; + + case lemming::dataplane::sai::DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION: + return SAI_DASH_HA_STATE_PENDING_STANDALONE_ACTIVATION; + + case lemming::dataplane::sai::DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION: + return SAI_DASH_HA_STATE_PENDING_ACTIVE_ACTIVATION; + + case lemming::dataplane::sai::DASH_HA_STATE_PENDING_STANDBY_ACTIVATION: + return SAI_DASH_HA_STATE_PENDING_STANDBY_ACTIVATION; + + case lemming::dataplane::sai::DASH_HA_STATE_STANDALONE: + return SAI_DASH_HA_STATE_STANDALONE; + + case lemming::dataplane::sai::DASH_HA_STATE_ACTIVE: + return SAI_DASH_HA_STATE_ACTIVE; + + case lemming::dataplane::sai::DASH_HA_STATE_STANDBY: + return SAI_DASH_HA_STATE_STANDBY; + + case lemming::dataplane::sai::DASH_HA_STATE_DESTROYING: + return SAI_DASH_HA_STATE_DESTROYING; + + case lemming::dataplane::sai::DASH_HA_STATE_SWITCHING_TO_STANDALONE: + return SAI_DASH_HA_STATE_SWITCHING_TO_STANDALONE; + + default: + return SAI_DASH_HA_STATE_DEAD; + } +} + +google::protobuf::RepeatedField convert_list_sai_dash_ha_state_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_ha_state_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_ha_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_ha_state_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashRoutingActions +convert_sai_dash_routing_actions_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_ROUTING_ACTIONS_STATIC_ENCAP: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_STATIC_ENCAP; + + case SAI_DASH_ROUTING_ACTIONS_NAT: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT; + + case SAI_DASH_ROUTING_ACTIONS_NAT46: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT46; + + case SAI_DASH_ROUTING_ACTIONS_NAT64: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT64; + + case SAI_DASH_ROUTING_ACTIONS_NAT_PORT: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT_PORT; + + default: + return lemming::dataplane::sai::DASH_ROUTING_ACTIONS_UNSPECIFIED; + } +} +sai_dash_routing_actions_t convert_sai_dash_routing_actions_t_to_sai( + lemming::dataplane::sai::DashRoutingActions val) { + switch (val) { + case lemming::dataplane::sai::DASH_ROUTING_ACTIONS_STATIC_ENCAP: + return SAI_DASH_ROUTING_ACTIONS_STATIC_ENCAP; + + case lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT: + return SAI_DASH_ROUTING_ACTIONS_NAT; + + case lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT46: + return SAI_DASH_ROUTING_ACTIONS_NAT46; + + case lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT64: + return SAI_DASH_ROUTING_ACTIONS_NAT64; + + case lemming::dataplane::sai::DASH_ROUTING_ACTIONS_NAT_PORT: + return SAI_DASH_ROUTING_ACTIONS_NAT_PORT; + + default: + return SAI_DASH_ROUTING_ACTIONS_STATIC_ENCAP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_routing_actions_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_routing_actions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_routing_actions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_routing_actions_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DashTunnelDscpMode +convert_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL: + return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; + + case SAI_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL: + return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PIPE_MODEL; + + default: + return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_UNSPECIFIED; + } +} +sai_dash_tunnel_dscp_mode_t convert_sai_dash_tunnel_dscp_mode_t_to_sai( + lemming::dataplane::sai::DashTunnelDscpMode val) { + switch (val) { + case lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL: + return SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; + + case lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PIPE_MODEL: + return SAI_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL; + + default: + return SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dash_tunnel_dscp_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dash_tunnel_dscp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dash_tunnel_dscp_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DebugCounterAttr +convert_sai_debug_counter_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DEBUG_COUNTER_ATTR_INDEX: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_INDEX; + + case SAI_DEBUG_COUNTER_ATTR_TYPE: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_TYPE; + + case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_BIND_METHOD; + + case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST; + + case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST; + + default: + return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_UNSPECIFIED; + } +} +sai_debug_counter_attr_t convert_sai_debug_counter_attr_t_to_sai( + lemming::dataplane::sai::DebugCounterAttr val) { + switch (val) { + case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_INDEX: + return SAI_DEBUG_COUNTER_ATTR_INDEX; + + case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_TYPE: + return SAI_DEBUG_COUNTER_ATTR_TYPE; + + case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_BIND_METHOD: + return SAI_DEBUG_COUNTER_ATTR_BIND_METHOD; + + case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: + return SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST; + + case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: + return SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST; + + default: + return SAI_DEBUG_COUNTER_ATTR_INDEX; + } +} + +google::protobuf::RepeatedField +convert_list_sai_debug_counter_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_debug_counter_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_debug_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_debug_counter_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DebugCounterBindMethod +convert_sai_debug_counter_bind_method_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC: + return lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; + + default: + return lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED; + } +} +sai_debug_counter_bind_method_t convert_sai_debug_counter_bind_method_t_to_sai( + lemming::dataplane::sai::DebugCounterBindMethod val) { + switch (val) { + case lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_AUTOMATIC: + return SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; + + default: + return SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_debug_counter_bind_method_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_debug_counter_bind_method_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_debug_counter_bind_method_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_debug_counter_bind_method_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DebugCounterType +convert_sai_debug_counter_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS: + return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; + + case SAI_DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS: + return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS; + + case SAI_DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS: + return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS; + + case SAI_DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS: + return lemming::dataplane::sai:: + DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS; + + default: + return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_UNSPECIFIED; + } +} +sai_debug_counter_type_t convert_sai_debug_counter_type_t_to_sai( + lemming::dataplane::sai::DebugCounterType val) { + switch (val) { + case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS: + return SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; + + case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS: + return SAI_DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS; + + case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS: + return SAI_DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS; + + case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS: + return SAI_DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS; + + default: + return SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_debug_counter_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_debug_counter_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_debug_counter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_debug_counter_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelAttr convert_sai_dtel_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: + return lemming::dataplane::sai::DTEL_ATTR_INT_ENDPOINT_ENABLE; + + case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: + return lemming::dataplane::sai::DTEL_ATTR_INT_TRANSIT_ENABLE; + + case SAI_DTEL_ATTR_POSTCARD_ENABLE: + return lemming::dataplane::sai::DTEL_ATTR_POSTCARD_ENABLE; + + case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: + return lemming::dataplane::sai::DTEL_ATTR_DROP_REPORT_ENABLE; + + case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: + return lemming::dataplane::sai::DTEL_ATTR_QUEUE_REPORT_ENABLE; + + case SAI_DTEL_ATTR_SWITCH_ID: + return lemming::dataplane::sai::DTEL_ATTR_SWITCH_ID; + + case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: + return lemming::dataplane::sai::DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE; + + case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: + return lemming::dataplane::sai::DTEL_ATTR_LATENCY_SENSITIVITY; + + case SAI_DTEL_ATTR_SINK_PORT_LIST: + return lemming::dataplane::sai::DTEL_ATTR_SINK_PORT_LIST; + + case SAI_DTEL_ATTR_INT_L4_DSCP: + return lemming::dataplane::sai::DTEL_ATTR_INT_L4_DSCP; + + default: + return lemming::dataplane::sai::DTEL_ATTR_UNSPECIFIED; + } +} +sai_dtel_attr_t convert_sai_dtel_attr_t_to_sai( + lemming::dataplane::sai::DtelAttr val) { + switch (val) { + case lemming::dataplane::sai::DTEL_ATTR_INT_ENDPOINT_ENABLE: + return SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE; + + case lemming::dataplane::sai::DTEL_ATTR_INT_TRANSIT_ENABLE: + return SAI_DTEL_ATTR_INT_TRANSIT_ENABLE; + + case lemming::dataplane::sai::DTEL_ATTR_POSTCARD_ENABLE: + return SAI_DTEL_ATTR_POSTCARD_ENABLE; + + case lemming::dataplane::sai::DTEL_ATTR_DROP_REPORT_ENABLE: + return SAI_DTEL_ATTR_DROP_REPORT_ENABLE; + + case lemming::dataplane::sai::DTEL_ATTR_QUEUE_REPORT_ENABLE: + return SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE; + + case lemming::dataplane::sai::DTEL_ATTR_SWITCH_ID: + return SAI_DTEL_ATTR_SWITCH_ID; + + case lemming::dataplane::sai::DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: + return SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE; + + case lemming::dataplane::sai::DTEL_ATTR_LATENCY_SENSITIVITY: + return SAI_DTEL_ATTR_LATENCY_SENSITIVITY; + + case lemming::dataplane::sai::DTEL_ATTR_SINK_PORT_LIST: + return SAI_DTEL_ATTR_SINK_PORT_LIST; + + case lemming::dataplane::sai::DTEL_ATTR_INT_L4_DSCP: + return SAI_DTEL_ATTR_INT_L4_DSCP; + + default: + return SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE; + } +} + +google::protobuf::RepeatedField convert_list_sai_dtel_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dtel_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelEventAttr convert_sai_dtel_event_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DTEL_EVENT_ATTR_TYPE: + return lemming::dataplane::sai::DTEL_EVENT_ATTR_TYPE; + + case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: + return lemming::dataplane::sai::DTEL_EVENT_ATTR_REPORT_SESSION; + + case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: + return lemming::dataplane::sai::DTEL_EVENT_ATTR_DSCP_VALUE; + + default: + return lemming::dataplane::sai::DTEL_EVENT_ATTR_UNSPECIFIED; + } +} +sai_dtel_event_attr_t convert_sai_dtel_event_attr_t_to_sai( + lemming::dataplane::sai::DtelEventAttr val) { + switch (val) { + case lemming::dataplane::sai::DTEL_EVENT_ATTR_TYPE: + return SAI_DTEL_EVENT_ATTR_TYPE; + + case lemming::dataplane::sai::DTEL_EVENT_ATTR_REPORT_SESSION: + return SAI_DTEL_EVENT_ATTR_REPORT_SESSION; + + case lemming::dataplane::sai::DTEL_EVENT_ATTR_DSCP_VALUE: + return SAI_DTEL_EVENT_ATTR_DSCP_VALUE; + + default: + return SAI_DTEL_EVENT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dtel_event_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dtel_event_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_event_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_event_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelEventType convert_sai_dtel_event_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_DTEL_EVENT_TYPE_FLOW_STATE: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_STATE; + + case SAI_DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS; + + case SAI_DTEL_EVENT_TYPE_FLOW_TCPFLAG: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_TCPFLAG; + + case SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH: + return lemming::dataplane::sai:: + DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH; + + case SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP; + + case SAI_DTEL_EVENT_TYPE_DROP_REPORT: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_DROP_REPORT; + + case SAI_DTEL_EVENT_TYPE_MAX: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_MAX; + + default: + return lemming::dataplane::sai::DTEL_EVENT_TYPE_UNSPECIFIED; + } +} +sai_dtel_event_type_t convert_sai_dtel_event_type_t_to_sai( + lemming::dataplane::sai::DtelEventType val) { + switch (val) { + case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_STATE: + return SAI_DTEL_EVENT_TYPE_FLOW_STATE; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS: + return SAI_DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_TCPFLAG: + return SAI_DTEL_EVENT_TYPE_FLOW_TCPFLAG; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH: + return SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP: + return SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_DROP_REPORT: + return SAI_DTEL_EVENT_TYPE_DROP_REPORT; + + case lemming::dataplane::sai::DTEL_EVENT_TYPE_MAX: + return SAI_DTEL_EVENT_TYPE_MAX; + + default: + return SAI_DTEL_EVENT_TYPE_FLOW_STATE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dtel_event_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dtel_event_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_event_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelIntSessionAttr +convert_sai_dtel_int_session_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: + return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; + + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: + return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID; + + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: + return lemming::dataplane::sai:: + DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS; + + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: + return lemming::dataplane::sai:: + DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP; + + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: + return lemming::dataplane::sai:: + DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP; + + case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: + return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO; + + default: + return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_UNSPECIFIED; + } +} +sai_dtel_int_session_attr_t convert_sai_dtel_int_session_attr_t_to_sai( + lemming::dataplane::sai::DtelIntSessionAttr val) { + switch (val) { + case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: + return SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; + + case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: + return SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID; + + case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: + return SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS; + + case lemming::dataplane::sai:: + DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: + return SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP; + + case lemming::dataplane::sai:: + DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: + return SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP; + + case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: + return SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO; + + default: + return SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dtel_int_session_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dtel_int_session_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_int_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_int_session_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelQueueReportAttr +convert_sai_dtel_queue_report_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; + + case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD; + + case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD; + + case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA; + + case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_TAIL_DROP; + + default: + return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_UNSPECIFIED; + } +} +sai_dtel_queue_report_attr_t convert_sai_dtel_queue_report_attr_t_to_sai( + lemming::dataplane::sai::DtelQueueReportAttr val) { + switch (val) { + case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: + return SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; + + case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: + return SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD; + + case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: + return SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD; + + case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: + return SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA; + + case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: + return SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP; + + default: + return SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dtel_queue_report_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_dtel_queue_report_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_queue_report_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_queue_report_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::DtelReportSessionAttr +convert_sai_dtel_report_session_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: + return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_SRC_IP; + + case SAI_DTEL_REPORT_SESSION_ATTR_DST_IP_LIST: + return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_DST_IP_LIST; + + case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai:: + DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID; + + case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: + return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE; + + case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: + return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT; + + default: + return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UNSPECIFIED; + } +} +sai_dtel_report_session_attr_t convert_sai_dtel_report_session_attr_t_to_sai( + lemming::dataplane::sai::DtelReportSessionAttr val) { + switch (val) { + case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_SRC_IP: + return SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP; + + case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_DST_IP_LIST: + return SAI_DTEL_REPORT_SESSION_ATTR_DST_IP_LIST; + + case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: + return SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: + return SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE; + + case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: + return SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT; + + default: + return SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_dtel_report_session_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_dtel_report_session_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_dtel_report_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_dtel_report_session_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::EcnMarkMode convert_sai_ecn_mark_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ECN_MARK_MODE_NONE: + return lemming::dataplane::sai::ECN_MARK_MODE_NONE; + + case SAI_ECN_MARK_MODE_GREEN: + return lemming::dataplane::sai::ECN_MARK_MODE_GREEN; + + case SAI_ECN_MARK_MODE_YELLOW: + return lemming::dataplane::sai::ECN_MARK_MODE_YELLOW; + + case SAI_ECN_MARK_MODE_RED: + return lemming::dataplane::sai::ECN_MARK_MODE_RED; + + case SAI_ECN_MARK_MODE_GREEN_YELLOW: + return lemming::dataplane::sai::ECN_MARK_MODE_GREEN_YELLOW; + + case SAI_ECN_MARK_MODE_GREEN_RED: + return lemming::dataplane::sai::ECN_MARK_MODE_GREEN_RED; + + case SAI_ECN_MARK_MODE_YELLOW_RED: + return lemming::dataplane::sai::ECN_MARK_MODE_YELLOW_RED; + + case SAI_ECN_MARK_MODE_ALL: + return lemming::dataplane::sai::ECN_MARK_MODE_ALL; + + default: + return lemming::dataplane::sai::ECN_MARK_MODE_UNSPECIFIED; + } +} +sai_ecn_mark_mode_t convert_sai_ecn_mark_mode_t_to_sai( + lemming::dataplane::sai::EcnMarkMode val) { + switch (val) { + case lemming::dataplane::sai::ECN_MARK_MODE_NONE: + return SAI_ECN_MARK_MODE_NONE; + + case lemming::dataplane::sai::ECN_MARK_MODE_GREEN: + return SAI_ECN_MARK_MODE_GREEN; + + case lemming::dataplane::sai::ECN_MARK_MODE_YELLOW: + return SAI_ECN_MARK_MODE_YELLOW; + + case lemming::dataplane::sai::ECN_MARK_MODE_RED: + return SAI_ECN_MARK_MODE_RED; + + case lemming::dataplane::sai::ECN_MARK_MODE_GREEN_YELLOW: + return SAI_ECN_MARK_MODE_GREEN_YELLOW; + + case lemming::dataplane::sai::ECN_MARK_MODE_GREEN_RED: + return SAI_ECN_MARK_MODE_GREEN_RED; + + case lemming::dataplane::sai::ECN_MARK_MODE_YELLOW_RED: + return SAI_ECN_MARK_MODE_YELLOW_RED; + + case lemming::dataplane::sai::ECN_MARK_MODE_ALL: + return SAI_ECN_MARK_MODE_ALL; + + default: + return SAI_ECN_MARK_MODE_NONE; + } +} + +google::protobuf::RepeatedField convert_list_sai_ecn_mark_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ecn_mark_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ecn_mark_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ecn_mark_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::ErspanEncapsulationType +convert_sai_erspan_encapsulation_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL: + return lemming::dataplane::sai:: + ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; + + default: + return lemming::dataplane::sai::ERSPAN_ENCAPSULATION_TYPE_UNSPECIFIED; + } +} +sai_erspan_encapsulation_type_t convert_sai_erspan_encapsulation_type_t_to_sai( + lemming::dataplane::sai::ErspanEncapsulationType val) { + switch (val) { + case lemming::dataplane::sai:: + ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL: + return SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; + + default: + return SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_erspan_encapsulation_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_erspan_encapsulation_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_erspan_encapsulation_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_erspan_encapsulation_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FdbEntryAttr convert_sai_fdb_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_FDB_ENTRY_ATTR_TYPE: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_TYPE; + + case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_PACKET_ACTION; + + case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_USER_TRAP_ID; + + case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_BRIDGE_PORT_ID; + + case SAI_FDB_ENTRY_ATTR_META_DATA: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_META_DATA; + + case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_ENDPOINT_IP; + + case SAI_FDB_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_COUNTER_ID; + + case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_ALLOW_MAC_MOVE; + + default: + return lemming::dataplane::sai::FDB_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_fdb_entry_attr_t convert_sai_fdb_entry_attr_t_to_sai( + lemming::dataplane::sai::FdbEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::FDB_ENTRY_ATTR_TYPE: + return SAI_FDB_ENTRY_ATTR_TYPE; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_PACKET_ACTION: + return SAI_FDB_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_USER_TRAP_ID: + return SAI_FDB_ENTRY_ATTR_USER_TRAP_ID; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_BRIDGE_PORT_ID: + return SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_META_DATA: + return SAI_FDB_ENTRY_ATTR_META_DATA; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_ENDPOINT_IP: + return SAI_FDB_ENTRY_ATTR_ENDPOINT_IP; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_COUNTER_ID: + return SAI_FDB_ENTRY_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: + return SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE; + + default: + return SAI_FDB_ENTRY_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_fdb_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_fdb_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fdb_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fdb_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FdbEntryType convert_sai_fdb_entry_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_FDB_ENTRY_TYPE_DYNAMIC: + return lemming::dataplane::sai::FDB_ENTRY_TYPE_DYNAMIC; + + case SAI_FDB_ENTRY_TYPE_STATIC: + return lemming::dataplane::sai::FDB_ENTRY_TYPE_STATIC; + + default: + return lemming::dataplane::sai::FDB_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_fdb_entry_type_t convert_sai_fdb_entry_type_t_to_sai( + lemming::dataplane::sai::FdbEntryType val) { + switch (val) { + case lemming::dataplane::sai::FDB_ENTRY_TYPE_DYNAMIC: + return SAI_FDB_ENTRY_TYPE_DYNAMIC; + + case lemming::dataplane::sai::FDB_ENTRY_TYPE_STATIC: + return SAI_FDB_ENTRY_TYPE_STATIC; + + default: + return SAI_FDB_ENTRY_TYPE_DYNAMIC; + } +} + +google::protobuf::RepeatedField convert_list_sai_fdb_entry_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_fdb_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fdb_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fdb_entry_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FdbEvent convert_sai_fdb_event_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_FDB_EVENT_LEARNED: + return lemming::dataplane::sai::FDB_EVENT_LEARNED; + + case SAI_FDB_EVENT_AGED: + return lemming::dataplane::sai::FDB_EVENT_AGED; + + case SAI_FDB_EVENT_MOVE: + return lemming::dataplane::sai::FDB_EVENT_MOVE; + + case SAI_FDB_EVENT_FLUSHED: + return lemming::dataplane::sai::FDB_EVENT_FLUSHED; + + default: + return lemming::dataplane::sai::FDB_EVENT_UNSPECIFIED; + } +} +sai_fdb_event_t convert_sai_fdb_event_t_to_sai( + lemming::dataplane::sai::FdbEvent val) { + switch (val) { + case lemming::dataplane::sai::FDB_EVENT_LEARNED: + return SAI_FDB_EVENT_LEARNED; + + case lemming::dataplane::sai::FDB_EVENT_AGED: + return SAI_FDB_EVENT_AGED; + + case lemming::dataplane::sai::FDB_EVENT_MOVE: + return SAI_FDB_EVENT_MOVE; + + case lemming::dataplane::sai::FDB_EVENT_FLUSHED: + return SAI_FDB_EVENT_FLUSHED; + + default: + return SAI_FDB_EVENT_LEARNED; + } +} + +google::protobuf::RepeatedField convert_list_sai_fdb_event_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_fdb_event_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fdb_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fdb_event_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FdbFlushAttr convert_sai_fdb_flush_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID: + return lemming::dataplane::sai::FDB_FLUSH_ATTR_BRIDGE_PORT_ID; + + case SAI_FDB_FLUSH_ATTR_BV_ID: + return lemming::dataplane::sai::FDB_FLUSH_ATTR_BV_ID; + + case SAI_FDB_FLUSH_ATTR_ENTRY_TYPE: + return lemming::dataplane::sai::FDB_FLUSH_ATTR_ENTRY_TYPE; + + default: + return lemming::dataplane::sai::FDB_FLUSH_ATTR_UNSPECIFIED; + } +} +sai_fdb_flush_attr_t convert_sai_fdb_flush_attr_t_to_sai( + lemming::dataplane::sai::FdbFlushAttr val) { + switch (val) { + case lemming::dataplane::sai::FDB_FLUSH_ATTR_BRIDGE_PORT_ID: + return SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID; + + case lemming::dataplane::sai::FDB_FLUSH_ATTR_BV_ID: + return SAI_FDB_FLUSH_ATTR_BV_ID; + + case lemming::dataplane::sai::FDB_FLUSH_ATTR_ENTRY_TYPE: + return SAI_FDB_FLUSH_ATTR_ENTRY_TYPE; + + default: + return SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID; + } +} + +google::protobuf::RepeatedField convert_list_sai_fdb_flush_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_fdb_flush_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fdb_flush_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fdb_flush_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FdbFlushEntryType +convert_sai_fdb_flush_entry_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC: + return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_DYNAMIC; + + case SAI_FDB_FLUSH_ENTRY_TYPE_STATIC: + return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_STATIC; + + case SAI_FDB_FLUSH_ENTRY_TYPE_ALL: + return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_ALL; + + default: + return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_fdb_flush_entry_type_t convert_sai_fdb_flush_entry_type_t_to_sai( + lemming::dataplane::sai::FdbFlushEntryType val) { + switch (val) { + case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_DYNAMIC: + return SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC; + + case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_STATIC: + return SAI_FDB_FLUSH_ENTRY_TYPE_STATIC; + + case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_ALL: + return SAI_FDB_FLUSH_ENTRY_TYPE_ALL; + + default: + return SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_fdb_flush_entry_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_fdb_flush_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fdb_flush_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fdb_flush_entry_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::FineGrainedHashFieldAttr +convert_sai_fine_grained_hash_field_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: + return lemming::dataplane::sai:: + FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; + + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: + return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK; + + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: + return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK; + + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: + return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID; + + default: + return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_UNSPECIFIED; + } +} +sai_fine_grained_hash_field_attr_t +convert_sai_fine_grained_hash_field_attr_t_to_sai( + lemming::dataplane::sai::FineGrainedHashFieldAttr val) { + switch (val) { + case lemming::dataplane::sai:: + FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: + return SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; + + case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: + return SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK; + + case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: + return SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK; + + case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: + return SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID; + + default: + return SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; + } +} + +google::protobuf::RepeatedField +convert_list_sai_fine_grained_hash_field_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_fine_grained_hash_field_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_fine_grained_hash_field_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_fine_grained_hash_field_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::GenericProgrammableAttr +convert_sai_generic_programmable_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: + return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; + + case SAI_GENERIC_PROGRAMMABLE_ATTR_ENTRY: + return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_ENTRY; + + case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: + return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_UNSPECIFIED; + } +} +sai_generic_programmable_attr_t convert_sai_generic_programmable_attr_t_to_sai( + lemming::dataplane::sai::GenericProgrammableAttr val) { + switch (val) { + case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: + return SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; + + case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_ENTRY: + return SAI_GENERIC_PROGRAMMABLE_ATTR_ENTRY; + + case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: + return SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID; + + default: + return SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; + } +} + +google::protobuf::RepeatedField +convert_list_sai_generic_programmable_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_generic_programmable_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_generic_programmable_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_generic_programmable_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HaScopeEvent convert_sai_ha_scope_event_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HA_SCOPE_EVENT_STATE_CHANGED: + return lemming::dataplane::sai::HA_SCOPE_EVENT_STATE_CHANGED; + + case SAI_HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED: + return lemming::dataplane::sai::HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED; + + case SAI_HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED: + return lemming::dataplane::sai::HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED; + + default: + return lemming::dataplane::sai::HA_SCOPE_EVENT_UNSPECIFIED; + } +} +sai_ha_scope_event_t convert_sai_ha_scope_event_t_to_sai( + lemming::dataplane::sai::HaScopeEvent val) { + switch (val) { + case lemming::dataplane::sai::HA_SCOPE_EVENT_STATE_CHANGED: + return SAI_HA_SCOPE_EVENT_STATE_CHANGED; + + case lemming::dataplane::sai::HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED: + return SAI_HA_SCOPE_EVENT_FLOW_RECONCILE_NEEDED; + + case lemming::dataplane::sai::HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED: + return SAI_HA_SCOPE_EVENT_SPLIT_BRAIN_DETECTED; + + default: + return SAI_HA_SCOPE_EVENT_STATE_CHANGED; + } +} + +google::protobuf::RepeatedField convert_list_sai_ha_scope_event_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ha_scope_event_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ha_scope_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ha_scope_event_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HaSetEvent convert_sai_ha_set_event_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HA_SET_EVENT_DP_CHANNEL_UP: + return lemming::dataplane::sai::HA_SET_EVENT_DP_CHANNEL_UP; + + case SAI_HA_SET_EVENT_DP_CHANNEL_DOWN: + return lemming::dataplane::sai::HA_SET_EVENT_DP_CHANNEL_DOWN; + + default: + return lemming::dataplane::sai::HA_SET_EVENT_UNSPECIFIED; + } +} +sai_ha_set_event_t convert_sai_ha_set_event_t_to_sai( + lemming::dataplane::sai::HaSetEvent val) { + switch (val) { + case lemming::dataplane::sai::HA_SET_EVENT_DP_CHANNEL_UP: + return SAI_HA_SET_EVENT_DP_CHANNEL_UP; + + case lemming::dataplane::sai::HA_SET_EVENT_DP_CHANNEL_DOWN: + return SAI_HA_SET_EVENT_DP_CHANNEL_DOWN; + + default: + return SAI_HA_SET_EVENT_DP_CHANNEL_UP; + } +} + +google::protobuf::RepeatedField convert_list_sai_ha_set_event_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ha_set_event_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ha_set_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ha_set_event_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HashAlgorithm convert_sai_hash_algorithm_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HASH_ALGORITHM_CRC: + return lemming::dataplane::sai::HASH_ALGORITHM_CRC; + + case SAI_HASH_ALGORITHM_XOR: + return lemming::dataplane::sai::HASH_ALGORITHM_XOR; + + case SAI_HASH_ALGORITHM_RANDOM: + return lemming::dataplane::sai::HASH_ALGORITHM_RANDOM; + + case SAI_HASH_ALGORITHM_CRC_32LO: + return lemming::dataplane::sai::HASH_ALGORITHM_CRC_32LO; + + case SAI_HASH_ALGORITHM_CRC_32HI: + return lemming::dataplane::sai::HASH_ALGORITHM_CRC_32HI; + + case SAI_HASH_ALGORITHM_CRC_CCITT: + return lemming::dataplane::sai::HASH_ALGORITHM_CRC_CCITT; + + case SAI_HASH_ALGORITHM_CRC_XOR: + return lemming::dataplane::sai::HASH_ALGORITHM_CRC_XOR; + + default: + return lemming::dataplane::sai::HASH_ALGORITHM_UNSPECIFIED; + } +} +sai_hash_algorithm_t convert_sai_hash_algorithm_t_to_sai( + lemming::dataplane::sai::HashAlgorithm val) { + switch (val) { + case lemming::dataplane::sai::HASH_ALGORITHM_CRC: + return SAI_HASH_ALGORITHM_CRC; + + case lemming::dataplane::sai::HASH_ALGORITHM_XOR: + return SAI_HASH_ALGORITHM_XOR; + + case lemming::dataplane::sai::HASH_ALGORITHM_RANDOM: + return SAI_HASH_ALGORITHM_RANDOM; + + case lemming::dataplane::sai::HASH_ALGORITHM_CRC_32LO: + return SAI_HASH_ALGORITHM_CRC_32LO; + + case lemming::dataplane::sai::HASH_ALGORITHM_CRC_32HI: + return SAI_HASH_ALGORITHM_CRC_32HI; + + case lemming::dataplane::sai::HASH_ALGORITHM_CRC_CCITT: + return SAI_HASH_ALGORITHM_CRC_CCITT; + + case lemming::dataplane::sai::HASH_ALGORITHM_CRC_XOR: + return SAI_HASH_ALGORITHM_CRC_XOR; + + default: + return SAI_HASH_ALGORITHM_CRC; + } +} + +google::protobuf::RepeatedField convert_list_sai_hash_algorithm_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hash_algorithm_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hash_algorithm_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hash_algorithm_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HashAttr convert_sai_hash_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: + return lemming::dataplane::sai::HASH_ATTR_NATIVE_HASH_FIELD_LIST; + + case SAI_HASH_ATTR_UDF_GROUP_LIST: + return lemming::dataplane::sai::HASH_ATTR_UDF_GROUP_LIST; + + case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: + return lemming::dataplane::sai::HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST; + + default: + return lemming::dataplane::sai::HASH_ATTR_UNSPECIFIED; + } +} +sai_hash_attr_t convert_sai_hash_attr_t_to_sai( + lemming::dataplane::sai::HashAttr val) { + switch (val) { + case lemming::dataplane::sai::HASH_ATTR_NATIVE_HASH_FIELD_LIST: + return SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST; + + case lemming::dataplane::sai::HASH_ATTR_UDF_GROUP_LIST: + return SAI_HASH_ATTR_UDF_GROUP_LIST; + + case lemming::dataplane::sai::HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: + return SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST; + + default: + return SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST; + } +} + +google::protobuf::RepeatedField convert_list_sai_hash_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hash_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hash_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hash_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HealthDataType convert_sai_health_data_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HEALTH_DATA_TYPE_GENERAL: + return lemming::dataplane::sai::HEALTH_DATA_TYPE_GENERAL; + + case SAI_HEALTH_DATA_TYPE_SER: + return lemming::dataplane::sai::HEALTH_DATA_TYPE_SER; + + default: + return lemming::dataplane::sai::HEALTH_DATA_TYPE_UNSPECIFIED; + } +} +sai_health_data_type_t convert_sai_health_data_type_t_to_sai( + lemming::dataplane::sai::HealthDataType val) { + switch (val) { + case lemming::dataplane::sai::HEALTH_DATA_TYPE_GENERAL: + return SAI_HEALTH_DATA_TYPE_GENERAL; + + case lemming::dataplane::sai::HEALTH_DATA_TYPE_SER: + return SAI_HEALTH_DATA_TYPE_SER; + + default: + return SAI_HEALTH_DATA_TYPE_GENERAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_health_data_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_health_data_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_health_data_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_health_data_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifAttr convert_sai_hostif_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_ATTR_TYPE: + return lemming::dataplane::sai::HOSTIF_ATTR_TYPE; + + case SAI_HOSTIF_ATTR_OBJ_ID: + return lemming::dataplane::sai::HOSTIF_ATTR_OBJ_ID; + + case SAI_HOSTIF_ATTR_NAME: + return lemming::dataplane::sai::HOSTIF_ATTR_NAME; + + case SAI_HOSTIF_ATTR_OPER_STATUS: + return lemming::dataplane::sai::HOSTIF_ATTR_OPER_STATUS; + + case SAI_HOSTIF_ATTR_QUEUE: + return lemming::dataplane::sai::HOSTIF_ATTR_QUEUE; + + case SAI_HOSTIF_ATTR_VLAN_TAG: + return lemming::dataplane::sai::HOSTIF_ATTR_VLAN_TAG; + + case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: + return lemming::dataplane::sai::HOSTIF_ATTR_GENETLINK_MCGRP_NAME; + + default: + return lemming::dataplane::sai::HOSTIF_ATTR_UNSPECIFIED; + } +} +sai_hostif_attr_t convert_sai_hostif_attr_t_to_sai( + lemming::dataplane::sai::HostifAttr val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_ATTR_TYPE: + return SAI_HOSTIF_ATTR_TYPE; + + case lemming::dataplane::sai::HOSTIF_ATTR_OBJ_ID: + return SAI_HOSTIF_ATTR_OBJ_ID; + + case lemming::dataplane::sai::HOSTIF_ATTR_NAME: + return SAI_HOSTIF_ATTR_NAME; + + case lemming::dataplane::sai::HOSTIF_ATTR_OPER_STATUS: + return SAI_HOSTIF_ATTR_OPER_STATUS; + + case lemming::dataplane::sai::HOSTIF_ATTR_QUEUE: + return SAI_HOSTIF_ATTR_QUEUE; + + case lemming::dataplane::sai::HOSTIF_ATTR_VLAN_TAG: + return SAI_HOSTIF_ATTR_VLAN_TAG; + + case lemming::dataplane::sai::HOSTIF_ATTR_GENETLINK_MCGRP_NAME: + return SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME; + + default: + return SAI_HOSTIF_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_hostif_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTableEntryAttr +convert_sai_hostif_table_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TYPE; + + case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID; + + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID; + + case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE; + + case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_HOST_IF; + + default: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_hostif_table_entry_attr_t convert_sai_hostif_table_entry_attr_t_to_sai( + lemming::dataplane::sai::HostifTableEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TYPE: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF; + + default: + return SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_hostif_table_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_table_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_table_entry_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTableEntryChannelType +convert_sai_hostif_table_entry_channel_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; + + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD; + + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT: + return lemming::dataplane::sai:: + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT; + + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT: + return lemming::dataplane::sai:: + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT; + + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3; + + case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK; + + default: + return lemming::dataplane::sai:: + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_UNSPECIFIED; + } +} +sai_hostif_table_entry_channel_type_t +convert_sai_hostif_table_entry_channel_type_t_to_sai( + lemming::dataplane::sai::HostifTableEntryChannelType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD; + + case lemming::dataplane::sai:: + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT; + + case lemming::dataplane::sai:: + HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK; + + default: + return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_channel_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_hostif_table_entry_channel_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_table_entry_channel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_table_entry_channel_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTableEntryType +convert_sai_hostif_table_entry_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_PORT; + + case SAI_HOSTIF_TABLE_ENTRY_TYPE_LAG: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_LAG; + + case SAI_HOSTIF_TABLE_ENTRY_TYPE_VLAN: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_VLAN; + + case SAI_HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID; + + case SAI_HOSTIF_TABLE_ENTRY_TYPE_WILDCARD: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_WILDCARD; + + default: + return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_hostif_table_entry_type_t convert_sai_hostif_table_entry_type_t_to_sai( + lemming::dataplane::sai::HostifTableEntryType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_PORT: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_LAG: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_LAG; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_VLAN: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_VLAN; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID; + + case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_WILDCARD: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_WILDCARD; + + default: + return SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_hostif_table_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_table_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_table_entry_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTrapAttr convert_sai_hostif_trap_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_TYPE; + + case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_PACKET_ACTION; + + case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_PRIORITY; + + case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST; + + case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_GROUP; + + case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_MIRROR_SESSION; + + case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_UNSPECIFIED; + } +} +sai_hostif_trap_attr_t convert_sai_hostif_trap_attr_t_to_sai( + lemming::dataplane::sai::HostifTrapAttr val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_TYPE: + return SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_PACKET_ACTION: + return SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_PRIORITY: + return SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: + return SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_GROUP: + return SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_MIRROR_SESSION: + return SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION; + + case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_COUNTER_ID: + return SAI_HOSTIF_TRAP_ATTR_COUNTER_ID; + + default: + return SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_trap_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_trap_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_trap_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTrapGroupAttr +convert_sai_hostif_trap_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: + return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; + + case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: + return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_QUEUE; + + case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: + return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_POLICER; + + case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: + return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE; + + default: + return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_UNSPECIFIED; + } +} +sai_hostif_trap_group_attr_t convert_sai_hostif_trap_group_attr_t_to_sai( + lemming::dataplane::sai::HostifTrapGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: + return SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; + + case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_QUEUE: + return SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE; + + case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_POLICER: + return SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER; + + case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: + return SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE; + + default: + return SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_trap_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_trap_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_trap_group_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTrapType convert_sai_hostif_trap_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TRAP_TYPE_START: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_START; + + case SAI_HOSTIF_TRAP_TYPE_LACP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LACP; + + case SAI_HOSTIF_TRAP_TYPE_EAPOL: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_EAPOL; + + case SAI_HOSTIF_TRAP_TYPE_LLDP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LLDP; + + case SAI_HOSTIF_TRAP_TYPE_PVRST: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PVRST; + + case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY; + + case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE; + + case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT; + + case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT; + + case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT; + + case SAI_HOSTIF_TRAP_TYPE_SAMPLEPACKET: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SAMPLEPACKET; + + case SAI_HOSTIF_TRAP_TYPE_UDLD: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UDLD; + + case SAI_HOSTIF_TRAP_TYPE_CDP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CDP; + + case SAI_HOSTIF_TRAP_TYPE_VTP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VTP; + + case SAI_HOSTIF_TRAP_TYPE_DTP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DTP; + + case SAI_HOSTIF_TRAP_TYPE_PAGP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PAGP; + + case SAI_HOSTIF_TRAP_TYPE_PTP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP; + + case SAI_HOSTIF_TRAP_TYPE_PTP_TX_EVENT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP_TX_EVENT; + + case SAI_HOSTIF_TRAP_TYPE_DHCP_L2: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP_L2; + + case SAI_HOSTIF_TRAP_TYPE_DHCPV6_L2: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6_L2; + + case SAI_HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE; + + case SAI_HOSTIF_TRAP_TYPE_ARP_REQUEST: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_REQUEST; + + case SAI_HOSTIF_TRAP_TYPE_ARP_RESPONSE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_RESPONSE; + + case SAI_HOSTIF_TRAP_TYPE_DHCP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP; + + case SAI_HOSTIF_TRAP_TYPE_OSPF: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPF; + + case SAI_HOSTIF_TRAP_TYPE_PIM: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIM; + + case SAI_HOSTIF_TRAP_TYPE_VRRP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRP; + + case SAI_HOSTIF_TRAP_TYPE_DHCPV6: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6; + + case SAI_HOSTIF_TRAP_TYPE_OSPFV6: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPFV6; + + case SAI_HOSTIF_TRAP_TYPE_VRRPV6: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRPV6; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE; + + case SAI_HOSTIF_TRAP_TYPE_MLD_V2_REPORT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MLD_V2_REPORT; + + case SAI_HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST; + + case SAI_HOSTIF_TRAP_TYPE_SNAT_MISS: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNAT_MISS; + + case SAI_HOSTIF_TRAP_TYPE_DNAT_MISS: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DNAT_MISS; + + case SAI_HOSTIF_TRAP_TYPE_NAT_HAIRPIN: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NAT_HAIRPIN; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION: + return lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION; + + case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT: + return lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT; + + case SAI_HOSTIF_TRAP_TYPE_ISIS: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ISIS; + + case SAI_HOSTIF_TRAP_TYPE_NEIGHBOR_MISS: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NEIGHBOR_MISS; + + case SAI_HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE; + + case SAI_HOSTIF_TRAP_TYPE_IP2ME: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IP2ME; + + case SAI_HOSTIF_TRAP_TYPE_SSH: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SSH; + + case SAI_HOSTIF_TRAP_TYPE_SNMP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNMP; + + case SAI_HOSTIF_TRAP_TYPE_BGP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGP; + + case SAI_HOSTIF_TRAP_TYPE_BGPV6: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGPV6; + + case SAI_HOSTIF_TRAP_TYPE_BFD: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD; + + case SAI_HOSTIF_TRAP_TYPE_BFDV6: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6; + + case SAI_HOSTIF_TRAP_TYPE_BFD_MICRO: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD_MICRO; + + case SAI_HOSTIF_TRAP_TYPE_BFDV6_MICRO: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6_MICRO; + + case SAI_HOSTIF_TRAP_TYPE_LDP: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LDP; + + case SAI_HOSTIF_TRAP_TYPE_GNMI: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_GNMI; + + case SAI_HOSTIF_TRAP_TYPE_P4RT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_P4RT; + + case SAI_HOSTIF_TRAP_TYPE_NTPCLIENT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPCLIENT; + + case SAI_HOSTIF_TRAP_TYPE_NTPSERVER: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPSERVER; + + case SAI_HOSTIF_TRAP_TYPE_HTTPCLIENT: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPCLIENT; + + case SAI_HOSTIF_TRAP_TYPE_HTTPSERVER: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPSERVER; + + case SAI_HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE; + + case SAI_HOSTIF_TRAP_TYPE_L3_MTU_ERROR: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_L3_MTU_ERROR; + + case SAI_HOSTIF_TRAP_TYPE_TTL_ERROR: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_TTL_ERROR; + + case SAI_HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE; + + case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER: + return lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER; + + case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED; + + case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER; + + case SAI_HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR; + + case SAI_HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL; + + case SAI_HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS; + + case SAI_HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE: + return lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE; + + case SAI_HOSTIF_TRAP_TYPE_END: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_END; + + default: + return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNSPECIFIED; + } +} +sai_hostif_trap_type_t convert_sai_hostif_trap_type_t_to_sai( + lemming::dataplane::sai::HostifTrapType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_START: + return SAI_HOSTIF_TRAP_TYPE_START; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LACP: + return SAI_HOSTIF_TRAP_TYPE_LACP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_EAPOL: + return SAI_HOSTIF_TRAP_TYPE_EAPOL; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LLDP: + return SAI_HOSTIF_TRAP_TYPE_LLDP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PVRST: + return SAI_HOSTIF_TRAP_TYPE_PVRST; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY: + return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE: + return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT: + return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT: + return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT: + return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SAMPLEPACKET: + return SAI_HOSTIF_TRAP_TYPE_SAMPLEPACKET; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UDLD: + return SAI_HOSTIF_TRAP_TYPE_UDLD; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CDP: + return SAI_HOSTIF_TRAP_TYPE_CDP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VTP: + return SAI_HOSTIF_TRAP_TYPE_VTP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DTP: + return SAI_HOSTIF_TRAP_TYPE_DTP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PAGP: + return SAI_HOSTIF_TRAP_TYPE_PAGP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP: + return SAI_HOSTIF_TRAP_TYPE_PTP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP_TX_EVENT: + return SAI_HOSTIF_TRAP_TYPE_PTP_TX_EVENT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP_L2: + return SAI_HOSTIF_TRAP_TYPE_DHCP_L2; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6_L2: + return SAI_HOSTIF_TRAP_TYPE_DHCPV6_L2; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE: + return SAI_HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_REQUEST: + return SAI_HOSTIF_TRAP_TYPE_ARP_REQUEST; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_RESPONSE: + return SAI_HOSTIF_TRAP_TYPE_ARP_RESPONSE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP: + return SAI_HOSTIF_TRAP_TYPE_DHCP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPF: + return SAI_HOSTIF_TRAP_TYPE_OSPF; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIM: + return SAI_HOSTIF_TRAP_TYPE_PIM; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRP: + return SAI_HOSTIF_TRAP_TYPE_VRRP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6: + return SAI_HOSTIF_TRAP_TYPE_DHCPV6; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPFV6: + return SAI_HOSTIF_TRAP_TYPE_OSPFV6; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRPV6: + return SAI_HOSTIF_TRAP_TYPE_VRRPV6; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY: + return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2: + return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT: + return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE: + return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MLD_V2_REPORT: + return SAI_HOSTIF_TRAP_TYPE_MLD_V2_REPORT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST: + return SAI_HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNAT_MISS: + return SAI_HOSTIF_TRAP_TYPE_SNAT_MISS; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DNAT_MISS: + return SAI_HOSTIF_TRAP_TYPE_DNAT_MISS; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NAT_HAIRPIN: + return SAI_HOSTIF_TRAP_TYPE_NAT_HAIRPIN; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION: + return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT: + return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ISIS: + return SAI_HOSTIF_TRAP_TYPE_ISIS; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NEIGHBOR_MISS: + return SAI_HOSTIF_TRAP_TYPE_NEIGHBOR_MISS; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE: + return SAI_HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IP2ME: + return SAI_HOSTIF_TRAP_TYPE_IP2ME; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SSH: + return SAI_HOSTIF_TRAP_TYPE_SSH; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNMP: + return SAI_HOSTIF_TRAP_TYPE_SNMP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGP: + return SAI_HOSTIF_TRAP_TYPE_BGP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGPV6: + return SAI_HOSTIF_TRAP_TYPE_BGPV6; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD: + return SAI_HOSTIF_TRAP_TYPE_BFD; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6: + return SAI_HOSTIF_TRAP_TYPE_BFDV6; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD_MICRO: + return SAI_HOSTIF_TRAP_TYPE_BFD_MICRO; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6_MICRO: + return SAI_HOSTIF_TRAP_TYPE_BFDV6_MICRO; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LDP: + return SAI_HOSTIF_TRAP_TYPE_LDP; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_GNMI: + return SAI_HOSTIF_TRAP_TYPE_GNMI; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_P4RT: + return SAI_HOSTIF_TRAP_TYPE_P4RT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPCLIENT: + return SAI_HOSTIF_TRAP_TYPE_NTPCLIENT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPSERVER: + return SAI_HOSTIF_TRAP_TYPE_NTPSERVER; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPCLIENT: + return SAI_HOSTIF_TRAP_TYPE_HTTPCLIENT; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPSERVER: + return SAI_HOSTIF_TRAP_TYPE_HTTPSERVER; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE: + return SAI_HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_L3_MTU_ERROR: + return SAI_HOSTIF_TRAP_TYPE_L3_MTU_ERROR; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_TTL_ERROR: + return SAI_HOSTIF_TRAP_TYPE_TTL_ERROR; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE: + return SAI_HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE; + + case lemming::dataplane::sai:: + HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER: + return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED: + return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER: + return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR: + return SAI_HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL: + return SAI_HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS: + return SAI_HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE: + return SAI_HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE; + + case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_END: + return SAI_HOSTIF_TRAP_TYPE_END; + + default: + return SAI_HOSTIF_TRAP_TYPE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_trap_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_trap_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_trap_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifTxType convert_sai_hostif_tx_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS: + return lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_BYPASS; + + case SAI_HOSTIF_TX_TYPE_PIPELINE_LOOKUP: + return lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_LOOKUP; + + case SAI_HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::HOSTIF_TX_TYPE_UNSPECIFIED; + } +} +sai_hostif_tx_type_t convert_sai_hostif_tx_type_t_to_sai( + lemming::dataplane::sai::HostifTxType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_BYPASS: + return SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS; + + case lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_LOOKUP: + return SAI_HOSTIF_TX_TYPE_PIPELINE_LOOKUP; + + case lemming::dataplane::sai::HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE: + return SAI_HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS; + } +} + +google::protobuf::RepeatedField convert_list_sai_hostif_tx_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_tx_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_tx_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_tx_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifType convert_sai_hostif_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_TYPE_NETDEV: + return lemming::dataplane::sai::HOSTIF_TYPE_NETDEV; + + case SAI_HOSTIF_TYPE_FD: + return lemming::dataplane::sai::HOSTIF_TYPE_FD; + + case SAI_HOSTIF_TYPE_GENETLINK: + return lemming::dataplane::sai::HOSTIF_TYPE_GENETLINK; + + default: + return lemming::dataplane::sai::HOSTIF_TYPE_UNSPECIFIED; + } +} +sai_hostif_type_t convert_sai_hostif_type_t_to_sai( + lemming::dataplane::sai::HostifType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_TYPE_NETDEV: + return SAI_HOSTIF_TYPE_NETDEV; + + case lemming::dataplane::sai::HOSTIF_TYPE_FD: + return SAI_HOSTIF_TYPE_FD; + + case lemming::dataplane::sai::HOSTIF_TYPE_GENETLINK: + return SAI_HOSTIF_TYPE_GENETLINK; + + default: + return SAI_HOSTIF_TYPE_NETDEV; + } +} + +google::protobuf::RepeatedField convert_list_sai_hostif_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifUserDefinedTrapAttr +convert_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; + + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: + return lemming::dataplane::sai:: + HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY; + + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP; + + default: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_UNSPECIFIED; + } +} +sai_hostif_user_defined_trap_attr_t +convert_sai_hostif_user_defined_trap_attr_t_to_sai( + lemming::dataplane::sai::HostifUserDefinedTrapAttr val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: + return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: + return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: + return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP; + + default: + return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_user_defined_trap_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_hostif_user_defined_trap_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_user_defined_trap_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_user_defined_trap_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifUserDefinedTrapType +convert_sai_hostif_user_defined_trap_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_START; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_ACL: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_ACL; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_FDB: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_FDB; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_TAM: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_TAM; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai:: + HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE; + + case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_END: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_END; + + default: + return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_UNSPECIFIED; + } +} +sai_hostif_user_defined_trap_type_t +convert_sai_hostif_user_defined_trap_type_t_to_sai( + lemming::dataplane::sai::HostifUserDefinedTrapType val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_START: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_ACL: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_ACL; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_FDB: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_FDB; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_TAM: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_TAM; + + case lemming::dataplane::sai:: + HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_END: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_END; + + default: + return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_user_defined_trap_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_hostif_user_defined_trap_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_user_defined_trap_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_user_defined_trap_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::HostifVlanTag convert_sai_hostif_vlan_tag_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_HOSTIF_VLAN_TAG_STRIP: + return lemming::dataplane::sai::HOSTIF_VLAN_TAG_STRIP; + + case SAI_HOSTIF_VLAN_TAG_KEEP: + return lemming::dataplane::sai::HOSTIF_VLAN_TAG_KEEP; + + case SAI_HOSTIF_VLAN_TAG_ORIGINAL: + return lemming::dataplane::sai::HOSTIF_VLAN_TAG_ORIGINAL; + + default: + return lemming::dataplane::sai::HOSTIF_VLAN_TAG_UNSPECIFIED; + } +} +sai_hostif_vlan_tag_t convert_sai_hostif_vlan_tag_t_to_sai( + lemming::dataplane::sai::HostifVlanTag val) { + switch (val) { + case lemming::dataplane::sai::HOSTIF_VLAN_TAG_STRIP: + return SAI_HOSTIF_VLAN_TAG_STRIP; + + case lemming::dataplane::sai::HOSTIF_VLAN_TAG_KEEP: + return SAI_HOSTIF_VLAN_TAG_KEEP; + + case lemming::dataplane::sai::HOSTIF_VLAN_TAG_ORIGINAL: + return SAI_HOSTIF_VLAN_TAG_ORIGINAL; + + default: + return SAI_HOSTIF_VLAN_TAG_STRIP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_hostif_vlan_tag_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_hostif_vlan_tag_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_hostif_vlan_tag_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_hostif_vlan_tag_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IcmpEchoSessionAttr +convert_sai_icmp_echo_session_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID; + + case SAI_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER; + + case SAI_ICMP_ECHO_SESSION_ATTR_PORT: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_PORT; + + case SAI_ICMP_ECHO_SESSION_ATTR_RX_PORT: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_RX_PORT; + + case SAI_ICMP_ECHO_SESSION_ATTR_GUID: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_GUID; + + case SAI_ICMP_ECHO_SESSION_ATTR_COOKIE: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_COOKIE; + + case SAI_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION; + + case SAI_ICMP_ECHO_SESSION_ATTR_TOS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TOS; + + case SAI_ICMP_ECHO_SESSION_ATTR_TTL: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TTL; + + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS; + + case SAI_ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS; + + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS; + + case SAI_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS; + + case SAI_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TX_INTERVAL; + + case SAI_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_RX_INTERVAL; + + case SAI_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER: + return lemming::dataplane::sai:: + ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER; + + case SAI_ICMP_ECHO_SESSION_ATTR_STATE: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_STATE; + + case SAI_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE; + + case SAI_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai:: + ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_UNSPECIFIED; + } +} +sai_icmp_echo_session_attr_t convert_sai_icmp_echo_session_attr_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionAttr val) { + switch (val) { + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID: + return SAI_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER: + return SAI_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_PORT: + return SAI_ICMP_ECHO_SESSION_ATTR_PORT; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_RX_PORT: + return SAI_ICMP_ECHO_SESSION_ATTR_RX_PORT; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_GUID: + return SAI_ICMP_ECHO_SESSION_ATTR_GUID; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_COOKIE: + return SAI_ICMP_ECHO_SESSION_ATTR_COOKIE; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION: + return SAI_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TOS: + return SAI_ICMP_ECHO_SESSION_ATTR_TOS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TTL: + return SAI_ICMP_ECHO_SESSION_ATTR_TTL; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS: + return SAI_ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS: + return SAI_ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS: + return SAI_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS: + return SAI_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_TX_INTERVAL: + return SAI_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_RX_INTERVAL: + return SAI_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL; + + case lemming::dataplane::sai:: + ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER: + return SAI_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_STATE: + return SAI_ICMP_ECHO_SESSION_ATTR_STATE; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE: + return SAI_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_icmp_echo_session_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_icmp_echo_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_icmp_echo_session_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IcmpEchoSessionStat +convert_sai_icmp_echo_session_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ICMP_ECHO_SESSION_STAT_IN_PACKETS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STAT_IN_PACKETS; + + case SAI_ICMP_ECHO_SESSION_STAT_OUT_PACKETS: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STAT_OUT_PACKETS; + + default: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STAT_UNSPECIFIED; + } +} +sai_icmp_echo_session_stat_t convert_sai_icmp_echo_session_stat_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionStat val) { + switch (val) { + case lemming::dataplane::sai::ICMP_ECHO_SESSION_STAT_IN_PACKETS: + return SAI_ICMP_ECHO_SESSION_STAT_IN_PACKETS; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_STAT_OUT_PACKETS: + return SAI_ICMP_ECHO_SESSION_STAT_OUT_PACKETS; + + default: + return SAI_ICMP_ECHO_SESSION_STAT_IN_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_icmp_echo_session_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_icmp_echo_session_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_icmp_echo_session_stat_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IcmpEchoSessionState +convert_sai_icmp_echo_session_state_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ICMP_ECHO_SESSION_STATE_DOWN: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STATE_DOWN; + + case SAI_ICMP_ECHO_SESSION_STATE_UP: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STATE_UP; + + default: + return lemming::dataplane::sai::ICMP_ECHO_SESSION_STATE_UNSPECIFIED; + } +} +sai_icmp_echo_session_state_t convert_sai_icmp_echo_session_state_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionState val) { + switch (val) { + case lemming::dataplane::sai::ICMP_ECHO_SESSION_STATE_DOWN: + return SAI_ICMP_ECHO_SESSION_STATE_DOWN; + + case lemming::dataplane::sai::ICMP_ECHO_SESSION_STATE_UP: + return SAI_ICMP_ECHO_SESSION_STATE_UP; + + default: + return SAI_ICMP_ECHO_SESSION_STATE_DOWN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_state_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_icmp_echo_session_state_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_icmp_echo_session_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_icmp_echo_session_state_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::InDropReason convert_sai_in_drop_reason_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IN_DROP_REASON_START: + return lemming::dataplane::sai::IN_DROP_REASON_START; + + case SAI_IN_DROP_REASON_SMAC_MULTICAST: + return lemming::dataplane::sai::IN_DROP_REASON_SMAC_MULTICAST; + + case SAI_IN_DROP_REASON_SMAC_EQUALS_DMAC: + return lemming::dataplane::sai::IN_DROP_REASON_SMAC_EQUALS_DMAC; + + case SAI_IN_DROP_REASON_DMAC_RESERVED: + return lemming::dataplane::sai::IN_DROP_REASON_DMAC_RESERVED; + + case SAI_IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED: + return lemming::dataplane::sai::IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED; + + case SAI_IN_DROP_REASON_INGRESS_VLAN_FILTER: + return lemming::dataplane::sai::IN_DROP_REASON_INGRESS_VLAN_FILTER; + + case SAI_IN_DROP_REASON_INGRESS_STP_FILTER: + return lemming::dataplane::sai::IN_DROP_REASON_INGRESS_STP_FILTER; + + case SAI_IN_DROP_REASON_FDB_UC_DISCARD: + return lemming::dataplane::sai::IN_DROP_REASON_FDB_UC_DISCARD; + + case SAI_IN_DROP_REASON_FDB_MC_DISCARD: + return lemming::dataplane::sai::IN_DROP_REASON_FDB_MC_DISCARD; + + case SAI_IN_DROP_REASON_L2_LOOPBACK_FILTER: + return lemming::dataplane::sai::IN_DROP_REASON_L2_LOOPBACK_FILTER; + + case SAI_IN_DROP_REASON_EXCEEDS_L2_MTU: + return lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L2_MTU; + + case SAI_IN_DROP_REASON_L3_ANY: + return lemming::dataplane::sai::IN_DROP_REASON_L3_ANY; + + case SAI_IN_DROP_REASON_EXCEEDS_L3_MTU: + return lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L3_MTU; + + case SAI_IN_DROP_REASON_TTL: + return lemming::dataplane::sai::IN_DROP_REASON_TTL; + + case SAI_IN_DROP_REASON_L3_LOOPBACK_FILTER: + return lemming::dataplane::sai::IN_DROP_REASON_L3_LOOPBACK_FILTER; + + case SAI_IN_DROP_REASON_NON_ROUTABLE: + return lemming::dataplane::sai::IN_DROP_REASON_NON_ROUTABLE; + + case SAI_IN_DROP_REASON_NO_L3_HEADER: + return lemming::dataplane::sai::IN_DROP_REASON_NO_L3_HEADER; + + case SAI_IN_DROP_REASON_IP_HEADER_ERROR: + return lemming::dataplane::sai::IN_DROP_REASON_IP_HEADER_ERROR; + + case SAI_IN_DROP_REASON_UC_DIP_MC_DMAC: + return lemming::dataplane::sai::IN_DROP_REASON_UC_DIP_MC_DMAC; + + case SAI_IN_DROP_REASON_DIP_LOOPBACK: + return lemming::dataplane::sai::IN_DROP_REASON_DIP_LOOPBACK; + + case SAI_IN_DROP_REASON_SIP_LOOPBACK: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_LOOPBACK; + + case SAI_IN_DROP_REASON_SIP_MC: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_MC; + + case SAI_IN_DROP_REASON_SIP_CLASS_E: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_CLASS_E; + + case SAI_IN_DROP_REASON_SIP_UNSPECIFIED: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_UNSPECIFIED; + + case SAI_IN_DROP_REASON_MC_DMAC_MISMATCH: + return lemming::dataplane::sai::IN_DROP_REASON_MC_DMAC_MISMATCH; + + case SAI_IN_DROP_REASON_SIP_EQUALS_DIP: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_EQUALS_DIP; + + case SAI_IN_DROP_REASON_SIP_BC: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_BC; + + case SAI_IN_DROP_REASON_DIP_LOCAL: + return lemming::dataplane::sai::IN_DROP_REASON_DIP_LOCAL; + + case SAI_IN_DROP_REASON_DIP_LINK_LOCAL: + return lemming::dataplane::sai::IN_DROP_REASON_DIP_LINK_LOCAL; + + case SAI_IN_DROP_REASON_SIP_LINK_LOCAL: + return lemming::dataplane::sai::IN_DROP_REASON_SIP_LINK_LOCAL; + + case SAI_IN_DROP_REASON_IPV6_MC_SCOPE0: + return lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE0; + + case SAI_IN_DROP_REASON_IPV6_MC_SCOPE1: + return lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE1; + + case SAI_IN_DROP_REASON_IRIF_DISABLED: + return lemming::dataplane::sai::IN_DROP_REASON_IRIF_DISABLED; + + case SAI_IN_DROP_REASON_ERIF_DISABLED: + return lemming::dataplane::sai::IN_DROP_REASON_ERIF_DISABLED; + + case SAI_IN_DROP_REASON_LPM4_MISS: + return lemming::dataplane::sai::IN_DROP_REASON_LPM4_MISS; + + case SAI_IN_DROP_REASON_LPM6_MISS: + return lemming::dataplane::sai::IN_DROP_REASON_LPM6_MISS; + + case SAI_IN_DROP_REASON_BLACKHOLE_ROUTE: + return lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ROUTE; + + case SAI_IN_DROP_REASON_BLACKHOLE_ARP: + return lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ARP; + + case SAI_IN_DROP_REASON_UNRESOLVED_NEXT_HOP: + return lemming::dataplane::sai::IN_DROP_REASON_UNRESOLVED_NEXT_HOP; + + case SAI_IN_DROP_REASON_L3_EGRESS_LINK_DOWN: + return lemming::dataplane::sai::IN_DROP_REASON_L3_EGRESS_LINK_DOWN; + + case SAI_IN_DROP_REASON_DECAP_ERROR: + return lemming::dataplane::sai::IN_DROP_REASON_DECAP_ERROR; + + case SAI_IN_DROP_REASON_ACL_ANY: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_ANY; + + case SAI_IN_DROP_REASON_ACL_INGRESS_PORT: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_PORT; + + case SAI_IN_DROP_REASON_ACL_INGRESS_LAG: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_LAG; + + case SAI_IN_DROP_REASON_ACL_INGRESS_VLAN: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_VLAN; + + case SAI_IN_DROP_REASON_ACL_INGRESS_RIF: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_RIF; + + case SAI_IN_DROP_REASON_ACL_INGRESS_SWITCH: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_SWITCH; + + case SAI_IN_DROP_REASON_ACL_EGRESS_PORT: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_PORT; + + case SAI_IN_DROP_REASON_ACL_EGRESS_LAG: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_LAG; + + case SAI_IN_DROP_REASON_ACL_EGRESS_VLAN: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_VLAN; + + case SAI_IN_DROP_REASON_ACL_EGRESS_RIF: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_RIF; + + case SAI_IN_DROP_REASON_ACL_EGRESS_SWITCH: + return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_SWITCH; + + case SAI_IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS: + return lemming::dataplane::sai::IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS; + + case SAI_IN_DROP_REASON_MPLS_MISS: + return lemming::dataplane::sai::IN_DROP_REASON_MPLS_MISS; + + case SAI_IN_DROP_REASON_SRV6_LOCAL_SID_DROP: + return lemming::dataplane::sai::IN_DROP_REASON_SRV6_LOCAL_SID_DROP; + + case SAI_IN_DROP_REASON_END: + return lemming::dataplane::sai::IN_DROP_REASON_END; + + case SAI_IN_DROP_REASON_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_BASE; + + case SAI_IN_DROP_REASON_CUSTOM_RANGE_END: + return lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_END; + + default: + return lemming::dataplane::sai::IN_DROP_REASON_UNSPECIFIED; + } +} +sai_in_drop_reason_t convert_sai_in_drop_reason_t_to_sai( + lemming::dataplane::sai::InDropReason val) { + switch (val) { + case lemming::dataplane::sai::IN_DROP_REASON_START: + return SAI_IN_DROP_REASON_START; + + case lemming::dataplane::sai::IN_DROP_REASON_SMAC_MULTICAST: + return SAI_IN_DROP_REASON_SMAC_MULTICAST; + + case lemming::dataplane::sai::IN_DROP_REASON_SMAC_EQUALS_DMAC: + return SAI_IN_DROP_REASON_SMAC_EQUALS_DMAC; + + case lemming::dataplane::sai::IN_DROP_REASON_DMAC_RESERVED: + return SAI_IN_DROP_REASON_DMAC_RESERVED; + + case lemming::dataplane::sai::IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED: + return SAI_IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED; + + case lemming::dataplane::sai::IN_DROP_REASON_INGRESS_VLAN_FILTER: + return SAI_IN_DROP_REASON_INGRESS_VLAN_FILTER; + + case lemming::dataplane::sai::IN_DROP_REASON_INGRESS_STP_FILTER: + return SAI_IN_DROP_REASON_INGRESS_STP_FILTER; + + case lemming::dataplane::sai::IN_DROP_REASON_FDB_UC_DISCARD: + return SAI_IN_DROP_REASON_FDB_UC_DISCARD; + + case lemming::dataplane::sai::IN_DROP_REASON_FDB_MC_DISCARD: + return SAI_IN_DROP_REASON_FDB_MC_DISCARD; + + case lemming::dataplane::sai::IN_DROP_REASON_L2_LOOPBACK_FILTER: + return SAI_IN_DROP_REASON_L2_LOOPBACK_FILTER; + + case lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L2_MTU: + return SAI_IN_DROP_REASON_EXCEEDS_L2_MTU; + + case lemming::dataplane::sai::IN_DROP_REASON_L3_ANY: + return SAI_IN_DROP_REASON_L3_ANY; + + case lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L3_MTU: + return SAI_IN_DROP_REASON_EXCEEDS_L3_MTU; + + case lemming::dataplane::sai::IN_DROP_REASON_TTL: + return SAI_IN_DROP_REASON_TTL; + + case lemming::dataplane::sai::IN_DROP_REASON_L3_LOOPBACK_FILTER: + return SAI_IN_DROP_REASON_L3_LOOPBACK_FILTER; + + case lemming::dataplane::sai::IN_DROP_REASON_NON_ROUTABLE: + return SAI_IN_DROP_REASON_NON_ROUTABLE; + + case lemming::dataplane::sai::IN_DROP_REASON_NO_L3_HEADER: + return SAI_IN_DROP_REASON_NO_L3_HEADER; + + case lemming::dataplane::sai::IN_DROP_REASON_IP_HEADER_ERROR: + return SAI_IN_DROP_REASON_IP_HEADER_ERROR; + + case lemming::dataplane::sai::IN_DROP_REASON_UC_DIP_MC_DMAC: + return SAI_IN_DROP_REASON_UC_DIP_MC_DMAC; + + case lemming::dataplane::sai::IN_DROP_REASON_DIP_LOOPBACK: + return SAI_IN_DROP_REASON_DIP_LOOPBACK; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_LOOPBACK: + return SAI_IN_DROP_REASON_SIP_LOOPBACK; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_MC: + return SAI_IN_DROP_REASON_SIP_MC; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_CLASS_E: + return SAI_IN_DROP_REASON_SIP_CLASS_E; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_UNSPECIFIED: + return SAI_IN_DROP_REASON_SIP_UNSPECIFIED; + + case lemming::dataplane::sai::IN_DROP_REASON_MC_DMAC_MISMATCH: + return SAI_IN_DROP_REASON_MC_DMAC_MISMATCH; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_EQUALS_DIP: + return SAI_IN_DROP_REASON_SIP_EQUALS_DIP; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_BC: + return SAI_IN_DROP_REASON_SIP_BC; + + case lemming::dataplane::sai::IN_DROP_REASON_DIP_LOCAL: + return SAI_IN_DROP_REASON_DIP_LOCAL; + + case lemming::dataplane::sai::IN_DROP_REASON_DIP_LINK_LOCAL: + return SAI_IN_DROP_REASON_DIP_LINK_LOCAL; + + case lemming::dataplane::sai::IN_DROP_REASON_SIP_LINK_LOCAL: + return SAI_IN_DROP_REASON_SIP_LINK_LOCAL; + + case lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE0: + return SAI_IN_DROP_REASON_IPV6_MC_SCOPE0; + + case lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE1: + return SAI_IN_DROP_REASON_IPV6_MC_SCOPE1; + + case lemming::dataplane::sai::IN_DROP_REASON_IRIF_DISABLED: + return SAI_IN_DROP_REASON_IRIF_DISABLED; + + case lemming::dataplane::sai::IN_DROP_REASON_ERIF_DISABLED: + return SAI_IN_DROP_REASON_ERIF_DISABLED; + + case lemming::dataplane::sai::IN_DROP_REASON_LPM4_MISS: + return SAI_IN_DROP_REASON_LPM4_MISS; + + case lemming::dataplane::sai::IN_DROP_REASON_LPM6_MISS: + return SAI_IN_DROP_REASON_LPM6_MISS; + + case lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ROUTE: + return SAI_IN_DROP_REASON_BLACKHOLE_ROUTE; + + case lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ARP: + return SAI_IN_DROP_REASON_BLACKHOLE_ARP; + + case lemming::dataplane::sai::IN_DROP_REASON_UNRESOLVED_NEXT_HOP: + return SAI_IN_DROP_REASON_UNRESOLVED_NEXT_HOP; + + case lemming::dataplane::sai::IN_DROP_REASON_L3_EGRESS_LINK_DOWN: + return SAI_IN_DROP_REASON_L3_EGRESS_LINK_DOWN; + + case lemming::dataplane::sai::IN_DROP_REASON_DECAP_ERROR: + return SAI_IN_DROP_REASON_DECAP_ERROR; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_ANY: + return SAI_IN_DROP_REASON_ACL_ANY; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_PORT: + return SAI_IN_DROP_REASON_ACL_INGRESS_PORT; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_LAG: + return SAI_IN_DROP_REASON_ACL_INGRESS_LAG; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_VLAN: + return SAI_IN_DROP_REASON_ACL_INGRESS_VLAN; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_RIF: + return SAI_IN_DROP_REASON_ACL_INGRESS_RIF; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_SWITCH: + return SAI_IN_DROP_REASON_ACL_INGRESS_SWITCH; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_PORT: + return SAI_IN_DROP_REASON_ACL_EGRESS_PORT; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_LAG: + return SAI_IN_DROP_REASON_ACL_EGRESS_LAG; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_VLAN: + return SAI_IN_DROP_REASON_ACL_EGRESS_VLAN; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_RIF: + return SAI_IN_DROP_REASON_ACL_EGRESS_RIF; + + case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_SWITCH: + return SAI_IN_DROP_REASON_ACL_EGRESS_SWITCH; + + case lemming::dataplane::sai::IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS: + return SAI_IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS; + + case lemming::dataplane::sai::IN_DROP_REASON_MPLS_MISS: + return SAI_IN_DROP_REASON_MPLS_MISS; + + case lemming::dataplane::sai::IN_DROP_REASON_SRV6_LOCAL_SID_DROP: + return SAI_IN_DROP_REASON_SRV6_LOCAL_SID_DROP; + + case lemming::dataplane::sai::IN_DROP_REASON_END: + return SAI_IN_DROP_REASON_END; + + case lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_BASE: + return SAI_IN_DROP_REASON_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_END: + return SAI_IN_DROP_REASON_CUSTOM_RANGE_END; + + default: + return SAI_IN_DROP_REASON_START; + } +} + +google::protobuf::RepeatedField convert_list_sai_in_drop_reason_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_in_drop_reason_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_in_drop_reason_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_in_drop_reason_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IngressPriorityGroupAttr +convert_sai_ingress_priority_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; + + case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_PORT; + + case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_TAM; + + case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_INDEX; + + case SAI_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE; + + case SAI_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED; + } +} +sai_ingress_priority_group_attr_t +convert_sai_ingress_priority_group_attr_t_to_sai( + lemming::dataplane::sai::IngressPriorityGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_PORT: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_TAM: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_INDEX: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ingress_priority_group_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_ingress_priority_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ingress_priority_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ingress_priority_group_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IngressPriorityGroupStat +convert_sai_ingress_priority_group_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_PACKETS; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_BYTES: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS; + + case SAI_INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_UNSPECIFIED; + } +} +sai_ingress_priority_group_stat_t +convert_sai_ingress_priority_group_stat_t_to_sai( + lemming::dataplane::sai::IngressPriorityGroupStat val) { + switch (val) { + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_PACKETS: + return SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_BYTES; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai:: + INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES: + return SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS: + return SAI_INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS; + + case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE: + return SAI_INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE; + + default: + return SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ingress_priority_group_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_ingress_priority_group_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ingress_priority_group_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ingress_priority_group_stat_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::InsegEntryAttr convert_sai_inseg_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_NUM_OF_POP; + + case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_PACKET_ACTION; + + case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_TRAP_PRIORITY; + + case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_NEXT_HOP_ID; + + case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_PSC_TYPE; + + case SAI_INSEG_ENTRY_ATTR_QOS_TC: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_QOS_TC; + + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP; + + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP; + + case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_TTL_MODE; + + case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_QOS_MODE; + + case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::INSEG_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_inseg_entry_attr_t convert_sai_inseg_entry_attr_t_to_sai( + lemming::dataplane::sai::InsegEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_NUM_OF_POP: + return SAI_INSEG_ENTRY_ATTR_NUM_OF_POP; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_PACKET_ACTION: + return SAI_INSEG_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_TRAP_PRIORITY: + return SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_NEXT_HOP_ID: + return SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_PSC_TYPE: + return SAI_INSEG_ENTRY_ATTR_PSC_TYPE; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_QOS_TC: + return SAI_INSEG_ENTRY_ATTR_QOS_TC; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: + return SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: + return SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_TTL_MODE: + return SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_QOS_MODE: + return SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE; + + case lemming::dataplane::sai::INSEG_ENTRY_ATTR_COUNTER_ID: + return SAI_INSEG_ENTRY_ATTR_COUNTER_ID; + + default: + return SAI_INSEG_ENTRY_ATTR_NUM_OF_POP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_inseg_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_inseg_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_inseg_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::InsegEntryPopQosMode +convert_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM: + return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNIFORM; + + case SAI_INSEG_ENTRY_POP_QOS_MODE_PIPE: + return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_PIPE; + + default: + return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNSPECIFIED; + } +} +sai_inseg_entry_pop_qos_mode_t convert_sai_inseg_entry_pop_qos_mode_t_to_sai( + lemming::dataplane::sai::InsegEntryPopQosMode val) { + switch (val) { + case lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNIFORM: + return SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM; + + case lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_PIPE: + return SAI_INSEG_ENTRY_POP_QOS_MODE_PIPE; + + default: + return SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM; + } +} + +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_pop_qos_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_inseg_entry_pop_qos_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_inseg_entry_pop_qos_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_inseg_entry_pop_qos_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::InsegEntryPopTtlMode +convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM: + return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNIFORM; + + case SAI_INSEG_ENTRY_POP_TTL_MODE_PIPE: + return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_PIPE; + + default: + return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNSPECIFIED; + } +} +sai_inseg_entry_pop_ttl_mode_t convert_sai_inseg_entry_pop_ttl_mode_t_to_sai( + lemming::dataplane::sai::InsegEntryPopTtlMode val) { + switch (val) { + case lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNIFORM: + return SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM; + + case lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_PIPE: + return SAI_INSEG_ENTRY_POP_TTL_MODE_PIPE; + + default: + return SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM; + } +} + +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_pop_ttl_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_inseg_entry_pop_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_inseg_entry_pop_ttl_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::InsegEntryPscType +convert_sai_inseg_entry_psc_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_INSEG_ENTRY_PSC_TYPE_ELSP: + return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_ELSP; + + case SAI_INSEG_ENTRY_PSC_TYPE_LLSP: + return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_LLSP; + + default: + return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_UNSPECIFIED; + } +} +sai_inseg_entry_psc_type_t convert_sai_inseg_entry_psc_type_t_to_sai( + lemming::dataplane::sai::InsegEntryPscType val) { + switch (val) { + case lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_ELSP: + return SAI_INSEG_ENTRY_PSC_TYPE_ELSP; + + case lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_LLSP: + return SAI_INSEG_ENTRY_PSC_TYPE_LLSP; + + default: + return SAI_INSEG_ENTRY_PSC_TYPE_ELSP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_psc_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_inseg_entry_psc_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_inseg_entry_psc_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_inseg_entry_psc_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpAddrFamily convert_sai_ip_addr_family_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IP_ADDR_FAMILY_IPV4: + return lemming::dataplane::sai::IP_ADDR_FAMILY_IPV4; + + case SAI_IP_ADDR_FAMILY_IPV6: + return lemming::dataplane::sai::IP_ADDR_FAMILY_IPV6; + + default: + return lemming::dataplane::sai::IP_ADDR_FAMILY_UNSPECIFIED; + } +} +sai_ip_addr_family_t convert_sai_ip_addr_family_t_to_sai( + lemming::dataplane::sai::IpAddrFamily val) { + switch (val) { + case lemming::dataplane::sai::IP_ADDR_FAMILY_IPV4: + return SAI_IP_ADDR_FAMILY_IPV4; + + case lemming::dataplane::sai::IP_ADDR_FAMILY_IPV6: + return SAI_IP_ADDR_FAMILY_IPV6; + + default: + return SAI_IP_ADDR_FAMILY_IPV4; + } +} + +google::protobuf::RepeatedField convert_list_sai_ip_addr_family_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ip_addr_family_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ip_addr_family_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ip_addr_family_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpmcEntryAttr convert_sai_ipmc_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::IPMC_ENTRY_ATTR_PACKET_ACTION; + + case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: + return lemming::dataplane::sai::IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID; + + case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: + return lemming::dataplane::sai::IPMC_ENTRY_ATTR_RPF_GROUP_ID; + + case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::IPMC_ENTRY_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::IPMC_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_ipmc_entry_attr_t convert_sai_ipmc_entry_attr_t_to_sai( + lemming::dataplane::sai::IpmcEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::IPMC_ENTRY_ATTR_PACKET_ACTION: + return SAI_IPMC_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: + return SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID; + + case lemming::dataplane::sai::IPMC_ENTRY_ATTR_RPF_GROUP_ID: + return SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID; + + case lemming::dataplane::sai::IPMC_ENTRY_ATTR_COUNTER_ID: + return SAI_IPMC_ENTRY_ATTR_COUNTER_ID; + + default: + return SAI_IPMC_ENTRY_ATTR_PACKET_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipmc_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipmc_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipmc_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipmc_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpmcEntryType convert_sai_ipmc_entry_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPMC_ENTRY_TYPE_SG: + return lemming::dataplane::sai::IPMC_ENTRY_TYPE_SG; + + case SAI_IPMC_ENTRY_TYPE_XG: + return lemming::dataplane::sai::IPMC_ENTRY_TYPE_XG; + + default: + return lemming::dataplane::sai::IPMC_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_ipmc_entry_type_t convert_sai_ipmc_entry_type_t_to_sai( + lemming::dataplane::sai::IpmcEntryType val) { + switch (val) { + case lemming::dataplane::sai::IPMC_ENTRY_TYPE_SG: + return SAI_IPMC_ENTRY_TYPE_SG; + + case lemming::dataplane::sai::IPMC_ENTRY_TYPE_XG: + return SAI_IPMC_ENTRY_TYPE_XG; + + default: + return SAI_IPMC_ENTRY_TYPE_SG; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipmc_entry_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipmc_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipmc_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipmc_entry_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpmcGroupAttr convert_sai_ipmc_group_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: + return lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; + + case SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: + return lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_MEMBER_LIST; + + default: + return lemming::dataplane::sai::IPMC_GROUP_ATTR_UNSPECIFIED; + } +} +sai_ipmc_group_attr_t convert_sai_ipmc_group_attr_t_to_sai( + lemming::dataplane::sai::IpmcGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: + return SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; + + case lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: + return SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST; + + default: + return SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipmc_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipmc_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipmc_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipmc_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpmcGroupMemberAttr +convert_sai_ipmc_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: + return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; + + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: + return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID; + + default: + return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_ipmc_group_member_attr_t convert_sai_ipmc_group_member_attr_t_to_sai( + lemming::dataplane::sai::IpmcGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: + return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; + + case lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: + return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID; + + default: + return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipmc_group_member_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipmc_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipmc_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipmc_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecAttr convert_sai_ipsec_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: + return lemming::dataplane::sai::IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; + + case SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + return lemming::dataplane::sai:: + IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; + + case SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + return lemming::dataplane::sai:: + IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; + + case SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: + return lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_SUPPORTED; + + case SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + return lemming::dataplane::sai:: + IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; + + case SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED: + return lemming::dataplane::sai::IPSEC_ATTR_SN_32BIT_SUPPORTED; + + case SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED: + return lemming::dataplane::sai::IPSEC_ATTR_ESN_64BIT_SUPPORTED; + + case SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST: + return lemming::dataplane::sai::IPSEC_ATTR_SUPPORTED_CIPHER_LIST; + + case SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU: + return lemming::dataplane::sai::IPSEC_ATTR_SYSTEM_SIDE_MTU; + + case SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED: + return lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_SUPPORTED; + + case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: + return lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_ENABLE; + + case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: + return lemming::dataplane::sai::IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE; + + case SAI_IPSEC_ATTR_CTAG_TPID: + return lemming::dataplane::sai::IPSEC_ATTR_CTAG_TPID; + + case SAI_IPSEC_ATTR_STAG_TPID: + return lemming::dataplane::sai::IPSEC_ATTR_STAG_TPID; + + case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: + return lemming::dataplane::sai::IPSEC_ATTR_MAX_VLAN_TAGS_PARSED; + + case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: + return lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK; + + case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: + return lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK; + + case SAI_IPSEC_ATTR_STATS_MODE: + return lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE; + + case SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA: + return lemming::dataplane::sai::IPSEC_ATTR_AVAILABLE_IPSEC_SA; + + case SAI_IPSEC_ATTR_SA_LIST: + return lemming::dataplane::sai::IPSEC_ATTR_SA_LIST; + + default: + return lemming::dataplane::sai::IPSEC_ATTR_UNSPECIFIED; + } +} +sai_ipsec_attr_t convert_sai_ipsec_attr_t_to_sai( + lemming::dataplane::sai::IpsecAttr val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: + return SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; + + case lemming::dataplane::sai:: + IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + return SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; + + case lemming::dataplane::sai:: + IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + return SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: + return SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + return SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_SN_32BIT_SUPPORTED: + return SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_ESN_64BIT_SUPPORTED: + return SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_SUPPORTED_CIPHER_LIST: + return SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST; + + case lemming::dataplane::sai::IPSEC_ATTR_SYSTEM_SIDE_MTU: + return SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU; + + case lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_SUPPORTED: + return SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED; + + case lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_ENABLE: + return SAI_IPSEC_ATTR_WARM_BOOT_ENABLE; + + case lemming::dataplane::sai::IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: + return SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE; + + case lemming::dataplane::sai::IPSEC_ATTR_CTAG_TPID: + return SAI_IPSEC_ATTR_CTAG_TPID; + + case lemming::dataplane::sai::IPSEC_ATTR_STAG_TPID: + return SAI_IPSEC_ATTR_STAG_TPID; + + case lemming::dataplane::sai::IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: + return SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED; + + case lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: + return SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK; + + case lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: + return SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK; + + case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE: + return SAI_IPSEC_ATTR_STATS_MODE; + + case lemming::dataplane::sai::IPSEC_ATTR_AVAILABLE_IPSEC_SA: + return SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA; + + case lemming::dataplane::sai::IPSEC_ATTR_SA_LIST: + return SAI_IPSEC_ATTR_SA_LIST; + + default: + return SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; + } +} + +google::protobuf::RepeatedField convert_list_sai_ipsec_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecCipher convert_sai_ipsec_cipher_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_CIPHER_AES128_GCM16: + return lemming::dataplane::sai::IPSEC_CIPHER_AES128_GCM16; + + case SAI_IPSEC_CIPHER_AES256_GCM16: + return lemming::dataplane::sai::IPSEC_CIPHER_AES256_GCM16; + + case SAI_IPSEC_CIPHER_AES128_GMAC: + return lemming::dataplane::sai::IPSEC_CIPHER_AES128_GMAC; + + case SAI_IPSEC_CIPHER_AES256_GMAC: + return lemming::dataplane::sai::IPSEC_CIPHER_AES256_GMAC; + + default: + return lemming::dataplane::sai::IPSEC_CIPHER_UNSPECIFIED; + } +} +sai_ipsec_cipher_t convert_sai_ipsec_cipher_t_to_sai( + lemming::dataplane::sai::IpsecCipher val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_CIPHER_AES128_GCM16: + return SAI_IPSEC_CIPHER_AES128_GCM16; + + case lemming::dataplane::sai::IPSEC_CIPHER_AES256_GCM16: + return SAI_IPSEC_CIPHER_AES256_GCM16; + + case lemming::dataplane::sai::IPSEC_CIPHER_AES128_GMAC: + return SAI_IPSEC_CIPHER_AES128_GMAC; + + case lemming::dataplane::sai::IPSEC_CIPHER_AES256_GMAC: + return SAI_IPSEC_CIPHER_AES256_GMAC; + + default: + return SAI_IPSEC_CIPHER_AES128_GCM16; + } +} + +google::protobuf::RepeatedField convert_list_sai_ipsec_cipher_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_cipher_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_cipher_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_cipher_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecDirection convert_sai_ipsec_direction_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_DIRECTION_EGRESS: + return lemming::dataplane::sai::IPSEC_DIRECTION_EGRESS; + + case SAI_IPSEC_DIRECTION_INGRESS: + return lemming::dataplane::sai::IPSEC_DIRECTION_INGRESS; + + default: + return lemming::dataplane::sai::IPSEC_DIRECTION_UNSPECIFIED; + } +} +sai_ipsec_direction_t convert_sai_ipsec_direction_t_to_sai( + lemming::dataplane::sai::IpsecDirection val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_DIRECTION_EGRESS: + return SAI_IPSEC_DIRECTION_EGRESS; + + case lemming::dataplane::sai::IPSEC_DIRECTION_INGRESS: + return SAI_IPSEC_DIRECTION_INGRESS; + + default: + return SAI_IPSEC_DIRECTION_EGRESS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipsec_direction_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_direction_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_direction_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecPortAttr convert_sai_ipsec_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_PORT_ATTR_PORT_ID: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_PORT_ID; + + case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_CTAG_ENABLE; + + case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_STAG_ENABLE; + + case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_NATIVE_VLAN_ID; + + case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: + return lemming::dataplane::sai:: + IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE; + + case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; + + case SAI_IPSEC_PORT_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_STATS_COUNT_MODE; + + case SAI_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::IPSEC_PORT_ATTR_UNSPECIFIED; + } +} +sai_ipsec_port_attr_t convert_sai_ipsec_port_attr_t_to_sai( + lemming::dataplane::sai::IpsecPortAttr val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_PORT_ATTR_PORT_ID: + return SAI_IPSEC_PORT_ATTR_PORT_ID; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_CTAG_ENABLE: + return SAI_IPSEC_PORT_ATTR_CTAG_ENABLE; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_STAG_ENABLE: + return SAI_IPSEC_PORT_ATTR_STAG_ENABLE; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_NATIVE_VLAN_ID: + return SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: + return SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + return SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_STATS_COUNT_MODE: + return SAI_IPSEC_PORT_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_IPSEC_PORT_ATTR_PORT_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipsec_port_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecPortStat convert_sai_ipsec_port_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_ERROR_PKTS; + + case SAI_IPSEC_PORT_STAT_TX_IPSEC_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_IPSEC_PKTS; + + case SAI_IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS; + + case SAI_IPSEC_PORT_STAT_RX_ERROR_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_ERROR_PKTS; + + case SAI_IPSEC_PORT_STAT_RX_IPSEC_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_IPSEC_PKTS; + + case SAI_IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS: + return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS; + + default: + return lemming::dataplane::sai::IPSEC_PORT_STAT_UNSPECIFIED; + } +} +sai_ipsec_port_stat_t convert_sai_ipsec_port_stat_t_to_sai( + lemming::dataplane::sai::IpsecPortStat val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_ERROR_PKTS: + return SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS; + + case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_IPSEC_PKTS: + return SAI_IPSEC_PORT_STAT_TX_IPSEC_PKTS; + + case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS: + return SAI_IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS; + + case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_ERROR_PKTS: + return SAI_IPSEC_PORT_STAT_RX_ERROR_PKTS; + + case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_IPSEC_PKTS: + return SAI_IPSEC_PORT_STAT_RX_IPSEC_PKTS; + + case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS: + return SAI_IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS; + + default: + return SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipsec_port_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_port_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_port_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecSaAttr convert_sai_ipsec_sa_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_DIRECTION; + + case SAI_IPSEC_SA_ATTR_IPSEC_ID: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ID; + + case SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS: + return lemming::dataplane::sai::IPSEC_SA_ATTR_OCTET_COUNT_STATUS; + + case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: + return lemming::dataplane::sai::IPSEC_SA_ATTR_EXTERNAL_SA_INDEX; + + case SAI_IPSEC_SA_ATTR_SA_INDEX: + return lemming::dataplane::sai::IPSEC_SA_ATTR_SA_INDEX; + + case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_PORT_LIST; + + case SAI_IPSEC_SA_ATTR_IPSEC_SPI: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_SPI; + + case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ESN_ENABLE; + + case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: + return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_CIPHER; + + case SAI_IPSEC_SA_ATTR_ENCRYPT_KEY: + return lemming::dataplane::sai::IPSEC_SA_ATTR_ENCRYPT_KEY; + + case SAI_IPSEC_SA_ATTR_SALT: + return lemming::dataplane::sai::IPSEC_SA_ATTR_SALT; + + case SAI_IPSEC_SA_ATTR_AUTH_KEY: + return lemming::dataplane::sai::IPSEC_SA_ATTR_AUTH_KEY; + + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: + return lemming::dataplane::sai:: + IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE; + + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: + return lemming::dataplane::sai:: + IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW; + + case SAI_IPSEC_SA_ATTR_TERM_DST_IP: + return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_DST_IP; + + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: + return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE; + + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: + return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID; + + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: + return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE; + + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: + return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP; + + case SAI_IPSEC_SA_ATTR_EGRESS_ESN: + return lemming::dataplane::sai::IPSEC_SA_ATTR_EGRESS_ESN; + + case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: + return lemming::dataplane::sai::IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN; + + case SAI_IPSEC_SA_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::IPSEC_SA_ATTR_STATS_COUNT_MODE; + + case SAI_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::IPSEC_SA_ATTR_UNSPECIFIED; + } +} +sai_ipsec_sa_attr_t convert_sai_ipsec_sa_attr_t_to_sai( + lemming::dataplane::sai::IpsecSaAttr val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_DIRECTION: + return SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ID: + return SAI_IPSEC_SA_ATTR_IPSEC_ID; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_OCTET_COUNT_STATUS: + return SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: + return SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_SA_INDEX: + return SAI_IPSEC_SA_ATTR_SA_INDEX; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_PORT_LIST: + return SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_SPI: + return SAI_IPSEC_SA_ATTR_IPSEC_SPI; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: + return SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_CIPHER: + return SAI_IPSEC_SA_ATTR_IPSEC_CIPHER; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_ENCRYPT_KEY: + return SAI_IPSEC_SA_ATTR_ENCRYPT_KEY; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_SALT: + return SAI_IPSEC_SA_ATTR_SALT; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_AUTH_KEY: + return SAI_IPSEC_SA_ATTR_AUTH_KEY; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: + return SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: + return SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_DST_IP: + return SAI_IPSEC_SA_ATTR_TERM_DST_IP; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: + return SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID: + return SAI_IPSEC_SA_ATTR_TERM_VLAN_ID; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: + return SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP: + return SAI_IPSEC_SA_ATTR_TERM_SRC_IP; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_EGRESS_ESN: + return SAI_IPSEC_SA_ATTR_EGRESS_ESN; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: + return SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_STATS_COUNT_MODE: + return SAI_IPSEC_SA_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION; + } +} + +google::protobuf::RepeatedField convert_list_sai_ipsec_sa_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_sa_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_sa_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_sa_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecSaOctetCountStatus +convert_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK: + return lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; + + case SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK: + return lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK; + + case SAI_IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK: + return lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK; + + default: + return lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_UNSPECIFIED; + } +} +sai_ipsec_sa_octet_count_status_t +convert_sai_ipsec_sa_octet_count_status_t_to_sai( + lemming::dataplane::sai::IpsecSaOctetCountStatus val) { + switch (val) { + case lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK: + return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; + + case lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK: + return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK; + + case lemming::dataplane::sai:: + IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK: + return SAI_IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK; + + default: + return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ipsec_sa_octet_count_status_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_ipsec_sa_octet_count_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_sa_octet_count_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_sa_octet_count_status_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IpsecSaStat convert_sai_ipsec_sa_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_IPSEC_SA_STAT_PROTECTED_OCTETS: + return lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_OCTETS; + + case SAI_IPSEC_SA_STAT_PROTECTED_PKTS: + return lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_PKTS; + + case SAI_IPSEC_SA_STAT_GOOD_PKTS: + return lemming::dataplane::sai::IPSEC_SA_STAT_GOOD_PKTS; + + case SAI_IPSEC_SA_STAT_BAD_HEADER_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_BAD_HEADER_PKTS_IN; + + case SAI_IPSEC_SA_STAT_REPLAYED_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_REPLAYED_PKTS_IN; + + case SAI_IPSEC_SA_STAT_LATE_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_LATE_PKTS_IN; + + case SAI_IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN; + + case SAI_IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN; + + case SAI_IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN: + return lemming::dataplane::sai::IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN; + + case SAI_IPSEC_SA_STAT_OTHER_DROPPED_PKTS: + return lemming::dataplane::sai::IPSEC_SA_STAT_OTHER_DROPPED_PKTS; + + default: + return lemming::dataplane::sai::IPSEC_SA_STAT_UNSPECIFIED; + } +} +sai_ipsec_sa_stat_t convert_sai_ipsec_sa_stat_t_to_sai( + lemming::dataplane::sai::IpsecSaStat val) { + switch (val) { + case lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_OCTETS: + return SAI_IPSEC_SA_STAT_PROTECTED_OCTETS; + + case lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_PKTS: + return SAI_IPSEC_SA_STAT_PROTECTED_PKTS; + + case lemming::dataplane::sai::IPSEC_SA_STAT_GOOD_PKTS: + return SAI_IPSEC_SA_STAT_GOOD_PKTS; + + case lemming::dataplane::sai::IPSEC_SA_STAT_BAD_HEADER_PKTS_IN: + return SAI_IPSEC_SA_STAT_BAD_HEADER_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_REPLAYED_PKTS_IN: + return SAI_IPSEC_SA_STAT_REPLAYED_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_LATE_PKTS_IN: + return SAI_IPSEC_SA_STAT_LATE_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN: + return SAI_IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN: + return SAI_IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN: + return SAI_IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN; + + case lemming::dataplane::sai::IPSEC_SA_STAT_OTHER_DROPPED_PKTS: + return SAI_IPSEC_SA_STAT_OTHER_DROPPED_PKTS; + + default: + return SAI_IPSEC_SA_STAT_PROTECTED_OCTETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_ipsec_sa_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ipsec_sa_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ipsec_sa_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ipsec_sa_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IsolationGroupAttr +convert_sai_isolation_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ISOLATION_GROUP_ATTR_TYPE: + return lemming::dataplane::sai::ISOLATION_GROUP_ATTR_TYPE; + + case SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: + return lemming::dataplane::sai:: + ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST; + + default: + return lemming::dataplane::sai::ISOLATION_GROUP_ATTR_UNSPECIFIED; + } +} +sai_isolation_group_attr_t convert_sai_isolation_group_attr_t_to_sai( + lemming::dataplane::sai::IsolationGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::ISOLATION_GROUP_ATTR_TYPE: + return SAI_ISOLATION_GROUP_ATTR_TYPE; + + case lemming::dataplane::sai::ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: + return SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST; + + default: + return SAI_ISOLATION_GROUP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_isolation_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_isolation_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_isolation_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_isolation_group_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IsolationGroupMemberAttr +convert_sai_isolation_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: + return lemming::dataplane::sai:: + ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; + + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: + return lemming::dataplane::sai:: + ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT; + + default: + return lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_isolation_group_member_attr_t +convert_sai_isolation_group_member_attr_t_to_sai( + lemming::dataplane::sai::IsolationGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai:: + ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: + return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; + + case lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: + return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT; + + default: + return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_isolation_group_member_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_isolation_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_isolation_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_isolation_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::IsolationGroupType +convert_sai_isolation_group_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ISOLATION_GROUP_TYPE_PORT: + return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_PORT; + + case SAI_ISOLATION_GROUP_TYPE_BRIDGE_PORT: + return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_BRIDGE_PORT; + + default: + return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_UNSPECIFIED; + } +} +sai_isolation_group_type_t convert_sai_isolation_group_type_t_to_sai( + lemming::dataplane::sai::IsolationGroupType val) { + switch (val) { + case lemming::dataplane::sai::ISOLATION_GROUP_TYPE_PORT: + return SAI_ISOLATION_GROUP_TYPE_PORT; + + case lemming::dataplane::sai::ISOLATION_GROUP_TYPE_BRIDGE_PORT: + return SAI_ISOLATION_GROUP_TYPE_BRIDGE_PORT; + + default: + return SAI_ISOLATION_GROUP_TYPE_PORT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_isolation_group_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_isolation_group_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_isolation_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_isolation_group_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::L2mcEntryAttr convert_sai_l2mc_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::L2MC_ENTRY_ATTR_PACKET_ACTION; + + case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: + return lemming::dataplane::sai::L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID; + + default: + return lemming::dataplane::sai::L2MC_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_l2mc_entry_attr_t convert_sai_l2mc_entry_attr_t_to_sai( + lemming::dataplane::sai::L2mcEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::L2MC_ENTRY_ATTR_PACKET_ACTION: + return SAI_L2MC_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: + return SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID; + + default: + return SAI_L2MC_ENTRY_ATTR_PACKET_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_l2mc_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_l2mc_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_l2mc_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_l2mc_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::L2mcEntryType convert_sai_l2mc_entry_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_L2MC_ENTRY_TYPE_SG: + return lemming::dataplane::sai::L2MC_ENTRY_TYPE_SG; + + case SAI_L2MC_ENTRY_TYPE_XG: + return lemming::dataplane::sai::L2MC_ENTRY_TYPE_XG; + + default: + return lemming::dataplane::sai::L2MC_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_l2mc_entry_type_t convert_sai_l2mc_entry_type_t_to_sai( + lemming::dataplane::sai::L2mcEntryType val) { + switch (val) { + case lemming::dataplane::sai::L2MC_ENTRY_TYPE_SG: + return SAI_L2MC_ENTRY_TYPE_SG; + + case lemming::dataplane::sai::L2MC_ENTRY_TYPE_XG: + return SAI_L2MC_ENTRY_TYPE_XG; + + default: + return SAI_L2MC_ENTRY_TYPE_SG; + } +} + +google::protobuf::RepeatedField +convert_list_sai_l2mc_entry_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_l2mc_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_l2mc_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_l2mc_entry_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::L2mcGroupAttr convert_sai_l2mc_group_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: + return lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; + + case SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: + return lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_MEMBER_LIST; + + default: + return lemming::dataplane::sai::L2MC_GROUP_ATTR_UNSPECIFIED; + } +} +sai_l2mc_group_attr_t convert_sai_l2mc_group_attr_t_to_sai( + lemming::dataplane::sai::L2mcGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: + return SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; + + case lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: + return SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST; + + default: + return SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_l2mc_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_l2mc_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_l2mc_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_l2mc_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::L2mcGroupMemberAttr +convert_sai_l2mc_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: + return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; + + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: + return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID; + + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: + return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP; + + default: + return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_l2mc_group_member_attr_t convert_sai_l2mc_group_member_attr_t_to_sai( + lemming::dataplane::sai::L2mcGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: + return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; + + case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: + return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID; + + case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: + return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP; + + default: + return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_l2mc_group_member_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_l2mc_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_l2mc_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_l2mc_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::LagAttr convert_sai_lag_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_LAG_ATTR_PORT_LIST: + return lemming::dataplane::sai::LAG_ATTR_PORT_LIST; + + case SAI_LAG_ATTR_INGRESS_ACL: + return lemming::dataplane::sai::LAG_ATTR_INGRESS_ACL; + + case SAI_LAG_ATTR_EGRESS_ACL: + return lemming::dataplane::sai::LAG_ATTR_EGRESS_ACL; + + case SAI_LAG_ATTR_PORT_VLAN_ID: + return lemming::dataplane::sai::LAG_ATTR_PORT_VLAN_ID; + + case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: + return lemming::dataplane::sai::LAG_ATTR_DEFAULT_VLAN_PRIORITY; + + case SAI_LAG_ATTR_DROP_UNTAGGED: + return lemming::dataplane::sai::LAG_ATTR_DROP_UNTAGGED; + + case SAI_LAG_ATTR_DROP_TAGGED: + return lemming::dataplane::sai::LAG_ATTR_DROP_TAGGED; + + case SAI_LAG_ATTR_TPID: + return lemming::dataplane::sai::LAG_ATTR_TPID; + + case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: + return lemming::dataplane::sai::LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID; + + case SAI_LAG_ATTR_LABEL: + return lemming::dataplane::sai::LAG_ATTR_LABEL; + + case SAI_LAG_ATTR_ARS_OBJECT_ID: + return lemming::dataplane::sai::LAG_ATTR_ARS_OBJECT_ID; + + case SAI_LAG_ATTR_ARS_PACKET_DROPS: + return lemming::dataplane::sai::LAG_ATTR_ARS_PACKET_DROPS; + + case SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS: + return lemming::dataplane::sai::LAG_ATTR_ARS_PORT_REASSIGNMENTS; + + default: + return lemming::dataplane::sai::LAG_ATTR_UNSPECIFIED; + } +} +sai_lag_attr_t convert_sai_lag_attr_t_to_sai( + lemming::dataplane::sai::LagAttr val) { + switch (val) { + case lemming::dataplane::sai::LAG_ATTR_PORT_LIST: + return SAI_LAG_ATTR_PORT_LIST; + + case lemming::dataplane::sai::LAG_ATTR_INGRESS_ACL: + return SAI_LAG_ATTR_INGRESS_ACL; + + case lemming::dataplane::sai::LAG_ATTR_EGRESS_ACL: + return SAI_LAG_ATTR_EGRESS_ACL; + + case lemming::dataplane::sai::LAG_ATTR_PORT_VLAN_ID: + return SAI_LAG_ATTR_PORT_VLAN_ID; + + case lemming::dataplane::sai::LAG_ATTR_DEFAULT_VLAN_PRIORITY: + return SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY; + + case lemming::dataplane::sai::LAG_ATTR_DROP_UNTAGGED: + return SAI_LAG_ATTR_DROP_UNTAGGED; + + case lemming::dataplane::sai::LAG_ATTR_DROP_TAGGED: + return SAI_LAG_ATTR_DROP_TAGGED; + + case lemming::dataplane::sai::LAG_ATTR_TPID: + return SAI_LAG_ATTR_TPID; + + case lemming::dataplane::sai::LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: + return SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID; + + case lemming::dataplane::sai::LAG_ATTR_LABEL: + return SAI_LAG_ATTR_LABEL; + + case lemming::dataplane::sai::LAG_ATTR_ARS_OBJECT_ID: + return SAI_LAG_ATTR_ARS_OBJECT_ID; + + case lemming::dataplane::sai::LAG_ATTR_ARS_PACKET_DROPS: + return SAI_LAG_ATTR_ARS_PACKET_DROPS; + + case lemming::dataplane::sai::LAG_ATTR_ARS_PORT_REASSIGNMENTS: + return SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS; + + default: + return SAI_LAG_ATTR_PORT_LIST; + } +} + +google::protobuf::RepeatedField convert_list_sai_lag_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_lag_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_lag_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_lag_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::LagMemberAttr convert_sai_lag_member_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_LAG_MEMBER_ATTR_LAG_ID: + return lemming::dataplane::sai::LAG_MEMBER_ATTR_LAG_ID; + + case SAI_LAG_MEMBER_ATTR_PORT_ID: + return lemming::dataplane::sai::LAG_MEMBER_ATTR_PORT_ID; + + case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: + return lemming::dataplane::sai::LAG_MEMBER_ATTR_EGRESS_DISABLE; + + case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: + return lemming::dataplane::sai::LAG_MEMBER_ATTR_INGRESS_DISABLE; + + default: + return lemming::dataplane::sai::LAG_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_lag_member_attr_t convert_sai_lag_member_attr_t_to_sai( + lemming::dataplane::sai::LagMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::LAG_MEMBER_ATTR_LAG_ID: + return SAI_LAG_MEMBER_ATTR_LAG_ID; + + case lemming::dataplane::sai::LAG_MEMBER_ATTR_PORT_ID: + return SAI_LAG_MEMBER_ATTR_PORT_ID; + + case lemming::dataplane::sai::LAG_MEMBER_ATTR_EGRESS_DISABLE: + return SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE; + + case lemming::dataplane::sai::LAG_MEMBER_ATTR_INGRESS_DISABLE: + return SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE; + + default: + return SAI_LAG_MEMBER_ATTR_LAG_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_lag_member_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_lag_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_lag_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_lag_member_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::LogLevel convert_sai_log_level_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_LOG_LEVEL_DEBUG: + return lemming::dataplane::sai::LOG_LEVEL_DEBUG; + + case SAI_LOG_LEVEL_INFO: + return lemming::dataplane::sai::LOG_LEVEL_INFO; + + case SAI_LOG_LEVEL_NOTICE: + return lemming::dataplane::sai::LOG_LEVEL_NOTICE; + + case SAI_LOG_LEVEL_WARN: + return lemming::dataplane::sai::LOG_LEVEL_WARN; + + case SAI_LOG_LEVEL_ERROR: + return lemming::dataplane::sai::LOG_LEVEL_ERROR; + + case SAI_LOG_LEVEL_CRITICAL: + return lemming::dataplane::sai::LOG_LEVEL_CRITICAL; + + default: + return lemming::dataplane::sai::LOG_LEVEL_UNSPECIFIED; + } +} +sai_log_level_t convert_sai_log_level_t_to_sai( + lemming::dataplane::sai::LogLevel val) { + switch (val) { + case lemming::dataplane::sai::LOG_LEVEL_DEBUG: + return SAI_LOG_LEVEL_DEBUG; + + case lemming::dataplane::sai::LOG_LEVEL_INFO: + return SAI_LOG_LEVEL_INFO; + + case lemming::dataplane::sai::LOG_LEVEL_NOTICE: + return SAI_LOG_LEVEL_NOTICE; + + case lemming::dataplane::sai::LOG_LEVEL_WARN: + return SAI_LOG_LEVEL_WARN; + + case lemming::dataplane::sai::LOG_LEVEL_ERROR: + return SAI_LOG_LEVEL_ERROR; + + case lemming::dataplane::sai::LOG_LEVEL_CRITICAL: + return SAI_LOG_LEVEL_CRITICAL; + + default: + return SAI_LOG_LEVEL_DEBUG; + } +} + +google::protobuf::RepeatedField convert_list_sai_log_level_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_log_level_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_log_level_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_log_level_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecAttr convert_sai_macsec_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_ATTR_DIRECTION: + return lemming::dataplane::sai::MACSEC_ATTR_DIRECTION; + + case SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + return lemming::dataplane::sai:: + MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; + + case SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + return lemming::dataplane::sai:: + MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; + + case SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_SUPPORTED; + + case SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + return lemming::dataplane::sai:: + MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; + + case SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: + return lemming::dataplane::sai::MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL; + + case SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: + return lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST; + + case SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_PN_32BIT_SUPPORTED; + + case SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_XPN_64BIT_SUPPORTED; + + case SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_GCM_AES128_SUPPORTED; + + case SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_GCM_AES256_SUPPORTED; + + case SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED; + + case SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU: + return lemming::dataplane::sai::MACSEC_ATTR_SYSTEM_SIDE_MTU; + + case SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED: + return lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_SUPPORTED; + + case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: + return lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_ENABLE; + + case SAI_MACSEC_ATTR_CTAG_TPID: + return lemming::dataplane::sai::MACSEC_ATTR_CTAG_TPID; + + case SAI_MACSEC_ATTR_STAG_TPID: + return lemming::dataplane::sai::MACSEC_ATTR_STAG_TPID; + + case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: + return lemming::dataplane::sai::MACSEC_ATTR_MAX_VLAN_TAGS_PARSED; + + case SAI_MACSEC_ATTR_STATS_MODE: + return lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE; + + case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: + return lemming::dataplane::sai::MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE; + + case SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST: + return lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_PORT_LIST; + + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: + return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_FLOW; + + case SAI_MACSEC_ATTR_FLOW_LIST: + return lemming::dataplane::sai::MACSEC_ATTR_FLOW_LIST; + + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC: + return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SC; + + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA: + return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SA; + + case SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: + return lemming::dataplane::sai:: + MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC; + + default: + return lemming::dataplane::sai::MACSEC_ATTR_UNSPECIFIED; + } +} +sai_macsec_attr_t convert_sai_macsec_attr_t_to_sai( + lemming::dataplane::sai::MacsecAttr val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_ATTR_DIRECTION: + return SAI_MACSEC_ATTR_DIRECTION; + + case lemming::dataplane::sai:: + MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + return SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; + + case lemming::dataplane::sai:: + MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + return SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: + return SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + return SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: + return SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL; + + case lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: + return SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST; + + case lemming::dataplane::sai::MACSEC_ATTR_PN_32BIT_SUPPORTED: + return SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_XPN_64BIT_SUPPORTED: + return SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_GCM_AES128_SUPPORTED: + return SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_GCM_AES256_SUPPORTED: + return SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: + return SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_SYSTEM_SIDE_MTU: + return SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU; + + case lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_SUPPORTED: + return SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED; + + case lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_ENABLE: + return SAI_MACSEC_ATTR_WARM_BOOT_ENABLE; + + case lemming::dataplane::sai::MACSEC_ATTR_CTAG_TPID: + return SAI_MACSEC_ATTR_CTAG_TPID; + + case lemming::dataplane::sai::MACSEC_ATTR_STAG_TPID: + return SAI_MACSEC_ATTR_STAG_TPID; + + case lemming::dataplane::sai::MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: + return SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED; + + case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE: + return SAI_MACSEC_ATTR_STATS_MODE; + + case lemming::dataplane::sai::MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: + return SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE; + + case lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_PORT_LIST: + return SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST; + + case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: + return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW; + + case lemming::dataplane::sai::MACSEC_ATTR_FLOW_LIST: + return SAI_MACSEC_ATTR_FLOW_LIST; + + case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SC: + return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC; + + case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SA: + return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA; + + case lemming::dataplane::sai::MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: + return SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC; + + default: + return SAI_MACSEC_ATTR_DIRECTION; + } +} + +google::protobuf::RepeatedField convert_list_sai_macsec_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecCipherSuite +convert_sai_macsec_cipher_suite_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_CIPHER_SUITE_GCM_AES_128: + return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_128; + + case SAI_MACSEC_CIPHER_SUITE_GCM_AES_256: + return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_256; + + case SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_128: + return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_128; + + case SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_256: + return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_256; + + default: + return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_UNSPECIFIED; + } +} +sai_macsec_cipher_suite_t convert_sai_macsec_cipher_suite_t_to_sai( + lemming::dataplane::sai::MacsecCipherSuite val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_128: + return SAI_MACSEC_CIPHER_SUITE_GCM_AES_128; + + case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_256: + return SAI_MACSEC_CIPHER_SUITE_GCM_AES_256; + + case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_128: + return SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_128; + + case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_256: + return SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_256; + + default: + return SAI_MACSEC_CIPHER_SUITE_GCM_AES_128; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_cipher_suite_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_cipher_suite_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_cipher_suite_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_cipher_suite_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecDirection +convert_sai_macsec_direction_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_DIRECTION_EGRESS: + return lemming::dataplane::sai::MACSEC_DIRECTION_EGRESS; + + case SAI_MACSEC_DIRECTION_INGRESS: + return lemming::dataplane::sai::MACSEC_DIRECTION_INGRESS; + + default: + return lemming::dataplane::sai::MACSEC_DIRECTION_UNSPECIFIED; + } +} +sai_macsec_direction_t convert_sai_macsec_direction_t_to_sai( + lemming::dataplane::sai::MacsecDirection val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_DIRECTION_EGRESS: + return SAI_MACSEC_DIRECTION_EGRESS; + + case lemming::dataplane::sai::MACSEC_DIRECTION_INGRESS: + return SAI_MACSEC_DIRECTION_INGRESS; + + default: + return SAI_MACSEC_DIRECTION_EGRESS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_direction_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_direction_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_direction_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecFlowAttr convert_sai_macsec_flow_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_MACSEC_DIRECTION; + + case SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_ACL_ENTRY_LIST; + + case SAI_MACSEC_FLOW_ATTR_SC_LIST: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_SC_LIST; + + case SAI_MACSEC_FLOW_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_STATS_COUNT_MODE; + + case SAI_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::MACSEC_FLOW_ATTR_UNSPECIFIED; + } +} +sai_macsec_flow_attr_t convert_sai_macsec_flow_attr_t_to_sai( + lemming::dataplane::sai::MacsecFlowAttr val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_FLOW_ATTR_MACSEC_DIRECTION: + return SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION; + + case lemming::dataplane::sai::MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: + return SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST; + + case lemming::dataplane::sai::MACSEC_FLOW_ATTR_SC_LIST: + return SAI_MACSEC_FLOW_ATTR_SC_LIST; + + case lemming::dataplane::sai::MACSEC_FLOW_ATTR_STATS_COUNT_MODE: + return SAI_MACSEC_FLOW_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_flow_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_flow_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_flow_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_flow_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecFlowStat convert_sai_macsec_flow_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_FLOW_STAT_OTHER_ERR: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_OTHER_ERR; + + case SAI_MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED; + + case SAI_MACSEC_FLOW_STAT_OCTETS_CONTROLLED: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_CONTROLLED; + + case SAI_MACSEC_FLOW_STAT_OUT_OCTETS_COMMON: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_OCTETS_COMMON; + + case SAI_MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED; + + case SAI_MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED; + + case SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED: + return lemming::dataplane::sai:: + MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED; + + case SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED: + return lemming::dataplane::sai:: + MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED; + + case SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED: + return lemming::dataplane::sai:: + MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED; + + case SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED: + return lemming::dataplane::sai:: + MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED; + + case SAI_MACSEC_FLOW_STAT_CONTROL_PKTS: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_CONTROL_PKTS; + + case SAI_MACSEC_FLOW_STAT_PKTS_UNTAGGED: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_PKTS_UNTAGGED; + + case SAI_MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS; + + case SAI_MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG; + + case SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_TAG: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_TAG; + + case SAI_MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG; + + case SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_SCI: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_SCI; + + case SAI_MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI; + + case SAI_MACSEC_FLOW_STAT_IN_PKTS_OVERRUN: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_OVERRUN; + + default: + return lemming::dataplane::sai::MACSEC_FLOW_STAT_UNSPECIFIED; + } +} +sai_macsec_flow_stat_t convert_sai_macsec_flow_stat_t_to_sai( + lemming::dataplane::sai::MacsecFlowStat val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_FLOW_STAT_OTHER_ERR: + return SAI_MACSEC_FLOW_STAT_OTHER_ERR; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED: + return SAI_MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_CONTROLLED: + return SAI_MACSEC_FLOW_STAT_OCTETS_CONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_OCTETS_COMMON: + return SAI_MACSEC_FLOW_STAT_OUT_OCTETS_COMMON; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED: + return SAI_MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED: + return SAI_MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED: + return SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED: + return SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED: + return SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED: + return SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_CONTROL_PKTS: + return SAI_MACSEC_FLOW_STAT_CONTROL_PKTS; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_PKTS_UNTAGGED: + return SAI_MACSEC_FLOW_STAT_PKTS_UNTAGGED; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS: + return SAI_MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG: + return SAI_MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_TAG: + return SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_TAG; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG: + return SAI_MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_SCI: + return SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_SCI; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI: + return SAI_MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI; + + case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_OVERRUN: + return SAI_MACSEC_FLOW_STAT_IN_PKTS_OVERRUN; + + default: + return SAI_MACSEC_FLOW_STAT_OTHER_ERR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_flow_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_flow_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_flow_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_flow_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc +convert_sai_macsec_max_secure_associations_per_sc_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO: + return lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; + + case SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR: + return lemming::dataplane::sai:: + MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR; + + default: + return lemming::dataplane::sai:: + MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_UNSPECIFIED; + } +} +sai_macsec_max_secure_associations_per_sc_t +convert_sai_macsec_max_secure_associations_per_sc_t_to_sai( + lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO: + return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; + + case lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR: + return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR; + + default: + return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_max_secure_associations_per_sc_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_max_secure_associations_per_sc_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_max_secure_associations_per_sc_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_max_secure_associations_per_sc_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecPortAttr convert_sai_macsec_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_MACSEC_DIRECTION; + + case SAI_MACSEC_PORT_ATTR_PORT_ID: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_PORT_ID; + + case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_CTAG_ENABLE; + + case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_STAG_ENABLE; + + case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; + + case SAI_MACSEC_PORT_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_STATS_COUNT_MODE; + + case SAI_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::MACSEC_PORT_ATTR_UNSPECIFIED; + } +} +sai_macsec_port_attr_t convert_sai_macsec_port_attr_t_to_sai( + lemming::dataplane::sai::MacsecPortAttr val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_PORT_ATTR_MACSEC_DIRECTION: + return SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_PORT_ID: + return SAI_MACSEC_PORT_ATTR_PORT_ID; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_CTAG_ENABLE: + return SAI_MACSEC_PORT_ATTR_CTAG_ENABLE; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_STAG_ENABLE: + return SAI_MACSEC_PORT_ATTR_STAG_ENABLE; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + return SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_STATS_COUNT_MODE: + return SAI_MACSEC_PORT_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_port_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecPortStat convert_sai_macsec_port_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS: + return lemming::dataplane::sai::MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; + + case SAI_MACSEC_PORT_STAT_CONTROL_PKTS: + return lemming::dataplane::sai::MACSEC_PORT_STAT_CONTROL_PKTS; + + case SAI_MACSEC_PORT_STAT_DATA_PKTS: + return lemming::dataplane::sai::MACSEC_PORT_STAT_DATA_PKTS; + + default: + return lemming::dataplane::sai::MACSEC_PORT_STAT_UNSPECIFIED; + } +} +sai_macsec_port_stat_t convert_sai_macsec_port_stat_t_to_sai( + lemming::dataplane::sai::MacsecPortStat val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS: + return SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; + + case lemming::dataplane::sai::MACSEC_PORT_STAT_CONTROL_PKTS: + return SAI_MACSEC_PORT_STAT_CONTROL_PKTS; + + case lemming::dataplane::sai::MACSEC_PORT_STAT_DATA_PKTS: + return SAI_MACSEC_PORT_STAT_DATA_PKTS; + + default: + return SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_macsec_port_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_port_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_port_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecSaAttr convert_sai_macsec_sa_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: + return lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_DIRECTION; + + case SAI_MACSEC_SA_ATTR_SC_ID: + return lemming::dataplane::sai::MACSEC_SA_ATTR_SC_ID; + + case SAI_MACSEC_SA_ATTR_AN: + return lemming::dataplane::sai::MACSEC_SA_ATTR_AN; + + case SAI_MACSEC_SA_ATTR_SAK: + return lemming::dataplane::sai::MACSEC_SA_ATTR_SAK; + + case SAI_MACSEC_SA_ATTR_SALT: + return lemming::dataplane::sai::MACSEC_SA_ATTR_SALT; + + case SAI_MACSEC_SA_ATTR_AUTH_KEY: + return lemming::dataplane::sai::MACSEC_SA_ATTR_AUTH_KEY; + + case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: + return lemming::dataplane::sai::MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN; + + case SAI_MACSEC_SA_ATTR_CURRENT_XPN: + return lemming::dataplane::sai::MACSEC_SA_ATTR_CURRENT_XPN; + + case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: + return lemming::dataplane::sai::MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN; + + case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: + return lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_SSCI; + + default: + return lemming::dataplane::sai::MACSEC_SA_ATTR_UNSPECIFIED; + } +} +sai_macsec_sa_attr_t convert_sai_macsec_sa_attr_t_to_sai( + lemming::dataplane::sai::MacsecSaAttr val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_DIRECTION: + return SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_SC_ID: + return SAI_MACSEC_SA_ATTR_SC_ID; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_AN: + return SAI_MACSEC_SA_ATTR_AN; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_SAK: + return SAI_MACSEC_SA_ATTR_SAK; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_SALT: + return SAI_MACSEC_SA_ATTR_SALT; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_AUTH_KEY: + return SAI_MACSEC_SA_ATTR_AUTH_KEY; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: + return SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_CURRENT_XPN: + return SAI_MACSEC_SA_ATTR_CURRENT_XPN; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: + return SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN; + + case lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_SSCI: + return SAI_MACSEC_SA_ATTR_MACSEC_SSCI; + + default: + return SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION; + } +} + +google::protobuf::RepeatedField convert_list_sai_macsec_sa_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_sa_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_sa_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_sa_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecSaStat convert_sai_macsec_sa_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED: + return lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_ENCRYPTED; + + case SAI_MACSEC_SA_STAT_OCTETS_PROTECTED: + return lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_PROTECTED; + + case SAI_MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED: + return lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED; + + case SAI_MACSEC_SA_STAT_OUT_PKTS_PROTECTED: + return lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_PROTECTED; + + case SAI_MACSEC_SA_STAT_IN_PKTS_UNCHECKED: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNCHECKED; + + case SAI_MACSEC_SA_STAT_IN_PKTS_DELAYED: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_DELAYED; + + case SAI_MACSEC_SA_STAT_IN_PKTS_LATE: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_LATE; + + case SAI_MACSEC_SA_STAT_IN_PKTS_INVALID: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_INVALID; + + case SAI_MACSEC_SA_STAT_IN_PKTS_NOT_VALID: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_VALID; + + case SAI_MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA; + + case SAI_MACSEC_SA_STAT_IN_PKTS_UNUSED_SA: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNUSED_SA; + + case SAI_MACSEC_SA_STAT_IN_PKTS_OK: + return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_OK; + + default: + return lemming::dataplane::sai::MACSEC_SA_STAT_UNSPECIFIED; + } +} +sai_macsec_sa_stat_t convert_sai_macsec_sa_stat_t_to_sai( + lemming::dataplane::sai::MacsecSaStat val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_ENCRYPTED: + return SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_PROTECTED: + return SAI_MACSEC_SA_STAT_OCTETS_PROTECTED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED: + return SAI_MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_PROTECTED: + return SAI_MACSEC_SA_STAT_OUT_PKTS_PROTECTED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNCHECKED: + return SAI_MACSEC_SA_STAT_IN_PKTS_UNCHECKED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_DELAYED: + return SAI_MACSEC_SA_STAT_IN_PKTS_DELAYED; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_LATE: + return SAI_MACSEC_SA_STAT_IN_PKTS_LATE; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_INVALID: + return SAI_MACSEC_SA_STAT_IN_PKTS_INVALID; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_VALID: + return SAI_MACSEC_SA_STAT_IN_PKTS_NOT_VALID; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA: + return SAI_MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNUSED_SA: + return SAI_MACSEC_SA_STAT_IN_PKTS_UNUSED_SA; + + case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_OK: + return SAI_MACSEC_SA_STAT_IN_PKTS_OK; + + default: + return SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED; + } +} + +google::protobuf::RepeatedField convert_list_sai_macsec_sa_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_sa_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_sa_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_sa_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecScAttr convert_sai_macsec_sc_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: + return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_DIRECTION; + + case SAI_MACSEC_SC_ATTR_FLOW_ID: + return lemming::dataplane::sai::MACSEC_SC_ATTR_FLOW_ID; + + case SAI_MACSEC_SC_ATTR_MACSEC_SCI: + return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SCI; + + case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: + return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE; + + case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: + return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET; + + case SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: + return lemming::dataplane::sai::MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID; + + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: + return lemming::dataplane::sai:: + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE; + + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: + return lemming::dataplane::sai:: + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW; + + case SAI_MACSEC_SC_ATTR_SA_LIST: + return lemming::dataplane::sai::MACSEC_SC_ATTR_SA_LIST; + + case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: + return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE; + + case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: + return lemming::dataplane::sai::MACSEC_SC_ATTR_ENCRYPTION_ENABLE; + + default: + return lemming::dataplane::sai::MACSEC_SC_ATTR_UNSPECIFIED; + } +} +sai_macsec_sc_attr_t convert_sai_macsec_sc_attr_t_to_sai( + lemming::dataplane::sai::MacsecScAttr val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_DIRECTION: + return SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_FLOW_ID: + return SAI_MACSEC_SC_ATTR_FLOW_ID; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SCI: + return SAI_MACSEC_SC_ATTR_MACSEC_SCI; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: + return SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: + return SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: + return SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID; + + case lemming::dataplane::sai:: + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: + return SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE; + + case lemming::dataplane::sai:: + MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: + return SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_SA_LIST: + return SAI_MACSEC_SC_ATTR_SA_LIST; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: + return SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE; + + case lemming::dataplane::sai::MACSEC_SC_ATTR_ENCRYPTION_ENABLE: + return SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE; + + default: + return SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION; + } +} + +google::protobuf::RepeatedField convert_list_sai_macsec_sc_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_sc_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_sc_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_sc_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MacsecScStat convert_sai_macsec_sc_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MACSEC_SC_STAT_SA_NOT_IN_USE: + return lemming::dataplane::sai::MACSEC_SC_STAT_SA_NOT_IN_USE; + + default: + return lemming::dataplane::sai::MACSEC_SC_STAT_UNSPECIFIED; + } +} +sai_macsec_sc_stat_t convert_sai_macsec_sc_stat_t_to_sai( + lemming::dataplane::sai::MacsecScStat val) { + switch (val) { + case lemming::dataplane::sai::MACSEC_SC_STAT_SA_NOT_IN_USE: + return SAI_MACSEC_SC_STAT_SA_NOT_IN_USE; + + default: + return SAI_MACSEC_SC_STAT_SA_NOT_IN_USE; + } +} + +google::protobuf::RepeatedField convert_list_sai_macsec_sc_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_macsec_sc_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_macsec_sc_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_macsec_sc_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::McastFdbEntryAttr +convert_sai_mcast_fdb_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: + return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_GROUP_ID; + + case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_PACKET_ACTION; + + case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: + return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_META_DATA; + + default: + return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_mcast_fdb_entry_attr_t convert_sai_mcast_fdb_entry_attr_t_to_sai( + lemming::dataplane::sai::McastFdbEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_GROUP_ID: + return SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID; + + case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: + return SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_META_DATA: + return SAI_MCAST_FDB_ENTRY_ATTR_META_DATA; + + default: + return SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_mcast_fdb_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_mcast_fdb_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_mcast_fdb_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_mcast_fdb_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MeterType convert_sai_meter_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_METER_TYPE_PACKETS: + return lemming::dataplane::sai::METER_TYPE_PACKETS; + + case SAI_METER_TYPE_BYTES: + return lemming::dataplane::sai::METER_TYPE_BYTES; + + case SAI_METER_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::METER_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::METER_TYPE_UNSPECIFIED; + } +} +sai_meter_type_t convert_sai_meter_type_t_to_sai( + lemming::dataplane::sai::MeterType val) { + switch (val) { + case lemming::dataplane::sai::METER_TYPE_PACKETS: + return SAI_METER_TYPE_PACKETS; + + case lemming::dataplane::sai::METER_TYPE_BYTES: + return SAI_METER_TYPE_BYTES; + + case lemming::dataplane::sai::METER_TYPE_CUSTOM_RANGE_BASE: + return SAI_METER_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_METER_TYPE_PACKETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_meter_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_meter_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_meter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_meter_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MirrorSessionAttr +convert_sai_mirror_session_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MIRROR_SESSION_ATTR_TYPE: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TYPE; + + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORT; + + case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TRUNCATE_SIZE; + + case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SAMPLE_RATE; + + case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_CONGESTION_MODE; + + case SAI_MIRROR_SESSION_ATTR_TC: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TC; + + case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_TPID; + + case SAI_MIRROR_SESSION_ATTR_VLAN_ID: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_ID; + + case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_PRI; + + case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_CFI; + + case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_HEADER_VALID; + + case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: + return lemming::dataplane::sai:: + MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE; + + case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_IPHDR_VERSION; + + case SAI_MIRROR_SESSION_ATTR_TOS: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TOS; + + case SAI_MIRROR_SESSION_ATTR_TTL: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TTL; + + case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_IP_ADDRESS; + + case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_IP_ADDRESS; + + case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS; + + case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_MAC_ADDRESS; + + case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE; + + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: + return lemming::dataplane::sai:: + MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID; + + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST; + + case SAI_MIRROR_SESSION_ATTR_POLICER: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_POLICER; + + case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_SRC_PORT; + + case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_DST_PORT; + + case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UNSPECIFIED; + } +} +sai_mirror_session_attr_t convert_sai_mirror_session_attr_t_to_sai( + lemming::dataplane::sai::MirrorSessionAttr val) { + switch (val) { + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TYPE: + return SAI_MIRROR_SESSION_ATTR_TYPE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORT: + return SAI_MIRROR_SESSION_ATTR_MONITOR_PORT; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TRUNCATE_SIZE: + return SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SAMPLE_RATE: + return SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_CONGESTION_MODE: + return SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TC: + return SAI_MIRROR_SESSION_ATTR_TC; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_TPID: + return SAI_MIRROR_SESSION_ATTR_VLAN_TPID; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_ID: + return SAI_MIRROR_SESSION_ATTR_VLAN_ID; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_PRI: + return SAI_MIRROR_SESSION_ATTR_VLAN_PRI; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_CFI: + return SAI_MIRROR_SESSION_ATTR_VLAN_CFI; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: + return SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: + return SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_IPHDR_VERSION: + return SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TOS: + return SAI_MIRROR_SESSION_ATTR_TOS; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TTL: + return SAI_MIRROR_SESSION_ATTR_TTL; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: + return SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_IP_ADDRESS: + return SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: + return SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: + return SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: + return SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: + return SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST: + return SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_POLICER: + return SAI_MIRROR_SESSION_ATTR_POLICER; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_SRC_PORT: + return SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_DST_PORT: + return SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT; + + case lemming::dataplane::sai::MIRROR_SESSION_ATTR_COUNTER_ID: + return SAI_MIRROR_SESSION_ATTR_COUNTER_ID; + + default: + return SAI_MIRROR_SESSION_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_mirror_session_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_mirror_session_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_mirror_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_mirror_session_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MirrorSessionCongestionMode +convert_sai_mirror_session_congestion_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT: + return lemming::dataplane::sai:: + MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; + + case SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED: + return lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_CORRELATED; + + default: + return lemming::dataplane::sai:: + MIRROR_SESSION_CONGESTION_MODE_UNSPECIFIED; + } +} +sai_mirror_session_congestion_mode_t +convert_sai_mirror_session_congestion_mode_t_to_sai( + lemming::dataplane::sai::MirrorSessionCongestionMode val) { + switch (val) { + case lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT: + return SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; + + case lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_CORRELATED: + return SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED; + + default: + return SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_mirror_session_congestion_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_mirror_session_congestion_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_mirror_session_congestion_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_mirror_session_congestion_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MirrorSessionType +convert_sai_mirror_session_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MIRROR_SESSION_TYPE_LOCAL: + return lemming::dataplane::sai::MIRROR_SESSION_TYPE_LOCAL; + + case SAI_MIRROR_SESSION_TYPE_REMOTE: + return lemming::dataplane::sai::MIRROR_SESSION_TYPE_REMOTE; + + case SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE: + return lemming::dataplane::sai::MIRROR_SESSION_TYPE_ENHANCED_REMOTE; + + case SAI_MIRROR_SESSION_TYPE_SFLOW: + return lemming::dataplane::sai::MIRROR_SESSION_TYPE_SFLOW; + + default: + return lemming::dataplane::sai::MIRROR_SESSION_TYPE_UNSPECIFIED; + } +} +sai_mirror_session_type_t convert_sai_mirror_session_type_t_to_sai( + lemming::dataplane::sai::MirrorSessionType val) { + switch (val) { + case lemming::dataplane::sai::MIRROR_SESSION_TYPE_LOCAL: + return SAI_MIRROR_SESSION_TYPE_LOCAL; + + case lemming::dataplane::sai::MIRROR_SESSION_TYPE_REMOTE: + return SAI_MIRROR_SESSION_TYPE_REMOTE; + + case lemming::dataplane::sai::MIRROR_SESSION_TYPE_ENHANCED_REMOTE: + return SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE; + + case lemming::dataplane::sai::MIRROR_SESSION_TYPE_SFLOW: + return SAI_MIRROR_SESSION_TYPE_SFLOW; + + default: + return SAI_MIRROR_SESSION_TYPE_LOCAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_mirror_session_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_mirror_session_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_mirror_session_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_mirror_session_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MyMacAttr convert_sai_my_mac_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MY_MAC_ATTR_PRIORITY: + return lemming::dataplane::sai::MY_MAC_ATTR_PRIORITY; + + case SAI_MY_MAC_ATTR_PORT_ID: + return lemming::dataplane::sai::MY_MAC_ATTR_PORT_ID; + + case SAI_MY_MAC_ATTR_VLAN_ID: + return lemming::dataplane::sai::MY_MAC_ATTR_VLAN_ID; + + case SAI_MY_MAC_ATTR_MAC_ADDRESS: + return lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS; + + case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: + return lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS_MASK; + + default: + return lemming::dataplane::sai::MY_MAC_ATTR_UNSPECIFIED; + } +} +sai_my_mac_attr_t convert_sai_my_mac_attr_t_to_sai( + lemming::dataplane::sai::MyMacAttr val) { + switch (val) { + case lemming::dataplane::sai::MY_MAC_ATTR_PRIORITY: + return SAI_MY_MAC_ATTR_PRIORITY; + + case lemming::dataplane::sai::MY_MAC_ATTR_PORT_ID: + return SAI_MY_MAC_ATTR_PORT_ID; + + case lemming::dataplane::sai::MY_MAC_ATTR_VLAN_ID: + return SAI_MY_MAC_ATTR_VLAN_ID; + + case lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS: + return SAI_MY_MAC_ATTR_MAC_ADDRESS; + + case lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS_MASK: + return SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK; + + default: + return SAI_MY_MAC_ATTR_PRIORITY; + } +} + +google::protobuf::RepeatedField convert_list_sai_my_mac_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_my_mac_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_my_mac_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_my_mac_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MySidEntryAttr +convert_sai_my_sid_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; + + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR; + + case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_PACKET_ACTION; + + case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TRAP_PRIORITY; + + case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_NEXT_HOP_ID; + + case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TUNNEL_ID; + + case SAI_MY_SID_ENTRY_ATTR_VRF: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_VRF; + + case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_COUNTER_ID; + + default: + return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_my_sid_entry_attr_t convert_sai_my_sid_entry_attr_t_to_sai( + lemming::dataplane::sai::MySidEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: + return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: + return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_PACKET_ACTION: + return SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TRAP_PRIORITY: + return SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_NEXT_HOP_ID: + return SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TUNNEL_ID: + return SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_VRF: + return SAI_MY_SID_ENTRY_ATTR_VRF; + + case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_COUNTER_ID: + return SAI_MY_SID_ENTRY_ATTR_COUNTER_ID; + + default: + return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_my_sid_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_my_sid_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_my_sid_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor +convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD; + + default: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_UNSPECIFIED; + } +} +sai_my_sid_entry_endpoint_behavior_flavor_t +convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor val) { + switch (val) { + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD; + + default: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::MySidEntryEndpointBehavior +convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA: + return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START; + + case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END; + + default: + return lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UNSPECIFIED; + } +} +sai_my_sid_entry_endpoint_behavior_t +convert_sai_my_sid_entry_endpoint_behavior_t_to_sai( + lemming::dataplane::sai::MySidEntryEndpointBehavior val) { + switch (val) { + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN; + + case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START; + + case lemming::dataplane::sai:: + MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END; + + default: + return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; + } +} + +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_endpoint_behavior_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_my_sid_entry_endpoint_behavior_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_my_sid_entry_endpoint_behavior_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NatEntryAttr convert_sai_nat_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NAT_ENTRY_ATTR_NAT_TYPE: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_NAT_TYPE; + + case SAI_NAT_ENTRY_ATTR_SRC_IP: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP; + + case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP_MASK; + + case SAI_NAT_ENTRY_ATTR_VR_ID: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_VR_ID; + + case SAI_NAT_ENTRY_ATTR_DST_IP: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP; + + case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP_MASK; + + case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_SRC_PORT; + + case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_DST_PORT; + + case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT; + + case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_PACKET_COUNT; + + case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT; + + case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_BYTE_COUNT; + + case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT_COR; + + case SAI_NAT_ENTRY_ATTR_HIT_BIT: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT; + + case SAI_NAT_ENTRY_ATTR_AGING_TIME: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_AGING_TIME; + + default: + return lemming::dataplane::sai::NAT_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_nat_entry_attr_t convert_sai_nat_entry_attr_t_to_sai( + lemming::dataplane::sai::NatEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::NAT_ENTRY_ATTR_NAT_TYPE: + return SAI_NAT_ENTRY_ATTR_NAT_TYPE; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP: + return SAI_NAT_ENTRY_ATTR_SRC_IP; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP_MASK: + return SAI_NAT_ENTRY_ATTR_SRC_IP_MASK; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_VR_ID: + return SAI_NAT_ENTRY_ATTR_VR_ID; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP: + return SAI_NAT_ENTRY_ATTR_DST_IP; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP_MASK: + return SAI_NAT_ENTRY_ATTR_DST_IP_MASK; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_SRC_PORT: + return SAI_NAT_ENTRY_ATTR_L4_SRC_PORT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_DST_PORT: + return SAI_NAT_ENTRY_ATTR_L4_DST_PORT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: + return SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_PACKET_COUNT: + return SAI_NAT_ENTRY_ATTR_PACKET_COUNT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: + return SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_BYTE_COUNT: + return SAI_NAT_ENTRY_ATTR_BYTE_COUNT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT_COR: + return SAI_NAT_ENTRY_ATTR_HIT_BIT_COR; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT: + return SAI_NAT_ENTRY_ATTR_HIT_BIT; + + case lemming::dataplane::sai::NAT_ENTRY_ATTR_AGING_TIME: + return SAI_NAT_ENTRY_ATTR_AGING_TIME; + + default: + return SAI_NAT_ENTRY_ATTR_NAT_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_nat_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_nat_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_nat_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_nat_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NatEvent convert_sai_nat_event_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NAT_EVENT_NONE: + return lemming::dataplane::sai::NAT_EVENT_NONE; + + case SAI_NAT_EVENT_AGED: + return lemming::dataplane::sai::NAT_EVENT_AGED; + + default: + return lemming::dataplane::sai::NAT_EVENT_UNSPECIFIED; + } +} +sai_nat_event_t convert_sai_nat_event_t_to_sai( + lemming::dataplane::sai::NatEvent val) { + switch (val) { + case lemming::dataplane::sai::NAT_EVENT_NONE: + return SAI_NAT_EVENT_NONE; + + case lemming::dataplane::sai::NAT_EVENT_AGED: + return SAI_NAT_EVENT_AGED; + + default: + return SAI_NAT_EVENT_NONE; + } +} + +google::protobuf::RepeatedField convert_list_sai_nat_event_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_nat_event_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_nat_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_nat_event_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NatType convert_sai_nat_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NAT_TYPE_NONE: + return lemming::dataplane::sai::NAT_TYPE_NONE; + + case SAI_NAT_TYPE_SOURCE_NAT: + return lemming::dataplane::sai::NAT_TYPE_SOURCE_NAT; + + case SAI_NAT_TYPE_DESTINATION_NAT: + return lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT; + + case SAI_NAT_TYPE_DOUBLE_NAT: + return lemming::dataplane::sai::NAT_TYPE_DOUBLE_NAT; + + case SAI_NAT_TYPE_DESTINATION_NAT_POOL: + return lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT_POOL; + + default: + return lemming::dataplane::sai::NAT_TYPE_UNSPECIFIED; + } +} +sai_nat_type_t convert_sai_nat_type_t_to_sai( + lemming::dataplane::sai::NatType val) { + switch (val) { + case lemming::dataplane::sai::NAT_TYPE_NONE: + return SAI_NAT_TYPE_NONE; + + case lemming::dataplane::sai::NAT_TYPE_SOURCE_NAT: + return SAI_NAT_TYPE_SOURCE_NAT; + + case lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT: + return SAI_NAT_TYPE_DESTINATION_NAT; + + case lemming::dataplane::sai::NAT_TYPE_DOUBLE_NAT: + return SAI_NAT_TYPE_DOUBLE_NAT; + + case lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT_POOL: + return SAI_NAT_TYPE_DESTINATION_NAT_POOL; + + default: + return SAI_NAT_TYPE_NONE; + } +} + +google::protobuf::RepeatedField convert_list_sai_nat_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_nat_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_nat_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_nat_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NatZoneCounterAttr +convert_sai_nat_zone_counter_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: + return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_NAT_TYPE; + + case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: + return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ZONE_ID; + + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: + return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD; + + case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: + return lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT; + + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: + return lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED; + + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: + return lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT; + + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: + return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS; + + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: + return lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT; + + default: + return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_UNSPECIFIED; + } +} +sai_nat_zone_counter_attr_t convert_sai_nat_zone_counter_attr_t_to_sai( + lemming::dataplane::sai::NatZoneCounterAttr val) { + switch (val) { + case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_NAT_TYPE: + return SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE; + + case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ZONE_ID: + return SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID; + + case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: + return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD; + + case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: + return SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT; + + case lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: + return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED; + + case lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: + return SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT; + + case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: + return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS; + + case lemming::dataplane::sai:: + NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: + return SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT; + + default: + return SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_nat_zone_counter_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_nat_zone_counter_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_nat_zone_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_nat_zone_counter_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NativeHashField +convert_sai_native_hash_field_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NATIVE_HASH_FIELD_SRC_IP: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IP; + + case SAI_NATIVE_HASH_FIELD_DST_IP: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IP; + + case SAI_NATIVE_HASH_FIELD_INNER_SRC_IP: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IP; + + case SAI_NATIVE_HASH_FIELD_INNER_DST_IP: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IP; + + case SAI_NATIVE_HASH_FIELD_SRC_IPV4: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV4; + + case SAI_NATIVE_HASH_FIELD_DST_IPV4: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV4; + + case SAI_NATIVE_HASH_FIELD_SRC_IPV6: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV6; + + case SAI_NATIVE_HASH_FIELD_DST_IPV6: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV6; + + case SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV4; + + case SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV4; + + case SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV6; + + case SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV6; + + case SAI_NATIVE_HASH_FIELD_VLAN_ID: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_VLAN_ID; + + case SAI_NATIVE_HASH_FIELD_IP_PROTOCOL: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_IP_PROTOCOL; + + case SAI_NATIVE_HASH_FIELD_ETHERTYPE: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_ETHERTYPE; + + case SAI_NATIVE_HASH_FIELD_L4_SRC_PORT: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_SRC_PORT; + + case SAI_NATIVE_HASH_FIELD_L4_DST_PORT: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_DST_PORT; + + case SAI_NATIVE_HASH_FIELD_SRC_MAC: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_MAC; + + case SAI_NATIVE_HASH_FIELD_DST_MAC: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_MAC; + + case SAI_NATIVE_HASH_FIELD_IN_PORT: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_IN_PORT; + + case SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_IP_PROTOCOL; + + case SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_ETHERTYPE; + + case SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_SRC_PORT; + + case SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_DST_PORT; + + case SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_MAC; + + case SAI_NATIVE_HASH_FIELD_INNER_DST_MAC: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_MAC; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_ALL; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_0; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_1; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_2; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_3; + + case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_4; + + case SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_IPV6_FLOW_LABEL; + + case SAI_NATIVE_HASH_FIELD_NONE: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_NONE; + + default: + return lemming::dataplane::sai::NATIVE_HASH_FIELD_UNSPECIFIED; + } +} +sai_native_hash_field_t convert_sai_native_hash_field_t_to_sai( + lemming::dataplane::sai::NativeHashField val) { + switch (val) { + case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IP: + return SAI_NATIVE_HASH_FIELD_SRC_IP; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IP: + return SAI_NATIVE_HASH_FIELD_DST_IP; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IP: + return SAI_NATIVE_HASH_FIELD_INNER_SRC_IP; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IP: + return SAI_NATIVE_HASH_FIELD_INNER_DST_IP; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV4: + return SAI_NATIVE_HASH_FIELD_SRC_IPV4; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV4: + return SAI_NATIVE_HASH_FIELD_DST_IPV4; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV6: + return SAI_NATIVE_HASH_FIELD_SRC_IPV6; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV6: + return SAI_NATIVE_HASH_FIELD_DST_IPV6; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV4: + return SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV4: + return SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV6: + return SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV6: + return SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_VLAN_ID: + return SAI_NATIVE_HASH_FIELD_VLAN_ID; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_IP_PROTOCOL: + return SAI_NATIVE_HASH_FIELD_IP_PROTOCOL; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_ETHERTYPE: + return SAI_NATIVE_HASH_FIELD_ETHERTYPE; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_SRC_PORT: + return SAI_NATIVE_HASH_FIELD_L4_SRC_PORT; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_DST_PORT: + return SAI_NATIVE_HASH_FIELD_L4_DST_PORT; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_MAC: + return SAI_NATIVE_HASH_FIELD_SRC_MAC; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_MAC: + return SAI_NATIVE_HASH_FIELD_DST_MAC; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_IN_PORT: + return SAI_NATIVE_HASH_FIELD_IN_PORT; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_IP_PROTOCOL: + return SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_ETHERTYPE: + return SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_SRC_PORT: + return SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_DST_PORT: + return SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_MAC: + return SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_MAC: + return SAI_NATIVE_HASH_FIELD_INNER_DST_MAC; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_ALL: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_0: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_1: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_2: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_3: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_4: + return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_IPV6_FLOW_LABEL: + return SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL; + + case lemming::dataplane::sai::NATIVE_HASH_FIELD_NONE: + return SAI_NATIVE_HASH_FIELD_NONE; + + default: + return SAI_NATIVE_HASH_FIELD_SRC_IP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_native_hash_field_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_native_hash_field_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_native_hash_field_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_native_hash_field_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NeighborEntryAttr +convert_sai_neighbor_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; + + case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_PACKET_ACTION; + + case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID; + + case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE; + + case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_META_DATA; + + case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_COUNTER_ID; + + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX; + + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX; + + case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IS_LOCAL; + + case SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY; + + default: + return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_neighbor_entry_attr_t convert_sai_neighbor_entry_attr_t_to_sai( + lemming::dataplane::sai::NeighborEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: + return SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: + return SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: + return SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: + return SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_META_DATA: + return SAI_NEIGHBOR_ENTRY_ATTR_META_DATA; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_COUNTER_ID: + return SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: + return SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: + return SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IS_LOCAL: + return SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL; + + case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: + return SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY; + + default: + return SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_neighbor_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_neighbor_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_neighbor_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_neighbor_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopAttr convert_sai_next_hop_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_ATTR_TYPE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_TYPE; + + case SAI_NEXT_HOP_ATTR_IP: + return lemming::dataplane::sai::NEXT_HOP_ATTR_IP; + + case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: + return lemming::dataplane::sai::NEXT_HOP_ATTR_ROUTER_INTERFACE_ID; + + case SAI_NEXT_HOP_ATTR_TUNNEL_ID: + return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_ID; + + case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: + return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_VNI; + + case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: + return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_MAC; + + case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: + return lemming::dataplane::sai::NEXT_HOP_ATTR_SRV6_SIDLIST_ID; + + case SAI_NEXT_HOP_ATTR_LABELSTACK: + return lemming::dataplane::sai::NEXT_HOP_ATTR_LABELSTACK; + + case SAI_NEXT_HOP_ATTR_COUNTER_ID: + return lemming::dataplane::sai::NEXT_HOP_ATTR_COUNTER_ID; + + case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: + return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL; + + case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TYPE; + + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_MODE; + + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_VALUE; + + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_MODE; + + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_VALUE; + + case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return lemming::dataplane::sai:: + NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE; + + case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE; + + case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: + return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE; + + default: + return lemming::dataplane::sai::NEXT_HOP_ATTR_UNSPECIFIED; + } +} +sai_next_hop_attr_t convert_sai_next_hop_attr_t_to_sai( + lemming::dataplane::sai::NextHopAttr val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_ATTR_TYPE: + return SAI_NEXT_HOP_ATTR_TYPE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_IP: + return SAI_NEXT_HOP_ATTR_IP; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: + return SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_ID: + return SAI_NEXT_HOP_ATTR_TUNNEL_ID; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_VNI: + return SAI_NEXT_HOP_ATTR_TUNNEL_VNI; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_MAC: + return SAI_NEXT_HOP_ATTR_TUNNEL_MAC; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_SRV6_SIDLIST_ID: + return SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_LABELSTACK: + return SAI_NEXT_HOP_ATTR_LABELSTACK; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_COUNTER_ID: + return SAI_NEXT_HOP_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: + return SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TYPE: + return SAI_NEXT_HOP_ATTR_OUTSEG_TYPE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_MODE: + return SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: + return SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_MODE: + return SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: + return SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE; + + case lemming::dataplane::sai:: + NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: + return SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: + return SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE; + + case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: + return SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE; + + default: + return SAI_NEXT_HOP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_next_hop_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupAttr +convert_sai_next_hop_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; + + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST; + + case SAI_NEXT_HOP_GROUP_ATTR_TYPE: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_TYPE; + + case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER; + + case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_COUNTER_ID; + + case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE; + + case SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_REAL_SIZE; + + case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SELECTION_MAP; + + case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP; + + case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID; + + case SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS; + + case SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS; + + case SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS; + + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST; + + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST; + + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST; + + default: + return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_UNSPECIFIED; + } +} +sai_next_hop_group_attr_t convert_sai_next_hop_group_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_TYPE: + return SAI_NEXT_HOP_GROUP_ATTR_TYPE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: + return SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_COUNTER_ID: + return SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: + return SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_REAL_SIZE: + return SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SELECTION_MAP: + return SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: + return SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: + return SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: + return SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS; + + case lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: + return SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: + return SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST; + + case lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST; + + case lemming::dataplane::sai:: + NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST; + + default: + return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupMapAttr +convert_sai_next_hop_group_map_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_TYPE; + + case SAI_NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST; + + default: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_UNSPECIFIED; + } +} +sai_next_hop_group_map_attr_t convert_sai_next_hop_group_map_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupMapAttr val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_TYPE: + return SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST: + return SAI_NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST; + + default: + return SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_map_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_next_hop_group_map_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_map_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupMapType +convert_sai_next_hop_group_map_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; + + default: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_TYPE_UNSPECIFIED; + } +} +sai_next_hop_group_map_type_t convert_sai_next_hop_group_map_type_t_to_sai( + lemming::dataplane::sai::NextHopGroupMapType val) { + switch (val) { + case lemming::dataplane::sai:: + NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX: + return SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; + + default: + return SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_map_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_next_hop_group_map_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_map_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupMemberAttr +convert_sai_next_hop_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_INDEX; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID; + + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH; + + default: + return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_next_hop_group_member_attr_t +convert_sai_next_hop_group_member_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH; + + default: + return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_next_hop_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupMemberConfiguredRole +convert_sai_next_hop_group_member_configured_role_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; + + case SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY; + + default: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_UNSPECIFIED; + } +} +sai_next_hop_group_member_configured_role_t +convert_sai_next_hop_group_member_configured_role_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberConfiguredRole val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY: + return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY: + return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY; + + default: + return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_configured_role_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_group_member_configured_role_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_member_configured_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_member_configured_role_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupMemberObservedRole +convert_sai_next_hop_group_member_observed_role_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; + + case SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE; + + default: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_UNSPECIFIED; + } +} +sai_next_hop_group_member_observed_role_t +convert_sai_next_hop_group_member_observed_role_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberObservedRole val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE: + return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE: + return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE; + + default: + return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_observed_role_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_group_member_observed_role_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_member_observed_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_member_observed_role_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopGroupType +convert_sai_next_hop_group_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP: + return lemming::dataplane::sai:: + NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; + + case SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP; + + case SAI_NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP; + + case SAI_NEXT_HOP_GROUP_TYPE_PROTECTION: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_PROTECTION; + + case SAI_NEXT_HOP_GROUP_TYPE_CLASS_BASED: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_CLASS_BASED; + + case SAI_NEXT_HOP_GROUP_TYPE_HW_PROTECTION: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_HW_PROTECTION; + + case SAI_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS; + + default: + return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_UNSPECIFIED; + } +} +sai_next_hop_group_type_t convert_sai_next_hop_group_type_t_to_sai( + lemming::dataplane::sai::NextHopGroupType val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP: + return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP: + return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP: + return SAI_NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_PROTECTION: + return SAI_NEXT_HOP_GROUP_TYPE_PROTECTION; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_CLASS_BASED: + return SAI_NEXT_HOP_GROUP_TYPE_CLASS_BASED; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_HW_PROTECTION: + return SAI_NEXT_HOP_GROUP_TYPE_HW_PROTECTION; + + case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS: + return SAI_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS; + + default: + return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_group_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_group_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::NextHopType convert_sai_next_hop_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_NEXT_HOP_TYPE_IP: + return lemming::dataplane::sai::NEXT_HOP_TYPE_IP; + + case SAI_NEXT_HOP_TYPE_MPLS: + return lemming::dataplane::sai::NEXT_HOP_TYPE_MPLS; + + case SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP: + return lemming::dataplane::sai::NEXT_HOP_TYPE_TUNNEL_ENCAP; + + case SAI_NEXT_HOP_TYPE_SRV6_SIDLIST: + return lemming::dataplane::sai::NEXT_HOP_TYPE_SRV6_SIDLIST; + + case SAI_NEXT_HOP_TYPE_IPMC: + return lemming::dataplane::sai::NEXT_HOP_TYPE_IPMC; + + default: + return lemming::dataplane::sai::NEXT_HOP_TYPE_UNSPECIFIED; + } +} +sai_next_hop_type_t convert_sai_next_hop_type_t_to_sai( + lemming::dataplane::sai::NextHopType val) { + switch (val) { + case lemming::dataplane::sai::NEXT_HOP_TYPE_IP: + return SAI_NEXT_HOP_TYPE_IP; + + case lemming::dataplane::sai::NEXT_HOP_TYPE_MPLS: + return SAI_NEXT_HOP_TYPE_MPLS; + + case lemming::dataplane::sai::NEXT_HOP_TYPE_TUNNEL_ENCAP: + return SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP; + + case lemming::dataplane::sai::NEXT_HOP_TYPE_SRV6_SIDLIST: + return SAI_NEXT_HOP_TYPE_SRV6_SIDLIST; + + case lemming::dataplane::sai::NEXT_HOP_TYPE_IPMC: + return SAI_NEXT_HOP_TYPE_IPMC; + + default: + return SAI_NEXT_HOP_TYPE_IP; + } +} + +google::protobuf::RepeatedField convert_list_sai_next_hop_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_next_hop_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_next_hop_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_next_hop_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::ObjectStage convert_sai_object_stage_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OBJECT_STAGE_BOTH: + return lemming::dataplane::sai::OBJECT_STAGE_BOTH; + + case SAI_OBJECT_STAGE_INGRESS: + return lemming::dataplane::sai::OBJECT_STAGE_INGRESS; + + case SAI_OBJECT_STAGE_EGRESS: + return lemming::dataplane::sai::OBJECT_STAGE_EGRESS; + + default: + return lemming::dataplane::sai::OBJECT_STAGE_UNSPECIFIED; + } +} +sai_object_stage_t convert_sai_object_stage_t_to_sai( + lemming::dataplane::sai::ObjectStage val) { + switch (val) { + case lemming::dataplane::sai::OBJECT_STAGE_BOTH: + return SAI_OBJECT_STAGE_BOTH; + + case lemming::dataplane::sai::OBJECT_STAGE_INGRESS: + return SAI_OBJECT_STAGE_INGRESS; + + case lemming::dataplane::sai::OBJECT_STAGE_EGRESS: + return SAI_OBJECT_STAGE_EGRESS; + + default: + return SAI_OBJECT_STAGE_BOTH; + } +} + +google::protobuf::RepeatedField convert_list_sai_object_stage_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_object_stage_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_object_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_object_stage_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::ObjectTypeExtensions +convert_sai_object_type_extensions_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START: + return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_START; + + case SAI_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY; + + case SAI_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY; + + case SAI_OBJECT_TYPE_DASH_ACL_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_GROUP; + + case SAI_OBJECT_TYPE_DASH_ACL_RULE: + return lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_RULE; + + case SAI_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY; + + case SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY; + + case SAI_OBJECT_TYPE_ENI: + return lemming::dataplane::sai::OBJECT_TYPE_ENI; + + case SAI_OBJECT_TYPE_INBOUND_ROUTING_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_INBOUND_ROUTING_ENTRY; + + case SAI_OBJECT_TYPE_METER_BUCKET_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_METER_BUCKET_ENTRY; + + case SAI_OBJECT_TYPE_METER_POLICY: + return lemming::dataplane::sai::OBJECT_TYPE_METER_POLICY; + + case SAI_OBJECT_TYPE_METER_RULE: + return lemming::dataplane::sai::OBJECT_TYPE_METER_RULE; + + case SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY; + + case SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY; + + case SAI_OBJECT_TYPE_VNET: + return lemming::dataplane::sai::OBJECT_TYPE_VNET; + + case SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_PA_VALIDATION_ENTRY; + + case SAI_OBJECT_TYPE_VIP_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_VIP_ENTRY; + + case SAI_OBJECT_TYPE_HA_SET: + return lemming::dataplane::sai::OBJECT_TYPE_HA_SET; + + case SAI_OBJECT_TYPE_HA_SCOPE: + return lemming::dataplane::sai::OBJECT_TYPE_HA_SCOPE; + + case SAI_OBJECT_TYPE_DASH_TUNNEL: + return lemming::dataplane::sai::OBJECT_TYPE_DASH_TUNNEL; + + case SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_GROUP; + + case SAI_OBJECT_TYPE_FLOW_TABLE: + return lemming::dataplane::sai::OBJECT_TYPE_FLOW_TABLE; + + case SAI_OBJECT_TYPE_FLOW_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_FLOW_ENTRY; + + case SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER: + return lemming::dataplane::sai:: + OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER; + + case SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION; + + case SAI_OBJECT_TYPE_DASH_APPLIANCE: + return lemming::dataplane::sai::OBJECT_TYPE_DASH_APPLIANCE; + + case SAI_OBJECT_TYPE_EXTENSIONS_RANGE_END: + return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_END; + + default: + return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_UNSPECIFIED; + } +} +sai_object_type_extensions_t convert_sai_object_type_extensions_t_to_sai( + lemming::dataplane::sai::ObjectTypeExtensions val) { + switch (val) { + case lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_START: + return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START; + + case lemming::dataplane::sai::OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY: + return SAI_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY: + return SAI_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_GROUP: + return SAI_OBJECT_TYPE_DASH_ACL_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_RULE: + return SAI_OBJECT_TYPE_DASH_ACL_RULE; + + case lemming::dataplane::sai::OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY: + return SAI_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY: + return SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_ENI: + return SAI_OBJECT_TYPE_ENI; + + case lemming::dataplane::sai::OBJECT_TYPE_INBOUND_ROUTING_ENTRY: + return SAI_OBJECT_TYPE_INBOUND_ROUTING_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_METER_BUCKET_ENTRY: + return SAI_OBJECT_TYPE_METER_BUCKET_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_METER_POLICY: + return SAI_OBJECT_TYPE_METER_POLICY; + + case lemming::dataplane::sai::OBJECT_TYPE_METER_RULE: + return SAI_OBJECT_TYPE_METER_RULE; + + case lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY: + return SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY: + return SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_VNET: + return SAI_OBJECT_TYPE_VNET; + + case lemming::dataplane::sai::OBJECT_TYPE_PA_VALIDATION_ENTRY: + return SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_VIP_ENTRY: + return SAI_OBJECT_TYPE_VIP_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_HA_SET: + return SAI_OBJECT_TYPE_HA_SET; + + case lemming::dataplane::sai::OBJECT_TYPE_HA_SCOPE: + return SAI_OBJECT_TYPE_HA_SCOPE; + + case lemming::dataplane::sai::OBJECT_TYPE_DASH_TUNNEL: + return SAI_OBJECT_TYPE_DASH_TUNNEL; + + case lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_GROUP: + return SAI_OBJECT_TYPE_OUTBOUND_ROUTING_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_FLOW_TABLE: + return SAI_OBJECT_TYPE_FLOW_TABLE; + + case lemming::dataplane::sai::OBJECT_TYPE_FLOW_ENTRY: + return SAI_OBJECT_TYPE_FLOW_ENTRY; + + case lemming::dataplane::sai:: + OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER: + return SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION_FILTER; + + case lemming::dataplane::sai::OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION: + return SAI_OBJECT_TYPE_FLOW_ENTRY_BULK_GET_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_DASH_APPLIANCE: + return SAI_OBJECT_TYPE_DASH_APPLIANCE; + + case lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_END: + return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_END; + + default: + return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_object_type_extensions_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_object_type_extensions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_object_type_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_object_type_extensions_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::ObjectType convert_sai_object_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OBJECT_TYPE_NULL: + return lemming::dataplane::sai::OBJECT_TYPE_NULL; + + case SAI_OBJECT_TYPE_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_PORT; + + case SAI_OBJECT_TYPE_LAG: + return lemming::dataplane::sai::OBJECT_TYPE_LAG; + + case SAI_OBJECT_TYPE_VIRTUAL_ROUTER: + return lemming::dataplane::sai::OBJECT_TYPE_VIRTUAL_ROUTER; + + case SAI_OBJECT_TYPE_NEXT_HOP: + return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP; + + case SAI_OBJECT_TYPE_NEXT_HOP_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP; + + case SAI_OBJECT_TYPE_ROUTER_INTERFACE: + return lemming::dataplane::sai::OBJECT_TYPE_ROUTER_INTERFACE; + + case SAI_OBJECT_TYPE_ACL_TABLE: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE; + + case SAI_OBJECT_TYPE_ACL_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_ENTRY; + + case SAI_OBJECT_TYPE_ACL_COUNTER: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_COUNTER; + + case SAI_OBJECT_TYPE_ACL_RANGE: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_RANGE; + + case SAI_OBJECT_TYPE_ACL_TABLE_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP; + + case SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_HOSTIF: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF; + + case SAI_OBJECT_TYPE_MIRROR_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_MIRROR_SESSION; + + case SAI_OBJECT_TYPE_SAMPLEPACKET: + return lemming::dataplane::sai::OBJECT_TYPE_SAMPLEPACKET; + + case SAI_OBJECT_TYPE_STP: + return lemming::dataplane::sai::OBJECT_TYPE_STP; + + case SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP_GROUP; + + case SAI_OBJECT_TYPE_POLICER: + return lemming::dataplane::sai::OBJECT_TYPE_POLICER; + + case SAI_OBJECT_TYPE_WRED: + return lemming::dataplane::sai::OBJECT_TYPE_WRED; + + case SAI_OBJECT_TYPE_QOS_MAP: + return lemming::dataplane::sai::OBJECT_TYPE_QOS_MAP; + + case SAI_OBJECT_TYPE_QUEUE: + return lemming::dataplane::sai::OBJECT_TYPE_QUEUE; + + case SAI_OBJECT_TYPE_SCHEDULER: + return lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER; + + case SAI_OBJECT_TYPE_SCHEDULER_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER_GROUP; + + case SAI_OBJECT_TYPE_BUFFER_POOL: + return lemming::dataplane::sai::OBJECT_TYPE_BUFFER_POOL; + + case SAI_OBJECT_TYPE_BUFFER_PROFILE: + return lemming::dataplane::sai::OBJECT_TYPE_BUFFER_PROFILE; + + case SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_INGRESS_PRIORITY_GROUP; + + case SAI_OBJECT_TYPE_LAG_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_LAG_MEMBER; + + case SAI_OBJECT_TYPE_HASH: + return lemming::dataplane::sai::OBJECT_TYPE_HASH; + + case SAI_OBJECT_TYPE_UDF: + return lemming::dataplane::sai::OBJECT_TYPE_UDF; + + case SAI_OBJECT_TYPE_UDF_MATCH: + return lemming::dataplane::sai::OBJECT_TYPE_UDF_MATCH; + + case SAI_OBJECT_TYPE_UDF_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_UDF_GROUP; + + case SAI_OBJECT_TYPE_FDB_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_FDB_ENTRY; + + case SAI_OBJECT_TYPE_SWITCH: + return lemming::dataplane::sai::OBJECT_TYPE_SWITCH; + + case SAI_OBJECT_TYPE_HOSTIF_TRAP: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP; + + case SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TABLE_ENTRY; + + case SAI_OBJECT_TYPE_NEIGHBOR_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_NEIGHBOR_ENTRY; + + case SAI_OBJECT_TYPE_ROUTE_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_ROUTE_ENTRY; + + case SAI_OBJECT_TYPE_VLAN: + return lemming::dataplane::sai::OBJECT_TYPE_VLAN; + + case SAI_OBJECT_TYPE_VLAN_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_VLAN_MEMBER; + + case SAI_OBJECT_TYPE_HOSTIF_PACKET: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_PACKET; + + case SAI_OBJECT_TYPE_TUNNEL_MAP: + return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP; + + case SAI_OBJECT_TYPE_TUNNEL: + return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL; + + case SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; + + case SAI_OBJECT_TYPE_FDB_FLUSH: + return lemming::dataplane::sai::OBJECT_TYPE_FDB_FLUSH; + + case SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_STP_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_STP_PORT; + + case SAI_OBJECT_TYPE_RPF_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP; + + case SAI_OBJECT_TYPE_RPF_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_L2MC_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP; + + case SAI_OBJECT_TYPE_L2MC_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_IPMC_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP; + + case SAI_OBJECT_TYPE_IPMC_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_L2MC_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_L2MC_ENTRY; + + case SAI_OBJECT_TYPE_IPMC_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_IPMC_ENTRY; + + case SAI_OBJECT_TYPE_MCAST_FDB_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_MCAST_FDB_ENTRY; + + case SAI_OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP: + return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; + + case SAI_OBJECT_TYPE_BRIDGE: + return lemming::dataplane::sai::OBJECT_TYPE_BRIDGE; + + case SAI_OBJECT_TYPE_BRIDGE_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_BRIDGE_PORT; + + case SAI_OBJECT_TYPE_TUNNEL_MAP_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP_ENTRY; + + case SAI_OBJECT_TYPE_TAM: + return lemming::dataplane::sai::OBJECT_TYPE_TAM; + + case SAI_OBJECT_TYPE_SRV6_SIDLIST: + return lemming::dataplane::sai::OBJECT_TYPE_SRV6_SIDLIST; + + case SAI_OBJECT_TYPE_PORT_POOL: + return lemming::dataplane::sai::OBJECT_TYPE_PORT_POOL; + + case SAI_OBJECT_TYPE_INSEG_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_INSEG_ENTRY; + + case SAI_OBJECT_TYPE_DTEL: + return lemming::dataplane::sai::OBJECT_TYPE_DTEL; + + case SAI_OBJECT_TYPE_DTEL_QUEUE_REPORT: + return lemming::dataplane::sai::OBJECT_TYPE_DTEL_QUEUE_REPORT; + + case SAI_OBJECT_TYPE_DTEL_INT_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_DTEL_INT_SESSION; + + case SAI_OBJECT_TYPE_DTEL_REPORT_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_DTEL_REPORT_SESSION; + + case SAI_OBJECT_TYPE_DTEL_EVENT: + return lemming::dataplane::sai::OBJECT_TYPE_DTEL_EVENT; + + case SAI_OBJECT_TYPE_BFD_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_BFD_SESSION; + + case SAI_OBJECT_TYPE_ISOLATION_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP; + + case SAI_OBJECT_TYPE_ISOLATION_GROUP_MEMBER: + return lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP_MEMBER; + + case SAI_OBJECT_TYPE_TAM_MATH_FUNC: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_MATH_FUNC; + + case SAI_OBJECT_TYPE_TAM_REPORT: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_REPORT; + + case SAI_OBJECT_TYPE_TAM_EVENT_THRESHOLD: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_THRESHOLD; + + case SAI_OBJECT_TYPE_TAM_TEL_TYPE: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_TEL_TYPE; + + case SAI_OBJECT_TYPE_TAM_TRANSPORT: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_TRANSPORT; + + case SAI_OBJECT_TYPE_TAM_TELEMETRY: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_TELEMETRY; + + case SAI_OBJECT_TYPE_TAM_COLLECTOR: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_COLLECTOR; + + case SAI_OBJECT_TYPE_TAM_EVENT_ACTION: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_ACTION; + + case SAI_OBJECT_TYPE_TAM_EVENT: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT; + + case SAI_OBJECT_TYPE_NAT_ZONE_COUNTER: + return lemming::dataplane::sai::OBJECT_TYPE_NAT_ZONE_COUNTER; + + case SAI_OBJECT_TYPE_NAT_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_NAT_ENTRY; + + case SAI_OBJECT_TYPE_TAM_INT: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_INT; + + case SAI_OBJECT_TYPE_COUNTER: + return lemming::dataplane::sai::OBJECT_TYPE_COUNTER; + + case SAI_OBJECT_TYPE_DEBUG_COUNTER: + return lemming::dataplane::sai::OBJECT_TYPE_DEBUG_COUNTER; + + case SAI_OBJECT_TYPE_PORT_CONNECTOR: + return lemming::dataplane::sai::OBJECT_TYPE_PORT_CONNECTOR; + + case SAI_OBJECT_TYPE_PORT_SERDES: + return lemming::dataplane::sai::OBJECT_TYPE_PORT_SERDES; + + case SAI_OBJECT_TYPE_MACSEC: + return lemming::dataplane::sai::OBJECT_TYPE_MACSEC; + + case SAI_OBJECT_TYPE_MACSEC_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_PORT; + + case SAI_OBJECT_TYPE_MACSEC_FLOW: + return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_FLOW; + + case SAI_OBJECT_TYPE_MACSEC_SC: + return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SC; + + case SAI_OBJECT_TYPE_MACSEC_SA: + return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SA; + + case SAI_OBJECT_TYPE_SYSTEM_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_SYSTEM_PORT; + + case SAI_OBJECT_TYPE_FINE_GRAINED_HASH_FIELD: + return lemming::dataplane::sai::OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; + + case SAI_OBJECT_TYPE_SWITCH_TUNNEL: + return lemming::dataplane::sai::OBJECT_TYPE_SWITCH_TUNNEL; + + case SAI_OBJECT_TYPE_MY_SID_ENTRY: + return lemming::dataplane::sai::OBJECT_TYPE_MY_SID_ENTRY; + + case SAI_OBJECT_TYPE_MY_MAC: + return lemming::dataplane::sai::OBJECT_TYPE_MY_MAC; + + case SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MAP: + return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MAP; + + case SAI_OBJECT_TYPE_IPSEC: + return lemming::dataplane::sai::OBJECT_TYPE_IPSEC; + + case SAI_OBJECT_TYPE_IPSEC_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_IPSEC_PORT; + + case SAI_OBJECT_TYPE_IPSEC_SA: + return lemming::dataplane::sai::OBJECT_TYPE_IPSEC_SA; + + case SAI_OBJECT_TYPE_GENERIC_PROGRAMMABLE: + return lemming::dataplane::sai::OBJECT_TYPE_GENERIC_PROGRAMMABLE; + + case SAI_OBJECT_TYPE_ARS_PROFILE: + return lemming::dataplane::sai::OBJECT_TYPE_ARS_PROFILE; + + case SAI_OBJECT_TYPE_ARS: + return lemming::dataplane::sai::OBJECT_TYPE_ARS; + + case SAI_OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP: + return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; + + case SAI_OBJECT_TYPE_TWAMP_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_TWAMP_SESSION; + + case SAI_OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION: + return lemming::dataplane::sai::OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; + + case SAI_OBJECT_TYPE_POE_DEVICE: + return lemming::dataplane::sai::OBJECT_TYPE_POE_DEVICE; + + case SAI_OBJECT_TYPE_POE_PSE: + return lemming::dataplane::sai::OBJECT_TYPE_POE_PSE; + + case SAI_OBJECT_TYPE_POE_PORT: + return lemming::dataplane::sai::OBJECT_TYPE_POE_PORT; + + case SAI_OBJECT_TYPE_ICMP_ECHO_SESSION: + return lemming::dataplane::sai::OBJECT_TYPE_ICMP_ECHO_SESSION; + + case SAI_OBJECT_TYPE_MAX: + return lemming::dataplane::sai::OBJECT_TYPE_MAX; + + case SAI_OBJECT_TYPE_EXTENSIONS_RANGE_BASE: + return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_BASE; + + default: + return lemming::dataplane::sai::OBJECT_TYPE_UNSPECIFIED; + } +} +sai_object_type_t convert_sai_object_type_t_to_sai( + lemming::dataplane::sai::ObjectType val) { + switch (val) { + case lemming::dataplane::sai::OBJECT_TYPE_NULL: + return SAI_OBJECT_TYPE_NULL; + + case lemming::dataplane::sai::OBJECT_TYPE_PORT: + return SAI_OBJECT_TYPE_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_LAG: + return SAI_OBJECT_TYPE_LAG; + + case lemming::dataplane::sai::OBJECT_TYPE_VIRTUAL_ROUTER: + return SAI_OBJECT_TYPE_VIRTUAL_ROUTER; + + case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP: + return SAI_OBJECT_TYPE_NEXT_HOP; + + case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP: + return SAI_OBJECT_TYPE_NEXT_HOP_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_ROUTER_INTERFACE: + return SAI_OBJECT_TYPE_ROUTER_INTERFACE; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE: + return SAI_OBJECT_TYPE_ACL_TABLE; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_ENTRY: + return SAI_OBJECT_TYPE_ACL_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_COUNTER: + return SAI_OBJECT_TYPE_ACL_COUNTER; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_RANGE: + return SAI_OBJECT_TYPE_ACL_RANGE; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP: + return SAI_OBJECT_TYPE_ACL_TABLE_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER: + return SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF: + return SAI_OBJECT_TYPE_HOSTIF; + + case lemming::dataplane::sai::OBJECT_TYPE_MIRROR_SESSION: + return SAI_OBJECT_TYPE_MIRROR_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_SAMPLEPACKET: + return SAI_OBJECT_TYPE_SAMPLEPACKET; + + case lemming::dataplane::sai::OBJECT_TYPE_STP: + return SAI_OBJECT_TYPE_STP; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP_GROUP: + return SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_POLICER: + return SAI_OBJECT_TYPE_POLICER; + + case lemming::dataplane::sai::OBJECT_TYPE_WRED: + return SAI_OBJECT_TYPE_WRED; + + case lemming::dataplane::sai::OBJECT_TYPE_QOS_MAP: + return SAI_OBJECT_TYPE_QOS_MAP; + + case lemming::dataplane::sai::OBJECT_TYPE_QUEUE: + return SAI_OBJECT_TYPE_QUEUE; + + case lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER: + return SAI_OBJECT_TYPE_SCHEDULER; + + case lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER_GROUP: + return SAI_OBJECT_TYPE_SCHEDULER_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_BUFFER_POOL: + return SAI_OBJECT_TYPE_BUFFER_POOL; + + case lemming::dataplane::sai::OBJECT_TYPE_BUFFER_PROFILE: + return SAI_OBJECT_TYPE_BUFFER_PROFILE; + + case lemming::dataplane::sai::OBJECT_TYPE_INGRESS_PRIORITY_GROUP: + return SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_LAG_MEMBER: + return SAI_OBJECT_TYPE_LAG_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_HASH: + return SAI_OBJECT_TYPE_HASH; + + case lemming::dataplane::sai::OBJECT_TYPE_UDF: + return SAI_OBJECT_TYPE_UDF; + + case lemming::dataplane::sai::OBJECT_TYPE_UDF_MATCH: + return SAI_OBJECT_TYPE_UDF_MATCH; + + case lemming::dataplane::sai::OBJECT_TYPE_UDF_GROUP: + return SAI_OBJECT_TYPE_UDF_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_FDB_ENTRY: + return SAI_OBJECT_TYPE_FDB_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_SWITCH: + return SAI_OBJECT_TYPE_SWITCH; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP: + return SAI_OBJECT_TYPE_HOSTIF_TRAP; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TABLE_ENTRY: + return SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_NEIGHBOR_ENTRY: + return SAI_OBJECT_TYPE_NEIGHBOR_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_ROUTE_ENTRY: + return SAI_OBJECT_TYPE_ROUTE_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_VLAN: + return SAI_OBJECT_TYPE_VLAN; + + case lemming::dataplane::sai::OBJECT_TYPE_VLAN_MEMBER: + return SAI_OBJECT_TYPE_VLAN_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_PACKET: + return SAI_OBJECT_TYPE_HOSTIF_PACKET; + + case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP: + return SAI_OBJECT_TYPE_TUNNEL_MAP; + + case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL: + return SAI_OBJECT_TYPE_TUNNEL; + + case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY: + return SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_FDB_FLUSH: + return SAI_OBJECT_TYPE_FDB_FLUSH; + + case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER: + return SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_STP_PORT: + return SAI_OBJECT_TYPE_STP_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP: + return SAI_OBJECT_TYPE_RPF_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP_MEMBER: + return SAI_OBJECT_TYPE_RPF_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP: + return SAI_OBJECT_TYPE_L2MC_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP_MEMBER: + return SAI_OBJECT_TYPE_L2MC_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP: + return SAI_OBJECT_TYPE_IPMC_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP_MEMBER: + return SAI_OBJECT_TYPE_IPMC_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_L2MC_ENTRY: + return SAI_OBJECT_TYPE_L2MC_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_IPMC_ENTRY: + return SAI_OBJECT_TYPE_IPMC_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_MCAST_FDB_ENTRY: + return SAI_OBJECT_TYPE_MCAST_FDB_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP: + return SAI_OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; + + case lemming::dataplane::sai::OBJECT_TYPE_BRIDGE: + return SAI_OBJECT_TYPE_BRIDGE; + + case lemming::dataplane::sai::OBJECT_TYPE_BRIDGE_PORT: + return SAI_OBJECT_TYPE_BRIDGE_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP_ENTRY: + return SAI_OBJECT_TYPE_TUNNEL_MAP_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM: + return SAI_OBJECT_TYPE_TAM; + + case lemming::dataplane::sai::OBJECT_TYPE_SRV6_SIDLIST: + return SAI_OBJECT_TYPE_SRV6_SIDLIST; + + case lemming::dataplane::sai::OBJECT_TYPE_PORT_POOL: + return SAI_OBJECT_TYPE_PORT_POOL; + + case lemming::dataplane::sai::OBJECT_TYPE_INSEG_ENTRY: + return SAI_OBJECT_TYPE_INSEG_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_DTEL: + return SAI_OBJECT_TYPE_DTEL; + + case lemming::dataplane::sai::OBJECT_TYPE_DTEL_QUEUE_REPORT: + return SAI_OBJECT_TYPE_DTEL_QUEUE_REPORT; + + case lemming::dataplane::sai::OBJECT_TYPE_DTEL_INT_SESSION: + return SAI_OBJECT_TYPE_DTEL_INT_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_DTEL_REPORT_SESSION: + return SAI_OBJECT_TYPE_DTEL_REPORT_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_DTEL_EVENT: + return SAI_OBJECT_TYPE_DTEL_EVENT; + + case lemming::dataplane::sai::OBJECT_TYPE_BFD_SESSION: + return SAI_OBJECT_TYPE_BFD_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP: + return SAI_OBJECT_TYPE_ISOLATION_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP_MEMBER: + return SAI_OBJECT_TYPE_ISOLATION_GROUP_MEMBER; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_MATH_FUNC: + return SAI_OBJECT_TYPE_TAM_MATH_FUNC; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_REPORT: + return SAI_OBJECT_TYPE_TAM_REPORT; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_THRESHOLD: + return SAI_OBJECT_TYPE_TAM_EVENT_THRESHOLD; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_TEL_TYPE: + return SAI_OBJECT_TYPE_TAM_TEL_TYPE; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_TRANSPORT: + return SAI_OBJECT_TYPE_TAM_TRANSPORT; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_TELEMETRY: + return SAI_OBJECT_TYPE_TAM_TELEMETRY; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_COLLECTOR: + return SAI_OBJECT_TYPE_TAM_COLLECTOR; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_ACTION: + return SAI_OBJECT_TYPE_TAM_EVENT_ACTION; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT: + return SAI_OBJECT_TYPE_TAM_EVENT; + + case lemming::dataplane::sai::OBJECT_TYPE_NAT_ZONE_COUNTER: + return SAI_OBJECT_TYPE_NAT_ZONE_COUNTER; + + case lemming::dataplane::sai::OBJECT_TYPE_NAT_ENTRY: + return SAI_OBJECT_TYPE_NAT_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_INT: + return SAI_OBJECT_TYPE_TAM_INT; + + case lemming::dataplane::sai::OBJECT_TYPE_COUNTER: + return SAI_OBJECT_TYPE_COUNTER; + + case lemming::dataplane::sai::OBJECT_TYPE_DEBUG_COUNTER: + return SAI_OBJECT_TYPE_DEBUG_COUNTER; + + case lemming::dataplane::sai::OBJECT_TYPE_PORT_CONNECTOR: + return SAI_OBJECT_TYPE_PORT_CONNECTOR; + + case lemming::dataplane::sai::OBJECT_TYPE_PORT_SERDES: + return SAI_OBJECT_TYPE_PORT_SERDES; + + case lemming::dataplane::sai::OBJECT_TYPE_MACSEC: + return SAI_OBJECT_TYPE_MACSEC; + + case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_PORT: + return SAI_OBJECT_TYPE_MACSEC_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_FLOW: + return SAI_OBJECT_TYPE_MACSEC_FLOW; + + case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SC: + return SAI_OBJECT_TYPE_MACSEC_SC; + + case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SA: + return SAI_OBJECT_TYPE_MACSEC_SA; + + case lemming::dataplane::sai::OBJECT_TYPE_SYSTEM_PORT: + return SAI_OBJECT_TYPE_SYSTEM_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_FINE_GRAINED_HASH_FIELD: + return SAI_OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; + + case lemming::dataplane::sai::OBJECT_TYPE_SWITCH_TUNNEL: + return SAI_OBJECT_TYPE_SWITCH_TUNNEL; + + case lemming::dataplane::sai::OBJECT_TYPE_MY_SID_ENTRY: + return SAI_OBJECT_TYPE_MY_SID_ENTRY; + + case lemming::dataplane::sai::OBJECT_TYPE_MY_MAC: + return SAI_OBJECT_TYPE_MY_MAC; + + case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MAP: + return SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MAP; + + case lemming::dataplane::sai::OBJECT_TYPE_IPSEC: + return SAI_OBJECT_TYPE_IPSEC; + + case lemming::dataplane::sai::OBJECT_TYPE_IPSEC_PORT: + return SAI_OBJECT_TYPE_IPSEC_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_IPSEC_SA: + return SAI_OBJECT_TYPE_IPSEC_SA; + + case lemming::dataplane::sai::OBJECT_TYPE_GENERIC_PROGRAMMABLE: + return SAI_OBJECT_TYPE_GENERIC_PROGRAMMABLE; + + case lemming::dataplane::sai::OBJECT_TYPE_ARS_PROFILE: + return SAI_OBJECT_TYPE_ARS_PROFILE; + + case lemming::dataplane::sai::OBJECT_TYPE_ARS: + return SAI_OBJECT_TYPE_ARS; + + case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP: + return SAI_OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; + + case lemming::dataplane::sai::OBJECT_TYPE_TWAMP_SESSION: + return SAI_OBJECT_TYPE_TWAMP_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION: + return SAI_OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; + + case lemming::dataplane::sai::OBJECT_TYPE_POE_DEVICE: + return SAI_OBJECT_TYPE_POE_DEVICE; + + case lemming::dataplane::sai::OBJECT_TYPE_POE_PSE: + return SAI_OBJECT_TYPE_POE_PSE; + + case lemming::dataplane::sai::OBJECT_TYPE_POE_PORT: + return SAI_OBJECT_TYPE_POE_PORT; + + case lemming::dataplane::sai::OBJECT_TYPE_ICMP_ECHO_SESSION: + return SAI_OBJECT_TYPE_ICMP_ECHO_SESSION; + + case lemming::dataplane::sai::OBJECT_TYPE_MAX: + return SAI_OBJECT_TYPE_MAX; + + case lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_BASE: + return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_BASE; + + default: + return SAI_OBJECT_TYPE_NULL; + } +} + +google::protobuf::RepeatedField convert_list_sai_object_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_object_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_object_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_object_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::OutDropReason convert_sai_out_drop_reason_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OUT_DROP_REASON_START: + return lemming::dataplane::sai::OUT_DROP_REASON_START; + + case SAI_OUT_DROP_REASON_EGRESS_VLAN_FILTER: + return lemming::dataplane::sai::OUT_DROP_REASON_EGRESS_VLAN_FILTER; + + case SAI_OUT_DROP_REASON_L3_ANY: + return lemming::dataplane::sai::OUT_DROP_REASON_L3_ANY; + + case SAI_OUT_DROP_REASON_L3_EGRESS_LINK_DOWN: + return lemming::dataplane::sai::OUT_DROP_REASON_L3_EGRESS_LINK_DOWN; + + case SAI_OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP: + return lemming::dataplane::sai:: + OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP; + + case SAI_OUT_DROP_REASON_END: + return lemming::dataplane::sai::OUT_DROP_REASON_END; + + case SAI_OUT_DROP_REASON_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_BASE; + + case SAI_OUT_DROP_REASON_CUSTOM_RANGE_END: + return lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_END; + + default: + return lemming::dataplane::sai::OUT_DROP_REASON_UNSPECIFIED; + } +} +sai_out_drop_reason_t convert_sai_out_drop_reason_t_to_sai( + lemming::dataplane::sai::OutDropReason val) { + switch (val) { + case lemming::dataplane::sai::OUT_DROP_REASON_START: + return SAI_OUT_DROP_REASON_START; + + case lemming::dataplane::sai::OUT_DROP_REASON_EGRESS_VLAN_FILTER: + return SAI_OUT_DROP_REASON_EGRESS_VLAN_FILTER; + + case lemming::dataplane::sai::OUT_DROP_REASON_L3_ANY: + return SAI_OUT_DROP_REASON_L3_ANY; + + case lemming::dataplane::sai::OUT_DROP_REASON_L3_EGRESS_LINK_DOWN: + return SAI_OUT_DROP_REASON_L3_EGRESS_LINK_DOWN; + + case lemming::dataplane::sai::OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP: + return SAI_OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP; + + case lemming::dataplane::sai::OUT_DROP_REASON_END: + return SAI_OUT_DROP_REASON_END; + + case lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_BASE: + return SAI_OUT_DROP_REASON_CUSTOM_RANGE_BASE; + + case lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_END: + return SAI_OUT_DROP_REASON_CUSTOM_RANGE_END; + + default: + return SAI_OUT_DROP_REASON_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_out_drop_reason_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_out_drop_reason_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_out_drop_reason_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_out_drop_reason_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::OutsegExpMode convert_sai_outseg_exp_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OUTSEG_EXP_MODE_UNIFORM: + return lemming::dataplane::sai::OUTSEG_EXP_MODE_UNIFORM; + + case SAI_OUTSEG_EXP_MODE_PIPE: + return lemming::dataplane::sai::OUTSEG_EXP_MODE_PIPE; + + default: + return lemming::dataplane::sai::OUTSEG_EXP_MODE_UNSPECIFIED; + } +} +sai_outseg_exp_mode_t convert_sai_outseg_exp_mode_t_to_sai( + lemming::dataplane::sai::OutsegExpMode val) { + switch (val) { + case lemming::dataplane::sai::OUTSEG_EXP_MODE_UNIFORM: + return SAI_OUTSEG_EXP_MODE_UNIFORM; + + case lemming::dataplane::sai::OUTSEG_EXP_MODE_PIPE: + return SAI_OUTSEG_EXP_MODE_PIPE; + + default: + return SAI_OUTSEG_EXP_MODE_UNIFORM; + } +} + +google::protobuf::RepeatedField +convert_list_sai_outseg_exp_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_outseg_exp_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_outseg_exp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_outseg_exp_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::OutsegTtlMode convert_sai_outseg_ttl_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OUTSEG_TTL_MODE_UNIFORM: + return lemming::dataplane::sai::OUTSEG_TTL_MODE_UNIFORM; + + case SAI_OUTSEG_TTL_MODE_PIPE: + return lemming::dataplane::sai::OUTSEG_TTL_MODE_PIPE; + + default: + return lemming::dataplane::sai::OUTSEG_TTL_MODE_UNSPECIFIED; + } +} +sai_outseg_ttl_mode_t convert_sai_outseg_ttl_mode_t_to_sai( + lemming::dataplane::sai::OutsegTtlMode val) { + switch (val) { + case lemming::dataplane::sai::OUTSEG_TTL_MODE_UNIFORM: + return SAI_OUTSEG_TTL_MODE_UNIFORM; + + case lemming::dataplane::sai::OUTSEG_TTL_MODE_PIPE: + return SAI_OUTSEG_TTL_MODE_PIPE; + + default: + return SAI_OUTSEG_TTL_MODE_UNIFORM; + } +} + +google::protobuf::RepeatedField +convert_list_sai_outseg_ttl_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_outseg_ttl_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_outseg_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_outseg_ttl_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::OutsegType convert_sai_outseg_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_OUTSEG_TYPE_PUSH: + return lemming::dataplane::sai::OUTSEG_TYPE_PUSH; + + case SAI_OUTSEG_TYPE_SWAP: + return lemming::dataplane::sai::OUTSEG_TYPE_SWAP; + + default: + return lemming::dataplane::sai::OUTSEG_TYPE_UNSPECIFIED; + } +} +sai_outseg_type_t convert_sai_outseg_type_t_to_sai( + lemming::dataplane::sai::OutsegType val) { + switch (val) { + case lemming::dataplane::sai::OUTSEG_TYPE_PUSH: + return SAI_OUTSEG_TYPE_PUSH; + + case lemming::dataplane::sai::OUTSEG_TYPE_SWAP: + return SAI_OUTSEG_TYPE_SWAP; + + default: + return SAI_OUTSEG_TYPE_PUSH; + } +} + +google::protobuf::RepeatedField convert_list_sai_outseg_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_outseg_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_outseg_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_outseg_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PacketAction convert_sai_packet_action_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PACKET_ACTION_DROP: + return lemming::dataplane::sai::PACKET_ACTION_DROP; + + case SAI_PACKET_ACTION_FORWARD: + return lemming::dataplane::sai::PACKET_ACTION_FORWARD; + + case SAI_PACKET_ACTION_COPY: + return lemming::dataplane::sai::PACKET_ACTION_COPY; + + case SAI_PACKET_ACTION_COPY_CANCEL: + return lemming::dataplane::sai::PACKET_ACTION_COPY_CANCEL; + + case SAI_PACKET_ACTION_TRAP: + return lemming::dataplane::sai::PACKET_ACTION_TRAP; + + case SAI_PACKET_ACTION_LOG: + return lemming::dataplane::sai::PACKET_ACTION_LOG; + + case SAI_PACKET_ACTION_DENY: + return lemming::dataplane::sai::PACKET_ACTION_DENY; + + case SAI_PACKET_ACTION_TRANSIT: + return lemming::dataplane::sai::PACKET_ACTION_TRANSIT; + + case SAI_PACKET_ACTION_DONOTDROP: + return lemming::dataplane::sai::PACKET_ACTION_DONOTDROP; + + default: + return lemming::dataplane::sai::PACKET_ACTION_UNSPECIFIED; + } +} +sai_packet_action_t convert_sai_packet_action_t_to_sai( + lemming::dataplane::sai::PacketAction val) { + switch (val) { + case lemming::dataplane::sai::PACKET_ACTION_DROP: + return SAI_PACKET_ACTION_DROP; + + case lemming::dataplane::sai::PACKET_ACTION_FORWARD: + return SAI_PACKET_ACTION_FORWARD; + + case lemming::dataplane::sai::PACKET_ACTION_COPY: + return SAI_PACKET_ACTION_COPY; + + case lemming::dataplane::sai::PACKET_ACTION_COPY_CANCEL: + return SAI_PACKET_ACTION_COPY_CANCEL; + + case lemming::dataplane::sai::PACKET_ACTION_TRAP: + return SAI_PACKET_ACTION_TRAP; + + case lemming::dataplane::sai::PACKET_ACTION_LOG: + return SAI_PACKET_ACTION_LOG; + + case lemming::dataplane::sai::PACKET_ACTION_DENY: + return SAI_PACKET_ACTION_DENY; + + case lemming::dataplane::sai::PACKET_ACTION_TRANSIT: + return SAI_PACKET_ACTION_TRANSIT; + + case lemming::dataplane::sai::PACKET_ACTION_DONOTDROP: + return SAI_PACKET_ACTION_DONOTDROP; + + default: + return SAI_PACKET_ACTION_DROP; + } +} + +google::protobuf::RepeatedField convert_list_sai_packet_action_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_packet_action_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_packet_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_packet_action_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PacketColor convert_sai_packet_color_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PACKET_COLOR_GREEN: + return lemming::dataplane::sai::PACKET_COLOR_GREEN; + + case SAI_PACKET_COLOR_YELLOW: + return lemming::dataplane::sai::PACKET_COLOR_YELLOW; + + case SAI_PACKET_COLOR_RED: + return lemming::dataplane::sai::PACKET_COLOR_RED; + + default: + return lemming::dataplane::sai::PACKET_COLOR_UNSPECIFIED; + } +} +sai_packet_color_t convert_sai_packet_color_t_to_sai( + lemming::dataplane::sai::PacketColor val) { + switch (val) { + case lemming::dataplane::sai::PACKET_COLOR_GREEN: + return SAI_PACKET_COLOR_GREEN; + + case lemming::dataplane::sai::PACKET_COLOR_YELLOW: + return SAI_PACKET_COLOR_YELLOW; + + case lemming::dataplane::sai::PACKET_COLOR_RED: + return SAI_PACKET_COLOR_RED; + + default: + return SAI_PACKET_COLOR_GREEN; + } +} + +google::protobuf::RepeatedField convert_list_sai_packet_color_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_packet_color_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_packet_color_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_packet_color_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PacketVlan convert_sai_packet_vlan_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PACKET_VLAN_UNTAG: + return lemming::dataplane::sai::PACKET_VLAN_UNTAG; + + case SAI_PACKET_VLAN_SINGLE_OUTER_TAG: + return lemming::dataplane::sai::PACKET_VLAN_SINGLE_OUTER_TAG; + + case SAI_PACKET_VLAN_DOUBLE_TAG: + return lemming::dataplane::sai::PACKET_VLAN_DOUBLE_TAG; + + default: + return lemming::dataplane::sai::PACKET_VLAN_UNSPECIFIED; + } +} +sai_packet_vlan_t convert_sai_packet_vlan_t_to_sai( + lemming::dataplane::sai::PacketVlan val) { + switch (val) { + case lemming::dataplane::sai::PACKET_VLAN_UNTAG: + return SAI_PACKET_VLAN_UNTAG; + + case lemming::dataplane::sai::PACKET_VLAN_SINGLE_OUTER_TAG: + return SAI_PACKET_VLAN_SINGLE_OUTER_TAG; + + case lemming::dataplane::sai::PACKET_VLAN_DOUBLE_TAG: + return SAI_PACKET_VLAN_DOUBLE_TAG; + + default: + return SAI_PACKET_VLAN_UNTAG; + } +} + +google::protobuf::RepeatedField convert_list_sai_packet_vlan_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_packet_vlan_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_packet_vlan_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_packet_vlan_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PoePortActiveChannelType +convert_sai_poe_port_active_channel_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A: + return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A; + + case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_B: + return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_B; + + case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B: + return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B; + + default: + return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED; + } +} +sai_poe_port_active_channel_type_t +convert_sai_poe_port_active_channel_type_t_to_sai( + lemming::dataplane::sai::PoePortActiveChannelType val) { + switch (val) { + case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A: + return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A; + + case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_B: + return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_B; + + case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B: + return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B; + + default: + return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A; + } +} + +google::protobuf::RepeatedField +convert_list_sai_poe_port_active_channel_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_poe_port_active_channel_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_poe_port_active_channel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_poe_port_active_channel_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PoePortClassMethodType +convert_sai_poe_port_class_method_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR: + return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_REGULAR; + + case SAI_POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS: + return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS; + + default: + return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED; + } +} +sai_poe_port_class_method_type_t +convert_sai_poe_port_class_method_type_t_to_sai( + lemming::dataplane::sai::PoePortClassMethodType val) { + switch (val) { + case lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_REGULAR: + return SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR; + + case lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS: + return SAI_POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS; + + default: + return SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_poe_port_class_method_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_poe_port_class_method_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_poe_port_class_method_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_poe_port_class_method_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PoePortSignatureType +convert_sai_poe_port_signature_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_POE_PORT_SIGNATURE_TYPE_SINGLE: + return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_SINGLE; + + case SAI_POE_PORT_SIGNATURE_TYPE_DUAL: + return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_DUAL; + + default: + return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_UNSPECIFIED; + } +} +sai_poe_port_signature_type_t convert_sai_poe_port_signature_type_t_to_sai( + lemming::dataplane::sai::PoePortSignatureType val) { + switch (val) { + case lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_SINGLE: + return SAI_POE_PORT_SIGNATURE_TYPE_SINGLE; + + case lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_DUAL: + return SAI_POE_PORT_SIGNATURE_TYPE_DUAL; + + default: + return SAI_POE_PORT_SIGNATURE_TYPE_SINGLE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_poe_port_signature_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_poe_port_signature_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_poe_port_signature_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_poe_port_signature_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PolicerAttr convert_sai_policer_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_POLICER_ATTR_METER_TYPE: + return lemming::dataplane::sai::POLICER_ATTR_METER_TYPE; + + case SAI_POLICER_ATTR_MODE: + return lemming::dataplane::sai::POLICER_ATTR_MODE; + + case SAI_POLICER_ATTR_COLOR_SOURCE: + return lemming::dataplane::sai::POLICER_ATTR_COLOR_SOURCE; + + case SAI_POLICER_ATTR_CBS: + return lemming::dataplane::sai::POLICER_ATTR_CBS; + + case SAI_POLICER_ATTR_CIR: + return lemming::dataplane::sai::POLICER_ATTR_CIR; + + case SAI_POLICER_ATTR_PBS: + return lemming::dataplane::sai::POLICER_ATTR_PBS; + + case SAI_POLICER_ATTR_PIR: + return lemming::dataplane::sai::POLICER_ATTR_PIR; + + case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: + return lemming::dataplane::sai::POLICER_ATTR_GREEN_PACKET_ACTION; + + case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: + return lemming::dataplane::sai::POLICER_ATTR_YELLOW_PACKET_ACTION; + + case SAI_POLICER_ATTR_RED_PACKET_ACTION: + return lemming::dataplane::sai::POLICER_ATTR_RED_PACKET_ACTION; + + case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: + return lemming::dataplane::sai:: + POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST; + + case SAI_POLICER_ATTR_OBJECT_STAGE: + return lemming::dataplane::sai::POLICER_ATTR_OBJECT_STAGE; + + case SAI_POLICER_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::POLICER_ATTR_STATS_COUNT_MODE; + + case SAI_POLICER_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::POLICER_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::POLICER_ATTR_UNSPECIFIED; + } +} +sai_policer_attr_t convert_sai_policer_attr_t_to_sai( + lemming::dataplane::sai::PolicerAttr val) { + switch (val) { + case lemming::dataplane::sai::POLICER_ATTR_METER_TYPE: + return SAI_POLICER_ATTR_METER_TYPE; + + case lemming::dataplane::sai::POLICER_ATTR_MODE: + return SAI_POLICER_ATTR_MODE; + + case lemming::dataplane::sai::POLICER_ATTR_COLOR_SOURCE: + return SAI_POLICER_ATTR_COLOR_SOURCE; + + case lemming::dataplane::sai::POLICER_ATTR_CBS: + return SAI_POLICER_ATTR_CBS; + + case lemming::dataplane::sai::POLICER_ATTR_CIR: + return SAI_POLICER_ATTR_CIR; + + case lemming::dataplane::sai::POLICER_ATTR_PBS: + return SAI_POLICER_ATTR_PBS; + + case lemming::dataplane::sai::POLICER_ATTR_PIR: + return SAI_POLICER_ATTR_PIR; + + case lemming::dataplane::sai::POLICER_ATTR_GREEN_PACKET_ACTION: + return SAI_POLICER_ATTR_GREEN_PACKET_ACTION; + + case lemming::dataplane::sai::POLICER_ATTR_YELLOW_PACKET_ACTION: + return SAI_POLICER_ATTR_YELLOW_PACKET_ACTION; + + case lemming::dataplane::sai::POLICER_ATTR_RED_PACKET_ACTION: + return SAI_POLICER_ATTR_RED_PACKET_ACTION; + + case lemming::dataplane::sai:: + POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: + return SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST; + + case lemming::dataplane::sai::POLICER_ATTR_OBJECT_STAGE: + return SAI_POLICER_ATTR_OBJECT_STAGE; + + case lemming::dataplane::sai::POLICER_ATTR_STATS_COUNT_MODE: + return SAI_POLICER_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::POLICER_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_POLICER_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_POLICER_ATTR_METER_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_policer_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_policer_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_policer_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_policer_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PolicerColorSource +convert_sai_policer_color_source_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_POLICER_COLOR_SOURCE_BLIND: + return lemming::dataplane::sai::POLICER_COLOR_SOURCE_BLIND; + + case SAI_POLICER_COLOR_SOURCE_AWARE: + return lemming::dataplane::sai::POLICER_COLOR_SOURCE_AWARE; + + case SAI_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::POLICER_COLOR_SOURCE_UNSPECIFIED; + } +} +sai_policer_color_source_t convert_sai_policer_color_source_t_to_sai( + lemming::dataplane::sai::PolicerColorSource val) { + switch (val) { + case lemming::dataplane::sai::POLICER_COLOR_SOURCE_BLIND: + return SAI_POLICER_COLOR_SOURCE_BLIND; + + case lemming::dataplane::sai::POLICER_COLOR_SOURCE_AWARE: + return SAI_POLICER_COLOR_SOURCE_AWARE; + + case lemming::dataplane::sai::POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE: + return SAI_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE; + + default: + return SAI_POLICER_COLOR_SOURCE_BLIND; + } +} + +google::protobuf::RepeatedField +convert_list_sai_policer_color_source_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_policer_color_source_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_policer_color_source_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_policer_color_source_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PolicerMode convert_sai_policer_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_POLICER_MODE_SR_TCM: + return lemming::dataplane::sai::POLICER_MODE_SR_TCM; + + case SAI_POLICER_MODE_TR_TCM: + return lemming::dataplane::sai::POLICER_MODE_TR_TCM; + + case SAI_POLICER_MODE_STORM_CONTROL: + return lemming::dataplane::sai::POLICER_MODE_STORM_CONTROL; + + case SAI_POLICER_MODE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::POLICER_MODE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::POLICER_MODE_UNSPECIFIED; + } +} +sai_policer_mode_t convert_sai_policer_mode_t_to_sai( + lemming::dataplane::sai::PolicerMode val) { + switch (val) { + case lemming::dataplane::sai::POLICER_MODE_SR_TCM: + return SAI_POLICER_MODE_SR_TCM; + + case lemming::dataplane::sai::POLICER_MODE_TR_TCM: + return SAI_POLICER_MODE_TR_TCM; + + case lemming::dataplane::sai::POLICER_MODE_STORM_CONTROL: + return SAI_POLICER_MODE_STORM_CONTROL; + + case lemming::dataplane::sai::POLICER_MODE_CUSTOM_RANGE_BASE: + return SAI_POLICER_MODE_CUSTOM_RANGE_BASE; + + default: + return SAI_POLICER_MODE_SR_TCM; + } +} + +google::protobuf::RepeatedField convert_list_sai_policer_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_policer_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_policer_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_policer_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PolicerStat convert_sai_policer_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_POLICER_STAT_PACKETS: + return lemming::dataplane::sai::POLICER_STAT_PACKETS; + + case SAI_POLICER_STAT_ATTR_BYTES: + return lemming::dataplane::sai::POLICER_STAT_ATTR_BYTES; + + case SAI_POLICER_STAT_GREEN_PACKETS: + return lemming::dataplane::sai::POLICER_STAT_GREEN_PACKETS; + + case SAI_POLICER_STAT_GREEN_BYTES: + return lemming::dataplane::sai::POLICER_STAT_GREEN_BYTES; + + case SAI_POLICER_STAT_YELLOW_PACKETS: + return lemming::dataplane::sai::POLICER_STAT_YELLOW_PACKETS; + + case SAI_POLICER_STAT_YELLOW_BYTES: + return lemming::dataplane::sai::POLICER_STAT_YELLOW_BYTES; + + case SAI_POLICER_STAT_RED_PACKETS: + return lemming::dataplane::sai::POLICER_STAT_RED_PACKETS; + + case SAI_POLICER_STAT_RED_BYTES: + return lemming::dataplane::sai::POLICER_STAT_RED_BYTES; + + case SAI_POLICER_STAT_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::POLICER_STAT_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::POLICER_STAT_UNSPECIFIED; + } +} +sai_policer_stat_t convert_sai_policer_stat_t_to_sai( + lemming::dataplane::sai::PolicerStat val) { + switch (val) { + case lemming::dataplane::sai::POLICER_STAT_PACKETS: + return SAI_POLICER_STAT_PACKETS; + + case lemming::dataplane::sai::POLICER_STAT_ATTR_BYTES: + return SAI_POLICER_STAT_ATTR_BYTES; + + case lemming::dataplane::sai::POLICER_STAT_GREEN_PACKETS: + return SAI_POLICER_STAT_GREEN_PACKETS; + + case lemming::dataplane::sai::POLICER_STAT_GREEN_BYTES: + return SAI_POLICER_STAT_GREEN_BYTES; + + case lemming::dataplane::sai::POLICER_STAT_YELLOW_PACKETS: + return SAI_POLICER_STAT_YELLOW_PACKETS; + + case lemming::dataplane::sai::POLICER_STAT_YELLOW_BYTES: + return SAI_POLICER_STAT_YELLOW_BYTES; + + case lemming::dataplane::sai::POLICER_STAT_RED_PACKETS: + return SAI_POLICER_STAT_RED_PACKETS; + + case lemming::dataplane::sai::POLICER_STAT_RED_BYTES: + return SAI_POLICER_STAT_RED_BYTES; + + case lemming::dataplane::sai::POLICER_STAT_CUSTOM_RANGE_BASE: + return SAI_POLICER_STAT_CUSTOM_RANGE_BASE; + + default: + return SAI_POLICER_STAT_PACKETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_policer_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_policer_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_policer_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_policer_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortAttrExtensions +convert_sai_port_attr_extensions_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_ATTR_EXTENSIONS_RANGE_START: + return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_START; + + case SAI_PORT_ATTR_EXTENSIONS_RANGE_END: + return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_END; + + default: + return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_UNSPECIFIED; + } +} +sai_port_attr_extensions_t convert_sai_port_attr_extensions_t_to_sai( + lemming::dataplane::sai::PortAttrExtensions val) { + switch (val) { + case lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_START: + return SAI_PORT_ATTR_EXTENSIONS_RANGE_START; + + case lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_END: + return SAI_PORT_ATTR_EXTENSIONS_RANGE_END; + + default: + return SAI_PORT_ATTR_EXTENSIONS_RANGE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_attr_extensions_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_attr_extensions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_attr_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_attr_extensions_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortAttr convert_sai_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_ATTR_TYPE: + return lemming::dataplane::sai::PORT_ATTR_TYPE; + + case SAI_PORT_ATTR_OPER_STATUS: + return lemming::dataplane::sai::PORT_ATTR_OPER_STATUS; + + case SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE; + + case SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE; + + case SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES: + return lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_QUEUES; + + case SAI_PORT_ATTR_QOS_QUEUE_LIST: + return lemming::dataplane::sai::PORT_ATTR_QOS_QUEUE_LIST; + + case SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: + return lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS; + + case SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: + return lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_GROUP_LIST; + + case SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: + return lemming::dataplane::sai::PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE; + + case SAI_PORT_ATTR_SUPPORTED_SPEED: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_SPEED; + + case SAI_PORT_ATTR_SUPPORTED_FEC_MODE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE; + + case SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED; + + case SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED; + + case SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_AUTO_NEG_MODE; + + case SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE; + + case SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE; + + case SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_MEDIA_TYPE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED: + return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_SPEED; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: + return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: + return lemming::dataplane::sai:: + PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: + return lemming::dataplane::sai:: + PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: + return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: + return lemming::dataplane::sai:: + PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + return lemming::dataplane::sai:: + PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: + return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE; + + case SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: + return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE; + + case SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: + return lemming::dataplane::sai:: + PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS; + + case SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST; + + case SAI_PORT_ATTR_EYE_VALUES: + return lemming::dataplane::sai::PORT_ATTR_EYE_VALUES; + + case SAI_PORT_ATTR_OPER_SPEED: + return lemming::dataplane::sai::PORT_ATTR_OPER_SPEED; + + case SAI_PORT_ATTR_HW_LANE_LIST: + return lemming::dataplane::sai::PORT_ATTR_HW_LANE_LIST; + + case SAI_PORT_ATTR_SPEED: + return lemming::dataplane::sai::PORT_ATTR_SPEED; + + case SAI_PORT_ATTR_FULL_DUPLEX_MODE: + return lemming::dataplane::sai::PORT_ATTR_FULL_DUPLEX_MODE; + + case SAI_PORT_ATTR_AUTO_NEG_MODE: + return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_MODE; + + case SAI_PORT_ATTR_ADMIN_STATE: + return lemming::dataplane::sai::PORT_ATTR_ADMIN_STATE; + + case SAI_PORT_ATTR_MEDIA_TYPE: + return lemming::dataplane::sai::PORT_ATTR_MEDIA_TYPE; + + case SAI_PORT_ATTR_ADVERTISED_SPEED: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_SPEED; + + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE; + + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED; + + case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED; + + case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_AUTO_NEG_MODE; + + case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE; + + case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + return lemming::dataplane::sai:: + PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE; + + case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_MEDIA_TYPE; + + case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_OUI_CODE; + + case SAI_PORT_ATTR_PORT_VLAN_ID: + return lemming::dataplane::sai::PORT_ATTR_PORT_VLAN_ID; + + case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: + return lemming::dataplane::sai::PORT_ATTR_DEFAULT_VLAN_PRIORITY; + + case SAI_PORT_ATTR_DROP_UNTAGGED: + return lemming::dataplane::sai::PORT_ATTR_DROP_UNTAGGED; + + case SAI_PORT_ATTR_DROP_TAGGED: + return lemming::dataplane::sai::PORT_ATTR_DROP_TAGGED; + + case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: + return lemming::dataplane::sai::PORT_ATTR_INTERNAL_LOOPBACK_MODE; + + case SAI_PORT_ATTR_USE_EXTENDED_FEC: + return lemming::dataplane::sai::PORT_ATTR_USE_EXTENDED_FEC; + + case SAI_PORT_ATTR_FEC_MODE: + return lemming::dataplane::sai::PORT_ATTR_FEC_MODE; + + case SAI_PORT_ATTR_FEC_MODE_EXTENDED: + return lemming::dataplane::sai::PORT_ATTR_FEC_MODE_EXTENDED; + + case SAI_PORT_ATTR_UPDATE_DSCP: + return lemming::dataplane::sai::PORT_ATTR_UPDATE_DSCP; + + case SAI_PORT_ATTR_MTU: + return lemming::dataplane::sai::PORT_ATTR_MTU; + + case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: + return lemming::dataplane::sai::PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID; + + case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: + return lemming::dataplane::sai:: + PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID; + + case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: + return lemming::dataplane::sai:: + PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID; + + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: + return lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE; + + case SAI_PORT_ATTR_INGRESS_ACL: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_ACL; + + case SAI_PORT_ATTR_EGRESS_ACL: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_ACL; + + case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_MACSEC_ACL; + + case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_MACSEC_ACL; + + case SAI_PORT_ATTR_MACSEC_PORT_LIST: + return lemming::dataplane::sai::PORT_ATTR_MACSEC_PORT_LIST; + + case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_MIRROR_SESSION; + + case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_MIRROR_SESSION; + + case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; + + case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE; + + case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: + return lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION; + + case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION; + + case SAI_PORT_ATTR_POLICER_ID: + return lemming::dataplane::sai::PORT_ATTR_POLICER_ID; + + case SAI_PORT_ATTR_QOS_DEFAULT_TC: + return lemming::dataplane::sai::PORT_ATTR_QOS_DEFAULT_TC; + + case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_TC_MAP; + + case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP; + + case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_TC_MAP; + + case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_COLOR_MAP; + + case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_QUEUE_MAP; + + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; + + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP; + + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: + return lemming::dataplane::sai:: + PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP; + + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP; + + case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: + return lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_PROFILE_ID; + + case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: + return lemming::dataplane::sai::PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST; + + case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: + return lemming::dataplane::sai::PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST; + + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: + return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE; + + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: + return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL; + + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: + return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_RX; + + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: + return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_TX; + + case SAI_PORT_ATTR_META_DATA: + return lemming::dataplane::sai::PORT_ATTR_META_DATA; + + case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: + return lemming::dataplane::sai::PORT_ATTR_EGRESS_BLOCK_PORT_LIST; + + case SAI_PORT_ATTR_HW_PROFILE_ID: + return lemming::dataplane::sai::PORT_ATTR_HW_PROFILE_ID; + + case SAI_PORT_ATTR_EEE_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_EEE_ENABLE; + + case SAI_PORT_ATTR_EEE_IDLE_TIME: + return lemming::dataplane::sai::PORT_ATTR_EEE_IDLE_TIME; + + case SAI_PORT_ATTR_EEE_WAKE_TIME: + return lemming::dataplane::sai::PORT_ATTR_EEE_WAKE_TIME; + + case SAI_PORT_ATTR_PORT_POOL_LIST: + return lemming::dataplane::sai::PORT_ATTR_PORT_POOL_LIST; + + case SAI_PORT_ATTR_ISOLATION_GROUP: + return lemming::dataplane::sai::PORT_ATTR_ISOLATION_GROUP; + + case SAI_PORT_ATTR_PKT_TX_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_PKT_TX_ENABLE; + + case SAI_PORT_ATTR_TAM_OBJECT: + return lemming::dataplane::sai::PORT_ATTR_TAM_OBJECT; + + case SAI_PORT_ATTR_SERDES_PREEMPHASIS: + return lemming::dataplane::sai::PORT_ATTR_SERDES_PREEMPHASIS; + + case SAI_PORT_ATTR_SERDES_IDRIVER: + return lemming::dataplane::sai::PORT_ATTR_SERDES_IDRIVER; + + case SAI_PORT_ATTR_SERDES_IPREDRIVER: + return lemming::dataplane::sai::PORT_ATTR_SERDES_IPREDRIVER; + + case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_ENABLE; + + case SAI_PORT_ATTR_PTP_MODE: + return lemming::dataplane::sai::PORT_ATTR_PTP_MODE; + + case SAI_PORT_ATTR_INTERFACE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_INTERFACE_TYPE; + + case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_INTERFACE_TYPE; + + case SAI_PORT_ATTR_REFERENCE_CLOCK: + return lemming::dataplane::sai::PORT_ATTR_REFERENCE_CLOCK; + + case SAI_PORT_ATTR_PRBS_POLYNOMIAL: + return lemming::dataplane::sai::PORT_ATTR_PRBS_POLYNOMIAL; + + case SAI_PORT_ATTR_PORT_SERDES_ID: + return lemming::dataplane::sai::PORT_ATTR_PORT_SERDES_ID; + + case SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: + return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_FAILURE_STATUS; + + case SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS: + return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_RX_STATUS; + + case SAI_PORT_ATTR_PRBS_CONFIG: + return lemming::dataplane::sai::PORT_ATTR_PRBS_CONFIG; + + case SAI_PORT_ATTR_PRBS_LOCK_STATUS: + return lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_STATUS; + + case SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS: + return lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_LOSS_STATUS; + + case SAI_PORT_ATTR_PRBS_RX_STATUS: + return lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATUS; + + case SAI_PORT_ATTR_PRBS_RX_STATE: + return lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATE; + + case SAI_PORT_ATTR_AUTO_NEG_STATUS: + return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_STATUS; + + case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: + return lemming::dataplane::sai::PORT_ATTR_DISABLE_DECREMENT_TTL; + + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP; + + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + return lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; + + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return lemming::dataplane::sai:: + PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case SAI_PORT_ATTR_TPID: + return lemming::dataplane::sai::PORT_ATTR_TPID; + + case SAI_PORT_ATTR_ERR_STATUS_LIST: + return lemming::dataplane::sai::PORT_ATTR_ERR_STATUS_LIST; + + case SAI_PORT_ATTR_FABRIC_ATTACHED: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED; + + case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE; + + case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID; + + case SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX; + + case SAI_PORT_ATTR_FABRIC_REACHABILITY: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_REACHABILITY; + + case SAI_PORT_ATTR_SYSTEM_PORT: + return lemming::dataplane::sai::PORT_ATTR_SYSTEM_PORT; + + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: + return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE; + + case SAI_PORT_ATTR_LOOPBACK_MODE: + return lemming::dataplane::sai::PORT_ATTR_LOOPBACK_MODE; + + case SAI_PORT_ATTR_MDIX_MODE_STATUS: + return lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_STATUS; + + case SAI_PORT_ATTR_MDIX_MODE_CONFIG: + return lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_CONFIG; + + case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: + return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_CONFIG_MODE; + + case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: + return lemming::dataplane::sai::PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT; + + case SAI_PORT_ATTR_MODULE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_MODULE_TYPE; + + case SAI_PORT_ATTR_DUAL_MEDIA: + return lemming::dataplane::sai::PORT_ATTR_DUAL_MEDIA; + + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: + return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED; + + case SAI_PORT_ATTR_IPG: + return lemming::dataplane::sai::PORT_ATTR_IPG; + + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: + return lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD; + + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: + return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD; + + case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + return lemming::dataplane::sai:: + PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; + + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + return lemming::dataplane::sai:: + PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; + + case SAI_PORT_ATTR_IPSEC_PORT: + return lemming::dataplane::sai::PORT_ATTR_IPSEC_PORT; + + case SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE: + return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE; + + case SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL: + return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL; + + case SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE: + return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE; + + case SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL: + return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL; + + case SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: + return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE; + + case SAI_PORT_ATTR_RX_SIGNAL_DETECT: + return lemming::dataplane::sai::PORT_ATTR_RX_SIGNAL_DETECT; + + case SAI_PORT_ATTR_RX_LOCK_STATUS: + return lemming::dataplane::sai::PORT_ATTR_RX_LOCK_STATUS; + + case SAI_PORT_ATTR_PCS_RX_LINK_STATUS: + return lemming::dataplane::sai::PORT_ATTR_PCS_RX_LINK_STATUS; + + case SAI_PORT_ATTR_FEC_ALIGNMENT_LOCK: + return lemming::dataplane::sai::PORT_ATTR_FEC_ALIGNMENT_LOCK; + + case SAI_PORT_ATTR_FABRIC_ISOLATE: + return lemming::dataplane::sai::PORT_ATTR_FABRIC_ISOLATE; + + case SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: + return lemming::dataplane::sai:: + PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE; + + case SAI_PORT_ATTR_ARS_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_ARS_ENABLE; + + case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: + return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR; + + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE; + + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE; + + case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: + return lemming::dataplane::sai::PORT_ATTR_ARS_ALTERNATE_PATH; + + case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: + return lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA; + + case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: + return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_ALGORITHM; + + case SAI_PORT_ATTR_ECMP_HASH_SEED: + return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_SEED; + + case SAI_PORT_ATTR_ECMP_HASH_OFFSET: + return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_OFFSET; + + case SAI_PORT_ATTR_OPER_PORT_FEC_MODE: + return lemming::dataplane::sai::PORT_ATTR_OPER_PORT_FEC_MODE; + + case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_HOST_TX_SIGNAL_ENABLE; + + case SAI_PORT_ATTR_HOST_TX_READY_STATUS: + return lemming::dataplane::sai::PORT_ATTR_HOST_TX_READY_STATUS; + + case SAI_PORT_ATTR_PATH_TRACING_INTF: + return lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_INTF; + + case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: + return lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE; + + case SAI_PORT_ATTR_RX_FREQUENCY_OFFSET_PPM: + return lemming::dataplane::sai::PORT_ATTR_RX_FREQUENCY_OFFSET_PPM; + + case SAI_PORT_ATTR_RX_SNR: + return lemming::dataplane::sai::PORT_ATTR_RX_SNR; + + case SAI_PORT_ATTR_DATAPATH_ENABLE: + return lemming::dataplane::sai::PORT_ATTR_DATAPATH_ENABLE; + + case SAI_PORT_ATTR_CABLE_PAIR_STATE: + return lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_STATE; + + case SAI_PORT_ATTR_CABLE_PAIR_LENGTH: + return lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_LENGTH; + + case SAI_PORT_ATTR_CABLE_TYPE: + return lemming::dataplane::sai::PORT_ATTR_CABLE_TYPE; + + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: + return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT; + + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: + return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT; + + case SAI_PORT_ATTR_POE_PORT_ID: + return lemming::dataplane::sai::PORT_ATTR_POE_PORT_ID; + + case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE: + return lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE; + + case SAI_PORT_ATTR_UNRELIABLE_LOS: + return lemming::dataplane::sai::PORT_ATTR_UNRELIABLE_LOS; + + case SAI_PORT_ATTR_ERROR_STATUS: + return lemming::dataplane::sai::PORT_ATTR_ERROR_STATUS; + + case SAI_PORT_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::PORT_ATTR_STATS_COUNT_MODE; + + case SAI_PORT_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::PORT_ATTR_UNSPECIFIED; + } +} +sai_port_attr_t convert_sai_port_attr_t_to_sai( + lemming::dataplane::sai::PortAttr val) { + switch (val) { + case lemming::dataplane::sai::PORT_ATTR_TYPE: + return SAI_PORT_ATTR_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_OPER_STATUS: + return SAI_PORT_ATTR_OPER_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: + return SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: + return SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_QUEUES: + return SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES; + + case lemming::dataplane::sai::PORT_ATTR_QOS_QUEUE_LIST: + return SAI_PORT_ATTR_QOS_QUEUE_LIST; + + case lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: + return SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS; + + case lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: + return SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST; + + case lemming::dataplane::sai::PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: + return SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_SPEED: + return SAI_PORT_ATTR_SUPPORTED_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE: + return SAI_PORT_ATTR_SUPPORTED_FEC_MODE; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: + return SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: + return SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: + return SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: + return SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: + return SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_MEDIA_TYPE: + return SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_SPEED: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE; + + case lemming::dataplane::sai:: + PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: + return SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE; + + case lemming::dataplane::sai::PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: + return SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: + return SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST; + + case lemming::dataplane::sai::PORT_ATTR_EYE_VALUES: + return SAI_PORT_ATTR_EYE_VALUES; + + case lemming::dataplane::sai::PORT_ATTR_OPER_SPEED: + return SAI_PORT_ATTR_OPER_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_HW_LANE_LIST: + return SAI_PORT_ATTR_HW_LANE_LIST; + + case lemming::dataplane::sai::PORT_ATTR_SPEED: + return SAI_PORT_ATTR_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_FULL_DUPLEX_MODE: + return SAI_PORT_ATTR_FULL_DUPLEX_MODE; + + case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_MODE: + return SAI_PORT_ATTR_AUTO_NEG_MODE; + + case lemming::dataplane::sai::PORT_ATTR_ADMIN_STATE: + return SAI_PORT_ATTR_ADMIN_STATE; + + case lemming::dataplane::sai::PORT_ATTR_MEDIA_TYPE: + return SAI_PORT_ATTR_MEDIA_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_SPEED: + return SAI_PORT_ATTR_ADVERTISED_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE: + return SAI_PORT_ATTR_ADVERTISED_FEC_MODE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: + return SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: + return SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: + return SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: + return SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + return SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_MEDIA_TYPE: + return SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_OUI_CODE: + return SAI_PORT_ATTR_ADVERTISED_OUI_CODE; + + case lemming::dataplane::sai::PORT_ATTR_PORT_VLAN_ID: + return SAI_PORT_ATTR_PORT_VLAN_ID; + + case lemming::dataplane::sai::PORT_ATTR_DEFAULT_VLAN_PRIORITY: + return SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY; + + case lemming::dataplane::sai::PORT_ATTR_DROP_UNTAGGED: + return SAI_PORT_ATTR_DROP_UNTAGGED; + + case lemming::dataplane::sai::PORT_ATTR_DROP_TAGGED: + return SAI_PORT_ATTR_DROP_TAGGED; + + case lemming::dataplane::sai::PORT_ATTR_INTERNAL_LOOPBACK_MODE: + return SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE; + + case lemming::dataplane::sai::PORT_ATTR_USE_EXTENDED_FEC: + return SAI_PORT_ATTR_USE_EXTENDED_FEC; + + case lemming::dataplane::sai::PORT_ATTR_FEC_MODE: + return SAI_PORT_ATTR_FEC_MODE; + + case lemming::dataplane::sai::PORT_ATTR_FEC_MODE_EXTENDED: + return SAI_PORT_ATTR_FEC_MODE_EXTENDED; + + case lemming::dataplane::sai::PORT_ATTR_UPDATE_DSCP: + return SAI_PORT_ATTR_UPDATE_DSCP; + + case lemming::dataplane::sai::PORT_ATTR_MTU: + return SAI_PORT_ATTR_MTU; + + case lemming::dataplane::sai::PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: + return SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID; + + case lemming::dataplane::sai::PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: + return SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID; + + case lemming::dataplane::sai::PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: + return SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID; + + case lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: + return SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_ACL: + return SAI_PORT_ATTR_INGRESS_ACL; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_ACL: + return SAI_PORT_ATTR_EGRESS_ACL; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_MACSEC_ACL: + return SAI_PORT_ATTR_INGRESS_MACSEC_ACL; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_MACSEC_ACL: + return SAI_PORT_ATTR_EGRESS_MACSEC_ACL; + + case lemming::dataplane::sai::PORT_ATTR_MACSEC_PORT_LIST: + return SAI_PORT_ATTR_MACSEC_PORT_LIST; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_MIRROR_SESSION: + return SAI_PORT_ATTR_INGRESS_MIRROR_SESSION; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_MIRROR_SESSION: + return SAI_PORT_ATTR_EGRESS_MIRROR_SESSION; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + return SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: + return SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: + return SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: + return SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION; + + case lemming::dataplane::sai::PORT_ATTR_POLICER_ID: + return SAI_PORT_ATTR_POLICER_ID; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DEFAULT_TC: + return SAI_PORT_ATTR_QOS_DEFAULT_TC; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_TC_MAP: + return SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: + return SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_TC_MAP: + return SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: + return SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + return SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: + return SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP; + + case lemming::dataplane::sai:: + PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: + return SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: + return SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: + return SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID; + + case lemming::dataplane::sai::PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: + return SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST; + + case lemming::dataplane::sai::PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: + return SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST; + + case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: + return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE; + + case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL: + return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL; + + case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: + return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX; + + case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: + return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX; + + case lemming::dataplane::sai::PORT_ATTR_META_DATA: + return SAI_PORT_ATTR_META_DATA; + + case lemming::dataplane::sai::PORT_ATTR_EGRESS_BLOCK_PORT_LIST: + return SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST; + + case lemming::dataplane::sai::PORT_ATTR_HW_PROFILE_ID: + return SAI_PORT_ATTR_HW_PROFILE_ID; + + case lemming::dataplane::sai::PORT_ATTR_EEE_ENABLE: + return SAI_PORT_ATTR_EEE_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_EEE_IDLE_TIME: + return SAI_PORT_ATTR_EEE_IDLE_TIME; + + case lemming::dataplane::sai::PORT_ATTR_EEE_WAKE_TIME: + return SAI_PORT_ATTR_EEE_WAKE_TIME; + + case lemming::dataplane::sai::PORT_ATTR_PORT_POOL_LIST: + return SAI_PORT_ATTR_PORT_POOL_LIST; + + case lemming::dataplane::sai::PORT_ATTR_ISOLATION_GROUP: + return SAI_PORT_ATTR_ISOLATION_GROUP; + + case lemming::dataplane::sai::PORT_ATTR_PKT_TX_ENABLE: + return SAI_PORT_ATTR_PKT_TX_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_TAM_OBJECT: + return SAI_PORT_ATTR_TAM_OBJECT; + + case lemming::dataplane::sai::PORT_ATTR_SERDES_PREEMPHASIS: + return SAI_PORT_ATTR_SERDES_PREEMPHASIS; + + case lemming::dataplane::sai::PORT_ATTR_SERDES_IDRIVER: + return SAI_PORT_ATTR_SERDES_IDRIVER; + + case lemming::dataplane::sai::PORT_ATTR_SERDES_IPREDRIVER: + return SAI_PORT_ATTR_SERDES_IPREDRIVER; + + case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_ENABLE: + return SAI_PORT_ATTR_LINK_TRAINING_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_PTP_MODE: + return SAI_PORT_ATTR_PTP_MODE; + + case lemming::dataplane::sai::PORT_ATTR_INTERFACE_TYPE: + return SAI_PORT_ATTR_INTERFACE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_INTERFACE_TYPE: + return SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_REFERENCE_CLOCK: + return SAI_PORT_ATTR_REFERENCE_CLOCK; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_POLYNOMIAL: + return SAI_PORT_ATTR_PRBS_POLYNOMIAL; + + case lemming::dataplane::sai::PORT_ATTR_PORT_SERDES_ID: + return SAI_PORT_ATTR_PORT_SERDES_ID; + + case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: + return SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_RX_STATUS: + return SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_CONFIG: + return SAI_PORT_ATTR_PRBS_CONFIG; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_STATUS: + return SAI_PORT_ATTR_PRBS_LOCK_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_LOSS_STATUS: + return SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATUS: + return SAI_PORT_ATTR_PRBS_RX_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATE: + return SAI_PORT_ATTR_PRBS_RX_STATE; + + case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_STATUS: + return SAI_PORT_ATTR_AUTO_NEG_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_DISABLE_DECREMENT_TTL: + return SAI_PORT_ATTR_DISABLE_DECREMENT_TTL; + + case lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; + + case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case lemming::dataplane::sai::PORT_ATTR_TPID: + return SAI_PORT_ATTR_TPID; + + case lemming::dataplane::sai::PORT_ATTR_ERR_STATUS_LIST: + return SAI_PORT_ATTR_ERR_STATUS_LIST; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED: + return SAI_PORT_ATTR_FABRIC_ATTACHED; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: + return SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: + return SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: + return SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_REACHABILITY: + return SAI_PORT_ATTR_FABRIC_REACHABILITY; + + case lemming::dataplane::sai::PORT_ATTR_SYSTEM_PORT: + return SAI_PORT_ATTR_SYSTEM_PORT; + + case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: + return SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE; + + case lemming::dataplane::sai::PORT_ATTR_LOOPBACK_MODE: + return SAI_PORT_ATTR_LOOPBACK_MODE; + + case lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_STATUS: + return SAI_PORT_ATTR_MDIX_MODE_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_CONFIG: + return SAI_PORT_ATTR_MDIX_MODE_CONFIG; + + case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_CONFIG_MODE: + return SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE; + + case lemming::dataplane::sai::PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: + return SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT; + + case lemming::dataplane::sai::PORT_ATTR_MODULE_TYPE: + return SAI_PORT_ATTR_MODULE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_DUAL_MEDIA: + return SAI_PORT_ATTR_DUAL_MEDIA; + + case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: + return SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED; + + case lemming::dataplane::sai::PORT_ATTR_IPG: + return SAI_PORT_ATTR_IPG; + + case lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: + return SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD; + + case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: + return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD; + + case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + return SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; + + case lemming::dataplane::sai:: + PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; + + case lemming::dataplane::sai::PORT_ATTR_IPSEC_PORT: + return SAI_PORT_ATTR_IPSEC_PORT; + + case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE: + return SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE; + + case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL: + return SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL; + + case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE: + return SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE; + + case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL: + return SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL; + + case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: + return SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE; + + case lemming::dataplane::sai::PORT_ATTR_RX_SIGNAL_DETECT: + return SAI_PORT_ATTR_RX_SIGNAL_DETECT; + + case lemming::dataplane::sai::PORT_ATTR_RX_LOCK_STATUS: + return SAI_PORT_ATTR_RX_LOCK_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PCS_RX_LINK_STATUS: + return SAI_PORT_ATTR_PCS_RX_LINK_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_FEC_ALIGNMENT_LOCK: + return SAI_PORT_ATTR_FEC_ALIGNMENT_LOCK; + + case lemming::dataplane::sai::PORT_ATTR_FABRIC_ISOLATE: + return SAI_PORT_ATTR_FABRIC_ISOLATE; + + case lemming::dataplane::sai::PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: + return SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE; + + case lemming::dataplane::sai::PORT_ATTR_ARS_ENABLE: + return SAI_PORT_ATTR_ARS_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: + return SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR; + + case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: + return SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: + return SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_ARS_ALTERNATE_PATH: + return SAI_PORT_ATTR_ARS_ALTERNATE_PATH; + + case lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: + return SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA; + + case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_ALGORITHM: + return SAI_PORT_ATTR_ECMP_HASH_ALGORITHM; + + case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_SEED: + return SAI_PORT_ATTR_ECMP_HASH_SEED; + + case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_OFFSET: + return SAI_PORT_ATTR_ECMP_HASH_OFFSET; + + case lemming::dataplane::sai::PORT_ATTR_OPER_PORT_FEC_MODE: + return SAI_PORT_ATTR_OPER_PORT_FEC_MODE; + + case lemming::dataplane::sai::PORT_ATTR_HOST_TX_SIGNAL_ENABLE: + return SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_HOST_TX_READY_STATUS: + return SAI_PORT_ATTR_HOST_TX_READY_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_INTF: + return SAI_PORT_ATTR_PATH_TRACING_INTF; + + case lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: + return SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_RX_FREQUENCY_OFFSET_PPM: + return SAI_PORT_ATTR_RX_FREQUENCY_OFFSET_PPM; + + case lemming::dataplane::sai::PORT_ATTR_RX_SNR: + return SAI_PORT_ATTR_RX_SNR; + + case lemming::dataplane::sai::PORT_ATTR_DATAPATH_ENABLE: + return SAI_PORT_ATTR_DATAPATH_ENABLE; + + case lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_STATE: + return SAI_PORT_ATTR_CABLE_PAIR_STATE; + + case lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_LENGTH: + return SAI_PORT_ATTR_CABLE_PAIR_LENGTH; + + case lemming::dataplane::sai::PORT_ATTR_CABLE_TYPE: + return SAI_PORT_ATTR_CABLE_TYPE; + + case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: + return SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT; + + case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: + return SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT; + + case lemming::dataplane::sai::PORT_ATTR_POE_PORT_ID: + return SAI_PORT_ATTR_POE_PORT_ID; + + case lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE: + return SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE; + + case lemming::dataplane::sai::PORT_ATTR_UNRELIABLE_LOS: + return SAI_PORT_ATTR_UNRELIABLE_LOS; + + case lemming::dataplane::sai::PORT_ATTR_ERROR_STATUS: + return SAI_PORT_ATTR_ERROR_STATUS; + + case lemming::dataplane::sai::PORT_ATTR_STATS_COUNT_MODE: + return SAI_PORT_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::PORT_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_PORT_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_PORT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortAutoNegConfigMode +convert_sai_port_auto_neg_config_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED: + return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_DISABLED; + + case SAI_PORT_AUTO_NEG_CONFIG_MODE_AUTO: + return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_AUTO; + + case SAI_PORT_AUTO_NEG_CONFIG_MODE_SLAVE: + return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_SLAVE; + + case SAI_PORT_AUTO_NEG_CONFIG_MODE_MASTER: + return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_MASTER; + + default: + return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_UNSPECIFIED; + } +} +sai_port_auto_neg_config_mode_t convert_sai_port_auto_neg_config_mode_t_to_sai( + lemming::dataplane::sai::PortAutoNegConfigMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_DISABLED: + return SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED; + + case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_AUTO: + return SAI_PORT_AUTO_NEG_CONFIG_MODE_AUTO; + + case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_SLAVE: + return SAI_PORT_AUTO_NEG_CONFIG_MODE_SLAVE; + + case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_MASTER: + return SAI_PORT_AUTO_NEG_CONFIG_MODE_MASTER; + + default: + return SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_auto_neg_config_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_auto_neg_config_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_auto_neg_config_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_auto_neg_config_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortBreakoutModeType +convert_sai_port_breakout_mode_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_1_LANE; + + case SAI_PORT_BREAKOUT_MODE_TYPE_2_LANE: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_2_LANE; + + case SAI_PORT_BREAKOUT_MODE_TYPE_4_LANE: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_4_LANE; + + case SAI_PORT_BREAKOUT_MODE_TYPE_8_LANE: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_8_LANE; + + case SAI_PORT_BREAKOUT_MODE_TYPE_MAX: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_MAX; + + default: + return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_UNSPECIFIED; + } +} +sai_port_breakout_mode_type_t convert_sai_port_breakout_mode_type_t_to_sai( + lemming::dataplane::sai::PortBreakoutModeType val) { + switch (val) { + case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_1_LANE: + return SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE; + + case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_2_LANE: + return SAI_PORT_BREAKOUT_MODE_TYPE_2_LANE; + + case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_4_LANE: + return SAI_PORT_BREAKOUT_MODE_TYPE_4_LANE; + + case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_8_LANE: + return SAI_PORT_BREAKOUT_MODE_TYPE_8_LANE; + + case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_MAX: + return SAI_PORT_BREAKOUT_MODE_TYPE_MAX; + + default: + return SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_breakout_mode_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_breakout_mode_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_breakout_mode_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_breakout_mode_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortCablePairState +convert_sai_port_cable_pair_state_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_CABLE_PAIR_STATE_OK: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OK; + + case SAI_PORT_CABLE_PAIR_STATE_OPEN: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OPEN; + + case SAI_PORT_CABLE_PAIR_STATE_SHORT: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_SHORT; + + case SAI_PORT_CABLE_PAIR_STATE_CROSSTALK: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_CROSSTALK; + + case SAI_PORT_CABLE_PAIR_STATE_UNKNOWN: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNKNOWN; + + default: + return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNSPECIFIED; + } +} +sai_port_cable_pair_state_t convert_sai_port_cable_pair_state_t_to_sai( + lemming::dataplane::sai::PortCablePairState val) { + switch (val) { + case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OK: + return SAI_PORT_CABLE_PAIR_STATE_OK; + + case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OPEN: + return SAI_PORT_CABLE_PAIR_STATE_OPEN; + + case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_SHORT: + return SAI_PORT_CABLE_PAIR_STATE_SHORT; + + case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_CROSSTALK: + return SAI_PORT_CABLE_PAIR_STATE_CROSSTALK; + + case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNKNOWN: + return SAI_PORT_CABLE_PAIR_STATE_UNKNOWN; + + default: + return SAI_PORT_CABLE_PAIR_STATE_OK; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_cable_pair_state_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_cable_pair_state_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_cable_pair_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_cable_pair_state_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortCableType convert_sai_port_cable_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_CABLE_TYPE_UNKNOWN: + return lemming::dataplane::sai::PORT_CABLE_TYPE_UNKNOWN; + + case SAI_PORT_CABLE_TYPE_CAT5: + return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5; + + case SAI_PORT_CABLE_TYPE_CAT5E: + return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5E; + + case SAI_PORT_CABLE_TYPE_CAT6: + return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6; + + case SAI_PORT_CABLE_TYPE_CAT6A: + return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6A; + + case SAI_PORT_CABLE_TYPE_CAT7: + return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT7; + + default: + return lemming::dataplane::sai::PORT_CABLE_TYPE_UNSPECIFIED; + } +} +sai_port_cable_type_t convert_sai_port_cable_type_t_to_sai( + lemming::dataplane::sai::PortCableType val) { + switch (val) { + case lemming::dataplane::sai::PORT_CABLE_TYPE_UNKNOWN: + return SAI_PORT_CABLE_TYPE_UNKNOWN; + + case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5: + return SAI_PORT_CABLE_TYPE_CAT5; + + case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5E: + return SAI_PORT_CABLE_TYPE_CAT5E; + + case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6: + return SAI_PORT_CABLE_TYPE_CAT6; + + case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6A: + return SAI_PORT_CABLE_TYPE_CAT6A; + + case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT7: + return SAI_PORT_CABLE_TYPE_CAT7; + + default: + return SAI_PORT_CABLE_TYPE_UNKNOWN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_cable_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_cable_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_cable_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_cable_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortConnectorAttr +convert_sai_port_connector_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: + return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; + + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: + return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID; + + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: + return lemming::dataplane::sai:: + PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID; + + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: + return lemming::dataplane::sai:: + PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID; + + case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: + return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_FAILOVER_MODE; + + default: + return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_UNSPECIFIED; + } +} +sai_port_connector_attr_t convert_sai_port_connector_attr_t_to_sai( + lemming::dataplane::sai::PortConnectorAttr val) { + switch (val) { + case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: + return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; + + case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: + return SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID; + + case lemming::dataplane::sai:: + PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: + return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID; + + case lemming::dataplane::sai:: + PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: + return SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID; + + case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_FAILOVER_MODE: + return SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE; + + default: + return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_connector_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_connector_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_connector_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_connector_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortConnectorFailoverMode +convert_sai_port_connector_failover_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE: + return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_DISABLE; + + case SAI_PORT_CONNECTOR_FAILOVER_MODE_PRIMARY: + return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_PRIMARY; + + case SAI_PORT_CONNECTOR_FAILOVER_MODE_SECONDARY: + return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_SECONDARY; + + default: + return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_UNSPECIFIED; + } +} +sai_port_connector_failover_mode_t +convert_sai_port_connector_failover_mode_t_to_sai( + lemming::dataplane::sai::PortConnectorFailoverMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_DISABLE: + return SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE; + + case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_PRIMARY: + return SAI_PORT_CONNECTOR_FAILOVER_MODE_PRIMARY; + + case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_SECONDARY: + return SAI_PORT_CONNECTOR_FAILOVER_MODE_SECONDARY; + + default: + return SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_connector_failover_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_connector_failover_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_connector_failover_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_connector_failover_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortDatapathEnable +convert_sai_port_datapath_enable_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE: + return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; + + case SAI_PORT_DATAPATH_ENABLE_PCS_IEEE_MODE: + return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PCS_IEEE_MODE; + + default: + return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_UNSPECIFIED; + } +} +sai_port_datapath_enable_t convert_sai_port_datapath_enable_t_to_sai( + lemming::dataplane::sai::PortDatapathEnable val) { + switch (val) { + case lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE: + return SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; + + case lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PCS_IEEE_MODE: + return SAI_PORT_DATAPATH_ENABLE_PCS_IEEE_MODE; + + default: + return SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_datapath_enable_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_datapath_enable_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_datapath_enable_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_datapath_enable_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortDualMedia convert_sai_port_dual_media_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_DUAL_MEDIA_NONE: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_NONE; + + case SAI_PORT_DUAL_MEDIA_COPPER_ONLY: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_ONLY; + + case SAI_PORT_DUAL_MEDIA_FIBER_ONLY: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_ONLY; + + case SAI_PORT_DUAL_MEDIA_COPPER_PREFERRED: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_PREFERRED; + + case SAI_PORT_DUAL_MEDIA_FIBER_PREFERRED: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_PREFERRED; + + default: + return lemming::dataplane::sai::PORT_DUAL_MEDIA_UNSPECIFIED; + } +} +sai_port_dual_media_t convert_sai_port_dual_media_t_to_sai( + lemming::dataplane::sai::PortDualMedia val) { + switch (val) { + case lemming::dataplane::sai::PORT_DUAL_MEDIA_NONE: + return SAI_PORT_DUAL_MEDIA_NONE; + + case lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_ONLY: + return SAI_PORT_DUAL_MEDIA_COPPER_ONLY; + + case lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_ONLY: + return SAI_PORT_DUAL_MEDIA_FIBER_ONLY; + + case lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_PREFERRED: + return SAI_PORT_DUAL_MEDIA_COPPER_PREFERRED; + + case lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_PREFERRED: + return SAI_PORT_DUAL_MEDIA_FIBER_PREFERRED; + + default: + return SAI_PORT_DUAL_MEDIA_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_dual_media_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_dual_media_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_dual_media_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_dual_media_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortErrStatus convert_sai_port_err_status_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR: + return lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; + + case SAI_PORT_ERR_STATUS_DATA_UNIT_SIZE: + return lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_SIZE; + + case SAI_PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: + return lemming::dataplane::sai:: + PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; + + case SAI_PORT_ERR_STATUS_CODE_GROUP_ERROR: + return lemming::dataplane::sai::PORT_ERR_STATUS_CODE_GROUP_ERROR; + + case SAI_PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR: + return lemming::dataplane::sai::PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR; + + case SAI_PORT_ERR_STATUS_NO_RX_REACHABILITY: + return lemming::dataplane::sai::PORT_ERR_STATUS_NO_RX_REACHABILITY; + + case SAI_PORT_ERR_STATUS_CRC_RATE: + return lemming::dataplane::sai::PORT_ERR_STATUS_CRC_RATE; + + case SAI_PORT_ERR_STATUS_REMOTE_FAULT_STATUS: + return lemming::dataplane::sai::PORT_ERR_STATUS_REMOTE_FAULT_STATUS; + + case SAI_PORT_ERR_STATUS_MAX: + return lemming::dataplane::sai::PORT_ERR_STATUS_MAX; + + default: + return lemming::dataplane::sai::PORT_ERR_STATUS_UNSPECIFIED; + } +} +sai_port_err_status_t convert_sai_port_err_status_t_to_sai( + lemming::dataplane::sai::PortErrStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR: + return SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; + + case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_SIZE: + return SAI_PORT_ERR_STATUS_DATA_UNIT_SIZE; + + case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: + return SAI_PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; + + case lemming::dataplane::sai::PORT_ERR_STATUS_CODE_GROUP_ERROR: + return SAI_PORT_ERR_STATUS_CODE_GROUP_ERROR; + + case lemming::dataplane::sai::PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR: + return SAI_PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR; + + case lemming::dataplane::sai::PORT_ERR_STATUS_NO_RX_REACHABILITY: + return SAI_PORT_ERR_STATUS_NO_RX_REACHABILITY; + + case lemming::dataplane::sai::PORT_ERR_STATUS_CRC_RATE: + return SAI_PORT_ERR_STATUS_CRC_RATE; + + case lemming::dataplane::sai::PORT_ERR_STATUS_REMOTE_FAULT_STATUS: + return SAI_PORT_ERR_STATUS_REMOTE_FAULT_STATUS; + + case lemming::dataplane::sai::PORT_ERR_STATUS_MAX: + return SAI_PORT_ERR_STATUS_MAX; + + default: + return SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_err_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_err_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_err_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_err_status_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortErrorStatus +convert_sai_port_error_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_ERROR_STATUS_CLEAR: + return lemming::dataplane::sai::PORT_ERROR_STATUS_CLEAR; + + case SAI_PORT_ERROR_STATUS_MAC_LOCAL_FAULT: + return lemming::dataplane::sai::PORT_ERROR_STATUS_MAC_LOCAL_FAULT; + + case SAI_PORT_ERROR_STATUS_MAC_REMOTE_FAULT: + return lemming::dataplane::sai::PORT_ERROR_STATUS_MAC_REMOTE_FAULT; + + case SAI_PORT_ERROR_STATUS_FEC_SYNC_LOSS: + return lemming::dataplane::sai::PORT_ERROR_STATUS_FEC_SYNC_LOSS; + + case SAI_PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER: + return lemming::dataplane::sai:: + PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER; + + case SAI_PORT_ERROR_STATUS_HIGH_SER: + return lemming::dataplane::sai::PORT_ERROR_STATUS_HIGH_SER; + + case SAI_PORT_ERROR_STATUS_HIGH_BER: + return lemming::dataplane::sai::PORT_ERROR_STATUS_HIGH_BER; + + case SAI_PORT_ERROR_STATUS_CRC_RATE: + return lemming::dataplane::sai::PORT_ERROR_STATUS_CRC_RATE; + + case SAI_PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR: + return lemming::dataplane::sai::PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR; + + case SAI_PORT_ERROR_STATUS_DATA_UNIT_SIZE: + return lemming::dataplane::sai::PORT_ERROR_STATUS_DATA_UNIT_SIZE; + + case SAI_PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: + return lemming::dataplane::sai:: + PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; + + case SAI_PORT_ERROR_STATUS_CODE_GROUP_ERROR: + return lemming::dataplane::sai::PORT_ERROR_STATUS_CODE_GROUP_ERROR; + + case SAI_PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR: + return lemming::dataplane::sai::PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR; + + case SAI_PORT_ERROR_STATUS_NO_RX_REACHABILITY: + return lemming::dataplane::sai::PORT_ERROR_STATUS_NO_RX_REACHABILITY; + + default: + return lemming::dataplane::sai::PORT_ERROR_STATUS_UNSPECIFIED; + } +} +sai_port_error_status_t convert_sai_port_error_status_t_to_sai( + lemming::dataplane::sai::PortErrorStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_ERROR_STATUS_CLEAR: + return SAI_PORT_ERROR_STATUS_CLEAR; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_MAC_LOCAL_FAULT: + return SAI_PORT_ERROR_STATUS_MAC_LOCAL_FAULT; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_MAC_REMOTE_FAULT: + return SAI_PORT_ERROR_STATUS_MAC_REMOTE_FAULT; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_FEC_SYNC_LOSS: + return SAI_PORT_ERROR_STATUS_FEC_SYNC_LOSS; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER: + return SAI_PORT_ERROR_STATUS_FEC_LOSS_ALIGNMENT_MARKER; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_HIGH_SER: + return SAI_PORT_ERROR_STATUS_HIGH_SER; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_HIGH_BER: + return SAI_PORT_ERROR_STATUS_HIGH_BER; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_CRC_RATE: + return SAI_PORT_ERROR_STATUS_CRC_RATE; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR: + return SAI_PORT_ERROR_STATUS_DATA_UNIT_CRC_ERROR; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_DATA_UNIT_SIZE: + return SAI_PORT_ERROR_STATUS_DATA_UNIT_SIZE; + + case lemming::dataplane::sai:: + PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: + return SAI_PORT_ERROR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_CODE_GROUP_ERROR: + return SAI_PORT_ERROR_STATUS_CODE_GROUP_ERROR; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR: + return SAI_PORT_ERROR_STATUS_SIGNAL_LOCAL_ERROR; + + case lemming::dataplane::sai::PORT_ERROR_STATUS_NO_RX_REACHABILITY: + return SAI_PORT_ERROR_STATUS_NO_RX_REACHABILITY; + + default: + return SAI_PORT_ERROR_STATUS_CLEAR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_error_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_error_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_error_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_error_status_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortFecModeExtended +convert_sai_port_fec_mode_extended_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_FEC_MODE_EXTENDED_NONE: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_NONE; + + case SAI_PORT_FEC_MODE_EXTENDED_RS528: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS528; + + case SAI_PORT_FEC_MODE_EXTENDED_RS544: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544; + + case SAI_PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED; + + case SAI_PORT_FEC_MODE_EXTENDED_FC: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_FC; + + default: + return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_UNSPECIFIED; + } +} +sai_port_fec_mode_extended_t convert_sai_port_fec_mode_extended_t_to_sai( + lemming::dataplane::sai::PortFecModeExtended val) { + switch (val) { + case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_NONE: + return SAI_PORT_FEC_MODE_EXTENDED_NONE; + + case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS528: + return SAI_PORT_FEC_MODE_EXTENDED_RS528; + + case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544: + return SAI_PORT_FEC_MODE_EXTENDED_RS544; + + case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED: + return SAI_PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED; + + case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_FC: + return SAI_PORT_FEC_MODE_EXTENDED_FC; + + default: + return SAI_PORT_FEC_MODE_EXTENDED_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_fec_mode_extended_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_fec_mode_extended_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_fec_mode_extended_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_fec_mode_extended_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortFecMode convert_sai_port_fec_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_FEC_MODE_NONE: + return lemming::dataplane::sai::PORT_FEC_MODE_NONE; + + case SAI_PORT_FEC_MODE_RS: + return lemming::dataplane::sai::PORT_FEC_MODE_RS; + + case SAI_PORT_FEC_MODE_FC: + return lemming::dataplane::sai::PORT_FEC_MODE_FC; + + default: + return lemming::dataplane::sai::PORT_FEC_MODE_UNSPECIFIED; + } +} +sai_port_fec_mode_t convert_sai_port_fec_mode_t_to_sai( + lemming::dataplane::sai::PortFecMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_FEC_MODE_NONE: + return SAI_PORT_FEC_MODE_NONE; + + case lemming::dataplane::sai::PORT_FEC_MODE_RS: + return SAI_PORT_FEC_MODE_RS; + + case lemming::dataplane::sai::PORT_FEC_MODE_FC: + return SAI_PORT_FEC_MODE_FC; + + default: + return SAI_PORT_FEC_MODE_NONE; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_fec_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_fec_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_fec_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_fec_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortFlowControlMode +convert_sai_port_flow_control_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_FLOW_CONTROL_MODE_DISABLE: + return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_DISABLE; + + case SAI_PORT_FLOW_CONTROL_MODE_TX_ONLY: + return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_TX_ONLY; + + case SAI_PORT_FLOW_CONTROL_MODE_RX_ONLY: + return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_RX_ONLY; + + case SAI_PORT_FLOW_CONTROL_MODE_BOTH_ENABLE: + return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_BOTH_ENABLE; + + default: + return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_UNSPECIFIED; + } +} +sai_port_flow_control_mode_t convert_sai_port_flow_control_mode_t_to_sai( + lemming::dataplane::sai::PortFlowControlMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_DISABLE: + return SAI_PORT_FLOW_CONTROL_MODE_DISABLE; + + case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_TX_ONLY: + return SAI_PORT_FLOW_CONTROL_MODE_TX_ONLY; + + case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_RX_ONLY: + return SAI_PORT_FLOW_CONTROL_MODE_RX_ONLY; + + case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_BOTH_ENABLE: + return SAI_PORT_FLOW_CONTROL_MODE_BOTH_ENABLE; + + default: + return SAI_PORT_FLOW_CONTROL_MODE_DISABLE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_flow_control_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_flow_control_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_flow_control_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_flow_control_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortHostTxReadyStatus +convert_sai_port_host_tx_ready_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_HOST_TX_READY_STATUS_NOT_READY: + return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_NOT_READY; + + case SAI_PORT_HOST_TX_READY_STATUS_READY: + return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_READY; + + default: + return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_UNSPECIFIED; + } +} +sai_port_host_tx_ready_status_t convert_sai_port_host_tx_ready_status_t_to_sai( + lemming::dataplane::sai::PortHostTxReadyStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_NOT_READY: + return SAI_PORT_HOST_TX_READY_STATUS_NOT_READY; + + case lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_READY: + return SAI_PORT_HOST_TX_READY_STATUS_READY; + + default: + return SAI_PORT_HOST_TX_READY_STATUS_NOT_READY; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_host_tx_ready_status_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_host_tx_ready_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_host_tx_ready_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_host_tx_ready_status_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortInterfaceType +convert_sai_port_interface_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_INTERFACE_TYPE_NONE: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_NONE; + + case SAI_PORT_INTERFACE_TYPE_CR: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR; + + case SAI_PORT_INTERFACE_TYPE_CR2: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR2; + + case SAI_PORT_INTERFACE_TYPE_CR4: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR4; + + case SAI_PORT_INTERFACE_TYPE_SR: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR; + + case SAI_PORT_INTERFACE_TYPE_SR2: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR2; + + case SAI_PORT_INTERFACE_TYPE_SR4: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR4; + + case SAI_PORT_INTERFACE_TYPE_LR: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR; + + case SAI_PORT_INTERFACE_TYPE_LR4: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR4; + + case SAI_PORT_INTERFACE_TYPE_KR: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR; + + case SAI_PORT_INTERFACE_TYPE_KR4: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR4; + + case SAI_PORT_INTERFACE_TYPE_CAUI: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI; + + case SAI_PORT_INTERFACE_TYPE_GMII: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_GMII; + + case SAI_PORT_INTERFACE_TYPE_SFI: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SFI; + + case SAI_PORT_INTERFACE_TYPE_XLAUI: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XLAUI; + + case SAI_PORT_INTERFACE_TYPE_KR2: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR2; + + case SAI_PORT_INTERFACE_TYPE_CAUI4: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI4; + + case SAI_PORT_INTERFACE_TYPE_XAUI: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XAUI; + + case SAI_PORT_INTERFACE_TYPE_XFI: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XFI; + + case SAI_PORT_INTERFACE_TYPE_XGMII: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XGMII; + + case SAI_PORT_INTERFACE_TYPE_CR8: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR8; + + case SAI_PORT_INTERFACE_TYPE_KR8: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR8; + + case SAI_PORT_INTERFACE_TYPE_SR8: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR8; + + case SAI_PORT_INTERFACE_TYPE_LR8: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR8; + + case SAI_PORT_INTERFACE_TYPE_USXGMII: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_USXGMII; + + case SAI_PORT_INTERFACE_TYPE_MAX: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_MAX; + + default: + return lemming::dataplane::sai::PORT_INTERFACE_TYPE_UNSPECIFIED; + } +} +sai_port_interface_type_t convert_sai_port_interface_type_t_to_sai( + lemming::dataplane::sai::PortInterfaceType val) { + switch (val) { + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_NONE: + return SAI_PORT_INTERFACE_TYPE_NONE; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR: + return SAI_PORT_INTERFACE_TYPE_CR; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR2: + return SAI_PORT_INTERFACE_TYPE_CR2; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR4: + return SAI_PORT_INTERFACE_TYPE_CR4; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR: + return SAI_PORT_INTERFACE_TYPE_SR; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR2: + return SAI_PORT_INTERFACE_TYPE_SR2; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR4: + return SAI_PORT_INTERFACE_TYPE_SR4; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR: + return SAI_PORT_INTERFACE_TYPE_LR; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR4: + return SAI_PORT_INTERFACE_TYPE_LR4; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR: + return SAI_PORT_INTERFACE_TYPE_KR; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR4: + return SAI_PORT_INTERFACE_TYPE_KR4; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI: + return SAI_PORT_INTERFACE_TYPE_CAUI; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_GMII: + return SAI_PORT_INTERFACE_TYPE_GMII; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SFI: + return SAI_PORT_INTERFACE_TYPE_SFI; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XLAUI: + return SAI_PORT_INTERFACE_TYPE_XLAUI; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR2: + return SAI_PORT_INTERFACE_TYPE_KR2; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI4: + return SAI_PORT_INTERFACE_TYPE_CAUI4; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XAUI: + return SAI_PORT_INTERFACE_TYPE_XAUI; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XFI: + return SAI_PORT_INTERFACE_TYPE_XFI; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XGMII: + return SAI_PORT_INTERFACE_TYPE_XGMII; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR8: + return SAI_PORT_INTERFACE_TYPE_CR8; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR8: + return SAI_PORT_INTERFACE_TYPE_KR8; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR8: + return SAI_PORT_INTERFACE_TYPE_SR8; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR8: + return SAI_PORT_INTERFACE_TYPE_LR8; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_USXGMII: + return SAI_PORT_INTERFACE_TYPE_USXGMII; + + case lemming::dataplane::sai::PORT_INTERFACE_TYPE_MAX: + return SAI_PORT_INTERFACE_TYPE_MAX; + + default: + return SAI_PORT_INTERFACE_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_interface_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_interface_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_interface_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_interface_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortInternalLoopbackMode +convert_sai_port_internal_loopback_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE: + return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_NONE; + + case SAI_PORT_INTERNAL_LOOPBACK_MODE_PHY: + return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_PHY; + + case SAI_PORT_INTERNAL_LOOPBACK_MODE_MAC: + return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_MAC; + + default: + return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_UNSPECIFIED; + } +} +sai_port_internal_loopback_mode_t +convert_sai_port_internal_loopback_mode_t_to_sai( + lemming::dataplane::sai::PortInternalLoopbackMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_NONE: + return SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE; + + case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_PHY: + return SAI_PORT_INTERNAL_LOOPBACK_MODE_PHY; + + case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_MAC: + return SAI_PORT_INTERNAL_LOOPBACK_MODE_MAC; + + default: + return SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_internal_loopback_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_internal_loopback_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_internal_loopback_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_internal_loopback_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortLinkTrainingFailureStatus +convert_sai_port_link_training_failure_status_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR: + return lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; + + case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR: + return lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR; + + case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD: + return lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD; + + case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT: + return lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT; + + default: + return lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_UNSPECIFIED; + } +} +sai_port_link_training_failure_status_t +convert_sai_port_link_training_failure_status_t_to_sai( + lemming::dataplane::sai::PortLinkTrainingFailureStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR: + return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; + + case lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR: + return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR; + + case lemming::dataplane::sai:: + PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD: + return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD; + + case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT: + return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT; + + default: + return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_link_training_failure_status_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_link_training_failure_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_link_training_failure_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_link_training_failure_status_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortLinkTrainingRxStatus +convert_sai_port_link_training_rx_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED: + return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; + + case SAI_PORT_LINK_TRAINING_RX_STATUS_TRAINED: + return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_TRAINED; + + default: + return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_UNSPECIFIED; + } +} +sai_port_link_training_rx_status_t +convert_sai_port_link_training_rx_status_t_to_sai( + lemming::dataplane::sai::PortLinkTrainingRxStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED: + return SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; + + case lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_TRAINED: + return SAI_PORT_LINK_TRAINING_RX_STATUS_TRAINED; + + default: + return SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_link_training_rx_status_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_link_training_rx_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_link_training_rx_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_link_training_rx_status_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortLoopbackMode +convert_sai_port_loopback_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_LOOPBACK_MODE_NONE: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_NONE; + + case SAI_PORT_LOOPBACK_MODE_PHY: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY; + + case SAI_PORT_LOOPBACK_MODE_MAC: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC; + + case SAI_PORT_LOOPBACK_MODE_PHY_REMOTE: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY_REMOTE; + + case SAI_PORT_LOOPBACK_MODE_MAC_REMOTE: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC_REMOTE; + + default: + return lemming::dataplane::sai::PORT_LOOPBACK_MODE_UNSPECIFIED; + } +} +sai_port_loopback_mode_t convert_sai_port_loopback_mode_t_to_sai( + lemming::dataplane::sai::PortLoopbackMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_LOOPBACK_MODE_NONE: + return SAI_PORT_LOOPBACK_MODE_NONE; + + case lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY: + return SAI_PORT_LOOPBACK_MODE_PHY; + + case lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC: + return SAI_PORT_LOOPBACK_MODE_MAC; + + case lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY_REMOTE: + return SAI_PORT_LOOPBACK_MODE_PHY_REMOTE; + + case lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC_REMOTE: + return SAI_PORT_LOOPBACK_MODE_MAC_REMOTE; + + default: + return SAI_PORT_LOOPBACK_MODE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_loopback_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_loopback_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_loopback_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_loopback_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortMdixModeConfig +convert_sai_port_mdix_mode_config_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_MDIX_MODE_CONFIG_AUTO: + return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_AUTO; + + case SAI_PORT_MDIX_MODE_CONFIG_STRAIGHT: + return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_STRAIGHT; + + case SAI_PORT_MDIX_MODE_CONFIG_CROSSOVER: + return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_CROSSOVER; + + default: + return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_UNSPECIFIED; + } +} +sai_port_mdix_mode_config_t convert_sai_port_mdix_mode_config_t_to_sai( + lemming::dataplane::sai::PortMdixModeConfig val) { + switch (val) { + case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_AUTO: + return SAI_PORT_MDIX_MODE_CONFIG_AUTO; + + case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_STRAIGHT: + return SAI_PORT_MDIX_MODE_CONFIG_STRAIGHT; + + case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_CROSSOVER: + return SAI_PORT_MDIX_MODE_CONFIG_CROSSOVER; + + default: + return SAI_PORT_MDIX_MODE_CONFIG_AUTO; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_mdix_mode_config_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_mdix_mode_config_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_mdix_mode_config_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_mdix_mode_config_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortMdixModeStatus +convert_sai_port_mdix_mode_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_MDIX_MODE_STATUS_STRAIGHT: + return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_STRAIGHT; + + case SAI_PORT_MDIX_MODE_STATUS_CROSSOVER: + return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_CROSSOVER; + + default: + return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_UNSPECIFIED; + } +} +sai_port_mdix_mode_status_t convert_sai_port_mdix_mode_status_t_to_sai( + lemming::dataplane::sai::PortMdixModeStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_STRAIGHT: + return SAI_PORT_MDIX_MODE_STATUS_STRAIGHT; + + case lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_CROSSOVER: + return SAI_PORT_MDIX_MODE_STATUS_CROSSOVER; + + default: + return SAI_PORT_MDIX_MODE_STATUS_STRAIGHT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_mdix_mode_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_mdix_mode_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_mdix_mode_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_mdix_mode_status_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortMediaType convert_sai_port_media_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_MEDIA_TYPE_NOT_PRESENT: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_NOT_PRESENT; + + case SAI_PORT_MEDIA_TYPE_UNKNOWN: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_UNKNOWN; + + case SAI_PORT_MEDIA_TYPE_FIBER: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_FIBER; + + case SAI_PORT_MEDIA_TYPE_COPPER: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_COPPER; + + case SAI_PORT_MEDIA_TYPE_BACKPLANE: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_BACKPLANE; + + default: + return lemming::dataplane::sai::PORT_MEDIA_TYPE_UNSPECIFIED; + } +} +sai_port_media_type_t convert_sai_port_media_type_t_to_sai( + lemming::dataplane::sai::PortMediaType val) { + switch (val) { + case lemming::dataplane::sai::PORT_MEDIA_TYPE_NOT_PRESENT: + return SAI_PORT_MEDIA_TYPE_NOT_PRESENT; + + case lemming::dataplane::sai::PORT_MEDIA_TYPE_UNKNOWN: + return SAI_PORT_MEDIA_TYPE_UNKNOWN; + + case lemming::dataplane::sai::PORT_MEDIA_TYPE_FIBER: + return SAI_PORT_MEDIA_TYPE_FIBER; + + case lemming::dataplane::sai::PORT_MEDIA_TYPE_COPPER: + return SAI_PORT_MEDIA_TYPE_COPPER; + + case lemming::dataplane::sai::PORT_MEDIA_TYPE_BACKPLANE: + return SAI_PORT_MEDIA_TYPE_BACKPLANE; + + default: + return SAI_PORT_MEDIA_TYPE_NOT_PRESENT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_media_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_media_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_media_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_media_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortModuleType convert_sai_port_module_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_MODULE_TYPE_1000BASE_X: + return lemming::dataplane::sai::PORT_MODULE_TYPE_1000BASE_X; + + case SAI_PORT_MODULE_TYPE_100FX: + return lemming::dataplane::sai::PORT_MODULE_TYPE_100FX; + + case SAI_PORT_MODULE_TYPE_SGMII_SLAVE: + return lemming::dataplane::sai::PORT_MODULE_TYPE_SGMII_SLAVE; + + default: + return lemming::dataplane::sai::PORT_MODULE_TYPE_UNSPECIFIED; + } +} +sai_port_module_type_t convert_sai_port_module_type_t_to_sai( + lemming::dataplane::sai::PortModuleType val) { + switch (val) { + case lemming::dataplane::sai::PORT_MODULE_TYPE_1000BASE_X: + return SAI_PORT_MODULE_TYPE_1000BASE_X; + + case lemming::dataplane::sai::PORT_MODULE_TYPE_100FX: + return SAI_PORT_MODULE_TYPE_100FX; + + case lemming::dataplane::sai::PORT_MODULE_TYPE_SGMII_SLAVE: + return SAI_PORT_MODULE_TYPE_SGMII_SLAVE; + + default: + return SAI_PORT_MODULE_TYPE_1000BASE_X; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_module_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_module_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_module_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_module_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortOperStatus convert_sai_port_oper_status_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_OPER_STATUS_UNKNOWN: + return lemming::dataplane::sai::PORT_OPER_STATUS_UNKNOWN; + + case SAI_PORT_OPER_STATUS_UP: + return lemming::dataplane::sai::PORT_OPER_STATUS_UP; + + case SAI_PORT_OPER_STATUS_DOWN: + return lemming::dataplane::sai::PORT_OPER_STATUS_DOWN; + + case SAI_PORT_OPER_STATUS_TESTING: + return lemming::dataplane::sai::PORT_OPER_STATUS_TESTING; + + case SAI_PORT_OPER_STATUS_NOT_PRESENT: + return lemming::dataplane::sai::PORT_OPER_STATUS_NOT_PRESENT; + + default: + return lemming::dataplane::sai::PORT_OPER_STATUS_UNSPECIFIED; + } +} +sai_port_oper_status_t convert_sai_port_oper_status_t_to_sai( + lemming::dataplane::sai::PortOperStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_OPER_STATUS_UNKNOWN: + return SAI_PORT_OPER_STATUS_UNKNOWN; + + case lemming::dataplane::sai::PORT_OPER_STATUS_UP: + return SAI_PORT_OPER_STATUS_UP; + + case lemming::dataplane::sai::PORT_OPER_STATUS_DOWN: + return SAI_PORT_OPER_STATUS_DOWN; + + case lemming::dataplane::sai::PORT_OPER_STATUS_TESTING: + return SAI_PORT_OPER_STATUS_TESTING; + + case lemming::dataplane::sai::PORT_OPER_STATUS_NOT_PRESENT: + return SAI_PORT_OPER_STATUS_NOT_PRESENT; + + default: + return SAI_PORT_OPER_STATUS_UNKNOWN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_oper_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_oper_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_oper_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_oper_status_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPathTracingTimestampType +convert_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15: + return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; + + case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19: + return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19; + + case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23: + return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23; + + case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27: + return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27; + + default: + return lemming::dataplane::sai:: + PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED; + } +} +sai_port_path_tracing_timestamp_type_t +convert_sai_port_path_tracing_timestamp_type_t_to_sai( + lemming::dataplane::sai::PortPathTracingTimestampType val) { + switch (val) { + case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15: + return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; + + case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19: + return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19; + + case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23: + return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23; + + case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27: + return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27; + + default: + return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_path_tracing_timestamp_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_path_tracing_timestamp_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_path_tracing_timestamp_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_path_tracing_timestamp_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPoolAttr convert_sai_port_pool_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_POOL_ATTR_PORT_ID: + return lemming::dataplane::sai::PORT_POOL_ATTR_PORT_ID; + + case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: + return lemming::dataplane::sai::PORT_POOL_ATTR_BUFFER_POOL_ID; + + case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: + return lemming::dataplane::sai::PORT_POOL_ATTR_QOS_WRED_PROFILE_ID; + + default: + return lemming::dataplane::sai::PORT_POOL_ATTR_UNSPECIFIED; + } +} +sai_port_pool_attr_t convert_sai_port_pool_attr_t_to_sai( + lemming::dataplane::sai::PortPoolAttr val) { + switch (val) { + case lemming::dataplane::sai::PORT_POOL_ATTR_PORT_ID: + return SAI_PORT_POOL_ATTR_PORT_ID; + + case lemming::dataplane::sai::PORT_POOL_ATTR_BUFFER_POOL_ID: + return SAI_PORT_POOL_ATTR_BUFFER_POOL_ID; + + case lemming::dataplane::sai::PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: + return SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID; + + default: + return SAI_PORT_POOL_ATTR_PORT_ID; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_pool_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_pool_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_pool_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_pool_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPoolStat convert_sai_port_pool_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_POOL_STAT_IF_OCTETS: + return lemming::dataplane::sai::PORT_POOL_STAT_IF_OCTETS; + + case SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; + + case SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES; + + case SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai:: + PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; + + case SAI_PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS; + + case SAI_PORT_POOL_STAT_RED_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_BYTES; + + case SAI_PORT_POOL_STAT_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_PACKETS; + + case SAI_PORT_POOL_STAT_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_BYTES; + + case SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai:: + PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai:: + PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai:: + PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; + + case SAI_PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS; + + case SAI_PORT_POOL_STAT_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_BYTES; + + case SAI_PORT_POOL_STAT_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_POOL_STAT_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_WATERMARK_BYTES; + + case SAI_PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai:: + PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_POOL_STAT_SHARED_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_POOL_STAT_SHARED_WATERMARK_BYTES; + + case SAI_PORT_POOL_STAT_DROPPED_PKTS: + return lemming::dataplane::sai::PORT_POOL_STAT_DROPPED_PKTS; + + default: + return lemming::dataplane::sai::PORT_POOL_STAT_UNSPECIFIED; + } +} +sai_port_pool_stat_t convert_sai_port_pool_stat_t_to_sai( + lemming::dataplane::sai::PortPoolStat val) { + switch (val) { + case lemming::dataplane::sai::PORT_POOL_STAT_IF_OCTETS: + return SAI_PORT_POOL_STAT_IF_OCTETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: + return SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES: + return SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: + return SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: + return SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS: + return SAI_PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_BYTES: + return SAI_PORT_POOL_STAT_RED_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_PACKETS: + return SAI_PORT_POOL_STAT_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_BYTES: + return SAI_PORT_POOL_STAT_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: + return SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: + return SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS: + return SAI_PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_BYTES: + return SAI_PORT_POOL_STAT_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_CURR_OCCUPANCY_BYTES: + return SAI_PORT_POOL_STAT_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_WATERMARK_BYTES: + return SAI_PORT_POOL_STAT_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return SAI_PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_SHARED_WATERMARK_BYTES: + return SAI_PORT_POOL_STAT_SHARED_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_POOL_STAT_DROPPED_PKTS: + return SAI_PORT_POOL_STAT_DROPPED_PKTS; + + default: + return SAI_PORT_POOL_STAT_IF_OCTETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_pool_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_pool_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_pool_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_pool_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPrbsConfig convert_sai_port_prbs_config_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_PRBS_CONFIG_DISABLE: + return lemming::dataplane::sai::PORT_PRBS_CONFIG_DISABLE; + + case SAI_PORT_PRBS_CONFIG_ENABLE_TX_RX: + return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX_RX; + + case SAI_PORT_PRBS_CONFIG_ENABLE_RX: + return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_RX; + + case SAI_PORT_PRBS_CONFIG_ENABLE_TX: + return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX; + + default: + return lemming::dataplane::sai::PORT_PRBS_CONFIG_UNSPECIFIED; + } +} +sai_port_prbs_config_t convert_sai_port_prbs_config_t_to_sai( + lemming::dataplane::sai::PortPrbsConfig val) { + switch (val) { + case lemming::dataplane::sai::PORT_PRBS_CONFIG_DISABLE: + return SAI_PORT_PRBS_CONFIG_DISABLE; + + case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX_RX: + return SAI_PORT_PRBS_CONFIG_ENABLE_TX_RX; + + case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_RX: + return SAI_PORT_PRBS_CONFIG_ENABLE_RX; + + case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX: + return SAI_PORT_PRBS_CONFIG_ENABLE_TX; + + default: + return SAI_PORT_PRBS_CONFIG_DISABLE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_prbs_config_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_prbs_config_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_prbs_config_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_prbs_config_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPrbsRxStatus +convert_sai_port_prbs_rx_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_PRBS_RX_STATUS_OK: + return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_OK; + + case SAI_PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS: + return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS; + + case SAI_PORT_PRBS_RX_STATUS_NOT_LOCKED: + return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_NOT_LOCKED; + + case SAI_PORT_PRBS_RX_STATUS_LOST_LOCK: + return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOST_LOCK; + + default: + return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_UNSPECIFIED; + } +} +sai_port_prbs_rx_status_t convert_sai_port_prbs_rx_status_t_to_sai( + lemming::dataplane::sai::PortPrbsRxStatus val) { + switch (val) { + case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_OK: + return SAI_PORT_PRBS_RX_STATUS_OK; + + case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS: + return SAI_PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS; + + case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_NOT_LOCKED: + return SAI_PORT_PRBS_RX_STATUS_NOT_LOCKED; + + case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOST_LOCK: + return SAI_PORT_PRBS_RX_STATUS_LOST_LOCK; + + default: + return SAI_PORT_PRBS_RX_STATUS_OK; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_prbs_rx_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_prbs_rx_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_prbs_rx_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_prbs_rx_status_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPriorityFlowControlMode +convert_sai_port_priority_flow_control_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED: + return lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; + + case SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE: + return lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE; + + default: + return lemming::dataplane::sai:: + PORT_PRIORITY_FLOW_CONTROL_MODE_UNSPECIFIED; + } +} +sai_port_priority_flow_control_mode_t +convert_sai_port_priority_flow_control_mode_t_to_sai( + lemming::dataplane::sai::PortPriorityFlowControlMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED: + return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; + + case lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE: + return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE; + + default: + return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_priority_flow_control_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_port_priority_flow_control_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_priority_flow_control_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_priority_flow_control_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortPtpMode convert_sai_port_ptp_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_PTP_MODE_NONE: + return lemming::dataplane::sai::PORT_PTP_MODE_NONE; + + case SAI_PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP: + return lemming::dataplane::sai::PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP; + + case SAI_PORT_PTP_MODE_TWO_STEP_TIMESTAMP: + return lemming::dataplane::sai::PORT_PTP_MODE_TWO_STEP_TIMESTAMP; + + default: + return lemming::dataplane::sai::PORT_PTP_MODE_UNSPECIFIED; + } +} +sai_port_ptp_mode_t convert_sai_port_ptp_mode_t_to_sai( + lemming::dataplane::sai::PortPtpMode val) { + switch (val) { + case lemming::dataplane::sai::PORT_PTP_MODE_NONE: + return SAI_PORT_PTP_MODE_NONE; + + case lemming::dataplane::sai::PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP: + return SAI_PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP; + + case lemming::dataplane::sai::PORT_PTP_MODE_TWO_STEP_TIMESTAMP: + return SAI_PORT_PTP_MODE_TWO_STEP_TIMESTAMP; + + default: + return SAI_PORT_PTP_MODE_NONE; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_ptp_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_ptp_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_ptp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_ptp_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortSerdesAttr convert_sai_port_serdes_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_SERDES_ATTR_PORT_ID: + return lemming::dataplane::sai::PORT_SERDES_ATTR_PORT_ID; + + case SAI_PORT_SERDES_ATTR_PREEMPHASIS: + return lemming::dataplane::sai::PORT_SERDES_ATTR_PREEMPHASIS; + + case SAI_PORT_SERDES_ATTR_IDRIVER: + return lemming::dataplane::sai::PORT_SERDES_ATTR_IDRIVER; + + case SAI_PORT_SERDES_ATTR_IPREDRIVER: + return lemming::dataplane::sai::PORT_SERDES_ATTR_IPREDRIVER; + + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE1; + + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE2; + + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE3; + + case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_MAIN; + + case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST1; + + case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST2; + + case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST3; + + case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_ATTN; + + case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PAM4_RATIO; + + case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_OUT_COMMON_MODE; + + case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE; + + case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE; + + case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_VLTG_REG; + + case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_VLTG_REG; + + case SAI_PORT_SERDES_ATTR_TX_PRECODING: + return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PRECODING; + + case SAI_PORT_SERDES_ATTR_RX_PRECODING: + return lemming::dataplane::sai::PORT_SERDES_ATTR_RX_PRECODING; + + default: + return lemming::dataplane::sai::PORT_SERDES_ATTR_UNSPECIFIED; + } +} +sai_port_serdes_attr_t convert_sai_port_serdes_attr_t_to_sai( + lemming::dataplane::sai::PortSerdesAttr val) { + switch (val) { + case lemming::dataplane::sai::PORT_SERDES_ATTR_PORT_ID: + return SAI_PORT_SERDES_ATTR_PORT_ID; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_PREEMPHASIS: + return SAI_PORT_SERDES_ATTR_PREEMPHASIS; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_IDRIVER: + return SAI_PORT_SERDES_ATTR_IDRIVER; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_IPREDRIVER: + return SAI_PORT_SERDES_ATTR_IPREDRIVER; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE1: + return SAI_PORT_SERDES_ATTR_TX_FIR_PRE1; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE2: + return SAI_PORT_SERDES_ATTR_TX_FIR_PRE2; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE3: + return SAI_PORT_SERDES_ATTR_TX_FIR_PRE3; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_MAIN: + return SAI_PORT_SERDES_ATTR_TX_FIR_MAIN; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST1: + return SAI_PORT_SERDES_ATTR_TX_FIR_POST1; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST2: + return SAI_PORT_SERDES_ATTR_TX_FIR_POST2; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST3: + return SAI_PORT_SERDES_ATTR_TX_FIR_POST3; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_ATTN: + return SAI_PORT_SERDES_ATTR_TX_FIR_ATTN; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PAM4_RATIO: + return SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: + return SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: + return SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: + return SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: + return SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: + return SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PRECODING: + return SAI_PORT_SERDES_ATTR_TX_PRECODING; + + case lemming::dataplane::sai::PORT_SERDES_ATTR_RX_PRECODING: + return SAI_PORT_SERDES_ATTR_RX_PRECODING; + + default: + return SAI_PORT_SERDES_ATTR_PORT_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_serdes_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_serdes_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_serdes_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_serdes_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortStatExtensions +convert_sai_port_stat_extensions_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_PORT_STAT_EXTENSIONS_RANGE_START: + return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_START; + + case SAI_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS: + return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS; + + case SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES: + return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES; + + case SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS: + return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS; + + case SAI_PORT_STAT_VIP_MISS_DROP_PACKETS: + return lemming::dataplane::sai::PORT_STAT_VIP_MISS_DROP_PACKETS; + + case SAI_PORT_STAT_ENI_MISS_DROP_PACKETS: + return lemming::dataplane::sai::PORT_STAT_ENI_MISS_DROP_PACKETS; + + case SAI_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES: + return lemming::dataplane::sai::PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES; + + case SAI_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS: + return lemming::dataplane::sai:: + PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS; + + case SAI_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES: + return lemming::dataplane::sai:: + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES; + + case SAI_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS: + return lemming::dataplane::sai:: + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS; + + case SAI_PORT_STAT_EXTENSIONS_RANGE_END: + return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_END; + + default: + return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_UNSPECIFIED; + } +} +sai_port_stat_extensions_t convert_sai_port_stat_extensions_t_to_sai( + lemming::dataplane::sai::PortStatExtensions val) { + switch (val) { + case lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_START: + return SAI_PORT_STAT_EXTENSIONS_RANGE_START; + + case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS: + return SAI_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES: + return SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES; + + case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS: + return SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_VIP_MISS_DROP_PACKETS: + return SAI_PORT_STAT_VIP_MISS_DROP_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_ENI_MISS_DROP_PACKETS: + return SAI_PORT_STAT_ENI_MISS_DROP_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES: + return SAI_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_BYTES; + + case lemming::dataplane::sai::PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS: + return SAI_PORT_STAT_PORT_LB_FAST_PATH_ICMP_IN_PACKETS; + + case lemming::dataplane::sai:: + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES: + return SAI_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_BYTES; + + case lemming::dataplane::sai:: + PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS: + return SAI_PORT_STAT_PORT_LB_FAST_PATH_ENI_MISS_DROP_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_END: + return SAI_PORT_STAT_EXTENSIONS_RANGE_END; + + default: + return SAI_PORT_STAT_EXTENSIONS_RANGE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_port_stat_extensions_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_stat_extensions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_stat_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_stat_extensions_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortStat convert_sai_port_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_STAT_START: + return lemming::dataplane::sai::PORT_STAT_START; + + case SAI_PORT_STAT_IF_IN_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_UCAST_PKTS; + + case SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IF_IN_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_DISCARDS; + + case SAI_PORT_STAT_IF_IN_ERRORS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_ERRORS; + + case SAI_PORT_STAT_IF_IN_UNKNOWN_PROTOS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_UNKNOWN_PROTOS; + + case SAI_PORT_STAT_IF_IN_BROADCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_BROADCAST_PKTS; + + case SAI_PORT_STAT_IF_IN_MULTICAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_MULTICAST_PKTS; + + case SAI_PORT_STAT_IF_IN_VLAN_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_VLAN_DISCARDS; + + case SAI_PORT_STAT_IF_OUT_OCTETS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_OCTETS; + + case SAI_PORT_STAT_IF_OUT_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_UCAST_PKTS; + + case SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IF_OUT_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_DISCARDS; + + case SAI_PORT_STAT_IF_OUT_ERRORS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_ERRORS; + + case SAI_PORT_STAT_IF_OUT_QLEN: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_QLEN; + + case SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_BROADCAST_PKTS; + + case SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_MULTICAST_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_DROP_EVENTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_DROP_EVENTS; + + case SAI_PORT_STAT_ETHER_STATS_MULTICAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_MULTICAST_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_BROADCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_BROADCAST_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_FRAGMENTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_FRAGMENTS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_64_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_64_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OVERSIZE_PKTS; + + case SAI_PORT_STAT_ETHER_RX_OVERSIZE_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_RX_OVERSIZE_PKTS; + + case SAI_PORT_STAT_ETHER_TX_OVERSIZE_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_TX_OVERSIZE_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_JABBERS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_JABBERS; + + case SAI_PORT_STAT_ETHER_STATS_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OCTETS; + + case SAI_PORT_STAT_ETHER_STATS_PKTS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS; + + case SAI_PORT_STAT_ETHER_STATS_COLLISIONS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_COLLISIONS; + + case SAI_PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS; + + case SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_TX_NO_ERRORS; + + case SAI_PORT_STAT_ETHER_STATS_RX_NO_ERRORS: + return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_RX_NO_ERRORS; + + case SAI_PORT_STAT_IP_IN_RECEIVES: + return lemming::dataplane::sai::PORT_STAT_IP_IN_RECEIVES; + + case SAI_PORT_STAT_IP_IN_OCTETS: + return lemming::dataplane::sai::PORT_STAT_IP_IN_OCTETS; + + case SAI_PORT_STAT_IP_IN_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IP_IN_UCAST_PKTS; + + case SAI_PORT_STAT_IP_IN_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IP_IN_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IP_IN_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IP_IN_DISCARDS; + + case SAI_PORT_STAT_IP_OUT_OCTETS: + return lemming::dataplane::sai::PORT_STAT_IP_OUT_OCTETS; + + case SAI_PORT_STAT_IP_OUT_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IP_OUT_UCAST_PKTS; + + case SAI_PORT_STAT_IP_OUT_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IP_OUT_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IP_OUT_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IP_OUT_DISCARDS; + + case SAI_PORT_STAT_IPV6_IN_RECEIVES: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_RECEIVES; + + case SAI_PORT_STAT_IPV6_IN_OCTETS: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_OCTETS; + + case SAI_PORT_STAT_IPV6_IN_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_UCAST_PKTS; + + case SAI_PORT_STAT_IPV6_IN_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IPV6_IN_MCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_MCAST_PKTS; + + case SAI_PORT_STAT_IPV6_IN_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IPV6_IN_DISCARDS; + + case SAI_PORT_STAT_IPV6_OUT_OCTETS: + return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_OCTETS; + + case SAI_PORT_STAT_IPV6_OUT_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_UCAST_PKTS; + + case SAI_PORT_STAT_IPV6_OUT_NON_UCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_NON_UCAST_PKTS; + + case SAI_PORT_STAT_IPV6_OUT_MCAST_PKTS: + return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_MCAST_PKTS; + + case SAI_PORT_STAT_IPV6_OUT_DISCARDS: + return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_DISCARDS; + + case SAI_PORT_STAT_GREEN_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_PACKETS; + + case SAI_PORT_STAT_GREEN_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_BYTES; + + case SAI_PORT_STAT_YELLOW_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case SAI_PORT_STAT_YELLOW_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_BYTES; + + case SAI_PORT_STAT_RED_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_PACKETS; + + case SAI_PORT_STAT_RED_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_BYTES; + + case SAI_PORT_STAT_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_PACKETS; + + case SAI_PORT_STAT_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_BYTES; + + case SAI_PORT_STAT_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::PORT_STAT_ECN_MARKED_PACKETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_64_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_64_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS; + + case SAI_PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_64_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_64_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS: + return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS; + + case SAI_PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS: + return lemming::dataplane::sai:: + PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS; + + case SAI_PORT_STAT_IN_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::PORT_STAT_IN_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_STAT_IN_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_STAT_IN_WATERMARK_BYTES; + + case SAI_PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_STAT_IN_SHARED_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_STAT_IN_SHARED_WATERMARK_BYTES; + + case SAI_PORT_STAT_OUT_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::PORT_STAT_OUT_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_STAT_OUT_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_STAT_OUT_WATERMARK_BYTES; + + case SAI_PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES; + + case SAI_PORT_STAT_OUT_SHARED_WATERMARK_BYTES: + return lemming::dataplane::sai::PORT_STAT_OUT_SHARED_WATERMARK_BYTES; + + case SAI_PORT_STAT_IN_DROPPED_PKTS: + return lemming::dataplane::sai::PORT_STAT_IN_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_DROPPED_PKTS: + return lemming::dataplane::sai::PORT_STAT_OUT_DROPPED_PKTS; + + case SAI_PORT_STAT_PAUSE_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PAUSE_RX_PKTS; + + case SAI_PORT_STAT_PAUSE_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PAUSE_TX_PKTS; + + case SAI_PORT_STAT_PFC_0_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PKTS; + + case SAI_PORT_STAT_PFC_0_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PKTS; + + case SAI_PORT_STAT_PFC_1_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PKTS; + + case SAI_PORT_STAT_PFC_1_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PKTS; + + case SAI_PORT_STAT_PFC_2_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PKTS; + + case SAI_PORT_STAT_PFC_2_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PKTS; + + case SAI_PORT_STAT_PFC_3_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PKTS; + + case SAI_PORT_STAT_PFC_3_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PKTS; + + case SAI_PORT_STAT_PFC_4_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PKTS; + + case SAI_PORT_STAT_PFC_4_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PKTS; + + case SAI_PORT_STAT_PFC_5_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PKTS; + + case SAI_PORT_STAT_PFC_5_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PKTS; + + case SAI_PORT_STAT_PFC_6_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PKTS; + + case SAI_PORT_STAT_PFC_6_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PKTS; + + case SAI_PORT_STAT_PFC_7_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PKTS; + + case SAI_PORT_STAT_PFC_7_TX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PKTS; + + case SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION: + return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION; + + case SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION_US: + return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION_US; + + case SAI_PORT_STAT_PFC_0_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_0_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_1_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_1_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_2_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_2_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_3_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_3_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_4_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_4_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_5_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_5_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_6_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_6_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_PFC_7_ON2OFF_RX_PKTS: + return lemming::dataplane::sai::PORT_STAT_PFC_7_ON2OFF_RX_PKTS; + + case SAI_PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_FCS_ERRORS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FCS_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES: + return lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES; + + case SAI_PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES: + return lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES; + + case SAI_PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS: + return lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS; + + case SAI_PORT_STAT_DOT3_STATS_LATE_COLLISIONS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_LATE_COLLISIONS; + + case SAI_PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS; + + case SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS: + return lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS; + + case SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS: + return lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS; + + case SAI_PORT_STAT_DOT3_STATS_SYMBOL_ERRORS: + return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SYMBOL_ERRORS; + + case SAI_PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES: + return lemming::dataplane::sai::PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES; + + case SAI_PORT_STAT_EEE_TX_EVENT_COUNT: + return lemming::dataplane::sai::PORT_STAT_EEE_TX_EVENT_COUNT; + + case SAI_PORT_STAT_EEE_RX_EVENT_COUNT: + return lemming::dataplane::sai::PORT_STAT_EEE_RX_EVENT_COUNT; + + case SAI_PORT_STAT_EEE_TX_DURATION: + return lemming::dataplane::sai::PORT_STAT_EEE_TX_DURATION; + + case SAI_PORT_STAT_EEE_RX_DURATION: + return lemming::dataplane::sai::PORT_STAT_EEE_RX_DURATION; + + case SAI_PORT_STAT_PRBS_ERROR_COUNT: + return lemming::dataplane::sai::PORT_STAT_PRBS_ERROR_COUNT; + + case SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES; + + case SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES: + return lemming::dataplane::sai:: + PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES; + + case SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS; + + case SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FABRIC_DATA_UNITS; + + case SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS: + return lemming::dataplane::sai::PORT_STAT_IF_OUT_FABRIC_DATA_UNITS; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15; + + case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16; + + case SAI_PORT_STAT_IF_IN_FEC_CORRECTED_BITS: + return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTED_BITS; + + case SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE: + return lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_BASE; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case SAI_PORT_STAT_IN_DROP_REASON_RANGE_END: + return lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_END; + + case SAI_PORT_STAT_OUT_DROP_REASON_RANGE_BASE: + return lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_BASE; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case SAI_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS: + return lemming::dataplane::sai:: + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS; + + case SAI_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS: + return lemming::dataplane::sai:: + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS; + + case SAI_PORT_STAT_OUT_DROP_REASON_RANGE_END: + return lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_END; + + case SAI_PORT_STAT_END: + return lemming::dataplane::sai::PORT_STAT_END; + + case SAI_PORT_STAT_EXTENSIONS_RANGE_BASE: + return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_BASE; + + default: + return lemming::dataplane::sai::PORT_STAT_UNSPECIFIED; + } +} +sai_port_stat_t convert_sai_port_stat_t_to_sai( + lemming::dataplane::sai::PortStat val) { + switch (val) { + case lemming::dataplane::sai::PORT_STAT_START: + return SAI_PORT_STAT_START; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_UCAST_PKTS: + return SAI_PORT_STAT_IF_IN_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_NON_UCAST_PKTS: + return SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_DISCARDS: + return SAI_PORT_STAT_IF_IN_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_ERRORS: + return SAI_PORT_STAT_IF_IN_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_UNKNOWN_PROTOS: + return SAI_PORT_STAT_IF_IN_UNKNOWN_PROTOS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_BROADCAST_PKTS: + return SAI_PORT_STAT_IF_IN_BROADCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_MULTICAST_PKTS: + return SAI_PORT_STAT_IF_IN_MULTICAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_VLAN_DISCARDS: + return SAI_PORT_STAT_IF_IN_VLAN_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_OCTETS: + return SAI_PORT_STAT_IF_OUT_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_UCAST_PKTS: + return SAI_PORT_STAT_IF_OUT_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_NON_UCAST_PKTS: + return SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_DISCARDS: + return SAI_PORT_STAT_IF_OUT_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_ERRORS: + return SAI_PORT_STAT_IF_OUT_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_QLEN: + return SAI_PORT_STAT_IF_OUT_QLEN; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_BROADCAST_PKTS: + return SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_MULTICAST_PKTS: + return SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_DROP_EVENTS: + return SAI_PORT_STAT_ETHER_STATS_DROP_EVENTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_MULTICAST_PKTS: + return SAI_PORT_STAT_ETHER_STATS_MULTICAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_BROADCAST_PKTS: + return SAI_PORT_STAT_ETHER_STATS_BROADCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS: + return SAI_PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_FRAGMENTS: + return SAI_PORT_STAT_ETHER_STATS_FRAGMENTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_64_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_64_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS; + + case lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS; + + case lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS; + + case lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS; + + case lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS; + + case lemming::dataplane::sai:: + PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OVERSIZE_PKTS: + return SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_RX_OVERSIZE_PKTS: + return SAI_PORT_STAT_ETHER_RX_OVERSIZE_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_TX_OVERSIZE_PKTS: + return SAI_PORT_STAT_ETHER_TX_OVERSIZE_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_JABBERS: + return SAI_PORT_STAT_ETHER_STATS_JABBERS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OCTETS: + return SAI_PORT_STAT_ETHER_STATS_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS: + return SAI_PORT_STAT_ETHER_STATS_PKTS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_COLLISIONS: + return SAI_PORT_STAT_ETHER_STATS_COLLISIONS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS: + return SAI_PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_TX_NO_ERRORS: + return SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_RX_NO_ERRORS: + return SAI_PORT_STAT_ETHER_STATS_RX_NO_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_IP_IN_RECEIVES: + return SAI_PORT_STAT_IP_IN_RECEIVES; + + case lemming::dataplane::sai::PORT_STAT_IP_IN_OCTETS: + return SAI_PORT_STAT_IP_IN_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IP_IN_UCAST_PKTS: + return SAI_PORT_STAT_IP_IN_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IP_IN_NON_UCAST_PKTS: + return SAI_PORT_STAT_IP_IN_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IP_IN_DISCARDS: + return SAI_PORT_STAT_IP_IN_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IP_OUT_OCTETS: + return SAI_PORT_STAT_IP_OUT_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IP_OUT_UCAST_PKTS: + return SAI_PORT_STAT_IP_OUT_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IP_OUT_NON_UCAST_PKTS: + return SAI_PORT_STAT_IP_OUT_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IP_OUT_DISCARDS: + return SAI_PORT_STAT_IP_OUT_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_RECEIVES: + return SAI_PORT_STAT_IPV6_IN_RECEIVES; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_OCTETS: + return SAI_PORT_STAT_IPV6_IN_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_UCAST_PKTS: + return SAI_PORT_STAT_IPV6_IN_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_NON_UCAST_PKTS: + return SAI_PORT_STAT_IPV6_IN_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_MCAST_PKTS: + return SAI_PORT_STAT_IPV6_IN_MCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_IN_DISCARDS: + return SAI_PORT_STAT_IPV6_IN_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_OCTETS: + return SAI_PORT_STAT_IPV6_OUT_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_UCAST_PKTS: + return SAI_PORT_STAT_IPV6_OUT_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_NON_UCAST_PKTS: + return SAI_PORT_STAT_IPV6_OUT_NON_UCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_MCAST_PKTS: + return SAI_PORT_STAT_IPV6_OUT_MCAST_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_DISCARDS: + return SAI_PORT_STAT_IPV6_OUT_DISCARDS; + + case lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_PACKETS: + return SAI_PORT_STAT_GREEN_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_BYTES: + return SAI_PORT_STAT_GREEN_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_PACKETS: + return SAI_PORT_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_BYTES: + return SAI_PORT_STAT_YELLOW_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_PACKETS: + return SAI_PORT_STAT_RED_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_BYTES: + return SAI_PORT_STAT_RED_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_PACKETS: + return SAI_PORT_STAT_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_BYTES: + return SAI_PORT_STAT_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::PORT_STAT_ECN_MARKED_PACKETS: + return SAI_PORT_STAT_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_64_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_64_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS: + return SAI_PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_64_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_64_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS: + return SAI_PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS; + + case lemming::dataplane::sai::PORT_STAT_IN_CURR_OCCUPANCY_BYTES: + return SAI_PORT_STAT_IN_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_STAT_IN_WATERMARK_BYTES: + return SAI_PORT_STAT_IN_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES: + return SAI_PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_STAT_IN_SHARED_WATERMARK_BYTES: + return SAI_PORT_STAT_IN_SHARED_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_STAT_OUT_CURR_OCCUPANCY_BYTES: + return SAI_PORT_STAT_OUT_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_STAT_OUT_WATERMARK_BYTES: + return SAI_PORT_STAT_OUT_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES: + return SAI_PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::PORT_STAT_OUT_SHARED_WATERMARK_BYTES: + return SAI_PORT_STAT_OUT_SHARED_WATERMARK_BYTES; + + case lemming::dataplane::sai::PORT_STAT_IN_DROPPED_PKTS: + return SAI_PORT_STAT_IN_DROPPED_PKTS; + + case lemming::dataplane::sai::PORT_STAT_OUT_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_DROPPED_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PAUSE_RX_PKTS: + return SAI_PORT_STAT_PAUSE_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PAUSE_TX_PKTS: + return SAI_PORT_STAT_PAUSE_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PKTS: + return SAI_PORT_STAT_PFC_0_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PKTS: + return SAI_PORT_STAT_PFC_0_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PKTS: + return SAI_PORT_STAT_PFC_1_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PKTS: + return SAI_PORT_STAT_PFC_1_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PKTS: + return SAI_PORT_STAT_PFC_2_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PKTS: + return SAI_PORT_STAT_PFC_2_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PKTS: + return SAI_PORT_STAT_PFC_3_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PKTS: + return SAI_PORT_STAT_PFC_3_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PKTS: + return SAI_PORT_STAT_PFC_4_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PKTS: + return SAI_PORT_STAT_PFC_4_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PKTS: + return SAI_PORT_STAT_PFC_5_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PKTS: + return SAI_PORT_STAT_PFC_5_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PKTS: + return SAI_PORT_STAT_PFC_6_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PKTS: + return SAI_PORT_STAT_PFC_6_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PKTS: + return SAI_PORT_STAT_PFC_7_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PKTS: + return SAI_PORT_STAT_PFC_7_TX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION: + return SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION_US: + return SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION_US; + + case lemming::dataplane::sai::PORT_STAT_PFC_0_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_0_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_1_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_1_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_2_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_2_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_3_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_3_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_4_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_4_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_5_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_5_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_6_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_6_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_PFC_7_ON2OFF_RX_PKTS: + return SAI_PORT_STAT_PFC_7_ON2OFF_RX_PKTS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FCS_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_FCS_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES: + return SAI_PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES; + + case lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES: + return SAI_PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS: + return SAI_PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_LATE_COLLISIONS: + return SAI_PORT_STAT_DOT3_STATS_LATE_COLLISIONS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS: + return SAI_PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS; + + case lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS: + return SAI_PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS; + + case lemming::dataplane::sai:: + PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SYMBOL_ERRORS: + return SAI_PORT_STAT_DOT3_STATS_SYMBOL_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES: + return SAI_PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES; + + case lemming::dataplane::sai::PORT_STAT_EEE_TX_EVENT_COUNT: + return SAI_PORT_STAT_EEE_TX_EVENT_COUNT; + + case lemming::dataplane::sai::PORT_STAT_EEE_RX_EVENT_COUNT: + return SAI_PORT_STAT_EEE_RX_EVENT_COUNT; + + case lemming::dataplane::sai::PORT_STAT_EEE_TX_DURATION: + return SAI_PORT_STAT_EEE_TX_DURATION; + + case lemming::dataplane::sai::PORT_STAT_EEE_RX_DURATION: + return SAI_PORT_STAT_EEE_RX_DURATION; + + case lemming::dataplane::sai::PORT_STAT_PRBS_ERROR_COUNT: + return SAI_PORT_STAT_PRBS_ERROR_COUNT; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES: + return SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES: + return SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS: + return SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FABRIC_DATA_UNITS: + return SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS; + + case lemming::dataplane::sai::PORT_STAT_IF_OUT_FABRIC_DATA_UNITS: + return SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16: + return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16; + + case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTED_BITS: + return SAI_PORT_STAT_IF_IN_FEC_CORRECTED_BITS; + + case lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_BASE: + return SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_END: + return SAI_PORT_STAT_IN_DROP_REASON_RANGE_END; + + case lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_BASE: + return SAI_PORT_STAT_OUT_DROP_REASON_RANGE_BASE; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case lemming::dataplane::sai:: + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS: + return SAI_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_EVENTS; + + case lemming::dataplane::sai:: + PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS: + return SAI_PORT_STAT_IF_IN_HW_PROTECTION_SWITCHOVER_DROP_PKTS; + + case lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_END: + return SAI_PORT_STAT_OUT_DROP_REASON_RANGE_END; + + case lemming::dataplane::sai::PORT_STAT_END: + return SAI_PORT_STAT_END; + + case lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_BASE: + return SAI_PORT_STAT_EXTENSIONS_RANGE_BASE; + + default: + return SAI_PORT_STAT_START; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::PortType convert_sai_port_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_PORT_TYPE_LOGICAL: + return lemming::dataplane::sai::PORT_TYPE_LOGICAL; + + case SAI_PORT_TYPE_CPU: + return lemming::dataplane::sai::PORT_TYPE_CPU; + + case SAI_PORT_TYPE_FABRIC: + return lemming::dataplane::sai::PORT_TYPE_FABRIC; + + case SAI_PORT_TYPE_RECYCLE: + return lemming::dataplane::sai::PORT_TYPE_RECYCLE; + + default: + return lemming::dataplane::sai::PORT_TYPE_UNSPECIFIED; + } +} +sai_port_type_t convert_sai_port_type_t_to_sai( + lemming::dataplane::sai::PortType val) { + switch (val) { + case lemming::dataplane::sai::PORT_TYPE_LOGICAL: + return SAI_PORT_TYPE_LOGICAL; + + case lemming::dataplane::sai::PORT_TYPE_CPU: + return SAI_PORT_TYPE_CPU; + + case lemming::dataplane::sai::PORT_TYPE_FABRIC: + return SAI_PORT_TYPE_FABRIC; + + case lemming::dataplane::sai::PORT_TYPE_RECYCLE: + return SAI_PORT_TYPE_RECYCLE; + + default: + return SAI_PORT_TYPE_LOGICAL; + } +} + +google::protobuf::RepeatedField convert_list_sai_port_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_port_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_port_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QosMapAttr convert_sai_qos_map_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QOS_MAP_ATTR_TYPE: + return lemming::dataplane::sai::QOS_MAP_ATTR_TYPE; + + case SAI_QOS_MAP_ATTR_MAP_TO_VALUE_LIST: + return lemming::dataplane::sai::QOS_MAP_ATTR_MAP_TO_VALUE_LIST; + + default: + return lemming::dataplane::sai::QOS_MAP_ATTR_UNSPECIFIED; + } +} +sai_qos_map_attr_t convert_sai_qos_map_attr_t_to_sai( + lemming::dataplane::sai::QosMapAttr val) { + switch (val) { + case lemming::dataplane::sai::QOS_MAP_ATTR_TYPE: + return SAI_QOS_MAP_ATTR_TYPE; + + case lemming::dataplane::sai::QOS_MAP_ATTR_MAP_TO_VALUE_LIST: + return SAI_QOS_MAP_ATTR_MAP_TO_VALUE_LIST; + + default: + return SAI_QOS_MAP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_qos_map_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_qos_map_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_qos_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_qos_map_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QosMapType convert_sai_qos_map_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QOS_MAP_TYPE_DOT1P_TO_TC: + return lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_TC; + + case SAI_QOS_MAP_TYPE_DOT1P_TO_COLOR: + return lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_COLOR; + + case SAI_QOS_MAP_TYPE_DSCP_TO_TC: + return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_TC; + + case SAI_QOS_MAP_TYPE_DSCP_TO_COLOR: + return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_COLOR; + + case SAI_QOS_MAP_TYPE_TC_TO_QUEUE: + return lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_QUEUE; + + case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP: + return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP; + + case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P: + return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P; + + case SAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP: + return lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP; + + case SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP: + return lemming::dataplane::sai:: + QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP; + + case SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE: + return lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE; + + case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_TC: + return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_TC; + + case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_COLOR: + return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_COLOR; + + case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP: + return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP; + + case SAI_QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS: + return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS; + + case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS: + return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS; + + case SAI_QOS_MAP_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::QOS_MAP_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::QOS_MAP_TYPE_UNSPECIFIED; + } +} +sai_qos_map_type_t convert_sai_qos_map_type_t_to_sai( + lemming::dataplane::sai::QosMapType val) { + switch (val) { + case lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_TC: + return SAI_QOS_MAP_TYPE_DOT1P_TO_TC; + + case lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_COLOR: + return SAI_QOS_MAP_TYPE_DOT1P_TO_COLOR; + + case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_TC: + return SAI_QOS_MAP_TYPE_DSCP_TO_TC; + + case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_COLOR: + return SAI_QOS_MAP_TYPE_DSCP_TO_COLOR; + + case lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_QUEUE: + return SAI_QOS_MAP_TYPE_TC_TO_QUEUE; + + case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP: + return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP; + + case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P: + return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P; + + case lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP: + return SAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP; + + case lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP: + return SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP; + + case lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE: + return SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE; + + case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_TC: + return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_TC; + + case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_COLOR: + return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_COLOR; + + case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP: + return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP; + + case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS: + return SAI_QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS; + + case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS: + return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS; + + case lemming::dataplane::sai::QOS_MAP_TYPE_CUSTOM_RANGE_BASE: + return SAI_QOS_MAP_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_QOS_MAP_TYPE_DOT1P_TO_TC; + } +} + +google::protobuf::RepeatedField convert_list_sai_qos_map_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_qos_map_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_qos_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_qos_map_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QueueAttr convert_sai_queue_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QUEUE_ATTR_TYPE: + return lemming::dataplane::sai::QUEUE_ATTR_TYPE; + + case SAI_QUEUE_ATTR_PORT: + return lemming::dataplane::sai::QUEUE_ATTR_PORT; + + case SAI_QUEUE_ATTR_INDEX: + return lemming::dataplane::sai::QUEUE_ATTR_INDEX; + + case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: + return lemming::dataplane::sai::QUEUE_ATTR_PARENT_SCHEDULER_NODE; + + case SAI_QUEUE_ATTR_WRED_PROFILE_ID: + return lemming::dataplane::sai::QUEUE_ATTR_WRED_PROFILE_ID; + + case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: + return lemming::dataplane::sai::QUEUE_ATTR_BUFFER_PROFILE_ID; + + case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: + return lemming::dataplane::sai::QUEUE_ATTR_SCHEDULER_PROFILE_ID; + + case SAI_QUEUE_ATTR_PAUSE_STATUS: + return lemming::dataplane::sai::QUEUE_ATTR_PAUSE_STATUS; + + case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: + return lemming::dataplane::sai::QUEUE_ATTR_ENABLE_PFC_DLDR; + + case SAI_QUEUE_ATTR_PFC_DLR_INIT: + return lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_INIT; + + case SAI_QUEUE_ATTR_TAM_OBJECT: + return lemming::dataplane::sai::QUEUE_ATTR_TAM_OBJECT; + + case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: + return lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_PACKET_ACTION; + + case SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: + return lemming::dataplane::sai::QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE; + + case SAI_QUEUE_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::QUEUE_ATTR_STATS_COUNT_MODE; + + case SAI_QUEUE_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::QUEUE_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::QUEUE_ATTR_UNSPECIFIED; + } +} +sai_queue_attr_t convert_sai_queue_attr_t_to_sai( + lemming::dataplane::sai::QueueAttr val) { + switch (val) { + case lemming::dataplane::sai::QUEUE_ATTR_TYPE: + return SAI_QUEUE_ATTR_TYPE; + + case lemming::dataplane::sai::QUEUE_ATTR_PORT: + return SAI_QUEUE_ATTR_PORT; + + case lemming::dataplane::sai::QUEUE_ATTR_INDEX: + return SAI_QUEUE_ATTR_INDEX; + + case lemming::dataplane::sai::QUEUE_ATTR_PARENT_SCHEDULER_NODE: + return SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE; + + case lemming::dataplane::sai::QUEUE_ATTR_WRED_PROFILE_ID: + return SAI_QUEUE_ATTR_WRED_PROFILE_ID; + + case lemming::dataplane::sai::QUEUE_ATTR_BUFFER_PROFILE_ID: + return SAI_QUEUE_ATTR_BUFFER_PROFILE_ID; + + case lemming::dataplane::sai::QUEUE_ATTR_SCHEDULER_PROFILE_ID: + return SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID; + + case lemming::dataplane::sai::QUEUE_ATTR_PAUSE_STATUS: + return SAI_QUEUE_ATTR_PAUSE_STATUS; + + case lemming::dataplane::sai::QUEUE_ATTR_ENABLE_PFC_DLDR: + return SAI_QUEUE_ATTR_ENABLE_PFC_DLDR; + + case lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_INIT: + return SAI_QUEUE_ATTR_PFC_DLR_INIT; + + case lemming::dataplane::sai::QUEUE_ATTR_TAM_OBJECT: + return SAI_QUEUE_ATTR_TAM_OBJECT; + + case lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_PACKET_ACTION: + return SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION; + + case lemming::dataplane::sai::QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: + return SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE; + + case lemming::dataplane::sai::QUEUE_ATTR_STATS_COUNT_MODE: + return SAI_QUEUE_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::QUEUE_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_QUEUE_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_QUEUE_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_queue_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_queue_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_queue_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_queue_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QueuePfcContinuousDeadlockState +convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED: + return lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; + + case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED: + return lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED; + + case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS: + return lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS; + + default: + return lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_UNSPECIFIED; + } +} +sai_queue_pfc_continuous_deadlock_state_t +convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + lemming::dataplane::sai::QueuePfcContinuousDeadlockState val) { + switch (val) { + case lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED: + return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; + + case lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED: + return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED; + + case lemming::dataplane::sai:: + QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS: + return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS; + + default: + return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QueuePfcDeadlockEventType +convert_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED: + return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; + + case SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED: + return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED; + + default: + return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_UNSPECIFIED; + } +} +sai_queue_pfc_deadlock_event_type_t +convert_sai_queue_pfc_deadlock_event_type_t_to_sai( + lemming::dataplane::sai::QueuePfcDeadlockEventType val) { + switch (val) { + case lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED: + return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; + + case lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED: + return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED; + + default: + return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_queue_pfc_deadlock_event_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_queue_pfc_deadlock_event_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_queue_pfc_deadlock_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_queue_pfc_deadlock_event_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QueueStat convert_sai_queue_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QUEUE_STAT_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_PACKETS; + + case SAI_QUEUE_STAT_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_BYTES; + + case SAI_QUEUE_STAT_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_DROPPED_BYTES; + + case SAI_QUEUE_STAT_GREEN_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_PACKETS; + + case SAI_QUEUE_STAT_GREEN_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_BYTES; + + case SAI_QUEUE_STAT_GREEN_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_GREEN_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_BYTES; + + case SAI_QUEUE_STAT_YELLOW_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_PACKETS; + + case SAI_QUEUE_STAT_YELLOW_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_BYTES; + + case SAI_QUEUE_STAT_YELLOW_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_YELLOW_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_BYTES; + + case SAI_QUEUE_STAT_RED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_RED_PACKETS; + + case SAI_QUEUE_STAT_RED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_RED_BYTES; + + case SAI_QUEUE_STAT_RED_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_RED_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_BYTES; + + case SAI_QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_GREEN_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_BYTES; + + case SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES; + + case SAI_QUEUE_STAT_RED_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_RED_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_BYTES; + + case SAI_QUEUE_STAT_WRED_DROPPED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_PACKETS; + + case SAI_QUEUE_STAT_WRED_DROPPED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_BYTES; + + case SAI_QUEUE_STAT_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_BYTES; + + case SAI_QUEUE_STAT_WATERMARK_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_WATERMARK_BYTES; + + case SAI_QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_SHARED_WATERMARK_BYTES; + + case SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES; + + case SAI_QUEUE_STAT_WRED_ECN_MARKED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_PACKETS; + + case SAI_QUEUE_STAT_WRED_ECN_MARKED_BYTES: + return lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_BYTES; + + case SAI_QUEUE_STAT_CURR_OCCUPANCY_LEVEL: + return lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_LEVEL; + + case SAI_QUEUE_STAT_WATERMARK_LEVEL: + return lemming::dataplane::sai::QUEUE_STAT_WATERMARK_LEVEL; + + case SAI_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS: + return lemming::dataplane::sai::QUEUE_STAT_CREDIT_WD_DELETED_PACKETS; + + case SAI_QUEUE_STAT_DELAY_WATERMARK_NS: + return lemming::dataplane::sai::QUEUE_STAT_DELAY_WATERMARK_NS; + + case SAI_QUEUE_STAT_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::QUEUE_STAT_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::QUEUE_STAT_UNSPECIFIED; + } +} +sai_queue_stat_t convert_sai_queue_stat_t_to_sai( + lemming::dataplane::sai::QueueStat val) { + switch (val) { + case lemming::dataplane::sai::QUEUE_STAT_PACKETS: + return SAI_QUEUE_STAT_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_BYTES: + return SAI_QUEUE_STAT_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_DROPPED_PACKETS: + return SAI_QUEUE_STAT_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_DROPPED_BYTES: + return SAI_QUEUE_STAT_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_PACKETS: + return SAI_QUEUE_STAT_GREEN_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_BYTES: + return SAI_QUEUE_STAT_GREEN_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_PACKETS: + return SAI_QUEUE_STAT_GREEN_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_BYTES: + return SAI_QUEUE_STAT_GREEN_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_PACKETS: + return SAI_QUEUE_STAT_YELLOW_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_BYTES: + return SAI_QUEUE_STAT_YELLOW_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_PACKETS: + return SAI_QUEUE_STAT_YELLOW_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_BYTES: + return SAI_QUEUE_STAT_YELLOW_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_RED_PACKETS: + return SAI_QUEUE_STAT_RED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_RED_BYTES: + return SAI_QUEUE_STAT_RED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_PACKETS: + return SAI_QUEUE_STAT_RED_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_BYTES: + return SAI_QUEUE_STAT_RED_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS: + return SAI_QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_BYTES: + return SAI_QUEUE_STAT_GREEN_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS: + return SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES: + return SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_PACKETS: + return SAI_QUEUE_STAT_RED_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_BYTES: + return SAI_QUEUE_STAT_RED_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_PACKETS: + return SAI_QUEUE_STAT_WRED_DROPPED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_BYTES: + return SAI_QUEUE_STAT_WRED_DROPPED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_BYTES: + return SAI_QUEUE_STAT_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_WATERMARK_BYTES: + return SAI_QUEUE_STAT_WATERMARK_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES: + return SAI_QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_SHARED_WATERMARK_BYTES: + return SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS: + return SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES: + return SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: + return SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES: + return SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS: + return SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES: + return SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_PACKETS: + return SAI_QUEUE_STAT_WRED_ECN_MARKED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_BYTES: + return SAI_QUEUE_STAT_WRED_ECN_MARKED_BYTES; + + case lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_LEVEL: + return SAI_QUEUE_STAT_CURR_OCCUPANCY_LEVEL; + + case lemming::dataplane::sai::QUEUE_STAT_WATERMARK_LEVEL: + return SAI_QUEUE_STAT_WATERMARK_LEVEL; + + case lemming::dataplane::sai::QUEUE_STAT_CREDIT_WD_DELETED_PACKETS: + return SAI_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS; + + case lemming::dataplane::sai::QUEUE_STAT_DELAY_WATERMARK_NS: + return SAI_QUEUE_STAT_DELAY_WATERMARK_NS; + + case lemming::dataplane::sai::QUEUE_STAT_CUSTOM_RANGE_BASE: + return SAI_QUEUE_STAT_CUSTOM_RANGE_BASE; + + default: + return SAI_QUEUE_STAT_PACKETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_queue_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_queue_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_queue_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_queue_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::QueueType convert_sai_queue_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_QUEUE_TYPE_ALL: + return lemming::dataplane::sai::QUEUE_TYPE_ALL; + + case SAI_QUEUE_TYPE_UNICAST: + return lemming::dataplane::sai::QUEUE_TYPE_UNICAST; + + case SAI_QUEUE_TYPE_MULTICAST: + return lemming::dataplane::sai::QUEUE_TYPE_MULTICAST; + + case SAI_QUEUE_TYPE_UNICAST_VOQ: + return lemming::dataplane::sai::QUEUE_TYPE_UNICAST_VOQ; + + case SAI_QUEUE_TYPE_MULTICAST_VOQ: + return lemming::dataplane::sai::QUEUE_TYPE_MULTICAST_VOQ; + + case SAI_QUEUE_TYPE_FABRIC_TX: + return lemming::dataplane::sai::QUEUE_TYPE_FABRIC_TX; + + case SAI_QUEUE_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::QUEUE_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::QUEUE_TYPE_UNSPECIFIED; + } +} +sai_queue_type_t convert_sai_queue_type_t_to_sai( + lemming::dataplane::sai::QueueType val) { + switch (val) { + case lemming::dataplane::sai::QUEUE_TYPE_ALL: + return SAI_QUEUE_TYPE_ALL; + + case lemming::dataplane::sai::QUEUE_TYPE_UNICAST: + return SAI_QUEUE_TYPE_UNICAST; + + case lemming::dataplane::sai::QUEUE_TYPE_MULTICAST: + return SAI_QUEUE_TYPE_MULTICAST; + + case lemming::dataplane::sai::QUEUE_TYPE_UNICAST_VOQ: + return SAI_QUEUE_TYPE_UNICAST_VOQ; + + case lemming::dataplane::sai::QUEUE_TYPE_MULTICAST_VOQ: + return SAI_QUEUE_TYPE_MULTICAST_VOQ; + + case lemming::dataplane::sai::QUEUE_TYPE_FABRIC_TX: + return SAI_QUEUE_TYPE_FABRIC_TX; + + case lemming::dataplane::sai::QUEUE_TYPE_CUSTOM_RANGE_BASE: + return SAI_QUEUE_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_QUEUE_TYPE_ALL; + } +} + +google::protobuf::RepeatedField convert_list_sai_queue_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_queue_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_queue_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_queue_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RouteEntryAttr convert_sai_route_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PACKET_ACTION; + + case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_USER_TRAP_ID; + + case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_NEXT_HOP_ID; + + case SAI_ROUTE_ENTRY_ATTR_META_DATA: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_META_DATA; + + case SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY; + + case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_COUNTER_ID; + + case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PREFIX_AGG_ID; + + default: + return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_route_entry_attr_t convert_sai_route_entry_attr_t_to_sai( + lemming::dataplane::sai::RouteEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PACKET_ACTION: + return SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_USER_TRAP_ID: + return SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_NEXT_HOP_ID: + return SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_META_DATA: + return SAI_ROUTE_ENTRY_ATTR_META_DATA; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: + return SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_COUNTER_ID: + return SAI_ROUTE_ENTRY_ATTR_COUNTER_ID; + + case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: + return SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID; + + default: + return SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_route_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_route_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_route_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_route_entry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RouterInterfaceAttr +convert_sai_router_interface_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; + + case SAI_ROUTER_INTERFACE_ATTR_TYPE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_TYPE; + + case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_PORT_ID; + + case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VLAN_ID; + + case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID; + + case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INNER_VLAN_ID; + + case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_BRIDGE_ID; + + case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS; + + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE; + + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE; + + case SAI_ROUTER_INTERFACE_ATTR_MTU: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_MTU; + + case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INGRESS_ACL; + + case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_EGRESS_ACL; + + case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: + return lemming::dataplane::sai:: + ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION; + + case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE; + + case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE; + + case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: + return lemming::dataplane::sai:: + ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION; + + case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_IS_VIRTUAL; + + case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NAT_ZONE_ID; + + case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: + return lemming::dataplane::sai:: + ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL; + + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE; + + case SAI_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE; + + case SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai:: + ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST; + + case SAI_ROUTER_INTERFACE_ATTR_LABEL: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LABEL; + + default: + return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_UNSPECIFIED; + } +} +sai_router_interface_attr_t convert_sai_router_interface_attr_t_to_sai( + lemming::dataplane::sai::RouterInterfaceAttr val) { + switch (val) { + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: + return SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_TYPE: + return SAI_ROUTER_INTERFACE_ATTR_TYPE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_PORT_ID: + return SAI_ROUTER_INTERFACE_ATTR_PORT_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VLAN_ID: + return SAI_ROUTER_INTERFACE_ATTR_VLAN_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: + return SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: + return SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_BRIDGE_ID: + return SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: + return SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: + return SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: + return SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_MTU: + return SAI_ROUTER_INTERFACE_ATTR_MTU; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INGRESS_ACL: + return SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_EGRESS_ACL: + return SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL; + + case lemming::dataplane::sai:: + ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: + return SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: + return SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: + return SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: + return SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_IS_VIRTUAL: + return SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: + return SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: + return SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: + return SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE: + return SAI_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST; + + case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LABEL: + return SAI_ROUTER_INTERFACE_ATTR_LABEL; + + default: + return SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_router_interface_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_router_interface_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_router_interface_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_router_interface_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RouterInterfaceStat +convert_sai_router_interface_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ROUTER_INTERFACE_STAT_IN_OCTETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_OCTETS; + + case SAI_ROUTER_INTERFACE_STAT_IN_PACKETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_PACKETS; + + case SAI_ROUTER_INTERFACE_STAT_OUT_OCTETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_OCTETS; + + case SAI_ROUTER_INTERFACE_STAT_OUT_PACKETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_PACKETS; + + case SAI_ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS; + + case SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS; + + case SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS; + + case SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS; + + default: + return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_UNSPECIFIED; + } +} +sai_router_interface_stat_t convert_sai_router_interface_stat_t_to_sai( + lemming::dataplane::sai::RouterInterfaceStat val) { + switch (val) { + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_OCTETS: + return SAI_ROUTER_INTERFACE_STAT_IN_OCTETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_PACKETS: + return SAI_ROUTER_INTERFACE_STAT_IN_PACKETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_OCTETS: + return SAI_ROUTER_INTERFACE_STAT_OUT_OCTETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_PACKETS: + return SAI_ROUTER_INTERFACE_STAT_OUT_PACKETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS: + return SAI_ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS: + return SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS: + return SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS; + + case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS: + return SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS; + + default: + return SAI_ROUTER_INTERFACE_STAT_IN_OCTETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_router_interface_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_router_interface_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_router_interface_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_router_interface_stat_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RouterInterfaceType +convert_sai_router_interface_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_ROUTER_INTERFACE_TYPE_PORT: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_PORT; + + case SAI_ROUTER_INTERFACE_TYPE_VLAN: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_VLAN; + + case SAI_ROUTER_INTERFACE_TYPE_LOOPBACK: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_LOOPBACK; + + case SAI_ROUTER_INTERFACE_TYPE_MPLS_ROUTER: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_MPLS_ROUTER; + + case SAI_ROUTER_INTERFACE_TYPE_SUB_PORT: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_SUB_PORT; + + case SAI_ROUTER_INTERFACE_TYPE_BRIDGE: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_BRIDGE; + + case SAI_ROUTER_INTERFACE_TYPE_QINQ_PORT: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_QINQ_PORT; + + default: + return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_UNSPECIFIED; + } +} +sai_router_interface_type_t convert_sai_router_interface_type_t_to_sai( + lemming::dataplane::sai::RouterInterfaceType val) { + switch (val) { + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_PORT: + return SAI_ROUTER_INTERFACE_TYPE_PORT; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_VLAN: + return SAI_ROUTER_INTERFACE_TYPE_VLAN; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_LOOPBACK: + return SAI_ROUTER_INTERFACE_TYPE_LOOPBACK; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_MPLS_ROUTER: + return SAI_ROUTER_INTERFACE_TYPE_MPLS_ROUTER; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_SUB_PORT: + return SAI_ROUTER_INTERFACE_TYPE_SUB_PORT; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_BRIDGE: + return SAI_ROUTER_INTERFACE_TYPE_BRIDGE; + + case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_QINQ_PORT: + return SAI_ROUTER_INTERFACE_TYPE_QINQ_PORT; + + default: + return SAI_ROUTER_INTERFACE_TYPE_PORT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_router_interface_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_router_interface_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_router_interface_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_router_interface_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RpfGroupAttr convert_sai_rpf_group_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: + return lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; + + case SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST: + return lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_MEMBER_LIST; + + default: + return lemming::dataplane::sai::RPF_GROUP_ATTR_UNSPECIFIED; + } +} +sai_rpf_group_attr_t convert_sai_rpf_group_attr_t_to_sai( + lemming::dataplane::sai::RpfGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: + return SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; + + case lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_MEMBER_LIST: + return SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST; + + default: + return SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; + } +} + +google::protobuf::RepeatedField convert_list_sai_rpf_group_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_rpf_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_rpf_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_rpf_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::RpfGroupMemberAttr +convert_sai_rpf_group_member_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: + return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; + + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: + return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID; + + default: + return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_rpf_group_member_attr_t convert_sai_rpf_group_member_attr_t_to_sai( + lemming::dataplane::sai::RpfGroupMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: + return SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; + + case lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: + return SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID; + + default: + return SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_rpf_group_member_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_rpf_group_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_rpf_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_rpf_group_member_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SamplepacketAttr +convert_sai_samplepacket_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_SAMPLE_RATE; + + case SAI_SAMPLEPACKET_ATTR_TYPE: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_TYPE; + + case SAI_SAMPLEPACKET_ATTR_MODE: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_MODE; + + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_TRUNCATE_ENABLE; + + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_SIZE: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_TRUNCATE_SIZE; + + default: + return lemming::dataplane::sai::SAMPLEPACKET_ATTR_UNSPECIFIED; + } +} +sai_samplepacket_attr_t convert_sai_samplepacket_attr_t_to_sai( + lemming::dataplane::sai::SamplepacketAttr val) { + switch (val) { + case lemming::dataplane::sai::SAMPLEPACKET_ATTR_SAMPLE_RATE: + return SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE; + + case lemming::dataplane::sai::SAMPLEPACKET_ATTR_TYPE: + return SAI_SAMPLEPACKET_ATTR_TYPE; + + case lemming::dataplane::sai::SAMPLEPACKET_ATTR_MODE: + return SAI_SAMPLEPACKET_ATTR_MODE; + + case lemming::dataplane::sai::SAMPLEPACKET_ATTR_TRUNCATE_ENABLE: + return SAI_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE; + + case lemming::dataplane::sai::SAMPLEPACKET_ATTR_TRUNCATE_SIZE: + return SAI_SAMPLEPACKET_ATTR_TRUNCATE_SIZE; + + default: + return SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_samplepacket_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_samplepacket_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_samplepacket_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_samplepacket_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SamplepacketMode +convert_sai_samplepacket_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SAMPLEPACKET_MODE_EXCLUSIVE: + return lemming::dataplane::sai::SAMPLEPACKET_MODE_EXCLUSIVE; + + case SAI_SAMPLEPACKET_MODE_SHARED: + return lemming::dataplane::sai::SAMPLEPACKET_MODE_SHARED; + + default: + return lemming::dataplane::sai::SAMPLEPACKET_MODE_UNSPECIFIED; + } +} +sai_samplepacket_mode_t convert_sai_samplepacket_mode_t_to_sai( + lemming::dataplane::sai::SamplepacketMode val) { + switch (val) { + case lemming::dataplane::sai::SAMPLEPACKET_MODE_EXCLUSIVE: + return SAI_SAMPLEPACKET_MODE_EXCLUSIVE; + + case lemming::dataplane::sai::SAMPLEPACKET_MODE_SHARED: + return SAI_SAMPLEPACKET_MODE_SHARED; + + default: + return SAI_SAMPLEPACKET_MODE_EXCLUSIVE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_samplepacket_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_samplepacket_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_samplepacket_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_samplepacket_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SamplepacketType +convert_sai_samplepacket_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SAMPLEPACKET_TYPE_SLOW_PATH: + return lemming::dataplane::sai::SAMPLEPACKET_TYPE_SLOW_PATH; + + case SAI_SAMPLEPACKET_TYPE_MIRROR_SESSION: + return lemming::dataplane::sai::SAMPLEPACKET_TYPE_MIRROR_SESSION; + + default: + return lemming::dataplane::sai::SAMPLEPACKET_TYPE_UNSPECIFIED; + } +} +sai_samplepacket_type_t convert_sai_samplepacket_type_t_to_sai( + lemming::dataplane::sai::SamplepacketType val) { + switch (val) { + case lemming::dataplane::sai::SAMPLEPACKET_TYPE_SLOW_PATH: + return SAI_SAMPLEPACKET_TYPE_SLOW_PATH; + + case lemming::dataplane::sai::SAMPLEPACKET_TYPE_MIRROR_SESSION: + return SAI_SAMPLEPACKET_TYPE_MIRROR_SESSION; + + default: + return SAI_SAMPLEPACKET_TYPE_SLOW_PATH; + } +} + +google::protobuf::RepeatedField +convert_list_sai_samplepacket_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_samplepacket_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_samplepacket_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_samplepacket_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SchedulerAttr convert_sai_scheduler_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: + return lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_TYPE; + + case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: + return lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_WEIGHT; + + case SAI_SCHEDULER_ATTR_METER_TYPE: + return lemming::dataplane::sai::SCHEDULER_ATTR_METER_TYPE; + + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: + return lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_RATE; + + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: + return lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE; + + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: + return lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_RATE; + + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: + return lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE; + + default: + return lemming::dataplane::sai::SCHEDULER_ATTR_UNSPECIFIED; + } +} +sai_scheduler_attr_t convert_sai_scheduler_attr_t_to_sai( + lemming::dataplane::sai::SchedulerAttr val) { + switch (val) { + case lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_TYPE: + return SAI_SCHEDULER_ATTR_SCHEDULING_TYPE; + + case lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_WEIGHT: + return SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT; + + case lemming::dataplane::sai::SCHEDULER_ATTR_METER_TYPE: + return SAI_SCHEDULER_ATTR_METER_TYPE; + + case lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: + return SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE; + + case lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: + return SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE; + + case lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: + return SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE; + + case lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: + return SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE; + + default: + return SAI_SCHEDULER_ATTR_SCHEDULING_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_scheduler_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_scheduler_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_scheduler_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_scheduler_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SchedulerGroupAttr +convert_sai_scheduler_group_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_COUNT; + + case SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_LIST; + + case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PORT_ID; + + case SAI_SCHEDULER_GROUP_ATTR_LEVEL: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_LEVEL; + + case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_MAX_CHILDS; + + case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID; + + case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PARENT_NODE; + + default: + return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_UNSPECIFIED; + } +} +sai_scheduler_group_attr_t convert_sai_scheduler_group_attr_t_to_sai( + lemming::dataplane::sai::SchedulerGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_COUNT: + return SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_LIST: + return SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PORT_ID: + return SAI_SCHEDULER_GROUP_ATTR_PORT_ID; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_LEVEL: + return SAI_SCHEDULER_GROUP_ATTR_LEVEL; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_MAX_CHILDS: + return SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: + return SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID; + + case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PARENT_NODE: + return SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE; + + default: + return SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_scheduler_group_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_scheduler_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_scheduler_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_scheduler_group_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SchedulingType convert_sai_scheduling_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SCHEDULING_TYPE_STRICT: + return lemming::dataplane::sai::SCHEDULING_TYPE_STRICT; + + case SAI_SCHEDULING_TYPE_WRR: + return lemming::dataplane::sai::SCHEDULING_TYPE_WRR; + + case SAI_SCHEDULING_TYPE_DWRR: + return lemming::dataplane::sai::SCHEDULING_TYPE_DWRR; + + default: + return lemming::dataplane::sai::SCHEDULING_TYPE_UNSPECIFIED; + } +} +sai_scheduling_type_t convert_sai_scheduling_type_t_to_sai( + lemming::dataplane::sai::SchedulingType val) { + switch (val) { + case lemming::dataplane::sai::SCHEDULING_TYPE_STRICT: + return SAI_SCHEDULING_TYPE_STRICT; + + case lemming::dataplane::sai::SCHEDULING_TYPE_WRR: + return SAI_SCHEDULING_TYPE_WRR; + + case lemming::dataplane::sai::SCHEDULING_TYPE_DWRR: + return SAI_SCHEDULING_TYPE_DWRR; + + default: + return SAI_SCHEDULING_TYPE_STRICT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_scheduling_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_scheduling_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_scheduling_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_scheduling_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SerCorrectionType +convert_sai_ser_correction_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SER_CORRECTION_TYPE_NO_ACTION: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_NO_ACTION; + + case SAI_SER_CORRECTION_TYPE_FAIL_TO_CORRECT: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_FAIL_TO_CORRECT; + + case SAI_SER_CORRECTION_TYPE_ENTRY_CLEAR: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_ENTRY_CLEAR; + + case SAI_SER_CORRECTION_TYPE_SW_CACHE_RESTORE: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_SW_CACHE_RESTORE; + + case SAI_SER_CORRECTION_TYPE_HW_CACHE_RESTORE: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_HW_CACHE_RESTORE; + + case SAI_SER_CORRECTION_TYPE_SPECIAL: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_SPECIAL; + + default: + return lemming::dataplane::sai::SER_CORRECTION_TYPE_UNSPECIFIED; + } +} +sai_ser_correction_type_t convert_sai_ser_correction_type_t_to_sai( + lemming::dataplane::sai::SerCorrectionType val) { + switch (val) { + case lemming::dataplane::sai::SER_CORRECTION_TYPE_NO_ACTION: + return SAI_SER_CORRECTION_TYPE_NO_ACTION; + + case lemming::dataplane::sai::SER_CORRECTION_TYPE_FAIL_TO_CORRECT: + return SAI_SER_CORRECTION_TYPE_FAIL_TO_CORRECT; + + case lemming::dataplane::sai::SER_CORRECTION_TYPE_ENTRY_CLEAR: + return SAI_SER_CORRECTION_TYPE_ENTRY_CLEAR; + + case lemming::dataplane::sai::SER_CORRECTION_TYPE_SW_CACHE_RESTORE: + return SAI_SER_CORRECTION_TYPE_SW_CACHE_RESTORE; + + case lemming::dataplane::sai::SER_CORRECTION_TYPE_HW_CACHE_RESTORE: + return SAI_SER_CORRECTION_TYPE_HW_CACHE_RESTORE; + + case lemming::dataplane::sai::SER_CORRECTION_TYPE_SPECIAL: + return SAI_SER_CORRECTION_TYPE_SPECIAL; + + default: + return SAI_SER_CORRECTION_TYPE_NO_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_ser_correction_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ser_correction_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ser_correction_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ser_correction_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SerLogType convert_sai_ser_log_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SER_LOG_TYPE_MEM: + return lemming::dataplane::sai::SER_LOG_TYPE_MEM; + + case SAI_SER_LOG_TYPE_REG: + return lemming::dataplane::sai::SER_LOG_TYPE_REG; + + case SAI_SER_LOG_TYPE_MULTI: + return lemming::dataplane::sai::SER_LOG_TYPE_MULTI; + + case SAI_SER_LOG_TYPE_CORRECTED: + return lemming::dataplane::sai::SER_LOG_TYPE_CORRECTED; + + case SAI_SER_LOG_TYPE_ENTRY_INFO: + return lemming::dataplane::sai::SER_LOG_TYPE_ENTRY_INFO; + + case SAI_SER_LOG_TYPE_CACHE: + return lemming::dataplane::sai::SER_LOG_TYPE_CACHE; + + default: + return lemming::dataplane::sai::SER_LOG_TYPE_UNSPECIFIED; + } +} +sai_ser_log_type_t convert_sai_ser_log_type_t_to_sai( + lemming::dataplane::sai::SerLogType val) { + switch (val) { + case lemming::dataplane::sai::SER_LOG_TYPE_MEM: + return SAI_SER_LOG_TYPE_MEM; + + case lemming::dataplane::sai::SER_LOG_TYPE_REG: + return SAI_SER_LOG_TYPE_REG; + + case lemming::dataplane::sai::SER_LOG_TYPE_MULTI: + return SAI_SER_LOG_TYPE_MULTI; + + case lemming::dataplane::sai::SER_LOG_TYPE_CORRECTED: + return SAI_SER_LOG_TYPE_CORRECTED; + + case lemming::dataplane::sai::SER_LOG_TYPE_ENTRY_INFO: + return SAI_SER_LOG_TYPE_ENTRY_INFO; + + case lemming::dataplane::sai::SER_LOG_TYPE_CACHE: + return SAI_SER_LOG_TYPE_CACHE; + + default: + return SAI_SER_LOG_TYPE_MEM; + } +} + +google::protobuf::RepeatedField convert_list_sai_ser_log_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ser_log_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ser_log_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ser_log_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SerType convert_sai_ser_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SER_TYPE_UNKNOWN: + return lemming::dataplane::sai::SER_TYPE_UNKNOWN; + + case SAI_SER_TYPE_PARITY: + return lemming::dataplane::sai::SER_TYPE_PARITY; + + case SAI_SER_TYPE_ECC_SINGLE_BIT: + return lemming::dataplane::sai::SER_TYPE_ECC_SINGLE_BIT; + + case SAI_SER_TYPE_ECC_DOUBLE_BIT: + return lemming::dataplane::sai::SER_TYPE_ECC_DOUBLE_BIT; + + default: + return lemming::dataplane::sai::SER_TYPE_UNSPECIFIED; + } +} +sai_ser_type_t convert_sai_ser_type_t_to_sai( + lemming::dataplane::sai::SerType val) { + switch (val) { + case lemming::dataplane::sai::SER_TYPE_UNKNOWN: + return SAI_SER_TYPE_UNKNOWN; + + case lemming::dataplane::sai::SER_TYPE_PARITY: + return SAI_SER_TYPE_PARITY; + + case lemming::dataplane::sai::SER_TYPE_ECC_SINGLE_BIT: + return SAI_SER_TYPE_ECC_SINGLE_BIT; + + case lemming::dataplane::sai::SER_TYPE_ECC_DOUBLE_BIT: + return SAI_SER_TYPE_ECC_DOUBLE_BIT; + + default: + return SAI_SER_TYPE_UNKNOWN; + } +} + +google::protobuf::RepeatedField convert_list_sai_ser_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_ser_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_ser_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_ser_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::Srv6SidlistAttr +convert_sai_srv6_sidlist_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SRV6_SIDLIST_ATTR_TYPE: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TYPE; + + case SAI_SRV6_SIDLIST_ATTR_TLV_LIST: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TLV_LIST; + + case SAI_SRV6_SIDLIST_ATTR_SEGMENT_LIST: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SEGMENT_LIST; + + case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_NEXT_HOP_ID; + + case SAI_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_STATS_COUNT_MODE; + + case SAI_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_UNSPECIFIED; + } +} +sai_srv6_sidlist_attr_t convert_sai_srv6_sidlist_attr_t_to_sai( + lemming::dataplane::sai::Srv6SidlistAttr val) { + switch (val) { + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TYPE: + return SAI_SRV6_SIDLIST_ATTR_TYPE; + + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TLV_LIST: + return SAI_SRV6_SIDLIST_ATTR_TLV_LIST; + + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SEGMENT_LIST: + return SAI_SRV6_SIDLIST_ATTR_SEGMENT_LIST; + + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_NEXT_HOP_ID: + return SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID; + + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_STATS_COUNT_MODE: + return SAI_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_SRV6_SIDLIST_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_srv6_sidlist_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_srv6_sidlist_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_srv6_sidlist_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::Srv6SidlistStat +convert_sai_srv6_sidlist_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SRV6_SIDLIST_STAT_OUT_PACKETS: + return lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_PACKETS; + + case SAI_SRV6_SIDLIST_STAT_OUT_OCTETS: + return lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_OCTETS; + + default: + return lemming::dataplane::sai::SRV6_SIDLIST_STAT_UNSPECIFIED; + } +} +sai_srv6_sidlist_stat_t convert_sai_srv6_sidlist_stat_t_to_sai( + lemming::dataplane::sai::Srv6SidlistStat val) { + switch (val) { + case lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_PACKETS: + return SAI_SRV6_SIDLIST_STAT_OUT_PACKETS; + + case lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_OCTETS: + return SAI_SRV6_SIDLIST_STAT_OUT_OCTETS; + + default: + return SAI_SRV6_SIDLIST_STAT_OUT_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_stat_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_srv6_sidlist_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_srv6_sidlist_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_srv6_sidlist_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::Srv6SidlistType +convert_sai_srv6_sidlist_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SRV6_SIDLIST_TYPE_INSERT: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT; + + case SAI_SRV6_SIDLIST_TYPE_INSERT_RED: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT_RED; + + case SAI_SRV6_SIDLIST_TYPE_ENCAPS: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS; + + case SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS_RED; + + case SAI_SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_UNSPECIFIED; + } +} +sai_srv6_sidlist_type_t convert_sai_srv6_sidlist_type_t_to_sai( + lemming::dataplane::sai::Srv6SidlistType val) { + switch (val) { + case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT: + return SAI_SRV6_SIDLIST_TYPE_INSERT; + + case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT_RED: + return SAI_SRV6_SIDLIST_TYPE_INSERT_RED; + + case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS: + return SAI_SRV6_SIDLIST_TYPE_ENCAPS; + + case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS_RED: + return SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED; + + case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE: + return SAI_SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_SRV6_SIDLIST_TYPE_INSERT; + } +} + +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_srv6_sidlist_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_srv6_sidlist_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_srv6_sidlist_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::StatsCountMode convert_sai_stats_count_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_STATS_COUNT_MODE_PACKET_AND_BYTE: + return lemming::dataplane::sai::STATS_COUNT_MODE_PACKET_AND_BYTE; + + case SAI_STATS_COUNT_MODE_PACKET: + return lemming::dataplane::sai::STATS_COUNT_MODE_PACKET; + + case SAI_STATS_COUNT_MODE_BYTE: + return lemming::dataplane::sai::STATS_COUNT_MODE_BYTE; + + case SAI_STATS_COUNT_MODE_NONE: + return lemming::dataplane::sai::STATS_COUNT_MODE_NONE; + + default: + return lemming::dataplane::sai::STATS_COUNT_MODE_UNSPECIFIED; + } +} +sai_stats_count_mode_t convert_sai_stats_count_mode_t_to_sai( + lemming::dataplane::sai::StatsCountMode val) { + switch (val) { + case lemming::dataplane::sai::STATS_COUNT_MODE_PACKET_AND_BYTE: + return SAI_STATS_COUNT_MODE_PACKET_AND_BYTE; + + case lemming::dataplane::sai::STATS_COUNT_MODE_PACKET: + return SAI_STATS_COUNT_MODE_PACKET; + + case lemming::dataplane::sai::STATS_COUNT_MODE_BYTE: + return SAI_STATS_COUNT_MODE_BYTE; + + case lemming::dataplane::sai::STATS_COUNT_MODE_NONE: + return SAI_STATS_COUNT_MODE_NONE; + + default: + return SAI_STATS_COUNT_MODE_PACKET_AND_BYTE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_stats_count_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_stats_count_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_stats_count_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_stats_count_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::StatsMode convert_sai_stats_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_STATS_MODE_READ: + return lemming::dataplane::sai::STATS_MODE_READ; + + case SAI_STATS_MODE_READ_AND_CLEAR: + return lemming::dataplane::sai::STATS_MODE_READ_AND_CLEAR; + + case SAI_STATS_MODE_BULK_READ: + return lemming::dataplane::sai::STATS_MODE_BULK_READ; + + case SAI_STATS_MODE_BULK_CLEAR: + return lemming::dataplane::sai::STATS_MODE_BULK_CLEAR; + + case SAI_STATS_MODE_BULK_READ_AND_CLEAR: + return lemming::dataplane::sai::STATS_MODE_BULK_READ_AND_CLEAR; + + default: + return lemming::dataplane::sai::STATS_MODE_UNSPECIFIED; + } +} +sai_stats_mode_t convert_sai_stats_mode_t_to_sai( + lemming::dataplane::sai::StatsMode val) { + switch (val) { + case lemming::dataplane::sai::STATS_MODE_READ: + return SAI_STATS_MODE_READ; + + case lemming::dataplane::sai::STATS_MODE_READ_AND_CLEAR: + return SAI_STATS_MODE_READ_AND_CLEAR; + + case lemming::dataplane::sai::STATS_MODE_BULK_READ: + return SAI_STATS_MODE_BULK_READ; + + case lemming::dataplane::sai::STATS_MODE_BULK_CLEAR: + return SAI_STATS_MODE_BULK_CLEAR; + + case lemming::dataplane::sai::STATS_MODE_BULK_READ_AND_CLEAR: + return SAI_STATS_MODE_BULK_READ_AND_CLEAR; + + default: + return SAI_STATS_MODE_READ; + } +} + +google::protobuf::RepeatedField convert_list_sai_stats_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_stats_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_stats_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_stats_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::StpAttr convert_sai_stp_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_STP_ATTR_VLAN_LIST: + return lemming::dataplane::sai::STP_ATTR_VLAN_LIST; + + case SAI_STP_ATTR_BRIDGE_ID: + return lemming::dataplane::sai::STP_ATTR_BRIDGE_ID; + + case SAI_STP_ATTR_PORT_LIST: + return lemming::dataplane::sai::STP_ATTR_PORT_LIST; + + default: + return lemming::dataplane::sai::STP_ATTR_UNSPECIFIED; + } +} +sai_stp_attr_t convert_sai_stp_attr_t_to_sai( + lemming::dataplane::sai::StpAttr val) { + switch (val) { + case lemming::dataplane::sai::STP_ATTR_VLAN_LIST: + return SAI_STP_ATTR_VLAN_LIST; + + case lemming::dataplane::sai::STP_ATTR_BRIDGE_ID: + return SAI_STP_ATTR_BRIDGE_ID; + + case lemming::dataplane::sai::STP_ATTR_PORT_LIST: + return SAI_STP_ATTR_PORT_LIST; + + default: + return SAI_STP_ATTR_VLAN_LIST; + } +} + +google::protobuf::RepeatedField convert_list_sai_stp_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_stp_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_stp_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_stp_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::StpPortAttr convert_sai_stp_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_STP_PORT_ATTR_STP: + return lemming::dataplane::sai::STP_PORT_ATTR_STP; + + case SAI_STP_PORT_ATTR_BRIDGE_PORT: + return lemming::dataplane::sai::STP_PORT_ATTR_BRIDGE_PORT; + + case SAI_STP_PORT_ATTR_STATE: + return lemming::dataplane::sai::STP_PORT_ATTR_STATE; + + default: + return lemming::dataplane::sai::STP_PORT_ATTR_UNSPECIFIED; + } +} +sai_stp_port_attr_t convert_sai_stp_port_attr_t_to_sai( + lemming::dataplane::sai::StpPortAttr val) { + switch (val) { + case lemming::dataplane::sai::STP_PORT_ATTR_STP: + return SAI_STP_PORT_ATTR_STP; + + case lemming::dataplane::sai::STP_PORT_ATTR_BRIDGE_PORT: + return SAI_STP_PORT_ATTR_BRIDGE_PORT; + + case lemming::dataplane::sai::STP_PORT_ATTR_STATE: + return SAI_STP_PORT_ATTR_STATE; + + default: + return SAI_STP_PORT_ATTR_STP; + } +} + +google::protobuf::RepeatedField convert_list_sai_stp_port_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_stp_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_stp_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_stp_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::StpPortState convert_sai_stp_port_state_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_STP_PORT_STATE_LEARNING: + return lemming::dataplane::sai::STP_PORT_STATE_LEARNING; + + case SAI_STP_PORT_STATE_FORWARDING: + return lemming::dataplane::sai::STP_PORT_STATE_FORWARDING; + + case SAI_STP_PORT_STATE_BLOCKING: + return lemming::dataplane::sai::STP_PORT_STATE_BLOCKING; + + default: + return lemming::dataplane::sai::STP_PORT_STATE_UNSPECIFIED; + } +} +sai_stp_port_state_t convert_sai_stp_port_state_t_to_sai( + lemming::dataplane::sai::StpPortState val) { + switch (val) { + case lemming::dataplane::sai::STP_PORT_STATE_LEARNING: + return SAI_STP_PORT_STATE_LEARNING; + + case lemming::dataplane::sai::STP_PORT_STATE_FORWARDING: + return SAI_STP_PORT_STATE_FORWARDING; + + case lemming::dataplane::sai::STP_PORT_STATE_BLOCKING: + return SAI_STP_PORT_STATE_BLOCKING; + + default: + return SAI_STP_PORT_STATE_LEARNING; + } +} + +google::protobuf::RepeatedField convert_list_sai_stp_port_state_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_stp_port_state_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_stp_port_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_stp_port_state_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchAsicSdkHealthCategory +convert_sai_switch_asic_sdk_health_category_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; + + case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW; + + case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW; + + case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW; + + default: + return lemming::dataplane::sai:: + SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED; + } +} +sai_switch_asic_sdk_health_category_t +convert_sai_switch_asic_sdk_health_category_t_to_sai( + lemming::dataplane::sai::SwitchAsicSdkHealthCategory val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW: + return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; + + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW: + return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW; + + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW: + return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW; + + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW: + return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW; + + default: + return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_asic_sdk_health_category_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_asic_sdk_health_category_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_asic_sdk_health_category_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchAsicSdkHealthSeverity +convert_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; + + case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING; + + case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE: + return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE; + + default: + return lemming::dataplane::sai:: + SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED; + } +} +sai_switch_asic_sdk_health_severity_t +convert_sai_switch_asic_sdk_health_severity_t_to_sai( + lemming::dataplane::sai::SwitchAsicSdkHealthSeverity val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL: + return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; + + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING: + return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING; + + case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE: + return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE; + + default: + return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_asic_sdk_health_severity_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_asic_sdk_health_severity_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_asic_sdk_health_severity_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_asic_sdk_health_severity_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchAttrExtensions +convert_sai_switch_attr_extensions_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START: + return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_START; + + case SAI_SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL: + return lemming::dataplane::sai::SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL; + + case SAI_SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED: + return lemming::dataplane::sai::SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED; + + case SAI_SWITCH_ATTR_HA_SET_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_HA_SET_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_EXTENSIONS_RANGE_END: + return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_END; + + default: + return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_UNSPECIFIED; + } +} +sai_switch_attr_extensions_t convert_sai_switch_attr_extensions_t_to_sai( + lemming::dataplane::sai::SwitchAttrExtensions val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_START: + return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START; + + case lemming::dataplane::sai::SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL: + return SAI_SWITCH_ATTR_DASH_CAPS_HA_SCOPE_LEVEL; + + case lemming::dataplane::sai::SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED: + return SAI_SWITCH_ATTR_DASH_CAPS_HA_OWNER_NEEDED; + + case lemming::dataplane::sai::SWITCH_ATTR_HA_SET_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_HA_SET_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_HA_SCOPE_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_END: + return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_END; + + default: + return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_attr_extensions_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_attr_extensions_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_attr_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_attr_extensions_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchAttr convert_sai_switch_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; + + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS; + + case SAI_SWITCH_ATTR_PORT_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_LIST; + + case SAI_SWITCH_ATTR_PORT_MAX_MTU: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_MAX_MTU; + + case SAI_SWITCH_ATTR_CPU_PORT: + return lemming::dataplane::sai::SWITCH_ATTR_CPU_PORT; + + case SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_VIRTUAL_ROUTERS; + + case SAI_SWITCH_ATTR_FDB_TABLE_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_FDB_TABLE_SIZE; + + case SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE; + + case SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_L3_ROUTE_TABLE_SIZE; + + case SAI_SWITCH_ATTR_LAG_MEMBERS: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_MEMBERS; + + case SAI_SWITCH_ATTR_NUMBER_OF_LAGS: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_LAGS; + + case SAI_SWITCH_ATTR_ECMP_MEMBERS: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBERS; + + case SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS; + + case SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES; + + case SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES; + + case SAI_SWITCH_ATTR_NUMBER_OF_QUEUES: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_QUEUES; + + case SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_CPU_QUEUES; + + case SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: + return lemming::dataplane::sai::SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED; + + case SAI_SWITCH_ATTR_OPER_STATUS: + return lemming::dataplane::sai::SWITCH_ATTR_OPER_STATUS; + + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS; + + case SAI_SWITCH_ATTR_TEMP_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_TEMP_LIST; + + case SAI_SWITCH_ATTR_MAX_TEMP: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_TEMP; + + case SAI_SWITCH_ATTR_AVERAGE_TEMP: + return lemming::dataplane::sai::SWITCH_ATTR_AVERAGE_TEMP; + + case SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: + return lemming::dataplane::sai:: + SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: + return lemming::dataplane::sai:: + SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE: + return lemming::dataplane::sai:: + SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE: + return lemming::dataplane::sai:: + SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_PORT_USER_META_DATA_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_VLAN_USER_META_DATA_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_VLAN_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_ACL_USER_META_DATA_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_META_DATA_RANGE; + + case SAI_SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE; + + case SAI_SWITCH_ATTR_DEFAULT_VLAN_ID: + return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VLAN_ID; + + case SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID: + return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_STP_INST_ID; + + case SAI_SWITCH_ATTR_MAX_STP_INSTANCE: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_STP_INSTANCE; + + case SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID; + + case SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai:: + SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID; + + case SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: + return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID; + + case SAI_SWITCH_ATTR_INGRESS_ACL: + return lemming::dataplane::sai::SWITCH_ATTR_INGRESS_ACL; + + case SAI_SWITCH_ATTR_EGRESS_ACL: + return lemming::dataplane::sai::SWITCH_ATTR_EGRESS_ACL; + + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES; + + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS; + + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL; + + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP; + + case SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_TOTAL_BUFFER_SIZE; + + case SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: + return lemming::dataplane::sai::SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM; + + case SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: + return lemming::dataplane::sai::SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: + return lemming::dataplane::sai:: + SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: + return lemming::dataplane::sai:: + SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_FDB_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_L2MC_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPMC_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAT_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAT_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE; + + case SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP; + + case SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY; + + case SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP: + return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_TRAP_GROUP; + + case SAI_SWITCH_ATTR_ECMP_HASH: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH; + + case SAI_SWITCH_ATTR_LAG_HASH: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH; + + case SAI_SWITCH_ATTR_RESTART_WARM: + return lemming::dataplane::sai::SWITCH_ATTR_RESTART_WARM; + + case SAI_SWITCH_ATTR_WARM_RECOVER: + return lemming::dataplane::sai::SWITCH_ATTR_WARM_RECOVER; + + case SAI_SWITCH_ATTR_RESTART_TYPE: + return lemming::dataplane::sai::SWITCH_ATTR_RESTART_TYPE; + + case SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: + return lemming::dataplane::sai::SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL; + + case SAI_SWITCH_ATTR_NV_STORAGE_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_NV_STORAGE_SIZE; + + case SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_ACTION_COUNT; + + case SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_RANGE_COUNT; + + case SAI_SWITCH_ATTR_ACL_CAPABILITY: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_CAPABILITY; + + case SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: + return lemming::dataplane::sai::SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY; + + case SAI_SWITCH_ATTR_SWITCHING_MODE: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCHING_MODE; + + case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE; + + case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE; + + case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::SWITCH_ATTR_SRC_MAC_ADDRESS; + + case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_LEARNED_ADDRESSES; + + case SAI_SWITCH_ATTR_FDB_AGING_TIME: + return lemming::dataplane::sai::SWITCH_ATTR_FDB_AGING_TIME; + + case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: + return lemming::dataplane::sai:: + SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION; + + case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: + return lemming::dataplane::sai:: + SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION; + + case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: + return lemming::dataplane::sai:: + SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION; + + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM; + + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED; + + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET; + + case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH; + + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4; + + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4; + + case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV6; + + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM; + + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_SEED; + + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET; + + case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH; + + case SAI_SWITCH_ATTR_LAG_HASH_IPV4: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4; + + case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4; + + case SAI_SWITCH_ATTR_LAG_HASH_IPV6: + return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV6; + + case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: + return lemming::dataplane::sai::SWITCH_ATTR_COUNTER_REFRESH_INTERVAL; + + case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_DEFAULT_TC; + + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP; + + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP; + + case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_TC_MAP; + + case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP; + + case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP; + + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; + + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHELL_ENABLE; + + case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_PROFILE_ID; + + case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_HARDWARE_INFO; + + case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_PATH_NAME; + + case SAI_SWITCH_ATTR_INIT_SWITCH: + return lemming::dataplane::sai::SWITCH_ATTR_INIT_SWITCH; + + case SAI_SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY; + + case SAI_SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY: + return lemming::dataplane::sai:: + SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY; + + case SAI_SWITCH_ATTR_FDB_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_FDB_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY; + + case SAI_SWITCH_ATTR_PACKET_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_PACKET_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_FAST_API_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_FAST_API_ENABLE; + + case SAI_SWITCH_ATTR_MIRROR_TC: + return lemming::dataplane::sai::SWITCH_ATTR_MIRROR_TC; + + case SAI_SWITCH_ATTR_ACL_STAGE_INGRESS: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_INGRESS; + + case SAI_SWITCH_ATTR_ACL_STAGE_EGRESS: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_EGRESS; + + case SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH: + return lemming::dataplane::sai::SWITCH_ATTR_SRV6_MAX_SID_DEPTH; + + case SAI_SWITCH_ATTR_SRV6_TLV_TYPE: + return lemming::dataplane::sai::SWITCH_ATTR_SRV6_TLV_TYPE; + + case SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES; + + case SAI_SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY; + + case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: + return lemming::dataplane::sai::SWITCH_ATTR_PFC_DLR_PACKET_ACTION; + + case SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE; + + case SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL: + return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL; + + case SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE: + return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE; + + case SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL: + return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL; + + case SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: + return lemming::dataplane::sai:: + SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE; + + case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: + return lemming::dataplane::sai::SWITCH_ATTR_TPID_OUTER_VLAN; + + case SAI_SWITCH_ATTR_TPID_INNER_VLAN: + return lemming::dataplane::sai::SWITCH_ATTR_TPID_INNER_VLAN; + + case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_CRC_CHECK_ENABLE; + + case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_CRC_RECALCULATION_ENABLE; + + case SAI_SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY: + return lemming::dataplane::sai:: + SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY; + + case SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_BFD_SESSION; + + case SAI_SWITCH_ATTR_MAX_BFD_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_BFD_SESSION; + + case SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: + return lemming::dataplane::sai:: + SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE; + + case SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: + return lemming::dataplane::sai:: + SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE; + + case SAI_SWITCH_ATTR_MIN_BFD_RX: + return lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_RX; + + case SAI_SWITCH_ATTR_MIN_BFD_TX: + return lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_TX; + + case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE; + + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: + return lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC; + + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: + return lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_PORT; + + case SAI_SWITCH_ATTR_MAX_MIRROR_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_MIRROR_SESSION; + + case SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION; + + case SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: + return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE; + + case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: + return lemming::dataplane::sai::SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL; + + case SAI_SWITCH_ATTR_TAM_OBJECT_ID: + return lemming::dataplane::sai::SWITCH_ATTR_TAM_OBJECT_ID; + + case SAI_SWITCH_ATTR_TAM_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_TAM_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST; + + case SAI_SWITCH_ATTR_PRE_SHUTDOWN: + return lemming::dataplane::sai::SWITCH_ATTR_PRE_SHUTDOWN; + + case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: + return lemming::dataplane::sai::SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID; + + case SAI_SWITCH_ATTR_NAT_ENABLE: + return lemming::dataplane::sai::SWITCH_ATTR_NAT_ENABLE; + + case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: + return lemming::dataplane::sai::SWITCH_ATTR_HARDWARE_ACCESS_BUS; + + case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: + return lemming::dataplane::sai::SWITCH_ATTR_PLATFROM_CONTEXT; + + case SAI_SWITCH_ATTR_REGISTER_READ: + return lemming::dataplane::sai::SWITCH_ATTR_REGISTER_READ; + + case SAI_SWITCH_ATTR_REGISTER_WRITE: + return lemming::dataplane::sai::SWITCH_ATTR_REGISTER_WRITE; + + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST; + + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_METHOD; + + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_TYPE; + + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE; + + case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_BROADCAST_STOP; + + case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: + return lemming::dataplane::sai:: + SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH; + + case SAI_SWITCH_ATTR_FIRMWARE_STATUS: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_STATUS; + + case SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MAJOR_VERSION; + + case SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION: + return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MINOR_VERSION; + + case SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_CONNECTOR_LIST; + + case SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: + return lemming::dataplane::sai:: + SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT; + + case SAI_SWITCH_ATTR_TYPE: + return lemming::dataplane::sai::SWITCH_ATTR_TYPE; + + case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_MACSEC_OBJECT_LIST; + + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP; + + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + return lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; + + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case SAI_SWITCH_ATTR_SWITCH_ID: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ID; + + case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_SYSTEM_CORES; + + case SAI_SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST; + + case SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS; + + case SAI_SWITCH_ATTR_SYSTEM_PORT_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_LIST; + + case SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: + return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS; + + case SAI_SWITCH_ATTR_FABRIC_PORT_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_FABRIC_PORT_LIST; + + case SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: + return lemming::dataplane::sai::SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE; + + case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: + return lemming::dataplane::sai::SWITCH_ATTR_FAILOVER_CONFIG_MODE; + + case SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: + return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_FAILOVER_MODE; + + case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_OBJECTS_LIST; + + case SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: + return lemming::dataplane::sai:: + SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE; + + case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: + return lemming::dataplane::sai::SWITCH_ATTR_PRE_INGRESS_ACL; + + case SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY; + + case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST; + + case SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: + return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_MY_MAC_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_LIST; + + case SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: + return lemming::dataplane::sai::SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES; + + case SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES; + + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: + return lemming::dataplane::sai:: + SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES; + + case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; + + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + return lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; + + case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: + return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_OBJECT_ID; + + case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: + return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_TAG_TPID; + + case SAI_SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY; + + case SAI_SWITCH_ATTR_NAT_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_NAT_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT; + + case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: + return lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBER_COUNT; + + case SAI_SWITCH_ATTR_ARS_PROFILE: + return lemming::dataplane::sai::SWITCH_ATTR_ARS_PROFILE; + + case SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_POST_INGRESS; + + case SAI_SWITCH_ATTR_CREDIT_WD: + return lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD; + + case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: + return lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD_TIMER; + + case SAI_SWITCH_ATTR_SWITCH_ISOLATE: + return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ISOLATE; + + case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: + return lemming::dataplane::sai:: + SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE; + + case SAI_SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY: + return lemming::dataplane::sai:: + SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return lemming::dataplane::sai:: + SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return lemming::dataplane::sai:: + SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return lemming::dataplane::sai:: + SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case SAI_SWITCH_ATTR_ACL_CHAIN_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_CHAIN_LIST; + + case SAI_SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY; + + case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: + return lemming::dataplane::sai:: + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: + return lemming::dataplane::sai:: + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY; + + case SAI_SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY: + return lemming::dataplane::sai::SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY; + + case SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_TWAMP_SESSION; + + case SAI_SWITCH_ATTR_MAX_TWAMP_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_TWAMP_SESSION; + + case SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: + return lemming::dataplane::sai:: + SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY; + + case SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS; + + case SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: + return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_PRE_INGRESS; + + case SAI_SWITCH_ATTR_POE_DEVICE_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_POE_DEVICE_LIST; + + case SAI_SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY: + return lemming::dataplane::sai:: + SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY; + + case SAI_SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION; + + case SAI_SWITCH_ATTR_MAX_ICMP_ECHO_SESSION: + return lemming::dataplane::sai::SWITCH_ATTR_MAX_ICMP_ECHO_SESSION; + + case SAI_SWITCH_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::SWITCH_ATTR_STATS_COUNT_MODE; + + case SAI_SWITCH_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::SWITCH_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::SWITCH_ATTR_UNSPECIFIED; + } +} +sai_switch_attr_t convert_sai_switch_attr_t_to_sai( + lemming::dataplane::sai::SwitchAttr val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: + return SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: + return SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_LIST: + return SAI_SWITCH_ATTR_PORT_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_MAX_MTU: + return SAI_SWITCH_ATTR_PORT_MAX_MTU; + + case lemming::dataplane::sai::SWITCH_ATTR_CPU_PORT: + return SAI_SWITCH_ATTR_CPU_PORT; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: + return SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_TABLE_SIZE: + return SAI_SWITCH_ATTR_FDB_TABLE_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: + return SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: + return SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_MEMBERS: + return SAI_SWITCH_ATTR_LAG_MEMBERS; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_LAGS: + return SAI_SWITCH_ATTR_NUMBER_OF_LAGS; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBERS: + return SAI_SWITCH_ATTR_ECMP_MEMBERS; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: + return SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: + return SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: + return SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_QUEUES: + return SAI_SWITCH_ATTR_NUMBER_OF_QUEUES; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: + return SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES; + + case lemming::dataplane::sai::SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: + return SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED; + + case lemming::dataplane::sai::SWITCH_ATTR_OPER_STATUS: + return SAI_SWITCH_ATTR_OPER_STATUS; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: + return SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS; + + case lemming::dataplane::sai::SWITCH_ATTR_TEMP_LIST: + return SAI_SWITCH_ATTR_TEMP_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_TEMP: + return SAI_SWITCH_ATTR_MAX_TEMP; + + case lemming::dataplane::sai::SWITCH_ATTR_AVERAGE_TEMP: + return SAI_SWITCH_ATTR_AVERAGE_TEMP; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: + return SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_PORT_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_VLAN_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_VLAN_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_META_DATA_RANGE: + return SAI_SWITCH_ATTR_ACL_USER_META_DATA_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE: + return SAI_SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VLAN_ID: + return SAI_SWITCH_ATTR_DEFAULT_VLAN_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_STP_INST_ID: + return SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_STP_INSTANCE: + return SAI_SWITCH_ATTR_MAX_STP_INSTANCE; + + case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: + return SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai:: + SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: + return SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: + return SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_INGRESS_ACL: + return SAI_SWITCH_ATTR_INGRESS_ACL; + + case lemming::dataplane::sai::SWITCH_ATTR_EGRESS_ACL: + return SAI_SWITCH_ATTR_EGRESS_ACL; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: + return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES; + + case lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: + return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS; + + case lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: + return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL; + + case lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: + return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP; + + case lemming::dataplane::sai::SWITCH_ATTR_TOTAL_BUFFER_SIZE: + return SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: + return SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM; + + case lemming::dataplane::sai::SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: + return SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_FDB_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE: + return SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP: + return SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_TRAP_GROUP: + return SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH: + return SAI_SWITCH_ATTR_ECMP_HASH; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH: + return SAI_SWITCH_ATTR_LAG_HASH; + + case lemming::dataplane::sai::SWITCH_ATTR_RESTART_WARM: + return SAI_SWITCH_ATTR_RESTART_WARM; + + case lemming::dataplane::sai::SWITCH_ATTR_WARM_RECOVER: + return SAI_SWITCH_ATTR_WARM_RECOVER; + + case lemming::dataplane::sai::SWITCH_ATTR_RESTART_TYPE: + return SAI_SWITCH_ATTR_RESTART_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: + return SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL; + + case lemming::dataplane::sai::SWITCH_ATTR_NV_STORAGE_SIZE: + return SAI_SWITCH_ATTR_NV_STORAGE_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_ACTION_COUNT: + return SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_RANGE_COUNT: + return SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_CAPABILITY: + return SAI_SWITCH_ATTR_ACL_CAPABILITY; + + case lemming::dataplane::sai::SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: + return SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCHING_MODE: + return SAI_SWITCH_ATTR_SWITCHING_MODE; + + case lemming::dataplane::sai::SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: + return SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: + return SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_SRC_MAC_ADDRESS: + return SAI_SWITCH_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_LEARNED_ADDRESSES: + return SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_AGING_TIME: + return SAI_SWITCH_ATTR_FDB_AGING_TIME; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: + return SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: + return SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: + return SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: + return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: + return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: + return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: + return SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4: + return SAI_SWITCH_ATTR_ECMP_HASH_IPV4; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: + return SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV6: + return SAI_SWITCH_ATTR_ECMP_HASH_IPV6; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: + return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: + return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: + return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: + return SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4: + return SAI_SWITCH_ATTR_LAG_HASH_IPV4; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: + return SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4; + + case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV6: + return SAI_SWITCH_ATTR_LAG_HASH_IPV6; + + case lemming::dataplane::sai::SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: + return SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DEFAULT_TC: + return SAI_SWITCH_ATTR_QOS_DEFAULT_TC; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: + return SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: + return SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: + return SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: + return SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: + return SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHELL_ENABLE: + return SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_PROFILE_ID: + return SAI_SWITCH_ATTR_SWITCH_PROFILE_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_HARDWARE_INFO: + return SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_PATH_NAME: + return SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME; + + case lemming::dataplane::sai::SWITCH_ATTR_INIT_SWITCH: + return SAI_SWITCH_ATTR_INIT_SWITCH; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY: + return SAI_SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY: + return SAI_SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_FDB_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_FDB_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: + return SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_PACKET_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_PACKET_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_FAST_API_ENABLE: + return SAI_SWITCH_ATTR_FAST_API_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_MIRROR_TC: + return SAI_SWITCH_ATTR_MIRROR_TC; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_INGRESS: + return SAI_SWITCH_ATTR_ACL_STAGE_INGRESS; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_EGRESS: + return SAI_SWITCH_ATTR_ACL_STAGE_EGRESS; + + case lemming::dataplane::sai::SWITCH_ATTR_SRV6_MAX_SID_DEPTH: + return SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH; + + case lemming::dataplane::sai::SWITCH_ATTR_SRV6_TLV_TYPE: + return SAI_SWITCH_ATTR_SRV6_TLV_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: + return SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES; + + case lemming::dataplane::sai::SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY: + return SAI_SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_PFC_DLR_PACKET_ACTION: + return SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION; + + case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE: + return SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL: + return SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL; + + case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE: + return SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE; + + case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL: + return SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL; + + case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: + return SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_TPID_OUTER_VLAN: + return SAI_SWITCH_ATTR_TPID_OUTER_VLAN; + + case lemming::dataplane::sai::SWITCH_ATTR_TPID_INNER_VLAN: + return SAI_SWITCH_ATTR_TPID_INNER_VLAN; + + case lemming::dataplane::sai::SWITCH_ATTR_CRC_CHECK_ENABLE: + return SAI_SWITCH_ATTR_CRC_CHECK_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_CRC_RECALCULATION_ENABLE: + return SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY: + return SAI_SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_BFD_SESSION: + return SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_BFD_SESSION: + return SAI_SWITCH_ATTR_MAX_BFD_SESSION; + + case lemming::dataplane::sai:: + SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: + return SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE; + + case lemming::dataplane::sai:: + SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: + return SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_RX: + return SAI_SWITCH_ATTR_MIN_BFD_RX; + + case lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_TX: + return SAI_SWITCH_ATTR_MIN_BFD_TX; + + case lemming::dataplane::sai::SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: + return SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: + return SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC; + + case lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_PORT: + return SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_MIRROR_SESSION: + return SAI_SWITCH_ATTR_MAX_MIRROR_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: + return SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: + return SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE; + + case lemming::dataplane::sai::SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: + return SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL; + + case lemming::dataplane::sai::SWITCH_ATTR_TAM_OBJECT_ID: + return SAI_SWITCH_ATTR_TAM_OBJECT_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_TAM_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_TAM_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: + return SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_PRE_SHUTDOWN: + return SAI_SWITCH_ATTR_PRE_SHUTDOWN; + + case lemming::dataplane::sai::SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: + return SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_NAT_ENABLE: + return SAI_SWITCH_ATTR_NAT_ENABLE; + + case lemming::dataplane::sai::SWITCH_ATTR_HARDWARE_ACCESS_BUS: + return SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS; + + case lemming::dataplane::sai::SWITCH_ATTR_PLATFROM_CONTEXT: + return SAI_SWITCH_ATTR_PLATFROM_CONTEXT; + + case lemming::dataplane::sai::SWITCH_ATTR_REGISTER_READ: + return SAI_SWITCH_ATTR_REGISTER_READ; + + case lemming::dataplane::sai::SWITCH_ATTR_REGISTER_WRITE: + return SAI_SWITCH_ATTR_REGISTER_WRITE; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: + return SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_METHOD: + return SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_TYPE: + return SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: + return SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: + return SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: + return SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_STATUS: + return SAI_SWITCH_ATTR_FIRMWARE_STATUS; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: + return SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION; + + case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MINOR_VERSION: + return SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_CONNECTOR_LIST: + return SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST; + + case lemming::dataplane::sai:: + SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: + return SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT; + + case lemming::dataplane::sai::SWITCH_ATTR_TYPE: + return SAI_SWITCH_ATTR_TYPE; + + case lemming::dataplane::sai::SWITCH_ATTR_MACSEC_OBJECT_LIST: + return SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ID: + return SAI_SWITCH_ATTR_SWITCH_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_SYSTEM_CORES: + return SAI_SWITCH_ATTR_MAX_SYSTEM_CORES; + + case lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST: + return SAI_SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: + return SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS; + + case lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_LIST: + return SAI_SWITCH_ATTR_SYSTEM_PORT_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: + return SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS; + + case lemming::dataplane::sai::SWITCH_ATTR_FABRIC_PORT_LIST: + return SAI_SWITCH_ATTR_FABRIC_PORT_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: + return SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_FAILOVER_CONFIG_MODE: + return SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE; + + case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: + return SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE; + + case lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_OBJECTS_LIST: + return SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST; + + case lemming::dataplane::sai:: + SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: + return SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE; + + case lemming::dataplane::sai::SWITCH_ATTR_PRE_INGRESS_ACL: + return SAI_SWITCH_ATTR_PRE_INGRESS_ACL; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: + return SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: + return SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: + return SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_LIST: + return SAI_SWITCH_ATTR_MY_MAC_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: + return SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: + return SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: + return SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES; + + case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + return SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; + + case lemming::dataplane::sai:: + SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; + + case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_OBJECT_ID: + return SAI_SWITCH_ATTR_IPSEC_OBJECT_ID; + + case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_TAG_TPID: + return SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID; + + case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY: + return SAI_SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_NAT_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_NAT_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: + return SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT; + + case lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBER_COUNT: + return SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT; + + case lemming::dataplane::sai::SWITCH_ATTR_ARS_PROFILE: + return SAI_SWITCH_ATTR_ARS_PROFILE; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_POST_INGRESS: + return SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS; + + case lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD: + return SAI_SWITCH_ATTR_CREDIT_WD; + + case lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD_TIMER: + return SAI_SWITCH_ATTR_CREDIT_WD_TIMER; + + case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ISOLATE: + return SAI_SWITCH_ATTR_SWITCH_ISOLATE; + + case lemming::dataplane::sai::SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: + return SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE; + + case lemming::dataplane::sai:: + SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + return SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_CHAIN_LIST: + return SAI_SWITCH_ATTR_ACL_CHAIN_LIST; + + case lemming::dataplane::sai::SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY: + return SAI_SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: + return SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY; + + case lemming::dataplane::sai:: + SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: + return SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY; + + case lemming::dataplane::sai::SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY: + return SAI_SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: + return SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_TWAMP_SESSION: + return SAI_SWITCH_ATTR_MAX_TWAMP_SESSION; + + case lemming::dataplane::sai:: + SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: + return SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: + return SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS; + + case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: + return SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS; + + case lemming::dataplane::sai::SWITCH_ATTR_POE_DEVICE_LIST: + return SAI_SWITCH_ATTR_POE_DEVICE_LIST; + + case lemming::dataplane::sai:: + SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY: + return SAI_SWITCH_ATTR_ICMP_ECHO_SESSION_STATE_CHANGE_NOTIFY; + + case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION: + return SAI_SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_MAX_ICMP_ECHO_SESSION: + return SAI_SWITCH_ATTR_MAX_ICMP_ECHO_SESSION; + + case lemming::dataplane::sai::SWITCH_ATTR_STATS_COUNT_MODE: + return SAI_SWITCH_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::SWITCH_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_SWITCH_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; + } +} + +google::protobuf::RepeatedField convert_list_sai_switch_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchFailoverConfigMode +convert_sai_switch_failover_config_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS: + return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; + + case SAI_SWITCH_FAILOVER_CONFIG_MODE_HITLESS: + return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_HITLESS; + + default: + return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_UNSPECIFIED; + } +} +sai_switch_failover_config_mode_t +convert_sai_switch_failover_config_mode_t_to_sai( + lemming::dataplane::sai::SwitchFailoverConfigMode val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS: + return SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; + + case lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_HITLESS: + return SAI_SWITCH_FAILOVER_CONFIG_MODE_HITLESS; + + default: + return SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_failover_config_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_failover_config_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_failover_config_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_failover_config_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchFirmwareLoadMethod +convert_sai_switch_firmware_load_method_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_NONE; + + case SAI_SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL; + + case SAI_SWITCH_FIRMWARE_LOAD_METHOD_EEPROM: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_EEPROM; + + default: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_UNSPECIFIED; + } +} +sai_switch_firmware_load_method_t +convert_sai_switch_firmware_load_method_t_to_sai( + lemming::dataplane::sai::SwitchFirmwareLoadMethod val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_NONE: + return SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE; + + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL: + return SAI_SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL; + + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_EEPROM: + return SAI_SWITCH_FIRMWARE_LOAD_METHOD_EEPROM; + + default: + return SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_firmware_load_method_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_firmware_load_method_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_firmware_load_method_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_firmware_load_method_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchFirmwareLoadType +convert_sai_switch_firmware_load_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_SKIP; + + case SAI_SWITCH_FIRMWARE_LOAD_TYPE_FORCE: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_FORCE; + + case SAI_SWITCH_FIRMWARE_LOAD_TYPE_AUTO: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_AUTO; + + default: + return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_UNSPECIFIED; + } +} +sai_switch_firmware_load_type_t convert_sai_switch_firmware_load_type_t_to_sai( + lemming::dataplane::sai::SwitchFirmwareLoadType val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_SKIP: + return SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP; + + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_FORCE: + return SAI_SWITCH_FIRMWARE_LOAD_TYPE_FORCE; + + case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_AUTO: + return SAI_SWITCH_FIRMWARE_LOAD_TYPE_AUTO; + + default: + return SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_firmware_load_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_firmware_load_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_firmware_load_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_firmware_load_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchHardwareAccessBus +convert_sai_switch_hardware_access_bus_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO: + return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_MDIO; + + case SAI_SWITCH_HARDWARE_ACCESS_BUS_I2C: + return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_I2C; + + case SAI_SWITCH_HARDWARE_ACCESS_BUS_CPLD: + return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_CPLD; + + default: + return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_UNSPECIFIED; + } +} +sai_switch_hardware_access_bus_t +convert_sai_switch_hardware_access_bus_t_to_sai( + lemming::dataplane::sai::SwitchHardwareAccessBus val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_MDIO: + return SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO; + + case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_I2C: + return SAI_SWITCH_HARDWARE_ACCESS_BUS_I2C; + + case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_CPLD: + return SAI_SWITCH_HARDWARE_ACCESS_BUS_CPLD; + + default: + return SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_hardware_access_bus_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_hardware_access_bus_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_hardware_access_bus_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_hardware_access_bus_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode +convert_sai_switch_hostif_oper_status_update_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION: + return lemming::dataplane::sai:: + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; + + case SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER: + return lemming::dataplane::sai:: + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER; + + default: + return lemming::dataplane::sai:: + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED; + } +} +sai_switch_hostif_oper_status_update_mode_t +convert_sai_switch_hostif_oper_status_update_mode_t_to_sai( + lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode val) { + switch (val) { + case lemming::dataplane::sai:: + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION: + return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; + + case lemming::dataplane::sai:: + SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER: + return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER; + + default: + return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_hostif_oper_status_update_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_hostif_oper_status_update_mode_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_hostif_oper_status_update_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_hostif_oper_status_update_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchMcastSnoopingCapability +convert_sai_switch_mcast_snooping_capability_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE: + return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; + + case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG: + return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG; + + case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_SG: + return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_SG; + + case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG: + return lemming::dataplane::sai:: + SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG; + + default: + return lemming::dataplane::sai:: + SWITCH_MCAST_SNOOPING_CAPABILITY_UNSPECIFIED; + } +} +sai_switch_mcast_snooping_capability_t +convert_sai_switch_mcast_snooping_capability_t_to_sai( + lemming::dataplane::sai::SwitchMcastSnoopingCapability val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_NONE: + return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; + + case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG: + return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG; + + case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_SG: + return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_SG; + + case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG: + return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG; + + default: + return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_mcast_snooping_capability_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_switch_mcast_snooping_capability_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_mcast_snooping_capability_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_mcast_snooping_capability_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchOperStatus +convert_sai_switch_oper_status_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_OPER_STATUS_UNKNOWN: + return lemming::dataplane::sai::SWITCH_OPER_STATUS_UNKNOWN; + + case SAI_SWITCH_OPER_STATUS_UP: + return lemming::dataplane::sai::SWITCH_OPER_STATUS_UP; + + case SAI_SWITCH_OPER_STATUS_DOWN: + return lemming::dataplane::sai::SWITCH_OPER_STATUS_DOWN; + + case SAI_SWITCH_OPER_STATUS_FAILED: + return lemming::dataplane::sai::SWITCH_OPER_STATUS_FAILED; + + default: + return lemming::dataplane::sai::SWITCH_OPER_STATUS_UNSPECIFIED; + } +} +sai_switch_oper_status_t convert_sai_switch_oper_status_t_to_sai( + lemming::dataplane::sai::SwitchOperStatus val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_OPER_STATUS_UNKNOWN: + return SAI_SWITCH_OPER_STATUS_UNKNOWN; + + case lemming::dataplane::sai::SWITCH_OPER_STATUS_UP: + return SAI_SWITCH_OPER_STATUS_UP; + + case lemming::dataplane::sai::SWITCH_OPER_STATUS_DOWN: + return SAI_SWITCH_OPER_STATUS_DOWN; + + case lemming::dataplane::sai::SWITCH_OPER_STATUS_FAILED: + return SAI_SWITCH_OPER_STATUS_FAILED; + + default: + return SAI_SWITCH_OPER_STATUS_UNKNOWN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_oper_status_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_oper_status_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_oper_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_oper_status_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchRestartType +convert_sai_switch_restart_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_RESTART_TYPE_NONE: + return lemming::dataplane::sai::SWITCH_RESTART_TYPE_NONE; + + case SAI_SWITCH_RESTART_TYPE_PLANNED: + return lemming::dataplane::sai::SWITCH_RESTART_TYPE_PLANNED; + + case SAI_SWITCH_RESTART_TYPE_ANY: + return lemming::dataplane::sai::SWITCH_RESTART_TYPE_ANY; + + default: + return lemming::dataplane::sai::SWITCH_RESTART_TYPE_UNSPECIFIED; + } +} +sai_switch_restart_type_t convert_sai_switch_restart_type_t_to_sai( + lemming::dataplane::sai::SwitchRestartType val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_RESTART_TYPE_NONE: + return SAI_SWITCH_RESTART_TYPE_NONE; + + case lemming::dataplane::sai::SWITCH_RESTART_TYPE_PLANNED: + return SAI_SWITCH_RESTART_TYPE_PLANNED; + + case lemming::dataplane::sai::SWITCH_RESTART_TYPE_ANY: + return SAI_SWITCH_RESTART_TYPE_ANY; + + default: + return SAI_SWITCH_RESTART_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_restart_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_restart_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_restart_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_restart_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchStat convert_sai_switch_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE: + return lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_END: + return lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_END; + + case SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE: + return lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_END: + return lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_END; + + case SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE: + return lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE; + + case SAI_SWITCH_STAT_REACHABILITY_DROP: + return lemming::dataplane::sai::SWITCH_STAT_REACHABILITY_DROP; + + case SAI_SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL: + return lemming::dataplane::sai:: + SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL; + + case SAI_SWITCH_STAT_GLOBAL_DROP: + return lemming::dataplane::sai::SWITCH_STAT_GLOBAL_DROP; + + case SAI_SWITCH_STAT_PACKET_INTEGRITY_DROP: + return lemming::dataplane::sai::SWITCH_STAT_PACKET_INTEGRITY_DROP; + + case SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END: + return lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END; + + default: + return lemming::dataplane::sai::SWITCH_STAT_UNSPECIFIED; + } +} +sai_switch_stat_t convert_sai_switch_stat_t_to_sai( + lemming::dataplane::sai::SwitchStat val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_BASE: + return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_END: + return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_END; + + case lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE: + return SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; + + case lemming::dataplane::sai:: + SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: + return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; + + case lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_END: + return SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_END; + + case lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE: + return SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE; + + case lemming::dataplane::sai::SWITCH_STAT_REACHABILITY_DROP: + return SAI_SWITCH_STAT_REACHABILITY_DROP; + + case lemming::dataplane::sai::SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL: + return SAI_SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL; + + case lemming::dataplane::sai::SWITCH_STAT_GLOBAL_DROP: + return SAI_SWITCH_STAT_GLOBAL_DROP; + + case lemming::dataplane::sai::SWITCH_STAT_PACKET_INTEGRITY_DROP: + return SAI_SWITCH_STAT_PACKET_INTEGRITY_DROP; + + case lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END: + return SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END; + + default: + return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; + } +} + +google::protobuf::RepeatedField convert_list_sai_switch_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchSwitchingMode +convert_sai_switch_switching_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH: + return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_CUT_THROUGH; + + case SAI_SWITCH_SWITCHING_MODE_STORE_AND_FORWARD: + return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_STORE_AND_FORWARD; + + default: + return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_UNSPECIFIED; + } +} +sai_switch_switching_mode_t convert_sai_switch_switching_mode_t_to_sai( + lemming::dataplane::sai::SwitchSwitchingMode val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_SWITCHING_MODE_CUT_THROUGH: + return SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH; + + case lemming::dataplane::sai::SWITCH_SWITCHING_MODE_STORE_AND_FORWARD: + return SAI_SWITCH_SWITCHING_MODE_STORE_AND_FORWARD; + + default: + return SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_switching_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_switching_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_switching_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_switching_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchTunnelAttr +convert_sai_switch_tunnel_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; + + case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; + + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE; + + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS; + + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE; + + case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_MAPPERS; + + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: + return lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE; + + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT; + + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; + + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + return lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; + + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + return lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; + + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + return lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; + + default: + return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_UNSPECIFIED; + } +} +sai_switch_tunnel_attr_t convert_sai_switch_tunnel_attr_t_to_sai( + lemming::dataplane::sai::SwitchTunnelAttr val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: + return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + return SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: + return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: + return SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: + return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: + return SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS; + + case lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: + return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: + return SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + return SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; + + case lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + return SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; + + case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + return SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; + + case lemming::dataplane::sai:: + SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + return SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; + + default: + return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_switch_tunnel_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_tunnel_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_tunnel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_tunnel_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SwitchType convert_sai_switch_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SWITCH_TYPE_NPU: + return lemming::dataplane::sai::SWITCH_TYPE_NPU; + + case SAI_SWITCH_TYPE_PHY: + return lemming::dataplane::sai::SWITCH_TYPE_PHY; + + case SAI_SWITCH_TYPE_VOQ: + return lemming::dataplane::sai::SWITCH_TYPE_VOQ; + + case SAI_SWITCH_TYPE_FABRIC: + return lemming::dataplane::sai::SWITCH_TYPE_FABRIC; + + case SAI_SWITCH_TYPE_POE: + return lemming::dataplane::sai::SWITCH_TYPE_POE; + + default: + return lemming::dataplane::sai::SWITCH_TYPE_UNSPECIFIED; + } +} +sai_switch_type_t convert_sai_switch_type_t_to_sai( + lemming::dataplane::sai::SwitchType val) { + switch (val) { + case lemming::dataplane::sai::SWITCH_TYPE_NPU: + return SAI_SWITCH_TYPE_NPU; + + case lemming::dataplane::sai::SWITCH_TYPE_PHY: + return SAI_SWITCH_TYPE_PHY; + + case lemming::dataplane::sai::SWITCH_TYPE_VOQ: + return SAI_SWITCH_TYPE_VOQ; + + case lemming::dataplane::sai::SWITCH_TYPE_FABRIC: + return SAI_SWITCH_TYPE_FABRIC; + + case lemming::dataplane::sai::SWITCH_TYPE_POE: + return SAI_SWITCH_TYPE_POE; + + default: + return SAI_SWITCH_TYPE_NPU; + } +} + +google::protobuf::RepeatedField convert_list_sai_switch_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_switch_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_switch_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_switch_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SystemPortAttr convert_sai_system_port_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SYSTEM_PORT_ATTR_TYPE: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_TYPE; + + case SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS; + + case SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_VOQ_LIST; + + case SAI_SYSTEM_PORT_ATTR_PORT: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_PORT; + + case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_ADMIN_STATE; + + case SAI_SYSTEM_PORT_ATTR_CONFIG_INFO: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_CONFIG_INFO; + + case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; + + default: + return lemming::dataplane::sai::SYSTEM_PORT_ATTR_UNSPECIFIED; + } +} +sai_system_port_attr_t convert_sai_system_port_attr_t_to_sai( + lemming::dataplane::sai::SystemPortAttr val) { + switch (val) { + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_TYPE: + return SAI_SYSTEM_PORT_ATTR_TYPE; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: + return SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_VOQ_LIST: + return SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_PORT: + return SAI_SYSTEM_PORT_ATTR_PORT; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_ADMIN_STATE: + return SAI_SYSTEM_PORT_ATTR_ADMIN_STATE; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_CONFIG_INFO: + return SAI_SYSTEM_PORT_ATTR_CONFIG_INFO; + + case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + return SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; + + default: + return SAI_SYSTEM_PORT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_system_port_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_system_port_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_system_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_system_port_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::SystemPortType convert_sai_system_port_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_SYSTEM_PORT_TYPE_LOCAL: + return lemming::dataplane::sai::SYSTEM_PORT_TYPE_LOCAL; + + case SAI_SYSTEM_PORT_TYPE_REMOTE: + return lemming::dataplane::sai::SYSTEM_PORT_TYPE_REMOTE; + + default: + return lemming::dataplane::sai::SYSTEM_PORT_TYPE_UNSPECIFIED; + } +} +sai_system_port_type_t convert_sai_system_port_type_t_to_sai( + lemming::dataplane::sai::SystemPortType val) { + switch (val) { + case lemming::dataplane::sai::SYSTEM_PORT_TYPE_LOCAL: + return SAI_SYSTEM_PORT_TYPE_LOCAL; + + case lemming::dataplane::sai::SYSTEM_PORT_TYPE_REMOTE: + return SAI_SYSTEM_PORT_TYPE_REMOTE; + + default: + return SAI_SYSTEM_PORT_TYPE_LOCAL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_system_port_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_system_port_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_system_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_system_port_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapClassificationEntryAction +convert_sai_table_bitmap_classification_entry_action_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; + + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_UNSPECIFIED; + } +} +sai_table_bitmap_classification_entry_action_t +convert_sai_table_bitmap_classification_entry_action_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryAction val) { + switch (val) { + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; + + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION; + + default: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_action_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_classification_entry_action_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_classification_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_classification_entry_action_t_to_sai( + static_cast< + lemming::dataplane::sai::TableBitmapClassificationEntryAction>( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapClassificationEntryAttr +convert_sai_table_bitmap_classification_entry_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; + + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY; + + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT; + + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_table_bitmap_classification_entry_attr_t +convert_sai_table_bitmap_classification_entry_attr_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; + + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY; + + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT; + + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA; + + default: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_classification_entry_attr_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_classification_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_classification_entry_attr_t_to_sai( + static_cast< + lemming::dataplane::sai::TableBitmapClassificationEntryAttr>( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapClassificationEntryStat +convert_sai_table_bitmap_classification_entry_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; + + case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_UNSPECIFIED; + } +} +sai_table_bitmap_classification_entry_stat_t +convert_sai_table_bitmap_classification_entry_stat_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryStat val) { + switch (val) { + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; + + case lemming::dataplane::sai:: + TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS; + + default: + return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_classification_entry_stat_t_to_proto( + list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_classification_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_classification_entry_stat_t_to_sai( + static_cast< + lemming::dataplane::sai::TableBitmapClassificationEntryStat>( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapRouterEntryAction +convert_sai_table_bitmap_router_entry_action_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ACTION_UNSPECIFIED; + } +} +sai_table_bitmap_router_entry_action_t +convert_sai_table_bitmap_router_entry_action_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryAction val) { + switch (val) { + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION; + + default: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_action_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_router_entry_action_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_router_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_router_entry_action_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapRouterEntryAttr +convert_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_table_bitmap_router_entry_attr_t +convert_sai_table_bitmap_router_entry_attr_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY; + + case lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY; + + case lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP; + + case lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID; + + default: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_router_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_router_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_router_entry_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableBitmapRouterEntryStat +convert_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; + + case SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS: + return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS; + + default: + return lemming::dataplane::sai:: + TABLE_BITMAP_ROUTER_ENTRY_STAT_UNSPECIFIED; + } +} +sai_table_bitmap_router_entry_stat_t +convert_sai_table_bitmap_router_entry_stat_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryStat val) { + switch (val) { + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; + + case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS; + + default: + return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_bitmap_router_entry_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_bitmap_router_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_bitmap_router_entry_stat_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableMetaTunnelEntryAction +convert_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP: + return lemming::dataplane::sai:: + TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; + + case SAI_TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION; + + default: + return lemming::dataplane::sai:: + TABLE_META_TUNNEL_ENTRY_ACTION_UNSPECIFIED; + } +} +sai_table_meta_tunnel_entry_action_t +convert_sai_table_meta_tunnel_entry_action_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryAction val) { + switch (val) { + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP: + return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION: + return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION; + + default: + return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_action_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_meta_tunnel_entry_action_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_meta_tunnel_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_meta_tunnel_entry_action_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableMetaTunnelEntryAttr +convert_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; + + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY; + + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT; + + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID; + + case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP; + + default: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_table_meta_tunnel_entry_attr_t +convert_sai_table_meta_tunnel_entry_attr_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP; + + default: + return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_meta_tunnel_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_meta_tunnel_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_meta_tunnel_entry_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TableMetaTunnelEntryStat +convert_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; + + case SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS; + + default: + return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_UNSPECIFIED; + } +} +sai_table_meta_tunnel_entry_stat_t +convert_sai_table_meta_tunnel_entry_stat_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryStat val) { + switch (val) { + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS: + return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; + + case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS: + return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS; + + default: + return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; + } +} + +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_table_meta_tunnel_entry_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_table_meta_tunnel_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_table_meta_tunnel_entry_stat_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamAttr convert_sai_tam_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: + return lemming::dataplane::sai::TAM_ATTR_TELEMETRY_OBJECTS_LIST; + + case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: + return lemming::dataplane::sai::TAM_ATTR_EVENT_OBJECTS_LIST; + + case SAI_TAM_ATTR_INT_OBJECTS_LIST: + return lemming::dataplane::sai::TAM_ATTR_INT_OBJECTS_LIST; + + case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: + return lemming::dataplane::sai::TAM_ATTR_TAM_BIND_POINT_TYPE_LIST; + + default: + return lemming::dataplane::sai::TAM_ATTR_UNSPECIFIED; + } +} +sai_tam_attr_t convert_sai_tam_attr_t_to_sai( + lemming::dataplane::sai::TamAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_ATTR_TELEMETRY_OBJECTS_LIST: + return SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST; + + case lemming::dataplane::sai::TAM_ATTR_EVENT_OBJECTS_LIST: + return SAI_TAM_ATTR_EVENT_OBJECTS_LIST; + + case lemming::dataplane::sai::TAM_ATTR_INT_OBJECTS_LIST: + return SAI_TAM_ATTR_INT_OBJECTS_LIST; + + case lemming::dataplane::sai::TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: + return SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST; + + default: + return SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST; + } +} + +google::protobuf::RepeatedField convert_list_sai_tam_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamBindPointType +convert_sai_tam_bind_point_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_BIND_POINT_TYPE_QUEUE: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_QUEUE; + + case SAI_TAM_BIND_POINT_TYPE_PORT: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_PORT; + + case SAI_TAM_BIND_POINT_TYPE_LAG: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_LAG; + + case SAI_TAM_BIND_POINT_TYPE_VLAN: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_VLAN; + + case SAI_TAM_BIND_POINT_TYPE_SWITCH: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_SWITCH; + + case SAI_TAM_BIND_POINT_TYPE_IPG: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_IPG; + + case SAI_TAM_BIND_POINT_TYPE_BSP: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_BSP; + + default: + return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_UNSPECIFIED; + } +} +sai_tam_bind_point_type_t convert_sai_tam_bind_point_type_t_to_sai( + lemming::dataplane::sai::TamBindPointType val) { + switch (val) { + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_QUEUE: + return SAI_TAM_BIND_POINT_TYPE_QUEUE; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_PORT: + return SAI_TAM_BIND_POINT_TYPE_PORT; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_LAG: + return SAI_TAM_BIND_POINT_TYPE_LAG; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_VLAN: + return SAI_TAM_BIND_POINT_TYPE_VLAN; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_SWITCH: + return SAI_TAM_BIND_POINT_TYPE_SWITCH; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_IPG: + return SAI_TAM_BIND_POINT_TYPE_IPG; + + case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_BSP: + return SAI_TAM_BIND_POINT_TYPE_BSP; + + default: + return SAI_TAM_BIND_POINT_TYPE_QUEUE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_bind_point_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_bind_point_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_bind_point_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_bind_point_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamCollectorAttr +convert_sai_tam_collector_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_COLLECTOR_ATTR_SRC_IP: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_SRC_IP; + + case SAI_TAM_COLLECTOR_ATTR_DST_IP: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DST_IP; + + case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_LOCALHOST; + + case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID; + + case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRUNCATE_SIZE; + + case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRANSPORT; + + case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DSCP_VALUE; + + case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_HOSTIF_TRAP; + + default: + return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_UNSPECIFIED; + } +} +sai_tam_collector_attr_t convert_sai_tam_collector_attr_t_to_sai( + lemming::dataplane::sai::TamCollectorAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_SRC_IP: + return SAI_TAM_COLLECTOR_ATTR_SRC_IP; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DST_IP: + return SAI_TAM_COLLECTOR_ATTR_DST_IP; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_LOCALHOST: + return SAI_TAM_COLLECTOR_ATTR_LOCALHOST; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: + return SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: + return SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRANSPORT: + return SAI_TAM_COLLECTOR_ATTR_TRANSPORT; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DSCP_VALUE: + return SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE; + + case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_HOSTIF_TRAP: + return SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP; + + default: + return SAI_TAM_COLLECTOR_ATTR_SRC_IP; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_collector_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_collector_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_collector_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_collector_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamCounterSubscriptionAttr +convert_sai_tam_counter_subscription_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: + return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; + + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: + return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID; + + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: + return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID; + + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: + return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL; + + default: + return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED; + } +} +sai_tam_counter_subscription_attr_t +convert_sai_tam_counter_subscription_attr_t_to_sai( + lemming::dataplane::sai::TamCounterSubscriptionAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: + return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; + + case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: + return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID; + + case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: + return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID; + + case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: + return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL; + + default: + return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_counter_subscription_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tam_counter_subscription_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_counter_subscription_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_counter_subscription_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamEventActionAttr +convert_sai_tam_event_action_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: + return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_REPORT_TYPE; + + case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: + return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE; + + default: + return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_UNSPECIFIED; + } +} +sai_tam_event_action_attr_t convert_sai_tam_event_action_attr_t_to_sai( + lemming::dataplane::sai::TamEventActionAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_REPORT_TYPE: + return SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE; + + case lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: + return SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE; + + default: + return SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_event_action_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_event_action_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_event_action_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_event_action_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamEventAttr convert_sai_tam_event_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_EVENT_ATTR_TYPE: + return lemming::dataplane::sai::TAM_EVENT_ATTR_TYPE; + + case SAI_TAM_EVENT_ATTR_ACTION_LIST: + return lemming::dataplane::sai::TAM_EVENT_ATTR_ACTION_LIST; + + case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: + return lemming::dataplane::sai::TAM_EVENT_ATTR_COLLECTOR_LIST; + + case SAI_TAM_EVENT_ATTR_THRESHOLD: + return lemming::dataplane::sai::TAM_EVENT_ATTR_THRESHOLD; + + case SAI_TAM_EVENT_ATTR_DSCP_VALUE: + return lemming::dataplane::sai::TAM_EVENT_ATTR_DSCP_VALUE; + + default: + return lemming::dataplane::sai::TAM_EVENT_ATTR_UNSPECIFIED; + } +} +sai_tam_event_attr_t convert_sai_tam_event_attr_t_to_sai( + lemming::dataplane::sai::TamEventAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_EVENT_ATTR_TYPE: + return SAI_TAM_EVENT_ATTR_TYPE; + + case lemming::dataplane::sai::TAM_EVENT_ATTR_ACTION_LIST: + return SAI_TAM_EVENT_ATTR_ACTION_LIST; + + case lemming::dataplane::sai::TAM_EVENT_ATTR_COLLECTOR_LIST: + return SAI_TAM_EVENT_ATTR_COLLECTOR_LIST; + + case lemming::dataplane::sai::TAM_EVENT_ATTR_THRESHOLD: + return SAI_TAM_EVENT_ATTR_THRESHOLD; + + case lemming::dataplane::sai::TAM_EVENT_ATTR_DSCP_VALUE: + return SAI_TAM_EVENT_ATTR_DSCP_VALUE; + + default: + return SAI_TAM_EVENT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_tam_event_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_event_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_event_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_event_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamEventThresholdAttr +convert_sai_tam_event_threshold_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; + + case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK; + + case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LATENCY; + + case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_RATE; + + case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE; + + case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNIT; + + default: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNSPECIFIED; + } +} +sai_tam_event_threshold_attr_t convert_sai_tam_event_threshold_attr_t_to_sai( + lemming::dataplane::sai::TamEventThresholdAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: + return SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: + return SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LATENCY: + return SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_RATE: + return SAI_TAM_EVENT_THRESHOLD_ATTR_RATE; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: + return SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNIT: + return SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT; + + default: + return SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_event_threshold_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tam_event_threshold_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_event_threshold_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_event_threshold_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamEventThresholdUnit +convert_sai_tam_event_threshold_unit_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_NANOSEC; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_USEC: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_USEC; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_MSEC: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_MSEC; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_PERCENT: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PERCENT; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_BYTES: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_BYTES; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_PACKETS: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PACKETS; + + case SAI_TAM_EVENT_THRESHOLD_UNIT_CELLS: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_CELLS; + + default: + return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_UNSPECIFIED; + } +} +sai_tam_event_threshold_unit_t convert_sai_tam_event_threshold_unit_t_to_sai( + lemming::dataplane::sai::TamEventThresholdUnit val) { + switch (val) { + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_NANOSEC: + return SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_USEC: + return SAI_TAM_EVENT_THRESHOLD_UNIT_USEC; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_MSEC: + return SAI_TAM_EVENT_THRESHOLD_UNIT_MSEC; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PERCENT: + return SAI_TAM_EVENT_THRESHOLD_UNIT_PERCENT; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_BYTES: + return SAI_TAM_EVENT_THRESHOLD_UNIT_BYTES; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PACKETS: + return SAI_TAM_EVENT_THRESHOLD_UNIT_PACKETS; + + case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_CELLS: + return SAI_TAM_EVENT_THRESHOLD_UNIT_CELLS; + + default: + return SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_event_threshold_unit_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tam_event_threshold_unit_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_event_threshold_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_event_threshold_unit_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamEventType convert_sai_tam_event_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_EVENT_TYPE_FLOW_STATE: + return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_STATE; + + case SAI_TAM_EVENT_TYPE_FLOW_WATCHLIST: + return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_WATCHLIST; + + case SAI_TAM_EVENT_TYPE_FLOW_TCPFLAG: + return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_TCPFLAG; + + case SAI_TAM_EVENT_TYPE_QUEUE_THRESHOLD: + return lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_THRESHOLD; + + case SAI_TAM_EVENT_TYPE_QUEUE_TAIL_DROP: + return lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_TAIL_DROP; + + case SAI_TAM_EVENT_TYPE_PACKET_DROP: + return lemming::dataplane::sai::TAM_EVENT_TYPE_PACKET_DROP; + + case SAI_TAM_EVENT_TYPE_RESOURCE_UTILIZATION: + return lemming::dataplane::sai::TAM_EVENT_TYPE_RESOURCE_UTILIZATION; + + case SAI_TAM_EVENT_TYPE_IPG_SHARED: + return lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_SHARED; + + case SAI_TAM_EVENT_TYPE_IPG_XOFF_ROOM: + return lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_XOFF_ROOM; + + case SAI_TAM_EVENT_TYPE_BSP: + return lemming::dataplane::sai::TAM_EVENT_TYPE_BSP; + + default: + return lemming::dataplane::sai::TAM_EVENT_TYPE_UNSPECIFIED; + } +} +sai_tam_event_type_t convert_sai_tam_event_type_t_to_sai( + lemming::dataplane::sai::TamEventType val) { + switch (val) { + case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_STATE: + return SAI_TAM_EVENT_TYPE_FLOW_STATE; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_WATCHLIST: + return SAI_TAM_EVENT_TYPE_FLOW_WATCHLIST; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_TCPFLAG: + return SAI_TAM_EVENT_TYPE_FLOW_TCPFLAG; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_THRESHOLD: + return SAI_TAM_EVENT_TYPE_QUEUE_THRESHOLD; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_TAIL_DROP: + return SAI_TAM_EVENT_TYPE_QUEUE_TAIL_DROP; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_PACKET_DROP: + return SAI_TAM_EVENT_TYPE_PACKET_DROP; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_RESOURCE_UTILIZATION: + return SAI_TAM_EVENT_TYPE_RESOURCE_UTILIZATION; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_SHARED: + return SAI_TAM_EVENT_TYPE_IPG_SHARED; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_XOFF_ROOM: + return SAI_TAM_EVENT_TYPE_IPG_XOFF_ROOM; + + case lemming::dataplane::sai::TAM_EVENT_TYPE_BSP: + return SAI_TAM_EVENT_TYPE_BSP; + + default: + return SAI_TAM_EVENT_TYPE_FLOW_STATE; + } +} + +google::protobuf::RepeatedField convert_list_sai_tam_event_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_event_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_event_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamIntAttr convert_sai_tam_int_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_INT_ATTR_TYPE: + return lemming::dataplane::sai::TAM_INT_ATTR_TYPE; + + case SAI_TAM_INT_ATTR_DEVICE_ID: + return lemming::dataplane::sai::TAM_INT_ATTR_DEVICE_ID; + + case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: + return lemming::dataplane::sai::TAM_INT_ATTR_IOAM_TRACE_TYPE; + + case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: + return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_TYPE; + + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: + return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB1; + + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: + return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB2; + + case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: + return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE; + + case SAI_TAM_INT_ATTR_INLINE: + return lemming::dataplane::sai::TAM_INT_ATTR_INLINE; + + case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: + return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL; + + case SAI_TAM_INT_ATTR_TRACE_VECTOR: + return lemming::dataplane::sai::TAM_INT_ATTR_TRACE_VECTOR; + + case SAI_TAM_INT_ATTR_ACTION_VECTOR: + return lemming::dataplane::sai::TAM_INT_ATTR_ACTION_VECTOR; + + case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: + return lemming::dataplane::sai::TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP; + + case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: + return lemming::dataplane::sai::TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE; + + case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: + return lemming::dataplane::sai::TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE; + + case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: + return lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ALL_PACKETS; + + case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: + return lemming::dataplane::sai::TAM_INT_ATTR_FLOW_LIVENESS_PERIOD; + + case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: + return lemming::dataplane::sai::TAM_INT_ATTR_LATENCY_SENSITIVITY; + + case SAI_TAM_INT_ATTR_ACL_GROUP: + return lemming::dataplane::sai::TAM_INT_ATTR_ACL_GROUP; + + case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: + return lemming::dataplane::sai::TAM_INT_ATTR_MAX_HOP_COUNT; + + case SAI_TAM_INT_ATTR_MAX_LENGTH: + return lemming::dataplane::sai::TAM_INT_ATTR_MAX_LENGTH; + + case SAI_TAM_INT_ATTR_NAME_SPACE_ID: + return lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID; + + case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: + return lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL; + + case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + return lemming::dataplane::sai::TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; + + case SAI_TAM_INT_ATTR_COLLECTOR_LIST: + return lemming::dataplane::sai::TAM_INT_ATTR_COLLECTOR_LIST; + + case SAI_TAM_INT_ATTR_MATH_FUNC: + return lemming::dataplane::sai::TAM_INT_ATTR_MATH_FUNC; + + case SAI_TAM_INT_ATTR_REPORT_ID: + return lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ID; + + default: + return lemming::dataplane::sai::TAM_INT_ATTR_UNSPECIFIED; + } +} +sai_tam_int_attr_t convert_sai_tam_int_attr_t_to_sai( + lemming::dataplane::sai::TamIntAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_INT_ATTR_TYPE: + return SAI_TAM_INT_ATTR_TYPE; + + case lemming::dataplane::sai::TAM_INT_ATTR_DEVICE_ID: + return SAI_TAM_INT_ATTR_DEVICE_ID; + + case lemming::dataplane::sai::TAM_INT_ATTR_IOAM_TRACE_TYPE: + return SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE; + + case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_TYPE: + return SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE; + + case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB1: + return SAI_TAM_INT_ATTR_INT_PRESENCE_PB1; + + case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB2: + return SAI_TAM_INT_ATTR_INT_PRESENCE_PB2; + + case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: + return SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE; + + case lemming::dataplane::sai::TAM_INT_ATTR_INLINE: + return SAI_TAM_INT_ATTR_INLINE; + + case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: + return SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL; + + case lemming::dataplane::sai::TAM_INT_ATTR_TRACE_VECTOR: + return SAI_TAM_INT_ATTR_TRACE_VECTOR; + + case lemming::dataplane::sai::TAM_INT_ATTR_ACTION_VECTOR: + return SAI_TAM_INT_ATTR_ACTION_VECTOR; + + case lemming::dataplane::sai::TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: + return SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP; + + case lemming::dataplane::sai::TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: + return SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE; + + case lemming::dataplane::sai::TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: + return SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE; + + case lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ALL_PACKETS: + return SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS; + + case lemming::dataplane::sai::TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: + return SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD; + + case lemming::dataplane::sai::TAM_INT_ATTR_LATENCY_SENSITIVITY: + return SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY; + + case lemming::dataplane::sai::TAM_INT_ATTR_ACL_GROUP: + return SAI_TAM_INT_ATTR_ACL_GROUP; + + case lemming::dataplane::sai::TAM_INT_ATTR_MAX_HOP_COUNT: + return SAI_TAM_INT_ATTR_MAX_HOP_COUNT; + + case lemming::dataplane::sai::TAM_INT_ATTR_MAX_LENGTH: + return SAI_TAM_INT_ATTR_MAX_LENGTH; + + case lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID: + return SAI_TAM_INT_ATTR_NAME_SPACE_ID; + + case lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: + return SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL; + + case lemming::dataplane::sai::TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + return SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; + + case lemming::dataplane::sai::TAM_INT_ATTR_COLLECTOR_LIST: + return SAI_TAM_INT_ATTR_COLLECTOR_LIST; + + case lemming::dataplane::sai::TAM_INT_ATTR_MATH_FUNC: + return SAI_TAM_INT_ATTR_MATH_FUNC; + + case lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ID: + return SAI_TAM_INT_ATTR_REPORT_ID; + + default: + return SAI_TAM_INT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_tam_int_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_int_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_int_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_int_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamIntPresenceType +convert_sai_tam_int_presence_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED: + return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNDEFINED; + + case SAI_TAM_INT_PRESENCE_TYPE_PB: + return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_PB; + + case SAI_TAM_INT_PRESENCE_TYPE_L3_PROTOCOL: + return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_L3_PROTOCOL; + + case SAI_TAM_INT_PRESENCE_TYPE_DSCP: + return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_DSCP; + + default: + return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNSPECIFIED; + } +} +sai_tam_int_presence_type_t convert_sai_tam_int_presence_type_t_to_sai( + lemming::dataplane::sai::TamIntPresenceType val) { + switch (val) { + case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNDEFINED: + return SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED; + + case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_PB: + return SAI_TAM_INT_PRESENCE_TYPE_PB; + + case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_L3_PROTOCOL: + return SAI_TAM_INT_PRESENCE_TYPE_L3_PROTOCOL; + + case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_DSCP: + return SAI_TAM_INT_PRESENCE_TYPE_DSCP; + + default: + return SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_int_presence_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_int_presence_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_int_presence_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_int_presence_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamIntType convert_sai_tam_int_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_INT_TYPE_IOAM: + return lemming::dataplane::sai::TAM_INT_TYPE_IOAM; + + case SAI_TAM_INT_TYPE_IFA1: + return lemming::dataplane::sai::TAM_INT_TYPE_IFA1; + + case SAI_TAM_INT_TYPE_IFA2: + return lemming::dataplane::sai::TAM_INT_TYPE_IFA2; + + case SAI_TAM_INT_TYPE_P4_INT_1: + return lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_1; + + case SAI_TAM_INT_TYPE_P4_INT_2: + return lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_2; + + case SAI_TAM_INT_TYPE_DIRECT_EXPORT: + return lemming::dataplane::sai::TAM_INT_TYPE_DIRECT_EXPORT; + + case SAI_TAM_INT_TYPE_IFA1_TAILSTAMP: + return lemming::dataplane::sai::TAM_INT_TYPE_IFA1_TAILSTAMP; + + case SAI_TAM_INT_TYPE_PATH_TRACING: + return lemming::dataplane::sai::TAM_INT_TYPE_PATH_TRACING; + + default: + return lemming::dataplane::sai::TAM_INT_TYPE_UNSPECIFIED; + } +} +sai_tam_int_type_t convert_sai_tam_int_type_t_to_sai( + lemming::dataplane::sai::TamIntType val) { + switch (val) { + case lemming::dataplane::sai::TAM_INT_TYPE_IOAM: + return SAI_TAM_INT_TYPE_IOAM; + + case lemming::dataplane::sai::TAM_INT_TYPE_IFA1: + return SAI_TAM_INT_TYPE_IFA1; + + case lemming::dataplane::sai::TAM_INT_TYPE_IFA2: + return SAI_TAM_INT_TYPE_IFA2; + + case lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_1: + return SAI_TAM_INT_TYPE_P4_INT_1; + + case lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_2: + return SAI_TAM_INT_TYPE_P4_INT_2; + + case lemming::dataplane::sai::TAM_INT_TYPE_DIRECT_EXPORT: + return SAI_TAM_INT_TYPE_DIRECT_EXPORT; + + case lemming::dataplane::sai::TAM_INT_TYPE_IFA1_TAILSTAMP: + return SAI_TAM_INT_TYPE_IFA1_TAILSTAMP; + + case lemming::dataplane::sai::TAM_INT_TYPE_PATH_TRACING: + return SAI_TAM_INT_TYPE_PATH_TRACING; + + default: + return SAI_TAM_INT_TYPE_IOAM; + } +} + +google::protobuf::RepeatedField convert_list_sai_tam_int_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_int_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_int_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_int_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamMathFuncAttr +convert_sai_tam_math_func_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: + return lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; + + default: + return lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_UNSPECIFIED; + } +} +sai_tam_math_func_attr_t convert_sai_tam_math_func_attr_t_to_sai( + lemming::dataplane::sai::TamMathFuncAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: + return SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; + + default: + return SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_math_func_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_math_func_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_math_func_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_math_func_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamReportAttr convert_sai_tam_report_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_REPORT_ATTR_TYPE: + return lemming::dataplane::sai::TAM_REPORT_ATTR_TYPE; + + case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: + return lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS; + + case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: + return lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY; + + case SAI_TAM_REPORT_ATTR_QUOTA: + return lemming::dataplane::sai::TAM_REPORT_ATTR_QUOTA; + + case SAI_TAM_REPORT_ATTR_REPORT_MODE: + return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_MODE; + + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: + return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL; + + case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: + return lemming::dataplane::sai::TAM_REPORT_ATTR_ENTERPRISE_NUMBER; + + case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: + return lemming::dataplane::sai::TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL; + + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: + return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT; + + default: + return lemming::dataplane::sai::TAM_REPORT_ATTR_UNSPECIFIED; + } +} +sai_tam_report_attr_t convert_sai_tam_report_attr_t_to_sai( + lemming::dataplane::sai::TamReportAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_REPORT_ATTR_TYPE: + return SAI_TAM_REPORT_ATTR_TYPE; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: + return SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: + return SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_QUOTA: + return SAI_TAM_REPORT_ATTR_QUOTA; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_MODE: + return SAI_TAM_REPORT_ATTR_REPORT_MODE; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL: + return SAI_TAM_REPORT_ATTR_REPORT_INTERVAL; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_ENTERPRISE_NUMBER: + return SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: + return SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL; + + case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: + return SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT; + + default: + return SAI_TAM_REPORT_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_report_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_report_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_report_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_report_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamReportIntervalUnit +convert_sai_tam_report_interval_unit_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC: + return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_NANOSEC; + + case SAI_TAM_REPORT_INTERVAL_UNIT_USEC: + return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_USEC; + + case SAI_TAM_REPORT_INTERVAL_UNIT_MSEC: + return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_MSEC; + + default: + return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED; + } +} +sai_tam_report_interval_unit_t convert_sai_tam_report_interval_unit_t_to_sai( + lemming::dataplane::sai::TamReportIntervalUnit val) { + switch (val) { + case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_NANOSEC: + return SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC; + + case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_USEC: + return SAI_TAM_REPORT_INTERVAL_UNIT_USEC; + + case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_MSEC: + return SAI_TAM_REPORT_INTERVAL_UNIT_MSEC; + + default: + return SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_report_interval_unit_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tam_report_interval_unit_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_report_interval_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_report_interval_unit_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamReportMode convert_sai_tam_report_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_REPORT_MODE_ALL: + return lemming::dataplane::sai::TAM_REPORT_MODE_ALL; + + case SAI_TAM_REPORT_MODE_BULK: + return lemming::dataplane::sai::TAM_REPORT_MODE_BULK; + + default: + return lemming::dataplane::sai::TAM_REPORT_MODE_UNSPECIFIED; + } +} +sai_tam_report_mode_t convert_sai_tam_report_mode_t_to_sai( + lemming::dataplane::sai::TamReportMode val) { + switch (val) { + case lemming::dataplane::sai::TAM_REPORT_MODE_ALL: + return SAI_TAM_REPORT_MODE_ALL; + + case lemming::dataplane::sai::TAM_REPORT_MODE_BULK: + return SAI_TAM_REPORT_MODE_BULK; + + default: + return SAI_TAM_REPORT_MODE_ALL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_report_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_report_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_report_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_report_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamReportType convert_sai_tam_report_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TAM_REPORT_TYPE_SFLOW: + return lemming::dataplane::sai::TAM_REPORT_TYPE_SFLOW; + + case SAI_TAM_REPORT_TYPE_IPFIX: + return lemming::dataplane::sai::TAM_REPORT_TYPE_IPFIX; + + case SAI_TAM_REPORT_TYPE_PROTO: + return lemming::dataplane::sai::TAM_REPORT_TYPE_PROTO; + + case SAI_TAM_REPORT_TYPE_THRIFT: + return lemming::dataplane::sai::TAM_REPORT_TYPE_THRIFT; + + case SAI_TAM_REPORT_TYPE_JSON: + return lemming::dataplane::sai::TAM_REPORT_TYPE_JSON; + + case SAI_TAM_REPORT_TYPE_P4_EXTN: + return lemming::dataplane::sai::TAM_REPORT_TYPE_P4_EXTN; + + case SAI_TAM_REPORT_TYPE_HISTOGRAM: + return lemming::dataplane::sai::TAM_REPORT_TYPE_HISTOGRAM; + + case SAI_TAM_REPORT_TYPE_VENDOR_EXTN: + return lemming::dataplane::sai::TAM_REPORT_TYPE_VENDOR_EXTN; + + case SAI_TAM_REPORT_TYPE_GENETLINK: + return lemming::dataplane::sai::TAM_REPORT_TYPE_GENETLINK; + + case SAI_TAM_REPORT_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::TAM_REPORT_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::TAM_REPORT_TYPE_UNSPECIFIED; + } +} +sai_tam_report_type_t convert_sai_tam_report_type_t_to_sai( + lemming::dataplane::sai::TamReportType val) { + switch (val) { + case lemming::dataplane::sai::TAM_REPORT_TYPE_SFLOW: + return SAI_TAM_REPORT_TYPE_SFLOW; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_IPFIX: + return SAI_TAM_REPORT_TYPE_IPFIX; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_PROTO: + return SAI_TAM_REPORT_TYPE_PROTO; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_THRIFT: + return SAI_TAM_REPORT_TYPE_THRIFT; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_JSON: + return SAI_TAM_REPORT_TYPE_JSON; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_P4_EXTN: + return SAI_TAM_REPORT_TYPE_P4_EXTN; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_HISTOGRAM: + return SAI_TAM_REPORT_TYPE_HISTOGRAM; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_VENDOR_EXTN: + return SAI_TAM_REPORT_TYPE_VENDOR_EXTN; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_GENETLINK: + return SAI_TAM_REPORT_TYPE_GENETLINK; + + case lemming::dataplane::sai::TAM_REPORT_TYPE_CUSTOM_RANGE_BASE: + return SAI_TAM_REPORT_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_TAM_REPORT_TYPE_SFLOW; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_report_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_report_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_report_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_report_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamReportingUnit +convert_sai_tam_reporting_unit_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_REPORTING_UNIT_SEC: + return lemming::dataplane::sai::TAM_REPORTING_UNIT_SEC; + + case SAI_TAM_REPORTING_UNIT_MINUTE: + return lemming::dataplane::sai::TAM_REPORTING_UNIT_MINUTE; + + case SAI_TAM_REPORTING_UNIT_HOUR: + return lemming::dataplane::sai::TAM_REPORTING_UNIT_HOUR; + + case SAI_TAM_REPORTING_UNIT_DAY: + return lemming::dataplane::sai::TAM_REPORTING_UNIT_DAY; + + default: + return lemming::dataplane::sai::TAM_REPORTING_UNIT_UNSPECIFIED; + } +} +sai_tam_reporting_unit_t convert_sai_tam_reporting_unit_t_to_sai( + lemming::dataplane::sai::TamReportingUnit val) { + switch (val) { + case lemming::dataplane::sai::TAM_REPORTING_UNIT_SEC: + return SAI_TAM_REPORTING_UNIT_SEC; + + case lemming::dataplane::sai::TAM_REPORTING_UNIT_MINUTE: + return SAI_TAM_REPORTING_UNIT_MINUTE; + + case lemming::dataplane::sai::TAM_REPORTING_UNIT_HOUR: + return SAI_TAM_REPORTING_UNIT_HOUR; + + case lemming::dataplane::sai::TAM_REPORTING_UNIT_DAY: + return SAI_TAM_REPORTING_UNIT_DAY; + + default: + return SAI_TAM_REPORTING_UNIT_SEC; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_reporting_unit_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_reporting_unit_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_reporting_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_reporting_unit_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTelMathFuncType +convert_sai_tam_tel_math_func_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TEL_MATH_FUNC_TYPE_NONE: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_NONE; + + case SAI_TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN; + + case SAI_TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN; + + case SAI_TAM_TEL_MATH_FUNC_TYPE_AVERAGE: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_AVERAGE; + + case SAI_TAM_TEL_MATH_FUNC_TYPE_MODE: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_MODE; + + case SAI_TAM_TEL_MATH_FUNC_TYPE_RATE: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_RATE; + + default: + return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_UNSPECIFIED; + } +} +sai_tam_tel_math_func_type_t convert_sai_tam_tel_math_func_type_t_to_sai( + lemming::dataplane::sai::TamTelMathFuncType val) { + switch (val) { + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_NONE: + return SAI_TAM_TEL_MATH_FUNC_TYPE_NONE; + + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN: + return SAI_TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN; + + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN: + return SAI_TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN; + + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_AVERAGE: + return SAI_TAM_TEL_MATH_FUNC_TYPE_AVERAGE; + + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_MODE: + return SAI_TAM_TEL_MATH_FUNC_TYPE_MODE; + + case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_RATE: + return SAI_TAM_TEL_MATH_FUNC_TYPE_RATE; + + default: + return SAI_TAM_TEL_MATH_FUNC_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_tel_math_func_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_tel_math_func_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_tel_math_func_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_tel_math_func_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTelTypeAttr +convert_sai_tam_tel_type_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; + + case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS; + + case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_FABRIC_Q; + + case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_NE_ENABLE; + + case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_DSCP_VALUE; + + case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_MATH_FUNC; + + case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_REPORT_ID; + + case SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: + return lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST; + + default: + return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_UNSPECIFIED; + } +} +sai_tam_tel_type_attr_t convert_sai_tam_tel_type_attr_t_to_sai( + lemming::dataplane::sai::TamTelTypeAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: + return SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: + return SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS; + + case lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS; + + case lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS; + + case lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS; + + case lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS; + + case lemming::dataplane::sai:: + TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: + return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_FABRIC_Q: + return SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_NE_ENABLE: + return SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_DSCP_VALUE: + return SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_MATH_FUNC: + return SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_REPORT_ID: + return SAI_TAM_TEL_TYPE_ATTR_REPORT_ID; + + case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: + return SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST; + + default: + return SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_tel_type_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_tel_type_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_tel_type_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_tel_type_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTelemetryAttr +convert_sai_tam_telemetry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: + return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; + + case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: + return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_COLLECTOR_LIST; + + case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: + return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT; + + case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: + return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_REPORTING_INTERVAL; + + default: + return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_UNSPECIFIED; + } +} +sai_tam_telemetry_attr_t convert_sai_tam_telemetry_attr_t_to_sai( + lemming::dataplane::sai::TamTelemetryAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: + return SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; + + case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_COLLECTOR_LIST: + return SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST; + + case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: + return SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT; + + case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: + return SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL; + + default: + return SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_telemetry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_telemetry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_telemetry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_telemetry_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTelemetryType +convert_sai_tam_telemetry_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TELEMETRY_TYPE_NE: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_NE; + + case SAI_TAM_TELEMETRY_TYPE_SWITCH: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_SWITCH; + + case SAI_TAM_TELEMETRY_TYPE_FABRIC: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FABRIC; + + case SAI_TAM_TELEMETRY_TYPE_FLOW: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FLOW; + + case SAI_TAM_TELEMETRY_TYPE_INT: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_INT; + + case SAI_TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION; + + default: + return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_UNSPECIFIED; + } +} +sai_tam_telemetry_type_t convert_sai_tam_telemetry_type_t_to_sai( + lemming::dataplane::sai::TamTelemetryType val) { + switch (val) { + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_NE: + return SAI_TAM_TELEMETRY_TYPE_NE; + + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_SWITCH: + return SAI_TAM_TELEMETRY_TYPE_SWITCH; + + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FABRIC: + return SAI_TAM_TELEMETRY_TYPE_FABRIC; + + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FLOW: + return SAI_TAM_TELEMETRY_TYPE_FLOW; + + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_INT: + return SAI_TAM_TELEMETRY_TYPE_INT; + + case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION: + return SAI_TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION; + + default: + return SAI_TAM_TELEMETRY_TYPE_NE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_telemetry_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_telemetry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_telemetry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_telemetry_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTransportAttr +convert_sai_tam_transport_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; + + case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_SRC_PORT; + + case SAI_TAM_TRANSPORT_ATTR_DST_PORT: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_DST_PORT; + + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE; + + case SAI_TAM_TRANSPORT_ATTR_MTU: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_MTU; + + default: + return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_UNSPECIFIED; + } +} +sai_tam_transport_attr_t convert_sai_tam_transport_attr_t_to_sai( + lemming::dataplane::sai::TamTransportAttr val) { + switch (val) { + case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: + return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; + + case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_SRC_PORT: + return SAI_TAM_TRANSPORT_ATTR_SRC_PORT; + + case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_DST_PORT: + return SAI_TAM_TRANSPORT_ATTR_DST_PORT; + + case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: + return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE; + + case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_MTU: + return SAI_TAM_TRANSPORT_ATTR_MTU; + + default: + return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_transport_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_transport_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_transport_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_transport_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTransportAuthType +convert_sai_tam_transport_auth_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TRANSPORT_AUTH_TYPE_NONE: + return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_NONE; + + case SAI_TAM_TRANSPORT_AUTH_TYPE_SSL: + return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_SSL; + + case SAI_TAM_TRANSPORT_AUTH_TYPE_TLS: + return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_TLS; + + default: + return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_UNSPECIFIED; + } +} +sai_tam_transport_auth_type_t convert_sai_tam_transport_auth_type_t_to_sai( + lemming::dataplane::sai::TamTransportAuthType val) { + switch (val) { + case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_NONE: + return SAI_TAM_TRANSPORT_AUTH_TYPE_NONE; + + case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_SSL: + return SAI_TAM_TRANSPORT_AUTH_TYPE_SSL; + + case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_TLS: + return SAI_TAM_TRANSPORT_AUTH_TYPE_TLS; + + default: + return SAI_TAM_TRANSPORT_AUTH_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_transport_auth_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tam_transport_auth_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_transport_auth_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_transport_auth_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TamTransportType +convert_sai_tam_transport_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TAM_TRANSPORT_TYPE_NONE: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_NONE; + + case SAI_TAM_TRANSPORT_TYPE_TCP: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_TCP; + + case SAI_TAM_TRANSPORT_TYPE_UDP: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UDP; + + case SAI_TAM_TRANSPORT_TYPE_GRPC: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_GRPC; + + case SAI_TAM_TRANSPORT_TYPE_MIRROR: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_MIRROR; + + default: + return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UNSPECIFIED; + } +} +sai_tam_transport_type_t convert_sai_tam_transport_type_t_to_sai( + lemming::dataplane::sai::TamTransportType val) { + switch (val) { + case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_NONE: + return SAI_TAM_TRANSPORT_TYPE_NONE; + + case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_TCP: + return SAI_TAM_TRANSPORT_TYPE_TCP; + + case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UDP: + return SAI_TAM_TRANSPORT_TYPE_UDP; + + case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_GRPC: + return SAI_TAM_TRANSPORT_TYPE_GRPC; + + case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_MIRROR: + return SAI_TAM_TRANSPORT_TYPE_MIRROR; + + default: + return SAI_TAM_TRANSPORT_TYPE_NONE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tam_transport_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tam_transport_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tam_transport_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tam_transport_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TlvType convert_sai_tlv_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TLV_TYPE_INGRESS: + return lemming::dataplane::sai::TLV_TYPE_INGRESS; + + case SAI_TLV_TYPE_EGRESS: + return lemming::dataplane::sai::TLV_TYPE_EGRESS; + + case SAI_TLV_TYPE_OPAQUE: + return lemming::dataplane::sai::TLV_TYPE_OPAQUE; + + case SAI_TLV_TYPE_HMAC: + return lemming::dataplane::sai::TLV_TYPE_HMAC; + + default: + return lemming::dataplane::sai::TLV_TYPE_UNSPECIFIED; + } +} +sai_tlv_type_t convert_sai_tlv_type_t_to_sai( + lemming::dataplane::sai::TlvType val) { + switch (val) { + case lemming::dataplane::sai::TLV_TYPE_INGRESS: + return SAI_TLV_TYPE_INGRESS; + + case lemming::dataplane::sai::TLV_TYPE_EGRESS: + return SAI_TLV_TYPE_EGRESS; + + case lemming::dataplane::sai::TLV_TYPE_OPAQUE: + return SAI_TLV_TYPE_OPAQUE; + + case lemming::dataplane::sai::TLV_TYPE_HMAC: + return SAI_TLV_TYPE_HMAC; + + default: + return SAI_TLV_TYPE_INGRESS; + } +} + +google::protobuf::RepeatedField convert_list_sai_tlv_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tlv_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tlv_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tlv_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelAttr convert_sai_tunnel_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_ATTR_TYPE: + return lemming::dataplane::sai::TUNNEL_ATTR_TYPE; + + case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: + return lemming::dataplane::sai::TUNNEL_ATTR_UNDERLAY_INTERFACE; + + case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: + return lemming::dataplane::sai::TUNNEL_ATTR_OVERLAY_INTERFACE; + + case SAI_TUNNEL_ATTR_PEER_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_PEER_MODE; + + case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_SRC_IP; + + case SAI_TUNNEL_ATTR_ENCAP_DST_IP: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DST_IP; + + case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_MODE; + + case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_VAL; + + case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_MODE; + + case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_VAL; + + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY_VALID; + + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY; + + case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_ECN_MODE; + + case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_MAPPERS; + + case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_ECN_MODE; + + case SAI_TUNNEL_ATTR_DECAP_MAPPERS: + return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_MAPPERS; + + case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_TTL_MODE; + + case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_DSCP_MODE; + + case SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: + return lemming::dataplane::sai::TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST; + + case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + return lemming::dataplane::sai::TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; + + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE; + + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: + return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT; + + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; + + case SAI_TUNNEL_ATTR_SA_INDEX: + return lemming::dataplane::sai::TUNNEL_ATTR_SA_INDEX; + + case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: + return lemming::dataplane::sai::TUNNEL_ATTR_IPSEC_SA_PORT_LIST; + + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return lemming::dataplane::sai:: + TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; + + case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; + + case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + return lemming::dataplane::sai:: + TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; + + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: + return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY; + + case SAI_TUNNEL_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::TUNNEL_ATTR_STATS_COUNT_MODE; + + case SAI_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::TUNNEL_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::TUNNEL_ATTR_UNSPECIFIED; + } +} +sai_tunnel_attr_t convert_sai_tunnel_attr_t_to_sai( + lemming::dataplane::sai::TunnelAttr val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_ATTR_TYPE: + return SAI_TUNNEL_ATTR_TYPE; + + case lemming::dataplane::sai::TUNNEL_ATTR_UNDERLAY_INTERFACE: + return SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE; + + case lemming::dataplane::sai::TUNNEL_ATTR_OVERLAY_INTERFACE: + return SAI_TUNNEL_ATTR_OVERLAY_INTERFACE; + + case lemming::dataplane::sai::TUNNEL_ATTR_PEER_MODE: + return SAI_TUNNEL_ATTR_PEER_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_SRC_IP: + return SAI_TUNNEL_ATTR_ENCAP_SRC_IP; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DST_IP: + return SAI_TUNNEL_ATTR_ENCAP_DST_IP; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_MODE: + return SAI_TUNNEL_ATTR_ENCAP_TTL_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_VAL: + return SAI_TUNNEL_ATTR_ENCAP_TTL_VAL; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_MODE: + return SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_VAL: + return SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: + return SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY: + return SAI_TUNNEL_ATTR_ENCAP_GRE_KEY; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_ECN_MODE: + return SAI_TUNNEL_ATTR_ENCAP_ECN_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_MAPPERS: + return SAI_TUNNEL_ATTR_ENCAP_MAPPERS; + + case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_ECN_MODE: + return SAI_TUNNEL_ATTR_DECAP_ECN_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_MAPPERS: + return SAI_TUNNEL_ATTR_DECAP_MAPPERS; + + case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_TTL_MODE: + return SAI_TUNNEL_ATTR_DECAP_TTL_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_DSCP_MODE: + return SAI_TUNNEL_ATTR_DECAP_DSCP_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: + return SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST; + + case lemming::dataplane::sai::TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + return SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; + + case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: + return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT: + return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT; + + case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; + + case lemming::dataplane::sai::TUNNEL_ATTR_SA_INDEX: + return SAI_TUNNEL_ATTR_SA_INDEX; + + case lemming::dataplane::sai::TUNNEL_ATTR_IPSEC_SA_PORT_LIST: + return SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST; + + case lemming::dataplane::sai:: + TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + return SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; + + case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + return SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; + + case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + return SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; + + case lemming::dataplane::sai:: + TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + return SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; + + case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: + return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY; + + case lemming::dataplane::sai::TUNNEL_ATTR_STATS_COUNT_MODE: + return SAI_TUNNEL_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::TUNNEL_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_TUNNEL_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_tunnel_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelDecapEcnMode +convert_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_DECAP_ECN_MODE_STANDARD: + return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_STANDARD; + + case SAI_TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER: + return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER; + + case SAI_TUNNEL_DECAP_ECN_MODE_USER_DEFINED: + return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_USER_DEFINED; + + default: + return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_UNSPECIFIED; + } +} +sai_tunnel_decap_ecn_mode_t convert_sai_tunnel_decap_ecn_mode_t_to_sai( + lemming::dataplane::sai::TunnelDecapEcnMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_STANDARD: + return SAI_TUNNEL_DECAP_ECN_MODE_STANDARD; + + case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER: + return SAI_TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER; + + case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_USER_DEFINED: + return SAI_TUNNEL_DECAP_ECN_MODE_USER_DEFINED; + + default: + return SAI_TUNNEL_DECAP_ECN_MODE_STANDARD; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_decap_ecn_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_decap_ecn_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_decap_ecn_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelDscpMode convert_sai_tunnel_dscp_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL: + return lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNIFORM_MODEL; + + case SAI_TUNNEL_DSCP_MODE_PIPE_MODEL: + return lemming::dataplane::sai::TUNNEL_DSCP_MODE_PIPE_MODEL; + + default: + return lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNSPECIFIED; + } +} +sai_tunnel_dscp_mode_t convert_sai_tunnel_dscp_mode_t_to_sai( + lemming::dataplane::sai::TunnelDscpMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNIFORM_MODEL: + return SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL; + + case lemming::dataplane::sai::TUNNEL_DSCP_MODE_PIPE_MODEL: + return SAI_TUNNEL_DSCP_MODE_PIPE_MODEL; + + default: + return SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_dscp_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_dscp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_dscp_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelEncapEcnMode +convert_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD: + return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_STANDARD; + + case SAI_TUNNEL_ENCAP_ECN_MODE_USER_DEFINED: + return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_USER_DEFINED; + + default: + return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_UNSPECIFIED; + } +} +sai_tunnel_encap_ecn_mode_t convert_sai_tunnel_encap_ecn_mode_t_to_sai( + lemming::dataplane::sai::TunnelEncapEcnMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_STANDARD: + return SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD; + + case lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_USER_DEFINED: + return SAI_TUNNEL_ENCAP_ECN_MODE_USER_DEFINED; + + default: + return SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_encap_ecn_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_encap_ecn_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_encap_ecn_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelMapAttr convert_sai_tunnel_map_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_MAP_ATTR_TYPE: + return lemming::dataplane::sai::TUNNEL_MAP_ATTR_TYPE; + + case SAI_TUNNEL_MAP_ATTR_ENTRY_LIST: + return lemming::dataplane::sai::TUNNEL_MAP_ATTR_ENTRY_LIST; + + default: + return lemming::dataplane::sai::TUNNEL_MAP_ATTR_UNSPECIFIED; + } +} +sai_tunnel_map_attr_t convert_sai_tunnel_map_attr_t_to_sai( + lemming::dataplane::sai::TunnelMapAttr val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_MAP_ATTR_TYPE: + return SAI_TUNNEL_MAP_ATTR_TYPE; + + case lemming::dataplane::sai::TUNNEL_MAP_ATTR_ENTRY_LIST: + return SAI_TUNNEL_MAP_ATTR_ENTRY_LIST; + + default: + return SAI_TUNNEL_MAP_ATTR_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_map_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_map_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelMapEntryAttr +convert_sai_tunnel_map_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: + return lemming::dataplane::sai:: + TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: + return lemming::dataplane::sai:: + TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY; + + case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE; + + default: + return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_tunnel_map_entry_attr_t convert_sai_tunnel_map_entry_attr_t_to_sai( + lemming::dataplane::sai::TunnelMapEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: + return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: + return SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY; + + case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: + return SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE; + + default: + return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_entry_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_map_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_map_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_map_entry_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelMapType convert_sai_tunnel_map_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_OECN_TO_UECN; + + case SAI_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN; + + case SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID; + + case SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI; + + case SAI_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF; + + case SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI; + + case SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID; + + case SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI; + + case SAI_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID; + + case SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID; + + case SAI_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF; + + case SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID; + + case SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID: + return lemming::dataplane::sai:: + TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID; + + case SAI_TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID: + return lemming::dataplane::sai:: + TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID; + + case SAI_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE; + + default: + return lemming::dataplane::sai::TUNNEL_MAP_TYPE_UNSPECIFIED; + } +} +sai_tunnel_map_type_t convert_sai_tunnel_map_type_t_to_sai( + lemming::dataplane::sai::TunnelMapType val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_OECN_TO_UECN: + return SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN: + return SAI_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID: + return SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI: + return SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF: + return SAI_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI: + return SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID: + return SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI: + return SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID: + return SAI_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID: + return SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF: + return SAI_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID: + return SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID: + return SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID: + return SAI_TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID; + + case lemming::dataplane::sai::TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE: + return SAI_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE; + + default: + return SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_type_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_map_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_map_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelPeerMode convert_sai_tunnel_peer_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_PEER_MODE_P2P: + return lemming::dataplane::sai::TUNNEL_PEER_MODE_P2P; + + case SAI_TUNNEL_PEER_MODE_P2MP: + return lemming::dataplane::sai::TUNNEL_PEER_MODE_P2MP; + + default: + return lemming::dataplane::sai::TUNNEL_PEER_MODE_UNSPECIFIED; + } +} +sai_tunnel_peer_mode_t convert_sai_tunnel_peer_mode_t_to_sai( + lemming::dataplane::sai::TunnelPeerMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_PEER_MODE_P2P: + return SAI_TUNNEL_PEER_MODE_P2P; + + case lemming::dataplane::sai::TUNNEL_PEER_MODE_P2MP: + return SAI_TUNNEL_PEER_MODE_P2MP; + + default: + return SAI_TUNNEL_PEER_MODE_P2P; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_peer_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_peer_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_peer_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_peer_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelStat convert_sai_tunnel_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_STAT_IN_OCTETS: + return lemming::dataplane::sai::TUNNEL_STAT_IN_OCTETS; + + case SAI_TUNNEL_STAT_IN_PACKETS: + return lemming::dataplane::sai::TUNNEL_STAT_IN_PACKETS; + + case SAI_TUNNEL_STAT_OUT_OCTETS: + return lemming::dataplane::sai::TUNNEL_STAT_OUT_OCTETS; + + case SAI_TUNNEL_STAT_OUT_PACKETS: + return lemming::dataplane::sai::TUNNEL_STAT_OUT_PACKETS; + + default: + return lemming::dataplane::sai::TUNNEL_STAT_UNSPECIFIED; + } +} +sai_tunnel_stat_t convert_sai_tunnel_stat_t_to_sai( + lemming::dataplane::sai::TunnelStat val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_STAT_IN_OCTETS: + return SAI_TUNNEL_STAT_IN_OCTETS; + + case lemming::dataplane::sai::TUNNEL_STAT_IN_PACKETS: + return SAI_TUNNEL_STAT_IN_PACKETS; + + case lemming::dataplane::sai::TUNNEL_STAT_OUT_OCTETS: + return SAI_TUNNEL_STAT_OUT_OCTETS; + + case lemming::dataplane::sai::TUNNEL_STAT_OUT_PACKETS: + return SAI_TUNNEL_STAT_OUT_PACKETS; + + default: + return SAI_TUNNEL_STAT_IN_OCTETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_tunnel_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelTermTableEntryAttr +convert_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: + return lemming::dataplane::sai:: + TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: + return lemming::dataplane::sai:: + TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: + return lemming::dataplane::sai:: + TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY; + + default: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_UNSPECIFIED; + } +} +sai_tunnel_term_table_entry_attr_t +convert_sai_tunnel_term_table_entry_attr_t_to_sai( + lemming::dataplane::sai::TunnelTermTableEntryAttr val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY; + + default: + return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_term_table_entry_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tunnel_term_table_entry_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_term_table_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_term_table_entry_attr_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelTermTableEntryType +convert_sai_tunnel_term_table_entry_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P; + + case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP; + + default: + return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_UNSPECIFIED; + } +} +sai_tunnel_term_table_entry_type_t +convert_sai_tunnel_term_table_entry_type_t_to_sai( + lemming::dataplane::sai::TunnelTermTableEntryType val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P: + return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP: + return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P: + return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P; + + case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP: + return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP; + + default: + return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_term_table_entry_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tunnel_term_table_entry_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_term_table_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_term_table_entry_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelTtlMode convert_sai_tunnel_ttl_mode_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL: + return lemming::dataplane::sai::TUNNEL_TTL_MODE_UNIFORM_MODEL; + + case SAI_TUNNEL_TTL_MODE_PIPE_MODEL: + return lemming::dataplane::sai::TUNNEL_TTL_MODE_PIPE_MODEL; + + default: + return lemming::dataplane::sai::TUNNEL_TTL_MODE_UNSPECIFIED; + } +} +sai_tunnel_ttl_mode_t convert_sai_tunnel_ttl_mode_t_to_sai( + lemming::dataplane::sai::TunnelTtlMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_TTL_MODE_UNIFORM_MODEL: + return SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL; + + case lemming::dataplane::sai::TUNNEL_TTL_MODE_PIPE_MODEL: + return SAI_TUNNEL_TTL_MODE_PIPE_MODEL; + + default: + return SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_ttl_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_ttl_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_ttl_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); } +lemming::dataplane::sai::TunnelType convert_sai_tunnel_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_TYPE_IPINIP: + return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP; + + case SAI_TUNNEL_TYPE_IPINIP_GRE: + return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_GRE; + + case SAI_TUNNEL_TYPE_VXLAN: + return lemming::dataplane::sai::TUNNEL_TYPE_VXLAN; + + case SAI_TUNNEL_TYPE_MPLS: + return lemming::dataplane::sai::TUNNEL_TYPE_MPLS; + case SAI_TUNNEL_TYPE_SRV6: + return lemming::dataplane::sai::TUNNEL_TYPE_SRV6; -lemming::dataplane::sai::Api convert_sai_api_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_API_UNSPECIFIED: return lemming::dataplane::sai::API_SAI_UNSPECIFIED; - - case SAI_API_SWITCH: return lemming::dataplane::sai::API_SWITCH; - - case SAI_API_PORT: return lemming::dataplane::sai::API_PORT; - - case SAI_API_FDB: return lemming::dataplane::sai::API_FDB; - - case SAI_API_VLAN: return lemming::dataplane::sai::API_VLAN; - - case SAI_API_VIRTUAL_ROUTER: return lemming::dataplane::sai::API_VIRTUAL_ROUTER; - - case SAI_API_ROUTE: return lemming::dataplane::sai::API_ROUTE; - - case SAI_API_NEXT_HOP: return lemming::dataplane::sai::API_NEXT_HOP; - - case SAI_API_NEXT_HOP_GROUP: return lemming::dataplane::sai::API_NEXT_HOP_GROUP; - - case SAI_API_ROUTER_INTERFACE: return lemming::dataplane::sai::API_ROUTER_INTERFACE; - - case SAI_API_NEIGHBOR: return lemming::dataplane::sai::API_NEIGHBOR; - - case SAI_API_ACL: return lemming::dataplane::sai::API_ACL; - - case SAI_API_HOSTIF: return lemming::dataplane::sai::API_HOSTIF; - - case SAI_API_MIRROR: return lemming::dataplane::sai::API_MIRROR; - - case SAI_API_SAMPLEPACKET: return lemming::dataplane::sai::API_SAMPLEPACKET; - - case SAI_API_STP: return lemming::dataplane::sai::API_STP; - - case SAI_API_LAG: return lemming::dataplane::sai::API_LAG; - - case SAI_API_POLICER: return lemming::dataplane::sai::API_POLICER; - - case SAI_API_WRED: return lemming::dataplane::sai::API_WRED; - - case SAI_API_QOS_MAP: return lemming::dataplane::sai::API_QOS_MAP; - - case SAI_API_QUEUE: return lemming::dataplane::sai::API_QUEUE; - - case SAI_API_SCHEDULER: return lemming::dataplane::sai::API_SCHEDULER; - - case SAI_API_SCHEDULER_GROUP: return lemming::dataplane::sai::API_SCHEDULER_GROUP; - - case SAI_API_BUFFER: return lemming::dataplane::sai::API_BUFFER; - - case SAI_API_HASH: return lemming::dataplane::sai::API_HASH; - - case SAI_API_UDF: return lemming::dataplane::sai::API_UDF; - - case SAI_API_TUNNEL: return lemming::dataplane::sai::API_TUNNEL; - - case SAI_API_L2MC: return lemming::dataplane::sai::API_L2MC; - - case SAI_API_IPMC: return lemming::dataplane::sai::API_IPMC; - - case SAI_API_RPF_GROUP: return lemming::dataplane::sai::API_RPF_GROUP; - - case SAI_API_L2MC_GROUP: return lemming::dataplane::sai::API_L2MC_GROUP; - - case SAI_API_IPMC_GROUP: return lemming::dataplane::sai::API_IPMC_GROUP; - - case SAI_API_MCAST_FDB: return lemming::dataplane::sai::API_MCAST_FDB; - - case SAI_API_BRIDGE: return lemming::dataplane::sai::API_BRIDGE; - - case SAI_API_TAM: return lemming::dataplane::sai::API_TAM; - - case SAI_API_SRV6: return lemming::dataplane::sai::API_SRV6; - - case SAI_API_MPLS: return lemming::dataplane::sai::API_MPLS; - - case SAI_API_DTEL: return lemming::dataplane::sai::API_DTEL; - - case SAI_API_BFD: return lemming::dataplane::sai::API_BFD; - - case SAI_API_ISOLATION_GROUP: return lemming::dataplane::sai::API_ISOLATION_GROUP; - - case SAI_API_NAT: return lemming::dataplane::sai::API_NAT; - - case SAI_API_COUNTER: return lemming::dataplane::sai::API_COUNTER; - - case SAI_API_DEBUG_COUNTER: return lemming::dataplane::sai::API_DEBUG_COUNTER; - - case SAI_API_MACSEC: return lemming::dataplane::sai::API_MACSEC; - - case SAI_API_SYSTEM_PORT: return lemming::dataplane::sai::API_SYSTEM_PORT; - - case SAI_API_MY_MAC: return lemming::dataplane::sai::API_MY_MAC; - - case SAI_API_IPSEC: return lemming::dataplane::sai::API_IPSEC; - - case SAI_API_GENERIC_PROGRAMMABLE: return lemming::dataplane::sai::API_GENERIC_PROGRAMMABLE; - - case SAI_API_ARS: return lemming::dataplane::sai::API_ARS; - - case SAI_API_ARS_PROFILE: return lemming::dataplane::sai::API_ARS_PROFILE; - - case SAI_API_TWAMP: return lemming::dataplane::sai::API_TWAMP; - - case SAI_API_POE: return lemming::dataplane::sai::API_POE; - - case SAI_API_MAX: return lemming::dataplane::sai::API_MAX; - - case SAI_API_CUSTOM_RANGE_START: return lemming::dataplane::sai::API_CUSTOM_RANGE_START; - - case SAI_API_CUSTOM_RANGE_END: return lemming::dataplane::sai::API_CUSTOM_RANGE_END; - - default: return lemming::dataplane::sai::API_UNSPECIFIED; - } + case SAI_TUNNEL_TYPE_NVGRE: + return lemming::dataplane::sai::TUNNEL_TYPE_NVGRE; + + case SAI_TUNNEL_TYPE_IPINIP_ESP: + return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_ESP; + + case SAI_TUNNEL_TYPE_IPINIP_UDP_ESP: + return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_UDP_ESP; + + case SAI_TUNNEL_TYPE_VXLAN_UDP_ESP: + return lemming::dataplane::sai::TUNNEL_TYPE_VXLAN_UDP_ESP; + + default: + return lemming::dataplane::sai::TUNNEL_TYPE_UNSPECIFIED; + } +} +sai_tunnel_type_t convert_sai_tunnel_type_t_to_sai( + lemming::dataplane::sai::TunnelType val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP: + return SAI_TUNNEL_TYPE_IPINIP; + + case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_GRE: + return SAI_TUNNEL_TYPE_IPINIP_GRE; + + case lemming::dataplane::sai::TUNNEL_TYPE_VXLAN: + return SAI_TUNNEL_TYPE_VXLAN; + + case lemming::dataplane::sai::TUNNEL_TYPE_MPLS: + return SAI_TUNNEL_TYPE_MPLS; + + case lemming::dataplane::sai::TUNNEL_TYPE_SRV6: + return SAI_TUNNEL_TYPE_SRV6; + + case lemming::dataplane::sai::TUNNEL_TYPE_NVGRE: + return SAI_TUNNEL_TYPE_NVGRE; + + case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_ESP: + return SAI_TUNNEL_TYPE_IPINIP_ESP; + + case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_UDP_ESP: + return SAI_TUNNEL_TYPE_IPINIP_UDP_ESP; + + case lemming::dataplane::sai::TUNNEL_TYPE_VXLAN_UDP_ESP: + return SAI_TUNNEL_TYPE_VXLAN_UDP_ESP; + + default: + return SAI_TUNNEL_TYPE_IPINIP; + } } -sai_api_t convert_sai_api_t_to_sai(lemming::dataplane::sai::Api val) { - switch (val) { - - case lemming::dataplane::sai::API_SAI_UNSPECIFIED: return SAI_API_UNSPECIFIED; - - case lemming::dataplane::sai::API_SWITCH: return SAI_API_SWITCH; - - case lemming::dataplane::sai::API_PORT: return SAI_API_PORT; - - case lemming::dataplane::sai::API_FDB: return SAI_API_FDB; - - case lemming::dataplane::sai::API_VLAN: return SAI_API_VLAN; - - case lemming::dataplane::sai::API_VIRTUAL_ROUTER: return SAI_API_VIRTUAL_ROUTER; - - case lemming::dataplane::sai::API_ROUTE: return SAI_API_ROUTE; - - case lemming::dataplane::sai::API_NEXT_HOP: return SAI_API_NEXT_HOP; - - case lemming::dataplane::sai::API_NEXT_HOP_GROUP: return SAI_API_NEXT_HOP_GROUP; - - case lemming::dataplane::sai::API_ROUTER_INTERFACE: return SAI_API_ROUTER_INTERFACE; - - case lemming::dataplane::sai::API_NEIGHBOR: return SAI_API_NEIGHBOR; - - case lemming::dataplane::sai::API_ACL: return SAI_API_ACL; - - case lemming::dataplane::sai::API_HOSTIF: return SAI_API_HOSTIF; - - case lemming::dataplane::sai::API_MIRROR: return SAI_API_MIRROR; - - case lemming::dataplane::sai::API_SAMPLEPACKET: return SAI_API_SAMPLEPACKET; - - case lemming::dataplane::sai::API_STP: return SAI_API_STP; - - case lemming::dataplane::sai::API_LAG: return SAI_API_LAG; - - case lemming::dataplane::sai::API_POLICER: return SAI_API_POLICER; - - case lemming::dataplane::sai::API_WRED: return SAI_API_WRED; - - case lemming::dataplane::sai::API_QOS_MAP: return SAI_API_QOS_MAP; - - case lemming::dataplane::sai::API_QUEUE: return SAI_API_QUEUE; - - case lemming::dataplane::sai::API_SCHEDULER: return SAI_API_SCHEDULER; - - case lemming::dataplane::sai::API_SCHEDULER_GROUP: return SAI_API_SCHEDULER_GROUP; - - case lemming::dataplane::sai::API_BUFFER: return SAI_API_BUFFER; - - case lemming::dataplane::sai::API_HASH: return SAI_API_HASH; - - case lemming::dataplane::sai::API_UDF: return SAI_API_UDF; - - case lemming::dataplane::sai::API_TUNNEL: return SAI_API_TUNNEL; - - case lemming::dataplane::sai::API_L2MC: return SAI_API_L2MC; - - case lemming::dataplane::sai::API_IPMC: return SAI_API_IPMC; - - case lemming::dataplane::sai::API_RPF_GROUP: return SAI_API_RPF_GROUP; - - case lemming::dataplane::sai::API_L2MC_GROUP: return SAI_API_L2MC_GROUP; - - case lemming::dataplane::sai::API_IPMC_GROUP: return SAI_API_IPMC_GROUP; - - case lemming::dataplane::sai::API_MCAST_FDB: return SAI_API_MCAST_FDB; - - case lemming::dataplane::sai::API_BRIDGE: return SAI_API_BRIDGE; - - case lemming::dataplane::sai::API_TAM: return SAI_API_TAM; - - case lemming::dataplane::sai::API_SRV6: return SAI_API_SRV6; - - case lemming::dataplane::sai::API_MPLS: return SAI_API_MPLS; - - case lemming::dataplane::sai::API_DTEL: return SAI_API_DTEL; - - case lemming::dataplane::sai::API_BFD: return SAI_API_BFD; - - case lemming::dataplane::sai::API_ISOLATION_GROUP: return SAI_API_ISOLATION_GROUP; - - case lemming::dataplane::sai::API_NAT: return SAI_API_NAT; - - case lemming::dataplane::sai::API_COUNTER: return SAI_API_COUNTER; - - case lemming::dataplane::sai::API_DEBUG_COUNTER: return SAI_API_DEBUG_COUNTER; - - case lemming::dataplane::sai::API_MACSEC: return SAI_API_MACSEC; - - case lemming::dataplane::sai::API_SYSTEM_PORT: return SAI_API_SYSTEM_PORT; - - case lemming::dataplane::sai::API_MY_MAC: return SAI_API_MY_MAC; - - case lemming::dataplane::sai::API_IPSEC: return SAI_API_IPSEC; - - case lemming::dataplane::sai::API_GENERIC_PROGRAMMABLE: return SAI_API_GENERIC_PROGRAMMABLE; - - case lemming::dataplane::sai::API_ARS: return SAI_API_ARS; - - case lemming::dataplane::sai::API_ARS_PROFILE: return SAI_API_ARS_PROFILE; - - case lemming::dataplane::sai::API_TWAMP: return SAI_API_TWAMP; - - case lemming::dataplane::sai::API_POE: return SAI_API_POE; - - case lemming::dataplane::sai::API_MAX: return SAI_API_MAX; - - case lemming::dataplane::sai::API_CUSTOM_RANGE_START: return SAI_API_CUSTOM_RANGE_START; - - case lemming::dataplane::sai::API_CUSTOM_RANGE_END: return SAI_API_CUSTOM_RANGE_END; - - default: return SAI_API_UNSPECIFIED; - } -} - -google::protobuf::RepeatedField convert_list_sai_api_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_api_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_api_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_api_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdEncapsulationType convert_sai_bfd_encapsulation_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP: return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_IP_IN_IP; - - case SAI_BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL: return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL; - - case SAI_BFD_ENCAPSULATION_TYPE_NONE: return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_NONE; - - case SAI_BFD_ENCAPSULATION_TYPE_SRV6: return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_SRV6; - - default: return lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_UNSPECIFIED; - } -} -sai_bfd_encapsulation_type_t convert_sai_bfd_encapsulation_type_t_to_sai(lemming::dataplane::sai::BfdEncapsulationType val) { - switch (val) { - - case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_IP_IN_IP: return SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP; - - case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL: return SAI_BFD_ENCAPSULATION_TYPE_L3_GRE_TUNNEL; - - case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_NONE: return SAI_BFD_ENCAPSULATION_TYPE_NONE; - - case lemming::dataplane::sai::BFD_ENCAPSULATION_TYPE_SRV6: return SAI_BFD_ENCAPSULATION_TYPE_SRV6; - - default: return SAI_BFD_ENCAPSULATION_TYPE_IP_IN_IP; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_encapsulation_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_encapsulation_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_encapsulation_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_encapsulation_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdSessionAttr convert_sai_bfd_session_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_SESSION_ATTR_TYPE: return lemming::dataplane::sai::BFD_SESSION_ATTR_TYPE; - - case SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID: return lemming::dataplane::sai::BFD_SESSION_ATTR_HW_LOOKUP_VALID; - - case SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER: return lemming::dataplane::sai::BFD_SESSION_ATTR_VIRTUAL_ROUTER; - - case SAI_BFD_SESSION_ATTR_PORT: return lemming::dataplane::sai::BFD_SESSION_ATTR_PORT; - - case SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: return lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR; - - case SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR; - - case SAI_BFD_SESSION_ATTR_UDP_SRC_PORT: return lemming::dataplane::sai::BFD_SESSION_ATTR_UDP_SRC_PORT; - - case SAI_BFD_SESSION_ATTR_TC: return lemming::dataplane::sai::BFD_SESSION_ATTR_TC; - - case SAI_BFD_SESSION_ATTR_VLAN_TPID: return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_TPID; - - case SAI_BFD_SESSION_ATTR_VLAN_ID: return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_ID; - - case SAI_BFD_SESSION_ATTR_VLAN_PRI: return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_PRI; - - case SAI_BFD_SESSION_ATTR_VLAN_CFI: return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_CFI; - - case SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID: return lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_HEADER_VALID; - - case SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: return lemming::dataplane::sai::BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE; - - case SAI_BFD_SESSION_ATTR_IPHDR_VERSION: return lemming::dataplane::sai::BFD_SESSION_ATTR_IPHDR_VERSION; - - case SAI_BFD_SESSION_ATTR_TOS: return lemming::dataplane::sai::BFD_SESSION_ATTR_TOS; - - case SAI_BFD_SESSION_ATTR_TTL: return lemming::dataplane::sai::BFD_SESSION_ATTR_TTL; - - case SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_IP_ADDRESS; - - case SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_DST_IP_ADDRESS; - - case SAI_BFD_SESSION_ATTR_TUNNEL_TOS: return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TOS; - - case SAI_BFD_SESSION_ATTR_TUNNEL_TTL: return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TTL; - - case SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS; - - case SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS; - - case SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_MAC_ADDRESS; - - case SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS: return lemming::dataplane::sai::BFD_SESSION_ATTR_DST_MAC_ADDRESS; - - case SAI_BFD_SESSION_ATTR_ECHO_ENABLE: return lemming::dataplane::sai::BFD_SESSION_ATTR_ECHO_ENABLE; - - case SAI_BFD_SESSION_ATTR_MULTIHOP: return lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIHOP; - - case SAI_BFD_SESSION_ATTR_CBIT: return lemming::dataplane::sai::BFD_SESSION_ATTR_CBIT; - - case SAI_BFD_SESSION_ATTR_MIN_TX: return lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_TX; - - case SAI_BFD_SESSION_ATTR_MIN_RX: return lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_RX; - - case SAI_BFD_SESSION_ATTR_MULTIPLIER: return lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIPLIER; - - case SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX: return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_TX; - - case SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX: return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_RX; - - case SAI_BFD_SESSION_ATTR_STATE: return lemming::dataplane::sai::BFD_SESSION_ATTR_STATE; - - case SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE: return lemming::dataplane::sai::BFD_SESSION_ATTR_OFFLOAD_TYPE; - - case SAI_BFD_SESSION_ATTR_NEGOTIATED_TX: return lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_TX; - - case SAI_BFD_SESSION_ATTR_NEGOTIATED_RX: return lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_RX; - - case SAI_BFD_SESSION_ATTR_LOCAL_DIAG: return lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DIAG; - - case SAI_BFD_SESSION_ATTR_REMOTE_DIAG: return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DIAG; - - case SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER: return lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MULTIPLIER; - - case SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID: return lemming::dataplane::sai::BFD_SESSION_ATTR_SRV6_SIDLIST_ID; - - default: return lemming::dataplane::sai::BFD_SESSION_ATTR_UNSPECIFIED; - } -} -sai_bfd_session_attr_t convert_sai_bfd_session_attr_t_to_sai(lemming::dataplane::sai::BfdSessionAttr val) { - switch (val) { - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TYPE: return SAI_BFD_SESSION_ATTR_TYPE; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_HW_LOOKUP_VALID: return SAI_BFD_SESSION_ATTR_HW_LOOKUP_VALID; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VIRTUAL_ROUTER: return SAI_BFD_SESSION_ATTR_VIRTUAL_ROUTER; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_PORT: return SAI_BFD_SESSION_ATTR_PORT; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR: return SAI_BFD_SESSION_ATTR_LOCAL_DISCRIMINATOR; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR: return SAI_BFD_SESSION_ATTR_REMOTE_DISCRIMINATOR; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_UDP_SRC_PORT: return SAI_BFD_SESSION_ATTR_UDP_SRC_PORT; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TC: return SAI_BFD_SESSION_ATTR_TC; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_TPID: return SAI_BFD_SESSION_ATTR_VLAN_TPID; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_ID: return SAI_BFD_SESSION_ATTR_VLAN_ID; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_PRI: return SAI_BFD_SESSION_ATTR_VLAN_PRI; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_CFI: return SAI_BFD_SESSION_ATTR_VLAN_CFI; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_VLAN_HEADER_VALID: return SAI_BFD_SESSION_ATTR_VLAN_HEADER_VALID; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE: return SAI_BFD_SESSION_ATTR_BFD_ENCAPSULATION_TYPE; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_IPHDR_VERSION: return SAI_BFD_SESSION_ATTR_IPHDR_VERSION; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TOS: return SAI_BFD_SESSION_ATTR_TOS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TTL: return SAI_BFD_SESSION_ATTR_TTL; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_IP_ADDRESS: return SAI_BFD_SESSION_ATTR_SRC_IP_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_DST_IP_ADDRESS: return SAI_BFD_SESSION_ATTR_DST_IP_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TOS: return SAI_BFD_SESSION_ATTR_TUNNEL_TOS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_TTL: return SAI_BFD_SESSION_ATTR_TUNNEL_TTL; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS: return SAI_BFD_SESSION_ATTR_TUNNEL_SRC_IP_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS: return SAI_BFD_SESSION_ATTR_TUNNEL_DST_IP_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_SRC_MAC_ADDRESS: return SAI_BFD_SESSION_ATTR_SRC_MAC_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_DST_MAC_ADDRESS: return SAI_BFD_SESSION_ATTR_DST_MAC_ADDRESS; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_ECHO_ENABLE: return SAI_BFD_SESSION_ATTR_ECHO_ENABLE; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIHOP: return SAI_BFD_SESSION_ATTR_MULTIHOP; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_CBIT: return SAI_BFD_SESSION_ATTR_CBIT; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_TX: return SAI_BFD_SESSION_ATTR_MIN_TX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_MIN_RX: return SAI_BFD_SESSION_ATTR_MIN_RX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_MULTIPLIER: return SAI_BFD_SESSION_ATTR_MULTIPLIER; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_TX: return SAI_BFD_SESSION_ATTR_REMOTE_MIN_TX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MIN_RX: return SAI_BFD_SESSION_ATTR_REMOTE_MIN_RX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_STATE: return SAI_BFD_SESSION_ATTR_STATE; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_OFFLOAD_TYPE: return SAI_BFD_SESSION_ATTR_OFFLOAD_TYPE; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_TX: return SAI_BFD_SESSION_ATTR_NEGOTIATED_TX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_NEGOTIATED_RX: return SAI_BFD_SESSION_ATTR_NEGOTIATED_RX; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_LOCAL_DIAG: return SAI_BFD_SESSION_ATTR_LOCAL_DIAG; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_DIAG: return SAI_BFD_SESSION_ATTR_REMOTE_DIAG; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_REMOTE_MULTIPLIER: return SAI_BFD_SESSION_ATTR_REMOTE_MULTIPLIER; - - case lemming::dataplane::sai::BFD_SESSION_ATTR_SRV6_SIDLIST_ID: return SAI_BFD_SESSION_ATTR_SRV6_SIDLIST_ID; - - default: return SAI_BFD_SESSION_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_session_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_session_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_session_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdSessionOffloadType convert_sai_bfd_session_offload_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_SESSION_OFFLOAD_TYPE_NONE: return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_NONE; - - case SAI_BFD_SESSION_OFFLOAD_TYPE_FULL: return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_FULL; - - case SAI_BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE: return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE; - - default: return lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_UNSPECIFIED; - } -} -sai_bfd_session_offload_type_t convert_sai_bfd_session_offload_type_t_to_sai(lemming::dataplane::sai::BfdSessionOffloadType val) { - switch (val) { - - case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_NONE: return SAI_BFD_SESSION_OFFLOAD_TYPE_NONE; - - case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_FULL: return SAI_BFD_SESSION_OFFLOAD_TYPE_FULL; - - case lemming::dataplane::sai::BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE: return SAI_BFD_SESSION_OFFLOAD_TYPE_SUSTENANCE; - - default: return SAI_BFD_SESSION_OFFLOAD_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_session_offload_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_session_offload_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_session_offload_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_session_offload_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdSessionStat convert_sai_bfd_session_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_SESSION_STAT_IN_PACKETS: return lemming::dataplane::sai::BFD_SESSION_STAT_IN_PACKETS; - - case SAI_BFD_SESSION_STAT_OUT_PACKETS: return lemming::dataplane::sai::BFD_SESSION_STAT_OUT_PACKETS; - - case SAI_BFD_SESSION_STAT_DROP_PACKETS: return lemming::dataplane::sai::BFD_SESSION_STAT_DROP_PACKETS; - - default: return lemming::dataplane::sai::BFD_SESSION_STAT_UNSPECIFIED; - } -} -sai_bfd_session_stat_t convert_sai_bfd_session_stat_t_to_sai(lemming::dataplane::sai::BfdSessionStat val) { - switch (val) { - - case lemming::dataplane::sai::BFD_SESSION_STAT_IN_PACKETS: return SAI_BFD_SESSION_STAT_IN_PACKETS; - - case lemming::dataplane::sai::BFD_SESSION_STAT_OUT_PACKETS: return SAI_BFD_SESSION_STAT_OUT_PACKETS; - - case lemming::dataplane::sai::BFD_SESSION_STAT_DROP_PACKETS: return SAI_BFD_SESSION_STAT_DROP_PACKETS; - - default: return SAI_BFD_SESSION_STAT_IN_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_session_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_session_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_session_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_session_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdSessionState convert_sai_bfd_session_state_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_SESSION_STATE_ADMIN_DOWN: return lemming::dataplane::sai::BFD_SESSION_STATE_ADMIN_DOWN; - - case SAI_BFD_SESSION_STATE_DOWN: return lemming::dataplane::sai::BFD_SESSION_STATE_DOWN; - - case SAI_BFD_SESSION_STATE_INIT: return lemming::dataplane::sai::BFD_SESSION_STATE_INIT; - - case SAI_BFD_SESSION_STATE_UP: return lemming::dataplane::sai::BFD_SESSION_STATE_UP; - - default: return lemming::dataplane::sai::BFD_SESSION_STATE_UNSPECIFIED; - } -} -sai_bfd_session_state_t convert_sai_bfd_session_state_t_to_sai(lemming::dataplane::sai::BfdSessionState val) { - switch (val) { - - case lemming::dataplane::sai::BFD_SESSION_STATE_ADMIN_DOWN: return SAI_BFD_SESSION_STATE_ADMIN_DOWN; - - case lemming::dataplane::sai::BFD_SESSION_STATE_DOWN: return SAI_BFD_SESSION_STATE_DOWN; - - case lemming::dataplane::sai::BFD_SESSION_STATE_INIT: return SAI_BFD_SESSION_STATE_INIT; - - case lemming::dataplane::sai::BFD_SESSION_STATE_UP: return SAI_BFD_SESSION_STATE_UP; - - default: return SAI_BFD_SESSION_STATE_ADMIN_DOWN; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_session_state_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_session_state_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_session_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_session_state_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BfdSessionType convert_sai_bfd_session_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE: return lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_ACTIVE; - - case SAI_BFD_SESSION_TYPE_DEMAND_PASSIVE: return lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_PASSIVE; - - case SAI_BFD_SESSION_TYPE_ASYNC_ACTIVE: return lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_ACTIVE; - - case SAI_BFD_SESSION_TYPE_ASYNC_PASSIVE: return lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_PASSIVE; - - default: return lemming::dataplane::sai::BFD_SESSION_TYPE_UNSPECIFIED; - } -} -sai_bfd_session_type_t convert_sai_bfd_session_type_t_to_sai(lemming::dataplane::sai::BfdSessionType val) { - switch (val) { - - case lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_ACTIVE: return SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE; - - case lemming::dataplane::sai::BFD_SESSION_TYPE_DEMAND_PASSIVE: return SAI_BFD_SESSION_TYPE_DEMAND_PASSIVE; - - case lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_ACTIVE: return SAI_BFD_SESSION_TYPE_ASYNC_ACTIVE; - - case lemming::dataplane::sai::BFD_SESSION_TYPE_ASYNC_PASSIVE: return SAI_BFD_SESSION_TYPE_ASYNC_PASSIVE; - - default: return SAI_BFD_SESSION_TYPE_DEMAND_ACTIVE; - } -} - -google::protobuf::RepeatedField convert_list_sai_bfd_session_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bfd_session_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bfd_session_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bfd_session_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgeAttr convert_sai_bridge_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_ATTR_TYPE: return lemming::dataplane::sai::BRIDGE_ATTR_TYPE; - - case SAI_BRIDGE_ATTR_PORT_LIST: return lemming::dataplane::sai::BRIDGE_ATTR_PORT_LIST; - - case SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: return lemming::dataplane::sai::BRIDGE_ATTR_MAX_LEARNED_ADDRESSES; - - case SAI_BRIDGE_ATTR_LEARN_DISABLE: return lemming::dataplane::sai::BRIDGE_ATTR_LEARN_DISABLE; - - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; - - case SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; - - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; - - case SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: return lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; - - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; - - case SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: return lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_GROUP; - - default: return lemming::dataplane::sai::BRIDGE_ATTR_UNSPECIFIED; - } -} -sai_bridge_attr_t convert_sai_bridge_attr_t_to_sai(lemming::dataplane::sai::BridgeAttr val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_ATTR_TYPE: return SAI_BRIDGE_ATTR_TYPE; - - case lemming::dataplane::sai::BRIDGE_ATTR_PORT_LIST: return SAI_BRIDGE_ATTR_PORT_LIST; - - case lemming::dataplane::sai::BRIDGE_ATTR_MAX_LEARNED_ADDRESSES: return SAI_BRIDGE_ATTR_MAX_LEARNED_ADDRESSES; - - case lemming::dataplane::sai::BRIDGE_ATTR_LEARN_DISABLE: return SAI_BRIDGE_ATTR_LEARN_DISABLE; - - case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: return SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: return SAI_BRIDGE_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; - - case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: return SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: return SAI_BRIDGE_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; - - case lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: return SAI_BRIDGE_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::BRIDGE_ATTR_BROADCAST_FLOOD_GROUP: return SAI_BRIDGE_ATTR_BROADCAST_FLOOD_GROUP; - - default: return SAI_BRIDGE_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgeFloodControlType convert_sai_bridge_flood_control_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS: return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; - - case SAI_BRIDGE_FLOOD_CONTROL_TYPE_NONE: return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_NONE; - - case SAI_BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP: return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP; - - case SAI_BRIDGE_FLOOD_CONTROL_TYPE_COMBINED: return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_COMBINED; - - default: return lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_UNSPECIFIED; - } -} -sai_bridge_flood_control_type_t convert_sai_bridge_flood_control_type_t_to_sai(lemming::dataplane::sai::BridgeFloodControlType val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS: return SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; - - case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_NONE: return SAI_BRIDGE_FLOOD_CONTROL_TYPE_NONE; - - case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP: return SAI_BRIDGE_FLOOD_CONTROL_TYPE_L2MC_GROUP; - - case lemming::dataplane::sai::BRIDGE_FLOOD_CONTROL_TYPE_COMBINED: return SAI_BRIDGE_FLOOD_CONTROL_TYPE_COMBINED; - - default: return SAI_BRIDGE_FLOOD_CONTROL_TYPE_SUB_PORTS; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_flood_control_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_flood_control_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_flood_control_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_flood_control_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgePortAttr convert_sai_bridge_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_PORT_ATTR_TYPE: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TYPE; - - case SAI_BRIDGE_PORT_ATTR_PORT_ID: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_PORT_ID; - - case SAI_BRIDGE_PORT_ATTR_TAGGING_MODE: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TAGGING_MODE; - - case SAI_BRIDGE_PORT_ATTR_VLAN_ID: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_VLAN_ID; - - case SAI_BRIDGE_PORT_ATTR_RIF_ID: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_RIF_ID; - - case SAI_BRIDGE_PORT_ATTR_TUNNEL_ID: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_TUNNEL_ID; - - case SAI_BRIDGE_PORT_ATTR_BRIDGE_ID: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_BRIDGE_ID; - - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_MODE; - - case SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES; - - case SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION; - - case SAI_BRIDGE_PORT_ATTR_ADMIN_STATE: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_ADMIN_STATE; - - case SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_INGRESS_FILTERING; - - case SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_EGRESS_FILTERING; - - case SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_ISOLATION_GROUP; - - default: return lemming::dataplane::sai::BRIDGE_PORT_ATTR_UNSPECIFIED; - } -} -sai_bridge_port_attr_t convert_sai_bridge_port_attr_t_to_sai(lemming::dataplane::sai::BridgePortAttr val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TYPE: return SAI_BRIDGE_PORT_ATTR_TYPE; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_PORT_ID: return SAI_BRIDGE_PORT_ATTR_PORT_ID; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TAGGING_MODE: return SAI_BRIDGE_PORT_ATTR_TAGGING_MODE; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_VLAN_ID: return SAI_BRIDGE_PORT_ATTR_VLAN_ID; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_RIF_ID: return SAI_BRIDGE_PORT_ATTR_RIF_ID; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_TUNNEL_ID: return SAI_BRIDGE_PORT_ATTR_TUNNEL_ID; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_BRIDGE_ID: return SAI_BRIDGE_PORT_ATTR_BRIDGE_ID; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_MODE: return SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES: return SAI_BRIDGE_PORT_ATTR_MAX_LEARNED_ADDRESSES; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION: return SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_LIMIT_VIOLATION_PACKET_ACTION; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_ADMIN_STATE: return SAI_BRIDGE_PORT_ATTR_ADMIN_STATE; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_INGRESS_FILTERING: return SAI_BRIDGE_PORT_ATTR_INGRESS_FILTERING; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_EGRESS_FILTERING: return SAI_BRIDGE_PORT_ATTR_EGRESS_FILTERING; - - case lemming::dataplane::sai::BRIDGE_PORT_ATTR_ISOLATION_GROUP: return SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP; - - default: return SAI_BRIDGE_PORT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgePortFdbLearningMode convert_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DROP; - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE; - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_HW: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_HW; - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP; - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG; - - case SAI_BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION; - - default: return lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_UNSPECIFIED; - } -} -sai_bridge_port_fdb_learning_mode_t convert_sai_bridge_port_fdb_learning_mode_t_to_sai(lemming::dataplane::sai::BridgePortFdbLearningMode val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DROP: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP; - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE; - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_HW: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_HW; - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_TRAP; - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_CPU_LOG; - - case lemming::dataplane::sai::BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_FDB_NOTIFICATION; - - default: return SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DROP; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_port_fdb_learning_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_port_fdb_learning_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_port_fdb_learning_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgePortStat convert_sai_bridge_port_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_PORT_STAT_IN_OCTETS: return lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_OCTETS; - - case SAI_BRIDGE_PORT_STAT_IN_PACKETS: return lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_PACKETS; - - case SAI_BRIDGE_PORT_STAT_OUT_OCTETS: return lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_OCTETS; - - case SAI_BRIDGE_PORT_STAT_OUT_PACKETS: return lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_PACKETS; - - default: return lemming::dataplane::sai::BRIDGE_PORT_STAT_UNSPECIFIED; - } -} -sai_bridge_port_stat_t convert_sai_bridge_port_stat_t_to_sai(lemming::dataplane::sai::BridgePortStat val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_OCTETS: return SAI_BRIDGE_PORT_STAT_IN_OCTETS; - - case lemming::dataplane::sai::BRIDGE_PORT_STAT_IN_PACKETS: return SAI_BRIDGE_PORT_STAT_IN_PACKETS; - - case lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_OCTETS: return SAI_BRIDGE_PORT_STAT_OUT_OCTETS; - - case lemming::dataplane::sai::BRIDGE_PORT_STAT_OUT_PACKETS: return SAI_BRIDGE_PORT_STAT_OUT_PACKETS; - - default: return SAI_BRIDGE_PORT_STAT_IN_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_port_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_port_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_port_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgePortTaggingMode convert_sai_bridge_port_tagging_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED: return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNTAGGED; - - case SAI_BRIDGE_PORT_TAGGING_MODE_TAGGED: return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_TAGGED; - - default: return lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNSPECIFIED; - } -} -sai_bridge_port_tagging_mode_t convert_sai_bridge_port_tagging_mode_t_to_sai(lemming::dataplane::sai::BridgePortTaggingMode val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_UNTAGGED: return SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED; - - case lemming::dataplane::sai::BRIDGE_PORT_TAGGING_MODE_TAGGED: return SAI_BRIDGE_PORT_TAGGING_MODE_TAGGED; - - default: return SAI_BRIDGE_PORT_TAGGING_MODE_UNTAGGED; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_port_tagging_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_port_tagging_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_port_tagging_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_port_tagging_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgePortType convert_sai_bridge_port_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_PORT_TYPE_PORT: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_PORT; - - case SAI_BRIDGE_PORT_TYPE_SUB_PORT: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_SUB_PORT; - - case SAI_BRIDGE_PORT_TYPE_1Q_ROUTER: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_1Q_ROUTER; - - case SAI_BRIDGE_PORT_TYPE_1D_ROUTER: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_1D_ROUTER; - - case SAI_BRIDGE_PORT_TYPE_TUNNEL: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_TUNNEL; - - default: return lemming::dataplane::sai::BRIDGE_PORT_TYPE_UNSPECIFIED; - } -} -sai_bridge_port_type_t convert_sai_bridge_port_type_t_to_sai(lemming::dataplane::sai::BridgePortType val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_PORT_TYPE_PORT: return SAI_BRIDGE_PORT_TYPE_PORT; - - case lemming::dataplane::sai::BRIDGE_PORT_TYPE_SUB_PORT: return SAI_BRIDGE_PORT_TYPE_SUB_PORT; - - case lemming::dataplane::sai::BRIDGE_PORT_TYPE_1Q_ROUTER: return SAI_BRIDGE_PORT_TYPE_1Q_ROUTER; - - case lemming::dataplane::sai::BRIDGE_PORT_TYPE_1D_ROUTER: return SAI_BRIDGE_PORT_TYPE_1D_ROUTER; - - case lemming::dataplane::sai::BRIDGE_PORT_TYPE_TUNNEL: return SAI_BRIDGE_PORT_TYPE_TUNNEL; - - default: return SAI_BRIDGE_PORT_TYPE_PORT; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_port_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_port_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_port_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgeStat convert_sai_bridge_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_STAT_IN_OCTETS: return lemming::dataplane::sai::BRIDGE_STAT_IN_OCTETS; - - case SAI_BRIDGE_STAT_IN_PACKETS: return lemming::dataplane::sai::BRIDGE_STAT_IN_PACKETS; - - case SAI_BRIDGE_STAT_OUT_OCTETS: return lemming::dataplane::sai::BRIDGE_STAT_OUT_OCTETS; - - case SAI_BRIDGE_STAT_OUT_PACKETS: return lemming::dataplane::sai::BRIDGE_STAT_OUT_PACKETS; - - default: return lemming::dataplane::sai::BRIDGE_STAT_UNSPECIFIED; - } -} -sai_bridge_stat_t convert_sai_bridge_stat_t_to_sai(lemming::dataplane::sai::BridgeStat val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_STAT_IN_OCTETS: return SAI_BRIDGE_STAT_IN_OCTETS; - - case lemming::dataplane::sai::BRIDGE_STAT_IN_PACKETS: return SAI_BRIDGE_STAT_IN_PACKETS; - - case lemming::dataplane::sai::BRIDGE_STAT_OUT_OCTETS: return SAI_BRIDGE_STAT_OUT_OCTETS; - - case lemming::dataplane::sai::BRIDGE_STAT_OUT_PACKETS: return SAI_BRIDGE_STAT_OUT_PACKETS; - - default: return SAI_BRIDGE_STAT_IN_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BridgeType convert_sai_bridge_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BRIDGE_TYPE_1Q: return lemming::dataplane::sai::BRIDGE_TYPE_1Q; - - case SAI_BRIDGE_TYPE_1D: return lemming::dataplane::sai::BRIDGE_TYPE_1D; - - default: return lemming::dataplane::sai::BRIDGE_TYPE_UNSPECIFIED; - } -} -sai_bridge_type_t convert_sai_bridge_type_t_to_sai(lemming::dataplane::sai::BridgeType val) { - switch (val) { - - case lemming::dataplane::sai::BRIDGE_TYPE_1Q: return SAI_BRIDGE_TYPE_1Q; - - case lemming::dataplane::sai::BRIDGE_TYPE_1D: return SAI_BRIDGE_TYPE_1D; - - default: return SAI_BRIDGE_TYPE_1Q; - } -} - -google::protobuf::RepeatedField convert_list_sai_bridge_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bridge_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bridge_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bridge_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferPoolAttr convert_sai_buffer_pool_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_POOL_ATTR_SHARED_SIZE: return lemming::dataplane::sai::BUFFER_POOL_ATTR_SHARED_SIZE; - - case SAI_BUFFER_POOL_ATTR_TYPE: return lemming::dataplane::sai::BUFFER_POOL_ATTR_TYPE; - - case SAI_BUFFER_POOL_ATTR_SIZE: return lemming::dataplane::sai::BUFFER_POOL_ATTR_SIZE; - - case SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE: return lemming::dataplane::sai::BUFFER_POOL_ATTR_THRESHOLD_MODE; - - case SAI_BUFFER_POOL_ATTR_TAM: return lemming::dataplane::sai::BUFFER_POOL_ATTR_TAM; - - case SAI_BUFFER_POOL_ATTR_XOFF_SIZE: return lemming::dataplane::sai::BUFFER_POOL_ATTR_XOFF_SIZE; - - case SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID: return lemming::dataplane::sai::BUFFER_POOL_ATTR_WRED_PROFILE_ID; - - default: return lemming::dataplane::sai::BUFFER_POOL_ATTR_UNSPECIFIED; - } -} -sai_buffer_pool_attr_t convert_sai_buffer_pool_attr_t_to_sai(lemming::dataplane::sai::BufferPoolAttr val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_SHARED_SIZE: return SAI_BUFFER_POOL_ATTR_SHARED_SIZE; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_TYPE: return SAI_BUFFER_POOL_ATTR_TYPE; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_SIZE: return SAI_BUFFER_POOL_ATTR_SIZE; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_THRESHOLD_MODE: return SAI_BUFFER_POOL_ATTR_THRESHOLD_MODE; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_TAM: return SAI_BUFFER_POOL_ATTR_TAM; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_XOFF_SIZE: return SAI_BUFFER_POOL_ATTR_XOFF_SIZE; - - case lemming::dataplane::sai::BUFFER_POOL_ATTR_WRED_PROFILE_ID: return SAI_BUFFER_POOL_ATTR_WRED_PROFILE_ID; - - default: return SAI_BUFFER_POOL_ATTR_SHARED_SIZE; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_pool_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_pool_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_pool_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_pool_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferPoolStat convert_sai_buffer_pool_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; - - case SAI_BUFFER_POOL_STAT_WATERMARK_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_WATERMARK_BYTES; - - case SAI_BUFFER_POOL_STAT_DROPPED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_DROPPED_PACKETS; - - case SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; - - case SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES; - - case SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; - - case SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS; - - case SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES; - - case SAI_BUFFER_POOL_STAT_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_PACKETS; - - case SAI_BUFFER_POOL_STAT_WRED_DROPPED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_BYTES; - - case SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; - - case SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS; - - case SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES; - - case SAI_BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; - - case SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES: return lemming::dataplane::sai::BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES; - - case SAI_BUFFER_POOL_STAT_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::BUFFER_POOL_STAT_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::BUFFER_POOL_STAT_UNSPECIFIED; - } -} -sai_buffer_pool_stat_t convert_sai_buffer_pool_stat_t_to_sai(lemming::dataplane::sai::BufferPoolStat val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES: return SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_WATERMARK_BYTES: return SAI_BUFFER_POOL_STAT_WATERMARK_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_DROPPED_PACKETS: return SAI_BUFFER_POOL_STAT_DROPPED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: return SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES: return SAI_BUFFER_POOL_STAT_GREEN_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: return SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: return SAI_BUFFER_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS: return SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES: return SAI_BUFFER_POOL_STAT_RED_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_PACKETS: return SAI_BUFFER_POOL_STAT_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_DROPPED_BYTES: return SAI_BUFFER_POOL_STAT_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: return SAI_BUFFER_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return SAI_BUFFER_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: return SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: return SAI_BUFFER_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS: return SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES: return SAI_BUFFER_POOL_STAT_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: return SAI_BUFFER_POOL_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES: return SAI_BUFFER_POOL_STAT_XOFF_ROOM_WATERMARK_BYTES; - - case lemming::dataplane::sai::BUFFER_POOL_STAT_CUSTOM_RANGE_BASE: return SAI_BUFFER_POOL_STAT_CUSTOM_RANGE_BASE; - - default: return SAI_BUFFER_POOL_STAT_CURR_OCCUPANCY_BYTES; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_pool_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_pool_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_pool_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_pool_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferPoolThresholdMode convert_sai_buffer_pool_threshold_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC: return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_STATIC; - - case SAI_BUFFER_POOL_THRESHOLD_MODE_DYNAMIC: return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_DYNAMIC; - - default: return lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_UNSPECIFIED; - } -} -sai_buffer_pool_threshold_mode_t convert_sai_buffer_pool_threshold_mode_t_to_sai(lemming::dataplane::sai::BufferPoolThresholdMode val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_STATIC: return SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC; - - case lemming::dataplane::sai::BUFFER_POOL_THRESHOLD_MODE_DYNAMIC: return SAI_BUFFER_POOL_THRESHOLD_MODE_DYNAMIC; - - default: return SAI_BUFFER_POOL_THRESHOLD_MODE_STATIC; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_pool_threshold_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_pool_threshold_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_pool_threshold_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_pool_threshold_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferPoolType convert_sai_buffer_pool_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_POOL_TYPE_INGRESS: return lemming::dataplane::sai::BUFFER_POOL_TYPE_INGRESS; - - case SAI_BUFFER_POOL_TYPE_EGRESS: return lemming::dataplane::sai::BUFFER_POOL_TYPE_EGRESS; - - case SAI_BUFFER_POOL_TYPE_BOTH: return lemming::dataplane::sai::BUFFER_POOL_TYPE_BOTH; - - default: return lemming::dataplane::sai::BUFFER_POOL_TYPE_UNSPECIFIED; - } -} -sai_buffer_pool_type_t convert_sai_buffer_pool_type_t_to_sai(lemming::dataplane::sai::BufferPoolType val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_POOL_TYPE_INGRESS: return SAI_BUFFER_POOL_TYPE_INGRESS; - - case lemming::dataplane::sai::BUFFER_POOL_TYPE_EGRESS: return SAI_BUFFER_POOL_TYPE_EGRESS; - - case lemming::dataplane::sai::BUFFER_POOL_TYPE_BOTH: return SAI_BUFFER_POOL_TYPE_BOTH; - - default: return SAI_BUFFER_POOL_TYPE_INGRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_pool_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_pool_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_pool_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_pool_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferProfileAttr convert_sai_buffer_profile_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_PROFILE_ATTR_POOL_ID: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_POOL_ID; - - case SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE; - - case SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_THRESHOLD_MODE; - - case SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH; - - case SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_STATIC_TH; - - case SAI_BUFFER_PROFILE_ATTR_XOFF_TH: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XOFF_TH; - - case SAI_BUFFER_PROFILE_ATTR_XON_TH: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_TH; - - case SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_OFFSET_TH; - - default: return lemming::dataplane::sai::BUFFER_PROFILE_ATTR_UNSPECIFIED; - } -} -sai_buffer_profile_attr_t convert_sai_buffer_profile_attr_t_to_sai(lemming::dataplane::sai::BufferProfileAttr val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_POOL_ID: return SAI_BUFFER_PROFILE_ATTR_POOL_ID; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE: return SAI_BUFFER_PROFILE_ATTR_RESERVED_BUFFER_SIZE; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_THRESHOLD_MODE: return SAI_BUFFER_PROFILE_ATTR_THRESHOLD_MODE; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH: return SAI_BUFFER_PROFILE_ATTR_SHARED_DYNAMIC_TH; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_SHARED_STATIC_TH: return SAI_BUFFER_PROFILE_ATTR_SHARED_STATIC_TH; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XOFF_TH: return SAI_BUFFER_PROFILE_ATTR_XOFF_TH; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_TH: return SAI_BUFFER_PROFILE_ATTR_XON_TH; - - case lemming::dataplane::sai::BUFFER_PROFILE_ATTR_XON_OFFSET_TH: return SAI_BUFFER_PROFILE_ATTR_XON_OFFSET_TH; - - default: return SAI_BUFFER_PROFILE_ATTR_POOL_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_profile_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_profile_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_profile_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_profile_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BufferProfileThresholdMode convert_sai_buffer_profile_threshold_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC: return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_STATIC; - - case SAI_BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC: return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC; - - default: return lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_UNSPECIFIED; - } -} -sai_buffer_profile_threshold_mode_t convert_sai_buffer_profile_threshold_mode_t_to_sai(lemming::dataplane::sai::BufferProfileThresholdMode val) { - switch (val) { - - case lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_STATIC: return SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC; - - case lemming::dataplane::sai::BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC: return SAI_BUFFER_PROFILE_THRESHOLD_MODE_DYNAMIC; - - default: return SAI_BUFFER_PROFILE_THRESHOLD_MODE_STATIC; - } -} - -google::protobuf::RepeatedField convert_list_sai_buffer_profile_threshold_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_buffer_profile_threshold_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_buffer_profile_threshold_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_buffer_profile_threshold_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::BulkOpErrorMode convert_sai_bulk_op_error_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR: return lemming::dataplane::sai::BULK_OP_ERROR_MODE_STOP_ON_ERROR; - - case SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR: return lemming::dataplane::sai::BULK_OP_ERROR_MODE_IGNORE_ERROR; - - default: return lemming::dataplane::sai::BULK_OP_ERROR_MODE_UNSPECIFIED; - } -} -sai_bulk_op_error_mode_t convert_sai_bulk_op_error_mode_t_to_sai(lemming::dataplane::sai::BulkOpErrorMode val) { - switch (val) { - - case lemming::dataplane::sai::BULK_OP_ERROR_MODE_STOP_ON_ERROR: return SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR; - - case lemming::dataplane::sai::BULK_OP_ERROR_MODE_IGNORE_ERROR: return SAI_BULK_OP_ERROR_MODE_IGNORE_ERROR; - - default: return SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR; - } -} - -google::protobuf::RepeatedField convert_list_sai_bulk_op_error_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_bulk_op_error_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_bulk_op_error_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_bulk_op_error_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::CommonApi convert_sai_common_api_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_COMMON_API_CREATE: return lemming::dataplane::sai::COMMON_API_CREATE; - - case SAI_COMMON_API_REMOVE: return lemming::dataplane::sai::COMMON_API_REMOVE; - - case SAI_COMMON_API_SET: return lemming::dataplane::sai::COMMON_API_SET; - - case SAI_COMMON_API_GET: return lemming::dataplane::sai::COMMON_API_GET; - - case SAI_COMMON_API_BULK_CREATE: return lemming::dataplane::sai::COMMON_API_BULK_CREATE; - - case SAI_COMMON_API_BULK_REMOVE: return lemming::dataplane::sai::COMMON_API_BULK_REMOVE; - - case SAI_COMMON_API_BULK_SET: return lemming::dataplane::sai::COMMON_API_BULK_SET; - - case SAI_COMMON_API_BULK_GET: return lemming::dataplane::sai::COMMON_API_BULK_GET; - - case SAI_COMMON_API_MAX: return lemming::dataplane::sai::COMMON_API_MAX; - - default: return lemming::dataplane::sai::COMMON_API_UNSPECIFIED; - } -} -sai_common_api_t convert_sai_common_api_t_to_sai(lemming::dataplane::sai::CommonApi val) { - switch (val) { - - case lemming::dataplane::sai::COMMON_API_CREATE: return SAI_COMMON_API_CREATE; - - case lemming::dataplane::sai::COMMON_API_REMOVE: return SAI_COMMON_API_REMOVE; - - case lemming::dataplane::sai::COMMON_API_SET: return SAI_COMMON_API_SET; - - case lemming::dataplane::sai::COMMON_API_GET: return SAI_COMMON_API_GET; - - case lemming::dataplane::sai::COMMON_API_BULK_CREATE: return SAI_COMMON_API_BULK_CREATE; - - case lemming::dataplane::sai::COMMON_API_BULK_REMOVE: return SAI_COMMON_API_BULK_REMOVE; - - case lemming::dataplane::sai::COMMON_API_BULK_SET: return SAI_COMMON_API_BULK_SET; - - case lemming::dataplane::sai::COMMON_API_BULK_GET: return SAI_COMMON_API_BULK_GET; - - case lemming::dataplane::sai::COMMON_API_MAX: return SAI_COMMON_API_MAX; - - default: return SAI_COMMON_API_CREATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_common_api_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_common_api_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_common_api_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_common_api_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::CounterAttr convert_sai_counter_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_COUNTER_ATTR_TYPE: return lemming::dataplane::sai::COUNTER_ATTR_TYPE; - - case SAI_COUNTER_ATTR_LABEL: return lemming::dataplane::sai::COUNTER_ATTR_LABEL; - - default: return lemming::dataplane::sai::COUNTER_ATTR_UNSPECIFIED; - } -} -sai_counter_attr_t convert_sai_counter_attr_t_to_sai(lemming::dataplane::sai::CounterAttr val) { - switch (val) { - - case lemming::dataplane::sai::COUNTER_ATTR_TYPE: return SAI_COUNTER_ATTR_TYPE; - - case lemming::dataplane::sai::COUNTER_ATTR_LABEL: return SAI_COUNTER_ATTR_LABEL; - - default: return SAI_COUNTER_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_counter_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_counter_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_counter_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::CounterStat convert_sai_counter_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_COUNTER_STAT_PACKETS: return lemming::dataplane::sai::COUNTER_STAT_PACKETS; - - case SAI_COUNTER_STAT_BYTES: return lemming::dataplane::sai::COUNTER_STAT_BYTES; - - case SAI_COUNTER_STAT_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::COUNTER_STAT_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::COUNTER_STAT_UNSPECIFIED; - } -} -sai_counter_stat_t convert_sai_counter_stat_t_to_sai(lemming::dataplane::sai::CounterStat val) { - switch (val) { - - case lemming::dataplane::sai::COUNTER_STAT_PACKETS: return SAI_COUNTER_STAT_PACKETS; - - case lemming::dataplane::sai::COUNTER_STAT_BYTES: return SAI_COUNTER_STAT_BYTES; - - case lemming::dataplane::sai::COUNTER_STAT_CUSTOM_RANGE_BASE: return SAI_COUNTER_STAT_CUSTOM_RANGE_BASE; - - default: return SAI_COUNTER_STAT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_counter_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_counter_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_counter_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_counter_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::CounterType convert_sai_counter_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_COUNTER_TYPE_REGULAR: return lemming::dataplane::sai::COUNTER_TYPE_REGULAR; - - default: return lemming::dataplane::sai::COUNTER_TYPE_UNSPECIFIED; - } -} -sai_counter_type_t convert_sai_counter_type_t_to_sai(lemming::dataplane::sai::CounterType val) { - switch (val) { - - case lemming::dataplane::sai::COUNTER_TYPE_REGULAR: return SAI_COUNTER_TYPE_REGULAR; - - default: return SAI_COUNTER_TYPE_REGULAR; - } -} - -google::protobuf::RepeatedField convert_list_sai_counter_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_counter_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_counter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_counter_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DashDirection convert_sai_dash_direction_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DASH_DIRECTION_INVALID: return lemming::dataplane::sai::DASH_DIRECTION_INVALID; - - case SAI_DASH_DIRECTION_OUTBOUND: return lemming::dataplane::sai::DASH_DIRECTION_OUTBOUND; - - case SAI_DASH_DIRECTION_INBOUND: return lemming::dataplane::sai::DASH_DIRECTION_INBOUND; - - default: return lemming::dataplane::sai::DASH_DIRECTION_UNSPECIFIED; - } -} -sai_dash_direction_t convert_sai_dash_direction_t_to_sai(lemming::dataplane::sai::DashDirection val) { - switch (val) { - - case lemming::dataplane::sai::DASH_DIRECTION_INVALID: return SAI_DASH_DIRECTION_INVALID; - - case lemming::dataplane::sai::DASH_DIRECTION_OUTBOUND: return SAI_DASH_DIRECTION_OUTBOUND; - - case lemming::dataplane::sai::DASH_DIRECTION_INBOUND: return SAI_DASH_DIRECTION_INBOUND; - - default: return SAI_DASH_DIRECTION_INVALID; - } -} - -google::protobuf::RepeatedField convert_list_sai_dash_direction_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dash_direction_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dash_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dash_direction_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DashEncapsulation convert_sai_dash_encapsulation_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DASH_ENCAPSULATION_INVALID: return lemming::dataplane::sai::DASH_ENCAPSULATION_INVALID; - - case SAI_DASH_ENCAPSULATION_VXLAN: return lemming::dataplane::sai::DASH_ENCAPSULATION_VXLAN; - - case SAI_DASH_ENCAPSULATION_NVGRE: return lemming::dataplane::sai::DASH_ENCAPSULATION_NVGRE; - - default: return lemming::dataplane::sai::DASH_ENCAPSULATION_UNSPECIFIED; - } -} -sai_dash_encapsulation_t convert_sai_dash_encapsulation_t_to_sai(lemming::dataplane::sai::DashEncapsulation val) { - switch (val) { - - case lemming::dataplane::sai::DASH_ENCAPSULATION_INVALID: return SAI_DASH_ENCAPSULATION_INVALID; - - case lemming::dataplane::sai::DASH_ENCAPSULATION_VXLAN: return SAI_DASH_ENCAPSULATION_VXLAN; - - case lemming::dataplane::sai::DASH_ENCAPSULATION_NVGRE: return SAI_DASH_ENCAPSULATION_NVGRE; - - default: return SAI_DASH_ENCAPSULATION_INVALID; - } -} - -google::protobuf::RepeatedField convert_list_sai_dash_encapsulation_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dash_encapsulation_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dash_encapsulation_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dash_encapsulation_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DashTunnelDscpMode convert_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL: return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; - - case SAI_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL: return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PIPE_MODEL; - - default: return lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_UNSPECIFIED; - } -} -sai_dash_tunnel_dscp_mode_t convert_sai_dash_tunnel_dscp_mode_t_to_sai(lemming::dataplane::sai::DashTunnelDscpMode val) { - switch (val) { - - case lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL: return SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; - - case lemming::dataplane::sai::DASH_TUNNEL_DSCP_MODE_PIPE_MODEL: return SAI_DASH_TUNNEL_DSCP_MODE_PIPE_MODEL; - - default: return SAI_DASH_TUNNEL_DSCP_MODE_PRESERVE_MODEL; - } -} - -google::protobuf::RepeatedField convert_list_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dash_tunnel_dscp_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dash_tunnel_dscp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dash_tunnel_dscp_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DebugCounterAttr convert_sai_debug_counter_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DEBUG_COUNTER_ATTR_INDEX: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_INDEX; - - case SAI_DEBUG_COUNTER_ATTR_TYPE: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_TYPE; - - case SAI_DEBUG_COUNTER_ATTR_BIND_METHOD: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_BIND_METHOD; - - case SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST; - - case SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST; - - default: return lemming::dataplane::sai::DEBUG_COUNTER_ATTR_UNSPECIFIED; - } -} -sai_debug_counter_attr_t convert_sai_debug_counter_attr_t_to_sai(lemming::dataplane::sai::DebugCounterAttr val) { - switch (val) { - - case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_INDEX: return SAI_DEBUG_COUNTER_ATTR_INDEX; - - case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_TYPE: return SAI_DEBUG_COUNTER_ATTR_TYPE; - - case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_BIND_METHOD: return SAI_DEBUG_COUNTER_ATTR_BIND_METHOD; - - case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST: return SAI_DEBUG_COUNTER_ATTR_IN_DROP_REASON_LIST; - - case lemming::dataplane::sai::DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST: return SAI_DEBUG_COUNTER_ATTR_OUT_DROP_REASON_LIST; - - default: return SAI_DEBUG_COUNTER_ATTR_INDEX; - } -} - -google::protobuf::RepeatedField convert_list_sai_debug_counter_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_debug_counter_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_debug_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_debug_counter_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DebugCounterBindMethod convert_sai_debug_counter_bind_method_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC: return lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; - - default: return lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_UNSPECIFIED; - } -} -sai_debug_counter_bind_method_t convert_sai_debug_counter_bind_method_t_to_sai(lemming::dataplane::sai::DebugCounterBindMethod val) { - switch (val) { - - case lemming::dataplane::sai::DEBUG_COUNTER_BIND_METHOD_AUTOMATIC: return SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; - - default: return SAI_DEBUG_COUNTER_BIND_METHOD_AUTOMATIC; - } -} - -google::protobuf::RepeatedField convert_list_sai_debug_counter_bind_method_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_debug_counter_bind_method_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_debug_counter_bind_method_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_debug_counter_bind_method_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DebugCounterType convert_sai_debug_counter_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS: return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; - - case SAI_DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS: return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS; - - case SAI_DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS: return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS; - - case SAI_DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS: return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS; - - default: return lemming::dataplane::sai::DEBUG_COUNTER_TYPE_UNSPECIFIED; - } -} -sai_debug_counter_type_t convert_sai_debug_counter_type_t_to_sai(lemming::dataplane::sai::DebugCounterType val) { - switch (val) { - - case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS: return SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; - - case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS: return SAI_DEBUG_COUNTER_TYPE_PORT_OUT_DROP_REASONS; - - case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS: return SAI_DEBUG_COUNTER_TYPE_SWITCH_IN_DROP_REASONS; - - case lemming::dataplane::sai::DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS: return SAI_DEBUG_COUNTER_TYPE_SWITCH_OUT_DROP_REASONS; - - default: return SAI_DEBUG_COUNTER_TYPE_PORT_IN_DROP_REASONS; - } -} - -google::protobuf::RepeatedField convert_list_sai_debug_counter_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_debug_counter_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_debug_counter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_debug_counter_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelAttr convert_sai_dtel_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE: return lemming::dataplane::sai::DTEL_ATTR_INT_ENDPOINT_ENABLE; - - case SAI_DTEL_ATTR_INT_TRANSIT_ENABLE: return lemming::dataplane::sai::DTEL_ATTR_INT_TRANSIT_ENABLE; - - case SAI_DTEL_ATTR_POSTCARD_ENABLE: return lemming::dataplane::sai::DTEL_ATTR_POSTCARD_ENABLE; - - case SAI_DTEL_ATTR_DROP_REPORT_ENABLE: return lemming::dataplane::sai::DTEL_ATTR_DROP_REPORT_ENABLE; - - case SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE: return lemming::dataplane::sai::DTEL_ATTR_QUEUE_REPORT_ENABLE; - - case SAI_DTEL_ATTR_SWITCH_ID: return lemming::dataplane::sai::DTEL_ATTR_SWITCH_ID; - - case SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: return lemming::dataplane::sai::DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE; - - case SAI_DTEL_ATTR_LATENCY_SENSITIVITY: return lemming::dataplane::sai::DTEL_ATTR_LATENCY_SENSITIVITY; - - case SAI_DTEL_ATTR_SINK_PORT_LIST: return lemming::dataplane::sai::DTEL_ATTR_SINK_PORT_LIST; - - case SAI_DTEL_ATTR_INT_L4_DSCP: return lemming::dataplane::sai::DTEL_ATTR_INT_L4_DSCP; - - default: return lemming::dataplane::sai::DTEL_ATTR_UNSPECIFIED; - } -} -sai_dtel_attr_t convert_sai_dtel_attr_t_to_sai(lemming::dataplane::sai::DtelAttr val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_ATTR_INT_ENDPOINT_ENABLE: return SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE; - - case lemming::dataplane::sai::DTEL_ATTR_INT_TRANSIT_ENABLE: return SAI_DTEL_ATTR_INT_TRANSIT_ENABLE; - - case lemming::dataplane::sai::DTEL_ATTR_POSTCARD_ENABLE: return SAI_DTEL_ATTR_POSTCARD_ENABLE; - - case lemming::dataplane::sai::DTEL_ATTR_DROP_REPORT_ENABLE: return SAI_DTEL_ATTR_DROP_REPORT_ENABLE; - - case lemming::dataplane::sai::DTEL_ATTR_QUEUE_REPORT_ENABLE: return SAI_DTEL_ATTR_QUEUE_REPORT_ENABLE; - - case lemming::dataplane::sai::DTEL_ATTR_SWITCH_ID: return SAI_DTEL_ATTR_SWITCH_ID; - - case lemming::dataplane::sai::DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE: return SAI_DTEL_ATTR_FLOW_STATE_CLEAR_CYCLE; - - case lemming::dataplane::sai::DTEL_ATTR_LATENCY_SENSITIVITY: return SAI_DTEL_ATTR_LATENCY_SENSITIVITY; - - case lemming::dataplane::sai::DTEL_ATTR_SINK_PORT_LIST: return SAI_DTEL_ATTR_SINK_PORT_LIST; - - case lemming::dataplane::sai::DTEL_ATTR_INT_L4_DSCP: return SAI_DTEL_ATTR_INT_L4_DSCP; - - default: return SAI_DTEL_ATTR_INT_ENDPOINT_ENABLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelEventAttr convert_sai_dtel_event_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_EVENT_ATTR_TYPE: return lemming::dataplane::sai::DTEL_EVENT_ATTR_TYPE; - - case SAI_DTEL_EVENT_ATTR_REPORT_SESSION: return lemming::dataplane::sai::DTEL_EVENT_ATTR_REPORT_SESSION; - - case SAI_DTEL_EVENT_ATTR_DSCP_VALUE: return lemming::dataplane::sai::DTEL_EVENT_ATTR_DSCP_VALUE; - - default: return lemming::dataplane::sai::DTEL_EVENT_ATTR_UNSPECIFIED; - } -} -sai_dtel_event_attr_t convert_sai_dtel_event_attr_t_to_sai(lemming::dataplane::sai::DtelEventAttr val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_EVENT_ATTR_TYPE: return SAI_DTEL_EVENT_ATTR_TYPE; - - case lemming::dataplane::sai::DTEL_EVENT_ATTR_REPORT_SESSION: return SAI_DTEL_EVENT_ATTR_REPORT_SESSION; - - case lemming::dataplane::sai::DTEL_EVENT_ATTR_DSCP_VALUE: return SAI_DTEL_EVENT_ATTR_DSCP_VALUE; - - default: return SAI_DTEL_EVENT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_event_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_event_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_event_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_event_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelEventType convert_sai_dtel_event_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_EVENT_TYPE_FLOW_STATE: return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_STATE; - - case SAI_DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS: return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS; - - case SAI_DTEL_EVENT_TYPE_FLOW_TCPFLAG: return lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_TCPFLAG; - - case SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH: return lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH; - - case SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP: return lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP; - - case SAI_DTEL_EVENT_TYPE_DROP_REPORT: return lemming::dataplane::sai::DTEL_EVENT_TYPE_DROP_REPORT; - - case SAI_DTEL_EVENT_TYPE_MAX: return lemming::dataplane::sai::DTEL_EVENT_TYPE_MAX; - - default: return lemming::dataplane::sai::DTEL_EVENT_TYPE_UNSPECIFIED; - } -} -sai_dtel_event_type_t convert_sai_dtel_event_type_t_to_sai(lemming::dataplane::sai::DtelEventType val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_STATE: return SAI_DTEL_EVENT_TYPE_FLOW_STATE; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS: return SAI_DTEL_EVENT_TYPE_FLOW_REPORT_ALL_PACKETS; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_FLOW_TCPFLAG: return SAI_DTEL_EVENT_TYPE_FLOW_TCPFLAG; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH: return SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_THRESHOLD_BREACH; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP: return SAI_DTEL_EVENT_TYPE_QUEUE_REPORT_TAIL_DROP; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_DROP_REPORT: return SAI_DTEL_EVENT_TYPE_DROP_REPORT; - - case lemming::dataplane::sai::DTEL_EVENT_TYPE_MAX: return SAI_DTEL_EVENT_TYPE_MAX; - - default: return SAI_DTEL_EVENT_TYPE_FLOW_STATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_event_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_event_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_event_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelIntSessionAttr convert_sai_dtel_int_session_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; - - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID; - - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS; - - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP; - - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP; - - case SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO; - - default: return lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_UNSPECIFIED; - } -} -sai_dtel_int_session_attr_t convert_sai_dtel_int_session_attr_t_to_sai(lemming::dataplane::sai::DtelIntSessionAttr val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT: return SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID: return SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_ID; - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS: return SAI_DTEL_INT_SESSION_ATTR_COLLECT_SWITCH_PORTS; - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP: return SAI_DTEL_INT_SESSION_ATTR_COLLECT_INGRESS_TIMESTAMP; - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP: return SAI_DTEL_INT_SESSION_ATTR_COLLECT_EGRESS_TIMESTAMP; - - case lemming::dataplane::sai::DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO: return SAI_DTEL_INT_SESSION_ATTR_COLLECT_QUEUE_INFO; - - default: return SAI_DTEL_INT_SESSION_ATTR_MAX_HOP_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_int_session_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_int_session_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_int_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_int_session_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelQueueReportAttr convert_sai_dtel_queue_report_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; - - case SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD; - - case SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD; - - case SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA; - - case SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_TAIL_DROP; - - default: return lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_UNSPECIFIED; - } -} -sai_dtel_queue_report_attr_t convert_sai_dtel_queue_report_attr_t_to_sai(lemming::dataplane::sai::DtelQueueReportAttr val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_QUEUE_ID: return SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; - - case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD: return SAI_DTEL_QUEUE_REPORT_ATTR_DEPTH_THRESHOLD; - - case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD: return SAI_DTEL_QUEUE_REPORT_ATTR_LATENCY_THRESHOLD; - - case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA: return SAI_DTEL_QUEUE_REPORT_ATTR_BREACH_QUOTA; - - case lemming::dataplane::sai::DTEL_QUEUE_REPORT_ATTR_TAIL_DROP: return SAI_DTEL_QUEUE_REPORT_ATTR_TAIL_DROP; - - default: return SAI_DTEL_QUEUE_REPORT_ATTR_QUEUE_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_queue_report_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_queue_report_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_queue_report_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_queue_report_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::DtelReportSessionAttr convert_sai_dtel_report_session_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_SRC_IP; - - case SAI_DTEL_REPORT_SESSION_ATTR_DST_IP_LIST: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_DST_IP_LIST; - - case SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID; - - case SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE; - - case SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT; - - default: return lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UNSPECIFIED; - } -} -sai_dtel_report_session_attr_t convert_sai_dtel_report_session_attr_t_to_sai(lemming::dataplane::sai::DtelReportSessionAttr val) { - switch (val) { - - case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_SRC_IP: return SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP; - - case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_DST_IP_LIST: return SAI_DTEL_REPORT_SESSION_ATTR_DST_IP_LIST; - - case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID: return SAI_DTEL_REPORT_SESSION_ATTR_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE: return SAI_DTEL_REPORT_SESSION_ATTR_TRUNCATE_SIZE; - - case lemming::dataplane::sai::DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT: return SAI_DTEL_REPORT_SESSION_ATTR_UDP_DST_PORT; - - default: return SAI_DTEL_REPORT_SESSION_ATTR_SRC_IP; - } -} - -google::protobuf::RepeatedField convert_list_sai_dtel_report_session_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_dtel_report_session_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_dtel_report_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_dtel_report_session_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::EcnMarkMode convert_sai_ecn_mark_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ECN_MARK_MODE_NONE: return lemming::dataplane::sai::ECN_MARK_MODE_NONE; - - case SAI_ECN_MARK_MODE_GREEN: return lemming::dataplane::sai::ECN_MARK_MODE_GREEN; - - case SAI_ECN_MARK_MODE_YELLOW: return lemming::dataplane::sai::ECN_MARK_MODE_YELLOW; - - case SAI_ECN_MARK_MODE_RED: return lemming::dataplane::sai::ECN_MARK_MODE_RED; - - case SAI_ECN_MARK_MODE_GREEN_YELLOW: return lemming::dataplane::sai::ECN_MARK_MODE_GREEN_YELLOW; - - case SAI_ECN_MARK_MODE_GREEN_RED: return lemming::dataplane::sai::ECN_MARK_MODE_GREEN_RED; - - case SAI_ECN_MARK_MODE_YELLOW_RED: return lemming::dataplane::sai::ECN_MARK_MODE_YELLOW_RED; - - case SAI_ECN_MARK_MODE_ALL: return lemming::dataplane::sai::ECN_MARK_MODE_ALL; - - default: return lemming::dataplane::sai::ECN_MARK_MODE_UNSPECIFIED; - } -} -sai_ecn_mark_mode_t convert_sai_ecn_mark_mode_t_to_sai(lemming::dataplane::sai::EcnMarkMode val) { - switch (val) { - - case lemming::dataplane::sai::ECN_MARK_MODE_NONE: return SAI_ECN_MARK_MODE_NONE; - - case lemming::dataplane::sai::ECN_MARK_MODE_GREEN: return SAI_ECN_MARK_MODE_GREEN; - - case lemming::dataplane::sai::ECN_MARK_MODE_YELLOW: return SAI_ECN_MARK_MODE_YELLOW; - - case lemming::dataplane::sai::ECN_MARK_MODE_RED: return SAI_ECN_MARK_MODE_RED; - - case lemming::dataplane::sai::ECN_MARK_MODE_GREEN_YELLOW: return SAI_ECN_MARK_MODE_GREEN_YELLOW; - - case lemming::dataplane::sai::ECN_MARK_MODE_GREEN_RED: return SAI_ECN_MARK_MODE_GREEN_RED; - - case lemming::dataplane::sai::ECN_MARK_MODE_YELLOW_RED: return SAI_ECN_MARK_MODE_YELLOW_RED; - - case lemming::dataplane::sai::ECN_MARK_MODE_ALL: return SAI_ECN_MARK_MODE_ALL; - - default: return SAI_ECN_MARK_MODE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_ecn_mark_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ecn_mark_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ecn_mark_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ecn_mark_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::ErspanEncapsulationType convert_sai_erspan_encapsulation_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL: return lemming::dataplane::sai::ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; - - default: return lemming::dataplane::sai::ERSPAN_ENCAPSULATION_TYPE_UNSPECIFIED; - } -} -sai_erspan_encapsulation_type_t convert_sai_erspan_encapsulation_type_t_to_sai(lemming::dataplane::sai::ErspanEncapsulationType val) { - switch (val) { - - case lemming::dataplane::sai::ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL: return SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; - - default: return SAI_ERSPAN_ENCAPSULATION_TYPE_MIRROR_L3_GRE_TUNNEL; - } -} - -google::protobuf::RepeatedField convert_list_sai_erspan_encapsulation_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_erspan_encapsulation_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_erspan_encapsulation_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_erspan_encapsulation_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FdbEntryAttr convert_sai_fdb_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FDB_ENTRY_ATTR_TYPE: return lemming::dataplane::sai::FDB_ENTRY_ATTR_TYPE; - - case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::FDB_ENTRY_ATTR_PACKET_ACTION; - - case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: return lemming::dataplane::sai::FDB_ENTRY_ATTR_USER_TRAP_ID; - - case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: return lemming::dataplane::sai::FDB_ENTRY_ATTR_BRIDGE_PORT_ID; - - case SAI_FDB_ENTRY_ATTR_META_DATA: return lemming::dataplane::sai::FDB_ENTRY_ATTR_META_DATA; - - case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: return lemming::dataplane::sai::FDB_ENTRY_ATTR_ENDPOINT_IP; - - case SAI_FDB_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::FDB_ENTRY_ATTR_COUNTER_ID; - - case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: return lemming::dataplane::sai::FDB_ENTRY_ATTR_ALLOW_MAC_MOVE; - - default: return lemming::dataplane::sai::FDB_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_fdb_entry_attr_t convert_sai_fdb_entry_attr_t_to_sai(lemming::dataplane::sai::FdbEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_TYPE: return SAI_FDB_ENTRY_ATTR_TYPE; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_PACKET_ACTION: return SAI_FDB_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_USER_TRAP_ID: return SAI_FDB_ENTRY_ATTR_USER_TRAP_ID; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_BRIDGE_PORT_ID: return SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_META_DATA: return SAI_FDB_ENTRY_ATTR_META_DATA; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_ENDPOINT_IP: return SAI_FDB_ENTRY_ATTR_ENDPOINT_IP; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_COUNTER_ID: return SAI_FDB_ENTRY_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: return SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE; - - default: return SAI_FDB_ENTRY_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_fdb_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fdb_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fdb_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fdb_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FdbEntryType convert_sai_fdb_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FDB_ENTRY_TYPE_DYNAMIC: return lemming::dataplane::sai::FDB_ENTRY_TYPE_DYNAMIC; - - case SAI_FDB_ENTRY_TYPE_STATIC: return lemming::dataplane::sai::FDB_ENTRY_TYPE_STATIC; - - default: return lemming::dataplane::sai::FDB_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_fdb_entry_type_t convert_sai_fdb_entry_type_t_to_sai(lemming::dataplane::sai::FdbEntryType val) { - switch (val) { - - case lemming::dataplane::sai::FDB_ENTRY_TYPE_DYNAMIC: return SAI_FDB_ENTRY_TYPE_DYNAMIC; - - case lemming::dataplane::sai::FDB_ENTRY_TYPE_STATIC: return SAI_FDB_ENTRY_TYPE_STATIC; - - default: return SAI_FDB_ENTRY_TYPE_DYNAMIC; - } -} - -google::protobuf::RepeatedField convert_list_sai_fdb_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fdb_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fdb_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fdb_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FdbEvent convert_sai_fdb_event_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FDB_EVENT_LEARNED: return lemming::dataplane::sai::FDB_EVENT_LEARNED; - - case SAI_FDB_EVENT_AGED: return lemming::dataplane::sai::FDB_EVENT_AGED; - - case SAI_FDB_EVENT_MOVE: return lemming::dataplane::sai::FDB_EVENT_MOVE; - - case SAI_FDB_EVENT_FLUSHED: return lemming::dataplane::sai::FDB_EVENT_FLUSHED; - - default: return lemming::dataplane::sai::FDB_EVENT_UNSPECIFIED; - } -} -sai_fdb_event_t convert_sai_fdb_event_t_to_sai(lemming::dataplane::sai::FdbEvent val) { - switch (val) { - - case lemming::dataplane::sai::FDB_EVENT_LEARNED: return SAI_FDB_EVENT_LEARNED; - - case lemming::dataplane::sai::FDB_EVENT_AGED: return SAI_FDB_EVENT_AGED; - - case lemming::dataplane::sai::FDB_EVENT_MOVE: return SAI_FDB_EVENT_MOVE; - - case lemming::dataplane::sai::FDB_EVENT_FLUSHED: return SAI_FDB_EVENT_FLUSHED; - - default: return SAI_FDB_EVENT_LEARNED; - } -} - -google::protobuf::RepeatedField convert_list_sai_fdb_event_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fdb_event_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fdb_event_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fdb_event_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FdbFlushAttr convert_sai_fdb_flush_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID: return lemming::dataplane::sai::FDB_FLUSH_ATTR_BRIDGE_PORT_ID; - - case SAI_FDB_FLUSH_ATTR_BV_ID: return lemming::dataplane::sai::FDB_FLUSH_ATTR_BV_ID; - - case SAI_FDB_FLUSH_ATTR_ENTRY_TYPE: return lemming::dataplane::sai::FDB_FLUSH_ATTR_ENTRY_TYPE; - - default: return lemming::dataplane::sai::FDB_FLUSH_ATTR_UNSPECIFIED; - } -} -sai_fdb_flush_attr_t convert_sai_fdb_flush_attr_t_to_sai(lemming::dataplane::sai::FdbFlushAttr val) { - switch (val) { - - case lemming::dataplane::sai::FDB_FLUSH_ATTR_BRIDGE_PORT_ID: return SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID; - - case lemming::dataplane::sai::FDB_FLUSH_ATTR_BV_ID: return SAI_FDB_FLUSH_ATTR_BV_ID; - - case lemming::dataplane::sai::FDB_FLUSH_ATTR_ENTRY_TYPE: return SAI_FDB_FLUSH_ATTR_ENTRY_TYPE; - - default: return SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_fdb_flush_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fdb_flush_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fdb_flush_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fdb_flush_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FdbFlushEntryType convert_sai_fdb_flush_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC: return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_DYNAMIC; - - case SAI_FDB_FLUSH_ENTRY_TYPE_STATIC: return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_STATIC; - - case SAI_FDB_FLUSH_ENTRY_TYPE_ALL: return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_ALL; - - default: return lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_fdb_flush_entry_type_t convert_sai_fdb_flush_entry_type_t_to_sai(lemming::dataplane::sai::FdbFlushEntryType val) { - switch (val) { - - case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_DYNAMIC: return SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC; - - case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_STATIC: return SAI_FDB_FLUSH_ENTRY_TYPE_STATIC; - - case lemming::dataplane::sai::FDB_FLUSH_ENTRY_TYPE_ALL: return SAI_FDB_FLUSH_ENTRY_TYPE_ALL; - - default: return SAI_FDB_FLUSH_ENTRY_TYPE_DYNAMIC; - } -} - -google::protobuf::RepeatedField convert_list_sai_fdb_flush_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fdb_flush_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fdb_flush_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fdb_flush_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::FineGrainedHashFieldAttr convert_sai_fine_grained_hash_field_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK; - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK; - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID; - - default: return lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_UNSPECIFIED; - } -} -sai_fine_grained_hash_field_attr_t convert_sai_fine_grained_hash_field_attr_t_to_sai(lemming::dataplane::sai::FineGrainedHashFieldAttr val) { - switch (val) { - - case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: return SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; - - case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: return SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK; - - case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: return SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK; - - case lemming::dataplane::sai::FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: return SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID; - - default: return SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD; - } -} - -google::protobuf::RepeatedField convert_list_sai_fine_grained_hash_field_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_fine_grained_hash_field_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_fine_grained_hash_field_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_fine_grained_hash_field_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::GenericProgrammableAttr convert_sai_generic_programmable_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; - - case SAI_GENERIC_PROGRAMMABLE_ATTR_ENTRY: return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_ENTRY; - - case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_UNSPECIFIED; - } -} -sai_generic_programmable_attr_t convert_sai_generic_programmable_attr_t_to_sai(lemming::dataplane::sai::GenericProgrammableAttr val) { - switch (val) { - - case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: return SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; - - case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_ENTRY: return SAI_GENERIC_PROGRAMMABLE_ATTR_ENTRY; - - case lemming::dataplane::sai::GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: return SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID; - - default: return SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME; - } -} - -google::protobuf::RepeatedField convert_list_sai_generic_programmable_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_generic_programmable_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_generic_programmable_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_generic_programmable_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HashAlgorithm convert_sai_hash_algorithm_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HASH_ALGORITHM_CRC: return lemming::dataplane::sai::HASH_ALGORITHM_CRC; - - case SAI_HASH_ALGORITHM_XOR: return lemming::dataplane::sai::HASH_ALGORITHM_XOR; - - case SAI_HASH_ALGORITHM_RANDOM: return lemming::dataplane::sai::HASH_ALGORITHM_RANDOM; - - case SAI_HASH_ALGORITHM_CRC_32LO: return lemming::dataplane::sai::HASH_ALGORITHM_CRC_32LO; - - case SAI_HASH_ALGORITHM_CRC_32HI: return lemming::dataplane::sai::HASH_ALGORITHM_CRC_32HI; - - case SAI_HASH_ALGORITHM_CRC_CCITT: return lemming::dataplane::sai::HASH_ALGORITHM_CRC_CCITT; - - case SAI_HASH_ALGORITHM_CRC_XOR: return lemming::dataplane::sai::HASH_ALGORITHM_CRC_XOR; - - default: return lemming::dataplane::sai::HASH_ALGORITHM_UNSPECIFIED; - } -} -sai_hash_algorithm_t convert_sai_hash_algorithm_t_to_sai(lemming::dataplane::sai::HashAlgorithm val) { - switch (val) { - - case lemming::dataplane::sai::HASH_ALGORITHM_CRC: return SAI_HASH_ALGORITHM_CRC; - - case lemming::dataplane::sai::HASH_ALGORITHM_XOR: return SAI_HASH_ALGORITHM_XOR; - - case lemming::dataplane::sai::HASH_ALGORITHM_RANDOM: return SAI_HASH_ALGORITHM_RANDOM; - - case lemming::dataplane::sai::HASH_ALGORITHM_CRC_32LO: return SAI_HASH_ALGORITHM_CRC_32LO; - - case lemming::dataplane::sai::HASH_ALGORITHM_CRC_32HI: return SAI_HASH_ALGORITHM_CRC_32HI; - - case lemming::dataplane::sai::HASH_ALGORITHM_CRC_CCITT: return SAI_HASH_ALGORITHM_CRC_CCITT; - - case lemming::dataplane::sai::HASH_ALGORITHM_CRC_XOR: return SAI_HASH_ALGORITHM_CRC_XOR; - - default: return SAI_HASH_ALGORITHM_CRC; - } -} - -google::protobuf::RepeatedField convert_list_sai_hash_algorithm_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hash_algorithm_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hash_algorithm_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hash_algorithm_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HashAttr convert_sai_hash_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: return lemming::dataplane::sai::HASH_ATTR_NATIVE_HASH_FIELD_LIST; - - case SAI_HASH_ATTR_UDF_GROUP_LIST: return lemming::dataplane::sai::HASH_ATTR_UDF_GROUP_LIST; - - case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: return lemming::dataplane::sai::HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST; - - default: return lemming::dataplane::sai::HASH_ATTR_UNSPECIFIED; - } -} -sai_hash_attr_t convert_sai_hash_attr_t_to_sai(lemming::dataplane::sai::HashAttr val) { - switch (val) { - - case lemming::dataplane::sai::HASH_ATTR_NATIVE_HASH_FIELD_LIST: return SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST; - - case lemming::dataplane::sai::HASH_ATTR_UDF_GROUP_LIST: return SAI_HASH_ATTR_UDF_GROUP_LIST; - - case lemming::dataplane::sai::HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: return SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST; - - default: return SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_hash_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hash_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hash_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hash_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HealthDataType convert_sai_health_data_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HEALTH_DATA_TYPE_GENERAL: return lemming::dataplane::sai::HEALTH_DATA_TYPE_GENERAL; - - default: return lemming::dataplane::sai::HEALTH_DATA_TYPE_UNSPECIFIED; - } -} -sai_health_data_type_t convert_sai_health_data_type_t_to_sai(lemming::dataplane::sai::HealthDataType val) { - switch (val) { - - case lemming::dataplane::sai::HEALTH_DATA_TYPE_GENERAL: return SAI_HEALTH_DATA_TYPE_GENERAL; - - default: return SAI_HEALTH_DATA_TYPE_GENERAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_health_data_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_health_data_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_health_data_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_health_data_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifAttr convert_sai_hostif_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_ATTR_TYPE: return lemming::dataplane::sai::HOSTIF_ATTR_TYPE; - - case SAI_HOSTIF_ATTR_OBJ_ID: return lemming::dataplane::sai::HOSTIF_ATTR_OBJ_ID; - - case SAI_HOSTIF_ATTR_NAME: return lemming::dataplane::sai::HOSTIF_ATTR_NAME; - - case SAI_HOSTIF_ATTR_OPER_STATUS: return lemming::dataplane::sai::HOSTIF_ATTR_OPER_STATUS; - - case SAI_HOSTIF_ATTR_QUEUE: return lemming::dataplane::sai::HOSTIF_ATTR_QUEUE; - - case SAI_HOSTIF_ATTR_VLAN_TAG: return lemming::dataplane::sai::HOSTIF_ATTR_VLAN_TAG; - - case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: return lemming::dataplane::sai::HOSTIF_ATTR_GENETLINK_MCGRP_NAME; - - default: return lemming::dataplane::sai::HOSTIF_ATTR_UNSPECIFIED; - } -} -sai_hostif_attr_t convert_sai_hostif_attr_t_to_sai(lemming::dataplane::sai::HostifAttr val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_ATTR_TYPE: return SAI_HOSTIF_ATTR_TYPE; - - case lemming::dataplane::sai::HOSTIF_ATTR_OBJ_ID: return SAI_HOSTIF_ATTR_OBJ_ID; - - case lemming::dataplane::sai::HOSTIF_ATTR_NAME: return SAI_HOSTIF_ATTR_NAME; - - case lemming::dataplane::sai::HOSTIF_ATTR_OPER_STATUS: return SAI_HOSTIF_ATTR_OPER_STATUS; - - case lemming::dataplane::sai::HOSTIF_ATTR_QUEUE: return SAI_HOSTIF_ATTR_QUEUE; - - case lemming::dataplane::sai::HOSTIF_ATTR_VLAN_TAG: return SAI_HOSTIF_ATTR_VLAN_TAG; - - case lemming::dataplane::sai::HOSTIF_ATTR_GENETLINK_MCGRP_NAME: return SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME; - - default: return SAI_HOSTIF_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTableEntryAttr convert_sai_hostif_table_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TYPE; - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID; - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID; - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE; - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_HOST_IF; - - default: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_hostif_table_entry_attr_t convert_sai_hostif_table_entry_attr_t_to_sai(lemming::dataplane::sai::HostifTableEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TYPE: return SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: return SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: return SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: return SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: return SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF; - - default: return SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_table_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_table_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_table_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTableEntryChannelType convert_sai_hostif_table_entry_channel_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD; - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT; - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT; - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3; - - case SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK; - - default: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_UNSPECIFIED; - } -} -sai_hostif_table_entry_channel_type_t convert_sai_hostif_table_entry_channel_type_t_to_sai(lemming::dataplane::sai::HostifTableEntryChannelType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_FD; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_PHYSICAL_PORT; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_LOGICAL_PORT; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_NETDEV_L3; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_GENETLINK; - - default: return SAI_HOSTIF_TABLE_ENTRY_CHANNEL_TYPE_CB; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_channel_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_table_entry_channel_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_table_entry_channel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_table_entry_channel_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTableEntryType convert_sai_hostif_table_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_PORT; - - case SAI_HOSTIF_TABLE_ENTRY_TYPE_LAG: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_LAG; - - case SAI_HOSTIF_TABLE_ENTRY_TYPE_VLAN: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_VLAN; - - case SAI_HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID; - - case SAI_HOSTIF_TABLE_ENTRY_TYPE_WILDCARD: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_WILDCARD; - - default: return lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_hostif_table_entry_type_t convert_sai_hostif_table_entry_type_t_to_sai(lemming::dataplane::sai::HostifTableEntryType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_PORT: return SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_LAG: return SAI_HOSTIF_TABLE_ENTRY_TYPE_LAG; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_VLAN: return SAI_HOSTIF_TABLE_ENTRY_TYPE_VLAN; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID: return SAI_HOSTIF_TABLE_ENTRY_TYPE_TRAP_ID; - - case lemming::dataplane::sai::HOSTIF_TABLE_ENTRY_TYPE_WILDCARD: return SAI_HOSTIF_TABLE_ENTRY_TYPE_WILDCARD; - - default: return SAI_HOSTIF_TABLE_ENTRY_TYPE_PORT; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_table_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_table_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_table_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTrapAttr convert_sai_hostif_trap_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_TYPE; - - case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_PACKET_ACTION; - - case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_PRIORITY; - - case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST; - - case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_GROUP; - - case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_MIRROR_SESSION; - - case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::HOSTIF_TRAP_ATTR_UNSPECIFIED; - } -} -sai_hostif_trap_attr_t convert_sai_hostif_trap_attr_t_to_sai(lemming::dataplane::sai::HostifTrapAttr val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_TYPE: return SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_PACKET_ACTION: return SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_PRIORITY: return SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: return SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_TRAP_GROUP: return SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_MIRROR_SESSION: return SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION; - - case lemming::dataplane::sai::HOSTIF_TRAP_ATTR_COUNTER_ID: return SAI_HOSTIF_TRAP_ATTR_COUNTER_ID; - - default: return SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_trap_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_trap_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_trap_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_trap_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTrapGroupAttr convert_sai_hostif_trap_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; - - case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_QUEUE; - - case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_POLICER; - - case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE; - - default: return lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_UNSPECIFIED; - } -} -sai_hostif_trap_group_attr_t convert_sai_hostif_trap_group_attr_t_to_sai(lemming::dataplane::sai::HostifTrapGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: return SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; - - case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_QUEUE: return SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE; - - case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_POLICER: return SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER; - - case lemming::dataplane::sai::HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: return SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE; - - default: return SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_trap_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_trap_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_trap_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_trap_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTrapType convert_sai_hostif_trap_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TRAP_TYPE_START: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_START; - - case SAI_HOSTIF_TRAP_TYPE_LACP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LACP; - - case SAI_HOSTIF_TRAP_TYPE_EAPOL: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_EAPOL; - - case SAI_HOSTIF_TRAP_TYPE_LLDP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LLDP; - - case SAI_HOSTIF_TRAP_TYPE_PVRST: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PVRST; - - case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY; - - case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE; - - case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT; - - case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT; - - case SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT; - - case SAI_HOSTIF_TRAP_TYPE_SAMPLEPACKET: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SAMPLEPACKET; - - case SAI_HOSTIF_TRAP_TYPE_UDLD: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UDLD; - - case SAI_HOSTIF_TRAP_TYPE_CDP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CDP; - - case SAI_HOSTIF_TRAP_TYPE_VTP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VTP; - - case SAI_HOSTIF_TRAP_TYPE_DTP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DTP; - - case SAI_HOSTIF_TRAP_TYPE_PAGP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PAGP; - - case SAI_HOSTIF_TRAP_TYPE_PTP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP; - - case SAI_HOSTIF_TRAP_TYPE_PTP_TX_EVENT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP_TX_EVENT; - - case SAI_HOSTIF_TRAP_TYPE_DHCP_L2: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP_L2; - - case SAI_HOSTIF_TRAP_TYPE_DHCPV6_L2: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6_L2; - - case SAI_HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE; - - case SAI_HOSTIF_TRAP_TYPE_ARP_REQUEST: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_REQUEST; - - case SAI_HOSTIF_TRAP_TYPE_ARP_RESPONSE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_RESPONSE; - - case SAI_HOSTIF_TRAP_TYPE_DHCP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP; - - case SAI_HOSTIF_TRAP_TYPE_OSPF: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPF; - - case SAI_HOSTIF_TRAP_TYPE_PIM: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIM; - - case SAI_HOSTIF_TRAP_TYPE_VRRP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRP; - - case SAI_HOSTIF_TRAP_TYPE_DHCPV6: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6; - - case SAI_HOSTIF_TRAP_TYPE_OSPFV6: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPFV6; - - case SAI_HOSTIF_TRAP_TYPE_VRRPV6: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRPV6; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE; - - case SAI_HOSTIF_TRAP_TYPE_MLD_V2_REPORT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MLD_V2_REPORT; - - case SAI_HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST; - - case SAI_HOSTIF_TRAP_TYPE_SNAT_MISS: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNAT_MISS; - - case SAI_HOSTIF_TRAP_TYPE_DNAT_MISS: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DNAT_MISS; - - case SAI_HOSTIF_TRAP_TYPE_NAT_HAIRPIN: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NAT_HAIRPIN; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION; - - case SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT; - - case SAI_HOSTIF_TRAP_TYPE_ISIS: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ISIS; - - case SAI_HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE; - - case SAI_HOSTIF_TRAP_TYPE_IP2ME: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IP2ME; - - case SAI_HOSTIF_TRAP_TYPE_SSH: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SSH; - - case SAI_HOSTIF_TRAP_TYPE_SNMP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNMP; - - case SAI_HOSTIF_TRAP_TYPE_BGP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGP; - - case SAI_HOSTIF_TRAP_TYPE_BGPV6: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGPV6; - - case SAI_HOSTIF_TRAP_TYPE_BFD: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD; - - case SAI_HOSTIF_TRAP_TYPE_BFDV6: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6; - - case SAI_HOSTIF_TRAP_TYPE_BFD_MICRO: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD_MICRO; - - case SAI_HOSTIF_TRAP_TYPE_BFDV6_MICRO: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6_MICRO; - - case SAI_HOSTIF_TRAP_TYPE_LDP: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LDP; - - case SAI_HOSTIF_TRAP_TYPE_GNMI: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_GNMI; - - case SAI_HOSTIF_TRAP_TYPE_P4RT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_P4RT; - - case SAI_HOSTIF_TRAP_TYPE_NTPCLIENT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPCLIENT; - - case SAI_HOSTIF_TRAP_TYPE_NTPSERVER: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPSERVER; - - case SAI_HOSTIF_TRAP_TYPE_HTTPCLIENT: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPCLIENT; - - case SAI_HOSTIF_TRAP_TYPE_HTTPSERVER: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPSERVER; - - case SAI_HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE; - - case SAI_HOSTIF_TRAP_TYPE_L3_MTU_ERROR: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_L3_MTU_ERROR; - - case SAI_HOSTIF_TRAP_TYPE_TTL_ERROR: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_TTL_ERROR; - - case SAI_HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE; - - case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER; - - case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED; - - case SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER; - - case SAI_HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR; - - case SAI_HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL; - - case SAI_HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS; - - case SAI_HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE; - - case SAI_HOSTIF_TRAP_TYPE_END: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_END; - - default: return lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNSPECIFIED; - } -} -sai_hostif_trap_type_t convert_sai_hostif_trap_type_t_to_sai(lemming::dataplane::sai::HostifTrapType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_START: return SAI_HOSTIF_TRAP_TYPE_START; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LACP: return SAI_HOSTIF_TRAP_TYPE_LACP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_EAPOL: return SAI_HOSTIF_TRAP_TYPE_EAPOL; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LLDP: return SAI_HOSTIF_TRAP_TYPE_LLDP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PVRST: return SAI_HOSTIF_TRAP_TYPE_PVRST; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY: return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_QUERY; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE: return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_LEAVE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT: return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V1_REPORT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT: return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V2_REPORT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT: return SAI_HOSTIF_TRAP_TYPE_IGMP_TYPE_V3_REPORT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SAMPLEPACKET: return SAI_HOSTIF_TRAP_TYPE_SAMPLEPACKET; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UDLD: return SAI_HOSTIF_TRAP_TYPE_UDLD; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CDP: return SAI_HOSTIF_TRAP_TYPE_CDP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VTP: return SAI_HOSTIF_TRAP_TYPE_VTP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DTP: return SAI_HOSTIF_TRAP_TYPE_DTP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PAGP: return SAI_HOSTIF_TRAP_TYPE_PAGP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP: return SAI_HOSTIF_TRAP_TYPE_PTP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PTP_TX_EVENT: return SAI_HOSTIF_TRAP_TYPE_PTP_TX_EVENT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP_L2: return SAI_HOSTIF_TRAP_TYPE_DHCP_L2; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6_L2: return SAI_HOSTIF_TRAP_TYPE_DHCPV6_L2; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE: return SAI_HOSTIF_TRAP_TYPE_SWITCH_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_REQUEST: return SAI_HOSTIF_TRAP_TYPE_ARP_REQUEST; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ARP_RESPONSE: return SAI_HOSTIF_TRAP_TYPE_ARP_RESPONSE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCP: return SAI_HOSTIF_TRAP_TYPE_DHCP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPF: return SAI_HOSTIF_TRAP_TYPE_OSPF; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIM: return SAI_HOSTIF_TRAP_TYPE_PIM; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRP: return SAI_HOSTIF_TRAP_TYPE_VRRP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DHCPV6: return SAI_HOSTIF_TRAP_TYPE_DHCPV6; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_OSPFV6: return SAI_HOSTIF_TRAP_TYPE_OSPFV6; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_VRRPV6: return SAI_HOSTIF_TRAP_TYPE_VRRPV6; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY: return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_DISCOVERY; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2: return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_V2; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT: return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_REPORT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE: return SAI_HOSTIF_TRAP_TYPE_IPV6_MLD_V1_DONE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MLD_V2_REPORT: return SAI_HOSTIF_TRAP_TYPE_MLD_V2_REPORT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST: return SAI_HOSTIF_TRAP_TYPE_UNKNOWN_L3_MULTICAST; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNAT_MISS: return SAI_HOSTIF_TRAP_TYPE_SNAT_MISS; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_DNAT_MISS: return SAI_HOSTIF_TRAP_TYPE_DNAT_MISS; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NAT_HAIRPIN: return SAI_HOSTIF_TRAP_TYPE_NAT_HAIRPIN; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION: return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_SOLICITATION; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT: return SAI_HOSTIF_TRAP_TYPE_IPV6_NEIGHBOR_ADVERTISEMENT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ISIS: return SAI_HOSTIF_TRAP_TYPE_ISIS; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE: return SAI_HOSTIF_TRAP_TYPE_ROUTER_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_IP2ME: return SAI_HOSTIF_TRAP_TYPE_IP2ME; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SSH: return SAI_HOSTIF_TRAP_TYPE_SSH; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_SNMP: return SAI_HOSTIF_TRAP_TYPE_SNMP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGP: return SAI_HOSTIF_TRAP_TYPE_BGP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BGPV6: return SAI_HOSTIF_TRAP_TYPE_BGPV6; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD: return SAI_HOSTIF_TRAP_TYPE_BFD; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6: return SAI_HOSTIF_TRAP_TYPE_BFDV6; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFD_MICRO: return SAI_HOSTIF_TRAP_TYPE_BFD_MICRO; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_BFDV6_MICRO: return SAI_HOSTIF_TRAP_TYPE_BFDV6_MICRO; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LDP: return SAI_HOSTIF_TRAP_TYPE_LDP; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_GNMI: return SAI_HOSTIF_TRAP_TYPE_GNMI; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_P4RT: return SAI_HOSTIF_TRAP_TYPE_P4RT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPCLIENT: return SAI_HOSTIF_TRAP_TYPE_NTPCLIENT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_NTPSERVER: return SAI_HOSTIF_TRAP_TYPE_NTPSERVER; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPCLIENT: return SAI_HOSTIF_TRAP_TYPE_HTTPCLIENT; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_HTTPSERVER: return SAI_HOSTIF_TRAP_TYPE_HTTPSERVER; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE: return SAI_HOSTIF_TRAP_TYPE_LOCAL_IP_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_L3_MTU_ERROR: return SAI_HOSTIF_TRAP_TYPE_L3_MTU_ERROR; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_TTL_ERROR: return SAI_HOSTIF_TRAP_TYPE_TTL_ERROR; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE: return SAI_HOSTIF_TRAP_TYPE_STATIC_FDB_MOVE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER: return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_EGRESS_BUFFER; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED: return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_WRED; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER: return SAI_HOSTIF_TRAP_TYPE_PIPELINE_DISCARD_ROUTER; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR: return SAI_HOSTIF_TRAP_TYPE_MPLS_TTL_ERROR; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL: return SAI_HOSTIF_TRAP_TYPE_MPLS_ROUTER_ALERT_LABEL; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS: return SAI_HOSTIF_TRAP_TYPE_MPLS_LABEL_LOOKUP_MISS; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE: return SAI_HOSTIF_TRAP_TYPE_CUSTOM_EXCEPTION_RANGE_BASE; - - case lemming::dataplane::sai::HOSTIF_TRAP_TYPE_END: return SAI_HOSTIF_TRAP_TYPE_END; - - default: return SAI_HOSTIF_TRAP_TYPE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_trap_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_trap_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_trap_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_trap_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifTxType convert_sai_hostif_tx_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS: return lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_BYPASS; - - case SAI_HOSTIF_TX_TYPE_PIPELINE_LOOKUP: return lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_LOOKUP; - - case SAI_HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::HOSTIF_TX_TYPE_UNSPECIFIED; - } -} -sai_hostif_tx_type_t convert_sai_hostif_tx_type_t_to_sai(lemming::dataplane::sai::HostifTxType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_BYPASS: return SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS; - - case lemming::dataplane::sai::HOSTIF_TX_TYPE_PIPELINE_LOOKUP: return SAI_HOSTIF_TX_TYPE_PIPELINE_LOOKUP; - - case lemming::dataplane::sai::HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE: return SAI_HOSTIF_TX_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_HOSTIF_TX_TYPE_PIPELINE_BYPASS; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_tx_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_tx_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_tx_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_tx_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifType convert_sai_hostif_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_TYPE_NETDEV: return lemming::dataplane::sai::HOSTIF_TYPE_NETDEV; - - case SAI_HOSTIF_TYPE_FD: return lemming::dataplane::sai::HOSTIF_TYPE_FD; - - case SAI_HOSTIF_TYPE_GENETLINK: return lemming::dataplane::sai::HOSTIF_TYPE_GENETLINK; - - default: return lemming::dataplane::sai::HOSTIF_TYPE_UNSPECIFIED; - } -} -sai_hostif_type_t convert_sai_hostif_type_t_to_sai(lemming::dataplane::sai::HostifType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_TYPE_NETDEV: return SAI_HOSTIF_TYPE_NETDEV; - - case lemming::dataplane::sai::HOSTIF_TYPE_FD: return SAI_HOSTIF_TYPE_FD; - - case lemming::dataplane::sai::HOSTIF_TYPE_GENETLINK: return SAI_HOSTIF_TYPE_GENETLINK; - - default: return SAI_HOSTIF_TYPE_NETDEV; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifUserDefinedTrapAttr convert_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY; - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP; - - default: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_UNSPECIFIED; - } -} -sai_hostif_user_defined_trap_attr_t convert_sai_hostif_user_defined_trap_attr_t_to_sai(lemming::dataplane::sai::HostifUserDefinedTrapAttr val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP; - - default: return SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_user_defined_trap_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_user_defined_trap_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_user_defined_trap_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifUserDefinedTrapType convert_sai_hostif_user_defined_trap_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_START; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_ACL: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_ACL; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_FDB: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_FDB; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_TAM: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_TAM; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE; - - case SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_END: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_END; - - default: return lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_UNSPECIFIED; - } -} -sai_hostif_user_defined_trap_type_t convert_sai_hostif_user_defined_trap_type_t_to_sai(lemming::dataplane::sai::HostifUserDefinedTrapType val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_START: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_NEIGHBOR; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_ACL: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_ACL; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_FDB: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_FDB; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_INSEG_ENTRY; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_TAM: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_TAM; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::HOSTIF_USER_DEFINED_TRAP_TYPE_END: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_END; - - default: return SAI_HOSTIF_USER_DEFINED_TRAP_TYPE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_user_defined_trap_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_user_defined_trap_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_user_defined_trap_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_user_defined_trap_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::HostifVlanTag convert_sai_hostif_vlan_tag_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_HOSTIF_VLAN_TAG_STRIP: return lemming::dataplane::sai::HOSTIF_VLAN_TAG_STRIP; - - case SAI_HOSTIF_VLAN_TAG_KEEP: return lemming::dataplane::sai::HOSTIF_VLAN_TAG_KEEP; - - case SAI_HOSTIF_VLAN_TAG_ORIGINAL: return lemming::dataplane::sai::HOSTIF_VLAN_TAG_ORIGINAL; - - default: return lemming::dataplane::sai::HOSTIF_VLAN_TAG_UNSPECIFIED; - } -} -sai_hostif_vlan_tag_t convert_sai_hostif_vlan_tag_t_to_sai(lemming::dataplane::sai::HostifVlanTag val) { - switch (val) { - - case lemming::dataplane::sai::HOSTIF_VLAN_TAG_STRIP: return SAI_HOSTIF_VLAN_TAG_STRIP; - - case lemming::dataplane::sai::HOSTIF_VLAN_TAG_KEEP: return SAI_HOSTIF_VLAN_TAG_KEEP; - - case lemming::dataplane::sai::HOSTIF_VLAN_TAG_ORIGINAL: return SAI_HOSTIF_VLAN_TAG_ORIGINAL; - - default: return SAI_HOSTIF_VLAN_TAG_STRIP; - } -} - -google::protobuf::RepeatedField convert_list_sai_hostif_vlan_tag_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_hostif_vlan_tag_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_hostif_vlan_tag_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_hostif_vlan_tag_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::InDropReason convert_sai_in_drop_reason_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IN_DROP_REASON_START: return lemming::dataplane::sai::IN_DROP_REASON_START; - - case SAI_IN_DROP_REASON_SMAC_MULTICAST: return lemming::dataplane::sai::IN_DROP_REASON_SMAC_MULTICAST; - - case SAI_IN_DROP_REASON_SMAC_EQUALS_DMAC: return lemming::dataplane::sai::IN_DROP_REASON_SMAC_EQUALS_DMAC; - - case SAI_IN_DROP_REASON_DMAC_RESERVED: return lemming::dataplane::sai::IN_DROP_REASON_DMAC_RESERVED; - - case SAI_IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED: return lemming::dataplane::sai::IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED; - - case SAI_IN_DROP_REASON_INGRESS_VLAN_FILTER: return lemming::dataplane::sai::IN_DROP_REASON_INGRESS_VLAN_FILTER; - - case SAI_IN_DROP_REASON_INGRESS_STP_FILTER: return lemming::dataplane::sai::IN_DROP_REASON_INGRESS_STP_FILTER; - - case SAI_IN_DROP_REASON_FDB_UC_DISCARD: return lemming::dataplane::sai::IN_DROP_REASON_FDB_UC_DISCARD; - - case SAI_IN_DROP_REASON_FDB_MC_DISCARD: return lemming::dataplane::sai::IN_DROP_REASON_FDB_MC_DISCARD; - - case SAI_IN_DROP_REASON_L2_LOOPBACK_FILTER: return lemming::dataplane::sai::IN_DROP_REASON_L2_LOOPBACK_FILTER; - - case SAI_IN_DROP_REASON_EXCEEDS_L2_MTU: return lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L2_MTU; - - case SAI_IN_DROP_REASON_L3_ANY: return lemming::dataplane::sai::IN_DROP_REASON_L3_ANY; - - case SAI_IN_DROP_REASON_EXCEEDS_L3_MTU: return lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L3_MTU; - - case SAI_IN_DROP_REASON_TTL: return lemming::dataplane::sai::IN_DROP_REASON_TTL; - - case SAI_IN_DROP_REASON_L3_LOOPBACK_FILTER: return lemming::dataplane::sai::IN_DROP_REASON_L3_LOOPBACK_FILTER; - - case SAI_IN_DROP_REASON_NON_ROUTABLE: return lemming::dataplane::sai::IN_DROP_REASON_NON_ROUTABLE; - - case SAI_IN_DROP_REASON_NO_L3_HEADER: return lemming::dataplane::sai::IN_DROP_REASON_NO_L3_HEADER; - - case SAI_IN_DROP_REASON_IP_HEADER_ERROR: return lemming::dataplane::sai::IN_DROP_REASON_IP_HEADER_ERROR; - - case SAI_IN_DROP_REASON_UC_DIP_MC_DMAC: return lemming::dataplane::sai::IN_DROP_REASON_UC_DIP_MC_DMAC; - - case SAI_IN_DROP_REASON_DIP_LOOPBACK: return lemming::dataplane::sai::IN_DROP_REASON_DIP_LOOPBACK; - - case SAI_IN_DROP_REASON_SIP_LOOPBACK: return lemming::dataplane::sai::IN_DROP_REASON_SIP_LOOPBACK; - - case SAI_IN_DROP_REASON_SIP_MC: return lemming::dataplane::sai::IN_DROP_REASON_SIP_MC; - - case SAI_IN_DROP_REASON_SIP_CLASS_E: return lemming::dataplane::sai::IN_DROP_REASON_SIP_CLASS_E; - - case SAI_IN_DROP_REASON_SIP_UNSPECIFIED: return lemming::dataplane::sai::IN_DROP_REASON_SIP_UNSPECIFIED; - - case SAI_IN_DROP_REASON_MC_DMAC_MISMATCH: return lemming::dataplane::sai::IN_DROP_REASON_MC_DMAC_MISMATCH; - - case SAI_IN_DROP_REASON_SIP_EQUALS_DIP: return lemming::dataplane::sai::IN_DROP_REASON_SIP_EQUALS_DIP; - - case SAI_IN_DROP_REASON_SIP_BC: return lemming::dataplane::sai::IN_DROP_REASON_SIP_BC; - - case SAI_IN_DROP_REASON_DIP_LOCAL: return lemming::dataplane::sai::IN_DROP_REASON_DIP_LOCAL; - - case SAI_IN_DROP_REASON_DIP_LINK_LOCAL: return lemming::dataplane::sai::IN_DROP_REASON_DIP_LINK_LOCAL; - - case SAI_IN_DROP_REASON_SIP_LINK_LOCAL: return lemming::dataplane::sai::IN_DROP_REASON_SIP_LINK_LOCAL; - - case SAI_IN_DROP_REASON_IPV6_MC_SCOPE0: return lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE0; - - case SAI_IN_DROP_REASON_IPV6_MC_SCOPE1: return lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE1; - - case SAI_IN_DROP_REASON_IRIF_DISABLED: return lemming::dataplane::sai::IN_DROP_REASON_IRIF_DISABLED; - - case SAI_IN_DROP_REASON_ERIF_DISABLED: return lemming::dataplane::sai::IN_DROP_REASON_ERIF_DISABLED; - - case SAI_IN_DROP_REASON_LPM4_MISS: return lemming::dataplane::sai::IN_DROP_REASON_LPM4_MISS; - - case SAI_IN_DROP_REASON_LPM6_MISS: return lemming::dataplane::sai::IN_DROP_REASON_LPM6_MISS; - - case SAI_IN_DROP_REASON_BLACKHOLE_ROUTE: return lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ROUTE; - - case SAI_IN_DROP_REASON_BLACKHOLE_ARP: return lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ARP; - - case SAI_IN_DROP_REASON_UNRESOLVED_NEXT_HOP: return lemming::dataplane::sai::IN_DROP_REASON_UNRESOLVED_NEXT_HOP; - - case SAI_IN_DROP_REASON_L3_EGRESS_LINK_DOWN: return lemming::dataplane::sai::IN_DROP_REASON_L3_EGRESS_LINK_DOWN; - - case SAI_IN_DROP_REASON_DECAP_ERROR: return lemming::dataplane::sai::IN_DROP_REASON_DECAP_ERROR; - - case SAI_IN_DROP_REASON_ACL_ANY: return lemming::dataplane::sai::IN_DROP_REASON_ACL_ANY; - - case SAI_IN_DROP_REASON_ACL_INGRESS_PORT: return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_PORT; - - case SAI_IN_DROP_REASON_ACL_INGRESS_LAG: return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_LAG; - - case SAI_IN_DROP_REASON_ACL_INGRESS_VLAN: return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_VLAN; - - case SAI_IN_DROP_REASON_ACL_INGRESS_RIF: return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_RIF; - - case SAI_IN_DROP_REASON_ACL_INGRESS_SWITCH: return lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_SWITCH; - - case SAI_IN_DROP_REASON_ACL_EGRESS_PORT: return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_PORT; - - case SAI_IN_DROP_REASON_ACL_EGRESS_LAG: return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_LAG; - - case SAI_IN_DROP_REASON_ACL_EGRESS_VLAN: return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_VLAN; - - case SAI_IN_DROP_REASON_ACL_EGRESS_RIF: return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_RIF; - - case SAI_IN_DROP_REASON_ACL_EGRESS_SWITCH: return lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_SWITCH; - - case SAI_IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS: return lemming::dataplane::sai::IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS; - - case SAI_IN_DROP_REASON_MPLS_MISS: return lemming::dataplane::sai::IN_DROP_REASON_MPLS_MISS; - - case SAI_IN_DROP_REASON_SRV6_LOCAL_SID_DROP: return lemming::dataplane::sai::IN_DROP_REASON_SRV6_LOCAL_SID_DROP; - - case SAI_IN_DROP_REASON_END: return lemming::dataplane::sai::IN_DROP_REASON_END; - - case SAI_IN_DROP_REASON_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_BASE; - - case SAI_IN_DROP_REASON_CUSTOM_RANGE_END: return lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_END; - - default: return lemming::dataplane::sai::IN_DROP_REASON_UNSPECIFIED; - } -} -sai_in_drop_reason_t convert_sai_in_drop_reason_t_to_sai(lemming::dataplane::sai::InDropReason val) { - switch (val) { - - case lemming::dataplane::sai::IN_DROP_REASON_START: return SAI_IN_DROP_REASON_START; - - case lemming::dataplane::sai::IN_DROP_REASON_SMAC_MULTICAST: return SAI_IN_DROP_REASON_SMAC_MULTICAST; - - case lemming::dataplane::sai::IN_DROP_REASON_SMAC_EQUALS_DMAC: return SAI_IN_DROP_REASON_SMAC_EQUALS_DMAC; - - case lemming::dataplane::sai::IN_DROP_REASON_DMAC_RESERVED: return SAI_IN_DROP_REASON_DMAC_RESERVED; - - case lemming::dataplane::sai::IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED: return SAI_IN_DROP_REASON_VLAN_TAG_NOT_ALLOWED; - - case lemming::dataplane::sai::IN_DROP_REASON_INGRESS_VLAN_FILTER: return SAI_IN_DROP_REASON_INGRESS_VLAN_FILTER; - - case lemming::dataplane::sai::IN_DROP_REASON_INGRESS_STP_FILTER: return SAI_IN_DROP_REASON_INGRESS_STP_FILTER; - - case lemming::dataplane::sai::IN_DROP_REASON_FDB_UC_DISCARD: return SAI_IN_DROP_REASON_FDB_UC_DISCARD; - - case lemming::dataplane::sai::IN_DROP_REASON_FDB_MC_DISCARD: return SAI_IN_DROP_REASON_FDB_MC_DISCARD; - - case lemming::dataplane::sai::IN_DROP_REASON_L2_LOOPBACK_FILTER: return SAI_IN_DROP_REASON_L2_LOOPBACK_FILTER; - - case lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L2_MTU: return SAI_IN_DROP_REASON_EXCEEDS_L2_MTU; - - case lemming::dataplane::sai::IN_DROP_REASON_L3_ANY: return SAI_IN_DROP_REASON_L3_ANY; - - case lemming::dataplane::sai::IN_DROP_REASON_EXCEEDS_L3_MTU: return SAI_IN_DROP_REASON_EXCEEDS_L3_MTU; - - case lemming::dataplane::sai::IN_DROP_REASON_TTL: return SAI_IN_DROP_REASON_TTL; - - case lemming::dataplane::sai::IN_DROP_REASON_L3_LOOPBACK_FILTER: return SAI_IN_DROP_REASON_L3_LOOPBACK_FILTER; - - case lemming::dataplane::sai::IN_DROP_REASON_NON_ROUTABLE: return SAI_IN_DROP_REASON_NON_ROUTABLE; - - case lemming::dataplane::sai::IN_DROP_REASON_NO_L3_HEADER: return SAI_IN_DROP_REASON_NO_L3_HEADER; - - case lemming::dataplane::sai::IN_DROP_REASON_IP_HEADER_ERROR: return SAI_IN_DROP_REASON_IP_HEADER_ERROR; - - case lemming::dataplane::sai::IN_DROP_REASON_UC_DIP_MC_DMAC: return SAI_IN_DROP_REASON_UC_DIP_MC_DMAC; - - case lemming::dataplane::sai::IN_DROP_REASON_DIP_LOOPBACK: return SAI_IN_DROP_REASON_DIP_LOOPBACK; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_LOOPBACK: return SAI_IN_DROP_REASON_SIP_LOOPBACK; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_MC: return SAI_IN_DROP_REASON_SIP_MC; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_CLASS_E: return SAI_IN_DROP_REASON_SIP_CLASS_E; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_UNSPECIFIED: return SAI_IN_DROP_REASON_SIP_UNSPECIFIED; - - case lemming::dataplane::sai::IN_DROP_REASON_MC_DMAC_MISMATCH: return SAI_IN_DROP_REASON_MC_DMAC_MISMATCH; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_EQUALS_DIP: return SAI_IN_DROP_REASON_SIP_EQUALS_DIP; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_BC: return SAI_IN_DROP_REASON_SIP_BC; - - case lemming::dataplane::sai::IN_DROP_REASON_DIP_LOCAL: return SAI_IN_DROP_REASON_DIP_LOCAL; - - case lemming::dataplane::sai::IN_DROP_REASON_DIP_LINK_LOCAL: return SAI_IN_DROP_REASON_DIP_LINK_LOCAL; - - case lemming::dataplane::sai::IN_DROP_REASON_SIP_LINK_LOCAL: return SAI_IN_DROP_REASON_SIP_LINK_LOCAL; - - case lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE0: return SAI_IN_DROP_REASON_IPV6_MC_SCOPE0; - - case lemming::dataplane::sai::IN_DROP_REASON_IPV6_MC_SCOPE1: return SAI_IN_DROP_REASON_IPV6_MC_SCOPE1; - - case lemming::dataplane::sai::IN_DROP_REASON_IRIF_DISABLED: return SAI_IN_DROP_REASON_IRIF_DISABLED; - - case lemming::dataplane::sai::IN_DROP_REASON_ERIF_DISABLED: return SAI_IN_DROP_REASON_ERIF_DISABLED; - - case lemming::dataplane::sai::IN_DROP_REASON_LPM4_MISS: return SAI_IN_DROP_REASON_LPM4_MISS; - - case lemming::dataplane::sai::IN_DROP_REASON_LPM6_MISS: return SAI_IN_DROP_REASON_LPM6_MISS; - - case lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ROUTE: return SAI_IN_DROP_REASON_BLACKHOLE_ROUTE; - - case lemming::dataplane::sai::IN_DROP_REASON_BLACKHOLE_ARP: return SAI_IN_DROP_REASON_BLACKHOLE_ARP; - - case lemming::dataplane::sai::IN_DROP_REASON_UNRESOLVED_NEXT_HOP: return SAI_IN_DROP_REASON_UNRESOLVED_NEXT_HOP; - - case lemming::dataplane::sai::IN_DROP_REASON_L3_EGRESS_LINK_DOWN: return SAI_IN_DROP_REASON_L3_EGRESS_LINK_DOWN; - - case lemming::dataplane::sai::IN_DROP_REASON_DECAP_ERROR: return SAI_IN_DROP_REASON_DECAP_ERROR; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_ANY: return SAI_IN_DROP_REASON_ACL_ANY; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_PORT: return SAI_IN_DROP_REASON_ACL_INGRESS_PORT; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_LAG: return SAI_IN_DROP_REASON_ACL_INGRESS_LAG; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_VLAN: return SAI_IN_DROP_REASON_ACL_INGRESS_VLAN; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_RIF: return SAI_IN_DROP_REASON_ACL_INGRESS_RIF; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_INGRESS_SWITCH: return SAI_IN_DROP_REASON_ACL_INGRESS_SWITCH; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_PORT: return SAI_IN_DROP_REASON_ACL_EGRESS_PORT; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_LAG: return SAI_IN_DROP_REASON_ACL_EGRESS_LAG; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_VLAN: return SAI_IN_DROP_REASON_ACL_EGRESS_VLAN; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_RIF: return SAI_IN_DROP_REASON_ACL_EGRESS_RIF; - - case lemming::dataplane::sai::IN_DROP_REASON_ACL_EGRESS_SWITCH: return SAI_IN_DROP_REASON_ACL_EGRESS_SWITCH; - - case lemming::dataplane::sai::IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS: return SAI_IN_DROP_REASON_FDB_AND_BLACKHOLE_DISCARDS; - - case lemming::dataplane::sai::IN_DROP_REASON_MPLS_MISS: return SAI_IN_DROP_REASON_MPLS_MISS; - - case lemming::dataplane::sai::IN_DROP_REASON_SRV6_LOCAL_SID_DROP: return SAI_IN_DROP_REASON_SRV6_LOCAL_SID_DROP; - - case lemming::dataplane::sai::IN_DROP_REASON_END: return SAI_IN_DROP_REASON_END; - - case lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_BASE: return SAI_IN_DROP_REASON_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::IN_DROP_REASON_CUSTOM_RANGE_END: return SAI_IN_DROP_REASON_CUSTOM_RANGE_END; - - default: return SAI_IN_DROP_REASON_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_in_drop_reason_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_in_drop_reason_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_in_drop_reason_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_in_drop_reason_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IngressPriorityGroupAttr convert_sai_ingress_priority_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_PORT; - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_TAM; - - case SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_INDEX; - - default: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_UNSPECIFIED; - } -} -sai_ingress_priority_group_attr_t convert_sai_ingress_priority_group_attr_t_to_sai(lemming::dataplane::sai::IngressPriorityGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE: return SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_PORT: return SAI_INGRESS_PRIORITY_GROUP_ATTR_PORT; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_TAM: return SAI_INGRESS_PRIORITY_GROUP_ATTR_TAM; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_ATTR_INDEX: return SAI_INGRESS_PRIORITY_GROUP_ATTR_INDEX; - - default: return SAI_INGRESS_PRIORITY_GROUP_ATTR_BUFFER_PROFILE; - } -} - -google::protobuf::RepeatedField convert_list_sai_ingress_priority_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ingress_priority_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ingress_priority_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ingress_priority_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IngressPriorityGroupStat convert_sai_ingress_priority_group_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_PACKETS; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS; - - case SAI_INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_UNSPECIFIED; - } -} -sai_ingress_priority_group_stat_t convert_sai_ingress_priority_group_stat_t_to_sai(lemming::dataplane::sai::IngressPriorityGroupStat val) { - switch (val) { - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_PACKETS: return SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_WATERMARK_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES: return SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS: return SAI_INGRESS_PRIORITY_GROUP_STAT_DROPPED_PACKETS; - - case lemming::dataplane::sai::INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE: return SAI_INGRESS_PRIORITY_GROUP_STAT_CUSTOM_RANGE_BASE; - - default: return SAI_INGRESS_PRIORITY_GROUP_STAT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_ingress_priority_group_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ingress_priority_group_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ingress_priority_group_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ingress_priority_group_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::InsegEntryAttr convert_sai_inseg_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_NUM_OF_POP; - - case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_PACKET_ACTION; - - case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_TRAP_PRIORITY; - - case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_NEXT_HOP_ID; - - case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_PSC_TYPE; - - case SAI_INSEG_ENTRY_ATTR_QOS_TC: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_QOS_TC; - - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP; - - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP; - - case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_TTL_MODE; - - case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_QOS_MODE; - - case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::INSEG_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_inseg_entry_attr_t convert_sai_inseg_entry_attr_t_to_sai(lemming::dataplane::sai::InsegEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_NUM_OF_POP: return SAI_INSEG_ENTRY_ATTR_NUM_OF_POP; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_PACKET_ACTION: return SAI_INSEG_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_TRAP_PRIORITY: return SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_NEXT_HOP_ID: return SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_PSC_TYPE: return SAI_INSEG_ENTRY_ATTR_PSC_TYPE; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_QOS_TC: return SAI_INSEG_ENTRY_ATTR_QOS_TC; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: return SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: return SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_TTL_MODE: return SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_POP_QOS_MODE: return SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE; - - case lemming::dataplane::sai::INSEG_ENTRY_ATTR_COUNTER_ID: return SAI_INSEG_ENTRY_ATTR_COUNTER_ID; - - default: return SAI_INSEG_ENTRY_ATTR_NUM_OF_POP; - } -} - -google::protobuf::RepeatedField convert_list_sai_inseg_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_inseg_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_inseg_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_inseg_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::InsegEntryPopQosMode convert_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM: return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNIFORM; - - case SAI_INSEG_ENTRY_POP_QOS_MODE_PIPE: return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_PIPE; - - default: return lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNSPECIFIED; - } -} -sai_inseg_entry_pop_qos_mode_t convert_sai_inseg_entry_pop_qos_mode_t_to_sai(lemming::dataplane::sai::InsegEntryPopQosMode val) { - switch (val) { - - case lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_UNIFORM: return SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM; - - case lemming::dataplane::sai::INSEG_ENTRY_POP_QOS_MODE_PIPE: return SAI_INSEG_ENTRY_POP_QOS_MODE_PIPE; - - default: return SAI_INSEG_ENTRY_POP_QOS_MODE_UNIFORM; - } -} - -google::protobuf::RepeatedField convert_list_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_inseg_entry_pop_qos_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_inseg_entry_pop_qos_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_inseg_entry_pop_qos_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::InsegEntryPopTtlMode convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM: return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNIFORM; - - case SAI_INSEG_ENTRY_POP_TTL_MODE_PIPE: return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_PIPE; - - default: return lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNSPECIFIED; - } -} -sai_inseg_entry_pop_ttl_mode_t convert_sai_inseg_entry_pop_ttl_mode_t_to_sai(lemming::dataplane::sai::InsegEntryPopTtlMode val) { - switch (val) { - - case lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_UNIFORM: return SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM; - - case lemming::dataplane::sai::INSEG_ENTRY_POP_TTL_MODE_PIPE: return SAI_INSEG_ENTRY_POP_TTL_MODE_PIPE; - - default: return SAI_INSEG_ENTRY_POP_TTL_MODE_UNIFORM; - } -} - -google::protobuf::RepeatedField convert_list_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_inseg_entry_pop_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_inseg_entry_pop_ttl_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::InsegEntryPscType convert_sai_inseg_entry_psc_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_INSEG_ENTRY_PSC_TYPE_ELSP: return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_ELSP; - - case SAI_INSEG_ENTRY_PSC_TYPE_LLSP: return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_LLSP; - - default: return lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_UNSPECIFIED; - } -} -sai_inseg_entry_psc_type_t convert_sai_inseg_entry_psc_type_t_to_sai(lemming::dataplane::sai::InsegEntryPscType val) { - switch (val) { - - case lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_ELSP: return SAI_INSEG_ENTRY_PSC_TYPE_ELSP; - - case lemming::dataplane::sai::INSEG_ENTRY_PSC_TYPE_LLSP: return SAI_INSEG_ENTRY_PSC_TYPE_LLSP; - - default: return SAI_INSEG_ENTRY_PSC_TYPE_ELSP; - } -} - -google::protobuf::RepeatedField convert_list_sai_inseg_entry_psc_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_inseg_entry_psc_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_inseg_entry_psc_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_inseg_entry_psc_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpAddrFamily convert_sai_ip_addr_family_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IP_ADDR_FAMILY_IPV4: return lemming::dataplane::sai::IP_ADDR_FAMILY_IPV4; - - case SAI_IP_ADDR_FAMILY_IPV6: return lemming::dataplane::sai::IP_ADDR_FAMILY_IPV6; - - default: return lemming::dataplane::sai::IP_ADDR_FAMILY_UNSPECIFIED; - } -} -sai_ip_addr_family_t convert_sai_ip_addr_family_t_to_sai(lemming::dataplane::sai::IpAddrFamily val) { - switch (val) { - - case lemming::dataplane::sai::IP_ADDR_FAMILY_IPV4: return SAI_IP_ADDR_FAMILY_IPV4; - - case lemming::dataplane::sai::IP_ADDR_FAMILY_IPV6: return SAI_IP_ADDR_FAMILY_IPV6; - - default: return SAI_IP_ADDR_FAMILY_IPV4; - } -} - -google::protobuf::RepeatedField convert_list_sai_ip_addr_family_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ip_addr_family_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ip_addr_family_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ip_addr_family_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpmcEntryAttr convert_sai_ipmc_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::IPMC_ENTRY_ATTR_PACKET_ACTION; - - case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: return lemming::dataplane::sai::IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID; - - case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: return lemming::dataplane::sai::IPMC_ENTRY_ATTR_RPF_GROUP_ID; - - case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::IPMC_ENTRY_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::IPMC_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_ipmc_entry_attr_t convert_sai_ipmc_entry_attr_t_to_sai(lemming::dataplane::sai::IpmcEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPMC_ENTRY_ATTR_PACKET_ACTION: return SAI_IPMC_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: return SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID; - - case lemming::dataplane::sai::IPMC_ENTRY_ATTR_RPF_GROUP_ID: return SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID; - - case lemming::dataplane::sai::IPMC_ENTRY_ATTR_COUNTER_ID: return SAI_IPMC_ENTRY_ATTR_COUNTER_ID; - - default: return SAI_IPMC_ENTRY_ATTR_PACKET_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipmc_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipmc_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipmc_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipmc_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpmcEntryType convert_sai_ipmc_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPMC_ENTRY_TYPE_SG: return lemming::dataplane::sai::IPMC_ENTRY_TYPE_SG; - - case SAI_IPMC_ENTRY_TYPE_XG: return lemming::dataplane::sai::IPMC_ENTRY_TYPE_XG; - - default: return lemming::dataplane::sai::IPMC_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_ipmc_entry_type_t convert_sai_ipmc_entry_type_t_to_sai(lemming::dataplane::sai::IpmcEntryType val) { - switch (val) { - - case lemming::dataplane::sai::IPMC_ENTRY_TYPE_SG: return SAI_IPMC_ENTRY_TYPE_SG; - - case lemming::dataplane::sai::IPMC_ENTRY_TYPE_XG: return SAI_IPMC_ENTRY_TYPE_XG; - - default: return SAI_IPMC_ENTRY_TYPE_SG; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipmc_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipmc_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipmc_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipmc_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpmcGroupAttr convert_sai_ipmc_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: return lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; - - case SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: return lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_MEMBER_LIST; - - default: return lemming::dataplane::sai::IPMC_GROUP_ATTR_UNSPECIFIED; - } -} -sai_ipmc_group_attr_t convert_sai_ipmc_group_attr_t_to_sai(lemming::dataplane::sai::IpmcGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: return SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; - - case lemming::dataplane::sai::IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: return SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST; - - default: return SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipmc_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipmc_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipmc_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipmc_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpmcGroupMemberAttr convert_sai_ipmc_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; - - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID; - - default: return lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_ipmc_group_member_attr_t convert_sai_ipmc_group_member_attr_t_to_sai(lemming::dataplane::sai::IpmcGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; - - case lemming::dataplane::sai::IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID; - - default: return SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipmc_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipmc_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipmc_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipmc_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecAttr convert_sai_ipsec_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; - - case SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; - - case SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; - - case SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_SUPPORTED; - - case SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; - - case SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_SN_32BIT_SUPPORTED; - - case SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_ESN_64BIT_SUPPORTED; - - case SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST: return lemming::dataplane::sai::IPSEC_ATTR_SUPPORTED_CIPHER_LIST; - - case SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU: return lemming::dataplane::sai::IPSEC_ATTR_SYSTEM_SIDE_MTU; - - case SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED: return lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_SUPPORTED; - - case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: return lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_ENABLE; - - case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: return lemming::dataplane::sai::IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE; - - case SAI_IPSEC_ATTR_CTAG_TPID: return lemming::dataplane::sai::IPSEC_ATTR_CTAG_TPID; - - case SAI_IPSEC_ATTR_STAG_TPID: return lemming::dataplane::sai::IPSEC_ATTR_STAG_TPID; - - case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: return lemming::dataplane::sai::IPSEC_ATTR_MAX_VLAN_TAGS_PARSED; - - case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: return lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK; - - case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: return lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK; - - case SAI_IPSEC_ATTR_STATS_MODE: return lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE; - - case SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA: return lemming::dataplane::sai::IPSEC_ATTR_AVAILABLE_IPSEC_SA; - - case SAI_IPSEC_ATTR_SA_LIST: return lemming::dataplane::sai::IPSEC_ATTR_SA_LIST; - - default: return lemming::dataplane::sai::IPSEC_ATTR_UNSPECIFIED; - } -} -sai_ipsec_attr_t convert_sai_ipsec_attr_t_to_sai(lemming::dataplane::sai::IpsecAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: return SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: return SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: return SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: return SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: return SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_SN_32BIT_SUPPORTED: return SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_ESN_64BIT_SUPPORTED: return SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_SUPPORTED_CIPHER_LIST: return SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST; - - case lemming::dataplane::sai::IPSEC_ATTR_SYSTEM_SIDE_MTU: return SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU; - - case lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_SUPPORTED: return SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED; - - case lemming::dataplane::sai::IPSEC_ATTR_WARM_BOOT_ENABLE: return SAI_IPSEC_ATTR_WARM_BOOT_ENABLE; - - case lemming::dataplane::sai::IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: return SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE; - - case lemming::dataplane::sai::IPSEC_ATTR_CTAG_TPID: return SAI_IPSEC_ATTR_CTAG_TPID; - - case lemming::dataplane::sai::IPSEC_ATTR_STAG_TPID: return SAI_IPSEC_ATTR_STAG_TPID; - - case lemming::dataplane::sai::IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: return SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED; - - case lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: return SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK; - - case lemming::dataplane::sai::IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: return SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK; - - case lemming::dataplane::sai::IPSEC_ATTR_STATS_MODE: return SAI_IPSEC_ATTR_STATS_MODE; - - case lemming::dataplane::sai::IPSEC_ATTR_AVAILABLE_IPSEC_SA: return SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA; - - case lemming::dataplane::sai::IPSEC_ATTR_SA_LIST: return SAI_IPSEC_ATTR_SA_LIST; - - default: return SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecCipher convert_sai_ipsec_cipher_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_CIPHER_AES128_GCM16: return lemming::dataplane::sai::IPSEC_CIPHER_AES128_GCM16; - - case SAI_IPSEC_CIPHER_AES256_GCM16: return lemming::dataplane::sai::IPSEC_CIPHER_AES256_GCM16; - - case SAI_IPSEC_CIPHER_AES128_GMAC: return lemming::dataplane::sai::IPSEC_CIPHER_AES128_GMAC; - - case SAI_IPSEC_CIPHER_AES256_GMAC: return lemming::dataplane::sai::IPSEC_CIPHER_AES256_GMAC; - - default: return lemming::dataplane::sai::IPSEC_CIPHER_UNSPECIFIED; - } -} -sai_ipsec_cipher_t convert_sai_ipsec_cipher_t_to_sai(lemming::dataplane::sai::IpsecCipher val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_CIPHER_AES128_GCM16: return SAI_IPSEC_CIPHER_AES128_GCM16; - - case lemming::dataplane::sai::IPSEC_CIPHER_AES256_GCM16: return SAI_IPSEC_CIPHER_AES256_GCM16; - - case lemming::dataplane::sai::IPSEC_CIPHER_AES128_GMAC: return SAI_IPSEC_CIPHER_AES128_GMAC; - - case lemming::dataplane::sai::IPSEC_CIPHER_AES256_GMAC: return SAI_IPSEC_CIPHER_AES256_GMAC; - - default: return SAI_IPSEC_CIPHER_AES128_GCM16; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_cipher_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_cipher_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_cipher_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_cipher_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecDirection convert_sai_ipsec_direction_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_DIRECTION_EGRESS: return lemming::dataplane::sai::IPSEC_DIRECTION_EGRESS; - - case SAI_IPSEC_DIRECTION_INGRESS: return lemming::dataplane::sai::IPSEC_DIRECTION_INGRESS; - - default: return lemming::dataplane::sai::IPSEC_DIRECTION_UNSPECIFIED; - } -} -sai_ipsec_direction_t convert_sai_ipsec_direction_t_to_sai(lemming::dataplane::sai::IpsecDirection val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_DIRECTION_EGRESS: return SAI_IPSEC_DIRECTION_EGRESS; - - case lemming::dataplane::sai::IPSEC_DIRECTION_INGRESS: return SAI_IPSEC_DIRECTION_INGRESS; - - default: return SAI_IPSEC_DIRECTION_EGRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_direction_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_direction_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_direction_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecPortAttr convert_sai_ipsec_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_PORT_ATTR_PORT_ID: return lemming::dataplane::sai::IPSEC_PORT_ATTR_PORT_ID; - - case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: return lemming::dataplane::sai::IPSEC_PORT_ATTR_CTAG_ENABLE; - - case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: return lemming::dataplane::sai::IPSEC_PORT_ATTR_STAG_ENABLE; - - case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: return lemming::dataplane::sai::IPSEC_PORT_ATTR_NATIVE_VLAN_ID; - - case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: return lemming::dataplane::sai::IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE; - - case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: return lemming::dataplane::sai::IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; - - default: return lemming::dataplane::sai::IPSEC_PORT_ATTR_UNSPECIFIED; - } -} -sai_ipsec_port_attr_t convert_sai_ipsec_port_attr_t_to_sai(lemming::dataplane::sai::IpsecPortAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_PORT_ID: return SAI_IPSEC_PORT_ATTR_PORT_ID; - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_CTAG_ENABLE: return SAI_IPSEC_PORT_ATTR_CTAG_ENABLE; - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_STAG_ENABLE: return SAI_IPSEC_PORT_ATTR_STAG_ENABLE; - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_NATIVE_VLAN_ID: return SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID; - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: return SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE; - - case lemming::dataplane::sai::IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: return SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; - - default: return SAI_IPSEC_PORT_ATTR_PORT_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecPortStat convert_sai_ipsec_port_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_ERROR_PKTS; - - case SAI_IPSEC_PORT_STAT_TX_IPSEC_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_IPSEC_PKTS; - - case SAI_IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS; - - case SAI_IPSEC_PORT_STAT_RX_ERROR_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_ERROR_PKTS; - - case SAI_IPSEC_PORT_STAT_RX_IPSEC_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_IPSEC_PKTS; - - case SAI_IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS: return lemming::dataplane::sai::IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS; - - default: return lemming::dataplane::sai::IPSEC_PORT_STAT_UNSPECIFIED; - } -} -sai_ipsec_port_stat_t convert_sai_ipsec_port_stat_t_to_sai(lemming::dataplane::sai::IpsecPortStat val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_ERROR_PKTS: return SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS; - - case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_IPSEC_PKTS: return SAI_IPSEC_PORT_STAT_TX_IPSEC_PKTS; - - case lemming::dataplane::sai::IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS: return SAI_IPSEC_PORT_STAT_TX_NON_IPSEC_PKTS; - - case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_ERROR_PKTS: return SAI_IPSEC_PORT_STAT_RX_ERROR_PKTS; - - case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_IPSEC_PKTS: return SAI_IPSEC_PORT_STAT_RX_IPSEC_PKTS; - - case lemming::dataplane::sai::IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS: return SAI_IPSEC_PORT_STAT_RX_NON_IPSEC_PKTS; - - default: return SAI_IPSEC_PORT_STAT_TX_ERROR_PKTS; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_port_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_port_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_port_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecSaAttr convert_sai_ipsec_sa_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_DIRECTION; - - case SAI_IPSEC_SA_ATTR_IPSEC_ID: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ID; - - case SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS: return lemming::dataplane::sai::IPSEC_SA_ATTR_OCTET_COUNT_STATUS; - - case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: return lemming::dataplane::sai::IPSEC_SA_ATTR_EXTERNAL_SA_INDEX; - - case SAI_IPSEC_SA_ATTR_SA_INDEX: return lemming::dataplane::sai::IPSEC_SA_ATTR_SA_INDEX; - - case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_PORT_LIST; - - case SAI_IPSEC_SA_ATTR_IPSEC_SPI: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_SPI; - - case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ESN_ENABLE; - - case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_CIPHER; - - case SAI_IPSEC_SA_ATTR_ENCRYPT_KEY: return lemming::dataplane::sai::IPSEC_SA_ATTR_ENCRYPT_KEY; - - case SAI_IPSEC_SA_ATTR_SALT: return lemming::dataplane::sai::IPSEC_SA_ATTR_SALT; - - case SAI_IPSEC_SA_ATTR_AUTH_KEY: return lemming::dataplane::sai::IPSEC_SA_ATTR_AUTH_KEY; - - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE; - - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: return lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW; - - case SAI_IPSEC_SA_ATTR_TERM_DST_IP: return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_DST_IP; - - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE; - - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID; - - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE; - - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: return lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP; - - case SAI_IPSEC_SA_ATTR_EGRESS_ESN: return lemming::dataplane::sai::IPSEC_SA_ATTR_EGRESS_ESN; - - case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: return lemming::dataplane::sai::IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN; - - default: return lemming::dataplane::sai::IPSEC_SA_ATTR_UNSPECIFIED; - } -} -sai_ipsec_sa_attr_t convert_sai_ipsec_sa_attr_t_to_sai(lemming::dataplane::sai::IpsecSaAttr val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_DIRECTION: return SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ID: return SAI_IPSEC_SA_ATTR_IPSEC_ID; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_OCTET_COUNT_STATUS: return SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: return SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_SA_INDEX: return SAI_IPSEC_SA_ATTR_SA_INDEX; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_PORT_LIST: return SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_SPI: return SAI_IPSEC_SA_ATTR_IPSEC_SPI; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: return SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_CIPHER: return SAI_IPSEC_SA_ATTR_IPSEC_CIPHER; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_ENCRYPT_KEY: return SAI_IPSEC_SA_ATTR_ENCRYPT_KEY; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_SALT: return SAI_IPSEC_SA_ATTR_SALT; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_AUTH_KEY: return SAI_IPSEC_SA_ATTR_AUTH_KEY; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: return SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: return SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_DST_IP: return SAI_IPSEC_SA_ATTR_TERM_DST_IP; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: return SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_VLAN_ID: return SAI_IPSEC_SA_ATTR_TERM_VLAN_ID; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: return SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_TERM_SRC_IP: return SAI_IPSEC_SA_ATTR_TERM_SRC_IP; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_EGRESS_ESN: return SAI_IPSEC_SA_ATTR_EGRESS_ESN; - - case lemming::dataplane::sai::IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: return SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN; - - default: return SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_sa_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_sa_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_sa_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecSaOctetCountStatus convert_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK: return lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; - - case SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK: return lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK; - - case SAI_IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK: return lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK; - - default: return lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_UNSPECIFIED; - } -} -sai_ipsec_sa_octet_count_status_t convert_sai_ipsec_sa_octet_count_status_t_to_sai(lemming::dataplane::sai::IpsecSaOctetCountStatus val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK: return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; - - case lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK: return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_HIGH_WATERMARK; - - case lemming::dataplane::sai::IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK: return SAI_IPSEC_SA_OCTET_COUNT_STATUS_ABOVE_HIGH_WATERMARK; - - default: return SAI_IPSEC_SA_OCTET_COUNT_STATUS_BELOW_LOW_WATERMARK; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_sa_octet_count_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_sa_octet_count_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_sa_octet_count_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IpsecSaStat convert_sai_ipsec_sa_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_IPSEC_SA_STAT_PROTECTED_OCTETS: return lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_OCTETS; - - case SAI_IPSEC_SA_STAT_PROTECTED_PKTS: return lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_PKTS; - - case SAI_IPSEC_SA_STAT_GOOD_PKTS: return lemming::dataplane::sai::IPSEC_SA_STAT_GOOD_PKTS; - - case SAI_IPSEC_SA_STAT_BAD_HEADER_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_BAD_HEADER_PKTS_IN; - - case SAI_IPSEC_SA_STAT_REPLAYED_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_REPLAYED_PKTS_IN; - - case SAI_IPSEC_SA_STAT_LATE_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_LATE_PKTS_IN; - - case SAI_IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN; - - case SAI_IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN; - - case SAI_IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN: return lemming::dataplane::sai::IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN; - - case SAI_IPSEC_SA_STAT_OTHER_DROPPED_PKTS: return lemming::dataplane::sai::IPSEC_SA_STAT_OTHER_DROPPED_PKTS; - - default: return lemming::dataplane::sai::IPSEC_SA_STAT_UNSPECIFIED; - } -} -sai_ipsec_sa_stat_t convert_sai_ipsec_sa_stat_t_to_sai(lemming::dataplane::sai::IpsecSaStat val) { - switch (val) { - - case lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_OCTETS: return SAI_IPSEC_SA_STAT_PROTECTED_OCTETS; - - case lemming::dataplane::sai::IPSEC_SA_STAT_PROTECTED_PKTS: return SAI_IPSEC_SA_STAT_PROTECTED_PKTS; - - case lemming::dataplane::sai::IPSEC_SA_STAT_GOOD_PKTS: return SAI_IPSEC_SA_STAT_GOOD_PKTS; - - case lemming::dataplane::sai::IPSEC_SA_STAT_BAD_HEADER_PKTS_IN: return SAI_IPSEC_SA_STAT_BAD_HEADER_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_REPLAYED_PKTS_IN: return SAI_IPSEC_SA_STAT_REPLAYED_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_LATE_PKTS_IN: return SAI_IPSEC_SA_STAT_LATE_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN: return SAI_IPSEC_SA_STAT_BAD_TRAILER_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN: return SAI_IPSEC_SA_STAT_AUTH_FAIL_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN: return SAI_IPSEC_SA_STAT_DUMMY_DROPPED_PKTS_IN; - - case lemming::dataplane::sai::IPSEC_SA_STAT_OTHER_DROPPED_PKTS: return SAI_IPSEC_SA_STAT_OTHER_DROPPED_PKTS; - - default: return SAI_IPSEC_SA_STAT_PROTECTED_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_ipsec_sa_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_ipsec_sa_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_ipsec_sa_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IsolationGroupAttr convert_sai_isolation_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ISOLATION_GROUP_ATTR_TYPE: return lemming::dataplane::sai::ISOLATION_GROUP_ATTR_TYPE; - - case SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: return lemming::dataplane::sai::ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST; - - default: return lemming::dataplane::sai::ISOLATION_GROUP_ATTR_UNSPECIFIED; - } -} -sai_isolation_group_attr_t convert_sai_isolation_group_attr_t_to_sai(lemming::dataplane::sai::IsolationGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::ISOLATION_GROUP_ATTR_TYPE: return SAI_ISOLATION_GROUP_ATTR_TYPE; - - case lemming::dataplane::sai::ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: return SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST; - - default: return SAI_ISOLATION_GROUP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_isolation_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_isolation_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_isolation_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_isolation_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IsolationGroupMemberAttr convert_sai_isolation_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: return lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; - - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: return lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT; - - default: return lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_isolation_group_member_attr_t convert_sai_isolation_group_member_attr_t_to_sai(lemming::dataplane::sai::IsolationGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; - - case lemming::dataplane::sai::ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT; - - default: return SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_isolation_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_isolation_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_isolation_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_isolation_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::IsolationGroupType convert_sai_isolation_group_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ISOLATION_GROUP_TYPE_PORT: return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_PORT; - - case SAI_ISOLATION_GROUP_TYPE_BRIDGE_PORT: return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_BRIDGE_PORT; - - default: return lemming::dataplane::sai::ISOLATION_GROUP_TYPE_UNSPECIFIED; - } -} -sai_isolation_group_type_t convert_sai_isolation_group_type_t_to_sai(lemming::dataplane::sai::IsolationGroupType val) { - switch (val) { - - case lemming::dataplane::sai::ISOLATION_GROUP_TYPE_PORT: return SAI_ISOLATION_GROUP_TYPE_PORT; - - case lemming::dataplane::sai::ISOLATION_GROUP_TYPE_BRIDGE_PORT: return SAI_ISOLATION_GROUP_TYPE_BRIDGE_PORT; - - default: return SAI_ISOLATION_GROUP_TYPE_PORT; - } -} - -google::protobuf::RepeatedField convert_list_sai_isolation_group_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_isolation_group_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_isolation_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_isolation_group_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::L2mcEntryAttr convert_sai_l2mc_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::L2MC_ENTRY_ATTR_PACKET_ACTION; - - case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: return lemming::dataplane::sai::L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID; - - default: return lemming::dataplane::sai::L2MC_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_l2mc_entry_attr_t convert_sai_l2mc_entry_attr_t_to_sai(lemming::dataplane::sai::L2mcEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::L2MC_ENTRY_ATTR_PACKET_ACTION: return SAI_L2MC_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: return SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID; - - default: return SAI_L2MC_ENTRY_ATTR_PACKET_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_l2mc_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_l2mc_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_l2mc_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_l2mc_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::L2mcEntryType convert_sai_l2mc_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_L2MC_ENTRY_TYPE_SG: return lemming::dataplane::sai::L2MC_ENTRY_TYPE_SG; - - case SAI_L2MC_ENTRY_TYPE_XG: return lemming::dataplane::sai::L2MC_ENTRY_TYPE_XG; - - default: return lemming::dataplane::sai::L2MC_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_l2mc_entry_type_t convert_sai_l2mc_entry_type_t_to_sai(lemming::dataplane::sai::L2mcEntryType val) { - switch (val) { - - case lemming::dataplane::sai::L2MC_ENTRY_TYPE_SG: return SAI_L2MC_ENTRY_TYPE_SG; - - case lemming::dataplane::sai::L2MC_ENTRY_TYPE_XG: return SAI_L2MC_ENTRY_TYPE_XG; - - default: return SAI_L2MC_ENTRY_TYPE_SG; - } -} - -google::protobuf::RepeatedField convert_list_sai_l2mc_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_l2mc_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_l2mc_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_l2mc_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::L2mcGroupAttr convert_sai_l2mc_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: return lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; - - case SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: return lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_MEMBER_LIST; - - default: return lemming::dataplane::sai::L2MC_GROUP_ATTR_UNSPECIFIED; - } -} -sai_l2mc_group_attr_t convert_sai_l2mc_group_attr_t_to_sai(lemming::dataplane::sai::L2mcGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: return SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; - - case lemming::dataplane::sai::L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: return SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST; - - default: return SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_l2mc_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_l2mc_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_l2mc_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_l2mc_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::L2mcGroupMemberAttr convert_sai_l2mc_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; - - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID; - - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP; - - default: return lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_l2mc_group_member_attr_t convert_sai_l2mc_group_member_attr_t_to_sai(lemming::dataplane::sai::L2mcGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; - - case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID; - - case lemming::dataplane::sai::L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP; - - default: return SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_l2mc_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_l2mc_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_l2mc_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_l2mc_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::LagAttr convert_sai_lag_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_LAG_ATTR_PORT_LIST: return lemming::dataplane::sai::LAG_ATTR_PORT_LIST; - - case SAI_LAG_ATTR_INGRESS_ACL: return lemming::dataplane::sai::LAG_ATTR_INGRESS_ACL; - - case SAI_LAG_ATTR_EGRESS_ACL: return lemming::dataplane::sai::LAG_ATTR_EGRESS_ACL; - - case SAI_LAG_ATTR_PORT_VLAN_ID: return lemming::dataplane::sai::LAG_ATTR_PORT_VLAN_ID; - - case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: return lemming::dataplane::sai::LAG_ATTR_DEFAULT_VLAN_PRIORITY; - - case SAI_LAG_ATTR_DROP_UNTAGGED: return lemming::dataplane::sai::LAG_ATTR_DROP_UNTAGGED; - - case SAI_LAG_ATTR_DROP_TAGGED: return lemming::dataplane::sai::LAG_ATTR_DROP_TAGGED; - - case SAI_LAG_ATTR_TPID: return lemming::dataplane::sai::LAG_ATTR_TPID; - - case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: return lemming::dataplane::sai::LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID; - - case SAI_LAG_ATTR_LABEL: return lemming::dataplane::sai::LAG_ATTR_LABEL; - - case SAI_LAG_ATTR_ARS_OBJECT_ID: return lemming::dataplane::sai::LAG_ATTR_ARS_OBJECT_ID; - - case SAI_LAG_ATTR_ARS_PACKET_DROPS: return lemming::dataplane::sai::LAG_ATTR_ARS_PACKET_DROPS; - - case SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS: return lemming::dataplane::sai::LAG_ATTR_ARS_PORT_REASSIGNMENTS; - - default: return lemming::dataplane::sai::LAG_ATTR_UNSPECIFIED; - } -} -sai_lag_attr_t convert_sai_lag_attr_t_to_sai(lemming::dataplane::sai::LagAttr val) { - switch (val) { - - case lemming::dataplane::sai::LAG_ATTR_PORT_LIST: return SAI_LAG_ATTR_PORT_LIST; - - case lemming::dataplane::sai::LAG_ATTR_INGRESS_ACL: return SAI_LAG_ATTR_INGRESS_ACL; - - case lemming::dataplane::sai::LAG_ATTR_EGRESS_ACL: return SAI_LAG_ATTR_EGRESS_ACL; - - case lemming::dataplane::sai::LAG_ATTR_PORT_VLAN_ID: return SAI_LAG_ATTR_PORT_VLAN_ID; - - case lemming::dataplane::sai::LAG_ATTR_DEFAULT_VLAN_PRIORITY: return SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY; - - case lemming::dataplane::sai::LAG_ATTR_DROP_UNTAGGED: return SAI_LAG_ATTR_DROP_UNTAGGED; - - case lemming::dataplane::sai::LAG_ATTR_DROP_TAGGED: return SAI_LAG_ATTR_DROP_TAGGED; - - case lemming::dataplane::sai::LAG_ATTR_TPID: return SAI_LAG_ATTR_TPID; - - case lemming::dataplane::sai::LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: return SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID; - - case lemming::dataplane::sai::LAG_ATTR_LABEL: return SAI_LAG_ATTR_LABEL; - - case lemming::dataplane::sai::LAG_ATTR_ARS_OBJECT_ID: return SAI_LAG_ATTR_ARS_OBJECT_ID; - - case lemming::dataplane::sai::LAG_ATTR_ARS_PACKET_DROPS: return SAI_LAG_ATTR_ARS_PACKET_DROPS; - - case lemming::dataplane::sai::LAG_ATTR_ARS_PORT_REASSIGNMENTS: return SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS; - - default: return SAI_LAG_ATTR_PORT_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_lag_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_lag_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_lag_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_lag_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::LagMemberAttr convert_sai_lag_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_LAG_MEMBER_ATTR_LAG_ID: return lemming::dataplane::sai::LAG_MEMBER_ATTR_LAG_ID; - - case SAI_LAG_MEMBER_ATTR_PORT_ID: return lemming::dataplane::sai::LAG_MEMBER_ATTR_PORT_ID; - - case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: return lemming::dataplane::sai::LAG_MEMBER_ATTR_EGRESS_DISABLE; - - case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: return lemming::dataplane::sai::LAG_MEMBER_ATTR_INGRESS_DISABLE; - - default: return lemming::dataplane::sai::LAG_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_lag_member_attr_t convert_sai_lag_member_attr_t_to_sai(lemming::dataplane::sai::LagMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::LAG_MEMBER_ATTR_LAG_ID: return SAI_LAG_MEMBER_ATTR_LAG_ID; - - case lemming::dataplane::sai::LAG_MEMBER_ATTR_PORT_ID: return SAI_LAG_MEMBER_ATTR_PORT_ID; - - case lemming::dataplane::sai::LAG_MEMBER_ATTR_EGRESS_DISABLE: return SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE; - - case lemming::dataplane::sai::LAG_MEMBER_ATTR_INGRESS_DISABLE: return SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE; - - default: return SAI_LAG_MEMBER_ATTR_LAG_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_lag_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_lag_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_lag_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_lag_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::LogLevel convert_sai_log_level_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_LOG_LEVEL_DEBUG: return lemming::dataplane::sai::LOG_LEVEL_DEBUG; - - case SAI_LOG_LEVEL_INFO: return lemming::dataplane::sai::LOG_LEVEL_INFO; - - case SAI_LOG_LEVEL_NOTICE: return lemming::dataplane::sai::LOG_LEVEL_NOTICE; - - case SAI_LOG_LEVEL_WARN: return lemming::dataplane::sai::LOG_LEVEL_WARN; - - case SAI_LOG_LEVEL_ERROR: return lemming::dataplane::sai::LOG_LEVEL_ERROR; - - case SAI_LOG_LEVEL_CRITICAL: return lemming::dataplane::sai::LOG_LEVEL_CRITICAL; - - default: return lemming::dataplane::sai::LOG_LEVEL_UNSPECIFIED; - } -} -sai_log_level_t convert_sai_log_level_t_to_sai(lemming::dataplane::sai::LogLevel val) { - switch (val) { - - case lemming::dataplane::sai::LOG_LEVEL_DEBUG: return SAI_LOG_LEVEL_DEBUG; - - case lemming::dataplane::sai::LOG_LEVEL_INFO: return SAI_LOG_LEVEL_INFO; - - case lemming::dataplane::sai::LOG_LEVEL_NOTICE: return SAI_LOG_LEVEL_NOTICE; - - case lemming::dataplane::sai::LOG_LEVEL_WARN: return SAI_LOG_LEVEL_WARN; - - case lemming::dataplane::sai::LOG_LEVEL_ERROR: return SAI_LOG_LEVEL_ERROR; - - case lemming::dataplane::sai::LOG_LEVEL_CRITICAL: return SAI_LOG_LEVEL_CRITICAL; - - default: return SAI_LOG_LEVEL_DEBUG; - } -} - -google::protobuf::RepeatedField convert_list_sai_log_level_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_log_level_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_log_level_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_log_level_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecAttr convert_sai_macsec_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_ATTR_DIRECTION: return lemming::dataplane::sai::MACSEC_ATTR_DIRECTION; - - case SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; - - case SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; - - case SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_SUPPORTED; - - case SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; - - case SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: return lemming::dataplane::sai::MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL; - - case SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: return lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST; - - case SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_PN_32BIT_SUPPORTED; - - case SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_XPN_64BIT_SUPPORTED; - - case SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_GCM_AES128_SUPPORTED; - - case SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_GCM_AES256_SUPPORTED; - - case SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED; - - case SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU: return lemming::dataplane::sai::MACSEC_ATTR_SYSTEM_SIDE_MTU; - - case SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED: return lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_SUPPORTED; - - case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: return lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_ENABLE; - - case SAI_MACSEC_ATTR_CTAG_TPID: return lemming::dataplane::sai::MACSEC_ATTR_CTAG_TPID; - - case SAI_MACSEC_ATTR_STAG_TPID: return lemming::dataplane::sai::MACSEC_ATTR_STAG_TPID; - - case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: return lemming::dataplane::sai::MACSEC_ATTR_MAX_VLAN_TAGS_PARSED; - - case SAI_MACSEC_ATTR_STATS_MODE: return lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE; - - case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: return lemming::dataplane::sai::MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE; - - case SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST: return lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_PORT_LIST; - - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_FLOW; - - case SAI_MACSEC_ATTR_FLOW_LIST: return lemming::dataplane::sai::MACSEC_ATTR_FLOW_LIST; - - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC: return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SC; - - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA: return lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SA; - - case SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: return lemming::dataplane::sai::MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC; - - default: return lemming::dataplane::sai::MACSEC_ATTR_UNSPECIFIED; - } -} -sai_macsec_attr_t convert_sai_macsec_attr_t_to_sai(lemming::dataplane::sai::MacsecAttr val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_ATTR_DIRECTION: return SAI_MACSEC_ATTR_DIRECTION; - - case lemming::dataplane::sai::MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: return SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: return SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: return SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: return SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: return SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL; - - case lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: return SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST; - - case lemming::dataplane::sai::MACSEC_ATTR_PN_32BIT_SUPPORTED: return SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_XPN_64BIT_SUPPORTED: return SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_GCM_AES128_SUPPORTED: return SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_GCM_AES256_SUPPORTED: return SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: return SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_SYSTEM_SIDE_MTU: return SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU; - - case lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_SUPPORTED: return SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED; - - case lemming::dataplane::sai::MACSEC_ATTR_WARM_BOOT_ENABLE: return SAI_MACSEC_ATTR_WARM_BOOT_ENABLE; - - case lemming::dataplane::sai::MACSEC_ATTR_CTAG_TPID: return SAI_MACSEC_ATTR_CTAG_TPID; - - case lemming::dataplane::sai::MACSEC_ATTR_STAG_TPID: return SAI_MACSEC_ATTR_STAG_TPID; - - case lemming::dataplane::sai::MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: return SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED; - - case lemming::dataplane::sai::MACSEC_ATTR_STATS_MODE: return SAI_MACSEC_ATTR_STATS_MODE; - - case lemming::dataplane::sai::MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: return SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE; - - case lemming::dataplane::sai::MACSEC_ATTR_SUPPORTED_PORT_LIST: return SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST; - - case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW; - - case lemming::dataplane::sai::MACSEC_ATTR_FLOW_LIST: return SAI_MACSEC_ATTR_FLOW_LIST; - - case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SC: return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC; - - case lemming::dataplane::sai::MACSEC_ATTR_AVAILABLE_MACSEC_SA: return SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA; - - case lemming::dataplane::sai::MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: return SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC; - - default: return SAI_MACSEC_ATTR_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecCipherSuite convert_sai_macsec_cipher_suite_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_CIPHER_SUITE_GCM_AES_128: return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_128; - - case SAI_MACSEC_CIPHER_SUITE_GCM_AES_256: return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_256; - - case SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_128: return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_128; - - case SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_256: return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_256; - - default: return lemming::dataplane::sai::MACSEC_CIPHER_SUITE_UNSPECIFIED; - } -} -sai_macsec_cipher_suite_t convert_sai_macsec_cipher_suite_t_to_sai(lemming::dataplane::sai::MacsecCipherSuite val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_128: return SAI_MACSEC_CIPHER_SUITE_GCM_AES_128; - - case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_256: return SAI_MACSEC_CIPHER_SUITE_GCM_AES_256; - - case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_128: return SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_128; - - case lemming::dataplane::sai::MACSEC_CIPHER_SUITE_GCM_AES_XPN_256: return SAI_MACSEC_CIPHER_SUITE_GCM_AES_XPN_256; - - default: return SAI_MACSEC_CIPHER_SUITE_GCM_AES_128; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_cipher_suite_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_cipher_suite_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_cipher_suite_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_cipher_suite_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecDirection convert_sai_macsec_direction_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_DIRECTION_EGRESS: return lemming::dataplane::sai::MACSEC_DIRECTION_EGRESS; - - case SAI_MACSEC_DIRECTION_INGRESS: return lemming::dataplane::sai::MACSEC_DIRECTION_INGRESS; - - default: return lemming::dataplane::sai::MACSEC_DIRECTION_UNSPECIFIED; - } -} -sai_macsec_direction_t convert_sai_macsec_direction_t_to_sai(lemming::dataplane::sai::MacsecDirection val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_DIRECTION_EGRESS: return SAI_MACSEC_DIRECTION_EGRESS; - - case lemming::dataplane::sai::MACSEC_DIRECTION_INGRESS: return SAI_MACSEC_DIRECTION_INGRESS; - - default: return SAI_MACSEC_DIRECTION_EGRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_direction_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_direction_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_direction_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecFlowAttr convert_sai_macsec_flow_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: return lemming::dataplane::sai::MACSEC_FLOW_ATTR_MACSEC_DIRECTION; - - case SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: return lemming::dataplane::sai::MACSEC_FLOW_ATTR_ACL_ENTRY_LIST; - - case SAI_MACSEC_FLOW_ATTR_SC_LIST: return lemming::dataplane::sai::MACSEC_FLOW_ATTR_SC_LIST; - - default: return lemming::dataplane::sai::MACSEC_FLOW_ATTR_UNSPECIFIED; - } -} -sai_macsec_flow_attr_t convert_sai_macsec_flow_attr_t_to_sai(lemming::dataplane::sai::MacsecFlowAttr val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_FLOW_ATTR_MACSEC_DIRECTION: return SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION; - - case lemming::dataplane::sai::MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: return SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST; - - case lemming::dataplane::sai::MACSEC_FLOW_ATTR_SC_LIST: return SAI_MACSEC_FLOW_ATTR_SC_LIST; - - default: return SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_flow_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_flow_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_flow_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_flow_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecFlowStat convert_sai_macsec_flow_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_FLOW_STAT_OTHER_ERR: return lemming::dataplane::sai::MACSEC_FLOW_STAT_OTHER_ERR; - - case SAI_MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED; - - case SAI_MACSEC_FLOW_STAT_OCTETS_CONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_CONTROLLED; - - case SAI_MACSEC_FLOW_STAT_OUT_OCTETS_COMMON: return lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_OCTETS_COMMON; - - case SAI_MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED; - - case SAI_MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED; - - case SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED; - - case SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED; - - case SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED; - - case SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED; - - case SAI_MACSEC_FLOW_STAT_CONTROL_PKTS: return lemming::dataplane::sai::MACSEC_FLOW_STAT_CONTROL_PKTS; - - case SAI_MACSEC_FLOW_STAT_PKTS_UNTAGGED: return lemming::dataplane::sai::MACSEC_FLOW_STAT_PKTS_UNTAGGED; - - case SAI_MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS; - - case SAI_MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG: return lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG; - - case SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_TAG: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_TAG; - - case SAI_MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG; - - case SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_SCI: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_SCI; - - case SAI_MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI; - - case SAI_MACSEC_FLOW_STAT_IN_PKTS_OVERRUN: return lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_OVERRUN; - - default: return lemming::dataplane::sai::MACSEC_FLOW_STAT_UNSPECIFIED; - } -} -sai_macsec_flow_stat_t convert_sai_macsec_flow_stat_t_to_sai(lemming::dataplane::sai::MacsecFlowStat val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_OTHER_ERR: return SAI_MACSEC_FLOW_STAT_OTHER_ERR; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED: return SAI_MACSEC_FLOW_STAT_OCTETS_UNCONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_OCTETS_CONTROLLED: return SAI_MACSEC_FLOW_STAT_OCTETS_CONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_OCTETS_COMMON: return SAI_MACSEC_FLOW_STAT_OUT_OCTETS_COMMON; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED: return SAI_MACSEC_FLOW_STAT_UCAST_PKTS_UNCONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED: return SAI_MACSEC_FLOW_STAT_UCAST_PKTS_CONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED: return SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_UNCONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED: return SAI_MACSEC_FLOW_STAT_MULTICAST_PKTS_CONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED: return SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_UNCONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED: return SAI_MACSEC_FLOW_STAT_BROADCAST_PKTS_CONTROLLED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_CONTROL_PKTS: return SAI_MACSEC_FLOW_STAT_CONTROL_PKTS; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_PKTS_UNTAGGED: return SAI_MACSEC_FLOW_STAT_PKTS_UNTAGGED; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS: return SAI_MACSEC_FLOW_STAT_IN_TAGGED_CONTROL_PKTS; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG: return SAI_MACSEC_FLOW_STAT_OUT_PKTS_TOO_LONG; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_TAG: return SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_TAG; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG: return SAI_MACSEC_FLOW_STAT_IN_PKTS_BAD_TAG; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_NO_SCI: return SAI_MACSEC_FLOW_STAT_IN_PKTS_NO_SCI; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI: return SAI_MACSEC_FLOW_STAT_IN_PKTS_UNKNOWN_SCI; - - case lemming::dataplane::sai::MACSEC_FLOW_STAT_IN_PKTS_OVERRUN: return SAI_MACSEC_FLOW_STAT_IN_PKTS_OVERRUN; - - default: return SAI_MACSEC_FLOW_STAT_OTHER_ERR; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_flow_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_flow_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_flow_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_flow_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc convert_sai_macsec_max_secure_associations_per_sc_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO: return lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; - - case SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR: return lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR; - - default: return lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_UNSPECIFIED; - } -} -sai_macsec_max_secure_associations_per_sc_t convert_sai_macsec_max_secure_associations_per_sc_t_to_sai(lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO: return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; - - case lemming::dataplane::sai::MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR: return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_FOUR; - - default: return SAI_MACSEC_MAX_SECURE_ASSOCIATIONS_PER_SC_TWO; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_max_secure_associations_per_sc_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_max_secure_associations_per_sc_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_max_secure_associations_per_sc_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_max_secure_associations_per_sc_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecPortAttr convert_sai_macsec_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: return lemming::dataplane::sai::MACSEC_PORT_ATTR_MACSEC_DIRECTION; - - case SAI_MACSEC_PORT_ATTR_PORT_ID: return lemming::dataplane::sai::MACSEC_PORT_ATTR_PORT_ID; - - case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: return lemming::dataplane::sai::MACSEC_PORT_ATTR_CTAG_ENABLE; - - case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: return lemming::dataplane::sai::MACSEC_PORT_ATTR_STAG_ENABLE; - - case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: return lemming::dataplane::sai::MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; - - default: return lemming::dataplane::sai::MACSEC_PORT_ATTR_UNSPECIFIED; - } -} -sai_macsec_port_attr_t convert_sai_macsec_port_attr_t_to_sai(lemming::dataplane::sai::MacsecPortAttr val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_PORT_ATTR_MACSEC_DIRECTION: return SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION; - - case lemming::dataplane::sai::MACSEC_PORT_ATTR_PORT_ID: return SAI_MACSEC_PORT_ATTR_PORT_ID; - - case lemming::dataplane::sai::MACSEC_PORT_ATTR_CTAG_ENABLE: return SAI_MACSEC_PORT_ATTR_CTAG_ENABLE; - - case lemming::dataplane::sai::MACSEC_PORT_ATTR_STAG_ENABLE: return SAI_MACSEC_PORT_ATTR_STAG_ENABLE; - - case lemming::dataplane::sai::MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: return SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE; - - default: return SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecPortStat convert_sai_macsec_port_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS: return lemming::dataplane::sai::MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; - - case SAI_MACSEC_PORT_STAT_CONTROL_PKTS: return lemming::dataplane::sai::MACSEC_PORT_STAT_CONTROL_PKTS; - - case SAI_MACSEC_PORT_STAT_DATA_PKTS: return lemming::dataplane::sai::MACSEC_PORT_STAT_DATA_PKTS; - - default: return lemming::dataplane::sai::MACSEC_PORT_STAT_UNSPECIFIED; - } -} -sai_macsec_port_stat_t convert_sai_macsec_port_stat_t_to_sai(lemming::dataplane::sai::MacsecPortStat val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS: return SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; - - case lemming::dataplane::sai::MACSEC_PORT_STAT_CONTROL_PKTS: return SAI_MACSEC_PORT_STAT_CONTROL_PKTS; - - case lemming::dataplane::sai::MACSEC_PORT_STAT_DATA_PKTS: return SAI_MACSEC_PORT_STAT_DATA_PKTS; - - default: return SAI_MACSEC_PORT_STAT_PRE_MACSEC_DROP_PKTS; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_port_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_port_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_port_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecSaAttr convert_sai_macsec_sa_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: return lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_DIRECTION; - - case SAI_MACSEC_SA_ATTR_SC_ID: return lemming::dataplane::sai::MACSEC_SA_ATTR_SC_ID; - - case SAI_MACSEC_SA_ATTR_AN: return lemming::dataplane::sai::MACSEC_SA_ATTR_AN; - - case SAI_MACSEC_SA_ATTR_SAK: return lemming::dataplane::sai::MACSEC_SA_ATTR_SAK; - - case SAI_MACSEC_SA_ATTR_SALT: return lemming::dataplane::sai::MACSEC_SA_ATTR_SALT; - - case SAI_MACSEC_SA_ATTR_AUTH_KEY: return lemming::dataplane::sai::MACSEC_SA_ATTR_AUTH_KEY; - - case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: return lemming::dataplane::sai::MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN; - - case SAI_MACSEC_SA_ATTR_CURRENT_XPN: return lemming::dataplane::sai::MACSEC_SA_ATTR_CURRENT_XPN; - - case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: return lemming::dataplane::sai::MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN; - - case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: return lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_SSCI; - - default: return lemming::dataplane::sai::MACSEC_SA_ATTR_UNSPECIFIED; - } -} -sai_macsec_sa_attr_t convert_sai_macsec_sa_attr_t_to_sai(lemming::dataplane::sai::MacsecSaAttr val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_DIRECTION: return SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_SC_ID: return SAI_MACSEC_SA_ATTR_SC_ID; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_AN: return SAI_MACSEC_SA_ATTR_AN; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_SAK: return SAI_MACSEC_SA_ATTR_SAK; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_SALT: return SAI_MACSEC_SA_ATTR_SALT; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_AUTH_KEY: return SAI_MACSEC_SA_ATTR_AUTH_KEY; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: return SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_CURRENT_XPN: return SAI_MACSEC_SA_ATTR_CURRENT_XPN; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: return SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN; - - case lemming::dataplane::sai::MACSEC_SA_ATTR_MACSEC_SSCI: return SAI_MACSEC_SA_ATTR_MACSEC_SSCI; - - default: return SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_sa_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_sa_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_sa_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_sa_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecSaStat convert_sai_macsec_sa_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED: return lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_ENCRYPTED; - - case SAI_MACSEC_SA_STAT_OCTETS_PROTECTED: return lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_PROTECTED; - - case SAI_MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED: return lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED; - - case SAI_MACSEC_SA_STAT_OUT_PKTS_PROTECTED: return lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_PROTECTED; - - case SAI_MACSEC_SA_STAT_IN_PKTS_UNCHECKED: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNCHECKED; - - case SAI_MACSEC_SA_STAT_IN_PKTS_DELAYED: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_DELAYED; - - case SAI_MACSEC_SA_STAT_IN_PKTS_LATE: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_LATE; - - case SAI_MACSEC_SA_STAT_IN_PKTS_INVALID: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_INVALID; - - case SAI_MACSEC_SA_STAT_IN_PKTS_NOT_VALID: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_VALID; - - case SAI_MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA; - - case SAI_MACSEC_SA_STAT_IN_PKTS_UNUSED_SA: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNUSED_SA; - - case SAI_MACSEC_SA_STAT_IN_PKTS_OK: return lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_OK; - - default: return lemming::dataplane::sai::MACSEC_SA_STAT_UNSPECIFIED; - } -} -sai_macsec_sa_stat_t convert_sai_macsec_sa_stat_t_to_sai(lemming::dataplane::sai::MacsecSaStat val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_ENCRYPTED: return SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_OCTETS_PROTECTED: return SAI_MACSEC_SA_STAT_OCTETS_PROTECTED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED: return SAI_MACSEC_SA_STAT_OUT_PKTS_ENCRYPTED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_OUT_PKTS_PROTECTED: return SAI_MACSEC_SA_STAT_OUT_PKTS_PROTECTED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNCHECKED: return SAI_MACSEC_SA_STAT_IN_PKTS_UNCHECKED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_DELAYED: return SAI_MACSEC_SA_STAT_IN_PKTS_DELAYED; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_LATE: return SAI_MACSEC_SA_STAT_IN_PKTS_LATE; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_INVALID: return SAI_MACSEC_SA_STAT_IN_PKTS_INVALID; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_VALID: return SAI_MACSEC_SA_STAT_IN_PKTS_NOT_VALID; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA: return SAI_MACSEC_SA_STAT_IN_PKTS_NOT_USING_SA; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_UNUSED_SA: return SAI_MACSEC_SA_STAT_IN_PKTS_UNUSED_SA; - - case lemming::dataplane::sai::MACSEC_SA_STAT_IN_PKTS_OK: return SAI_MACSEC_SA_STAT_IN_PKTS_OK; - - default: return SAI_MACSEC_SA_STAT_OCTETS_ENCRYPTED; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_sa_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_sa_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_sa_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_sa_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecScAttr convert_sai_macsec_sc_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_DIRECTION; - - case SAI_MACSEC_SC_ATTR_FLOW_ID: return lemming::dataplane::sai::MACSEC_SC_ATTR_FLOW_ID; - - case SAI_MACSEC_SC_ATTR_MACSEC_SCI: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SCI; - - case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE; - - case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET; - - case SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: return lemming::dataplane::sai::MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID; - - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE; - - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW; - - case SAI_MACSEC_SC_ATTR_SA_LIST: return lemming::dataplane::sai::MACSEC_SC_ATTR_SA_LIST; - - case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: return lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE; - - case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: return lemming::dataplane::sai::MACSEC_SC_ATTR_ENCRYPTION_ENABLE; - - default: return lemming::dataplane::sai::MACSEC_SC_ATTR_UNSPECIFIED; - } -} -sai_macsec_sc_attr_t convert_sai_macsec_sc_attr_t_to_sai(lemming::dataplane::sai::MacsecScAttr val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_DIRECTION: return SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_FLOW_ID: return SAI_MACSEC_SC_ATTR_FLOW_ID; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SCI: return SAI_MACSEC_SC_ATTR_MACSEC_SCI; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: return SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: return SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: return SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: return SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: return SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_SA_LIST: return SAI_MACSEC_SC_ATTR_SA_LIST; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: return SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE; - - case lemming::dataplane::sai::MACSEC_SC_ATTR_ENCRYPTION_ENABLE: return SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE; - - default: return SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_sc_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_sc_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_sc_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_sc_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MacsecScStat convert_sai_macsec_sc_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MACSEC_SC_STAT_SA_NOT_IN_USE: return lemming::dataplane::sai::MACSEC_SC_STAT_SA_NOT_IN_USE; - - default: return lemming::dataplane::sai::MACSEC_SC_STAT_UNSPECIFIED; - } -} -sai_macsec_sc_stat_t convert_sai_macsec_sc_stat_t_to_sai(lemming::dataplane::sai::MacsecScStat val) { - switch (val) { - - case lemming::dataplane::sai::MACSEC_SC_STAT_SA_NOT_IN_USE: return SAI_MACSEC_SC_STAT_SA_NOT_IN_USE; - - default: return SAI_MACSEC_SC_STAT_SA_NOT_IN_USE; - } -} - -google::protobuf::RepeatedField convert_list_sai_macsec_sc_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_macsec_sc_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_macsec_sc_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_macsec_sc_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::McastFdbEntryAttr convert_sai_mcast_fdb_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_GROUP_ID; - - case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_PACKET_ACTION; - - case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_META_DATA; - - default: return lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_mcast_fdb_entry_attr_t convert_sai_mcast_fdb_entry_attr_t_to_sai(lemming::dataplane::sai::McastFdbEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_GROUP_ID: return SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID; - - case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: return SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::MCAST_FDB_ENTRY_ATTR_META_DATA: return SAI_MCAST_FDB_ENTRY_ATTR_META_DATA; - - default: return SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_mcast_fdb_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_mcast_fdb_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_mcast_fdb_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_mcast_fdb_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MeterType convert_sai_meter_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_METER_TYPE_PACKETS: return lemming::dataplane::sai::METER_TYPE_PACKETS; - - case SAI_METER_TYPE_BYTES: return lemming::dataplane::sai::METER_TYPE_BYTES; - - case SAI_METER_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::METER_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::METER_TYPE_UNSPECIFIED; - } -} -sai_meter_type_t convert_sai_meter_type_t_to_sai(lemming::dataplane::sai::MeterType val) { - switch (val) { - - case lemming::dataplane::sai::METER_TYPE_PACKETS: return SAI_METER_TYPE_PACKETS; - - case lemming::dataplane::sai::METER_TYPE_BYTES: return SAI_METER_TYPE_BYTES; - - case lemming::dataplane::sai::METER_TYPE_CUSTOM_RANGE_BASE: return SAI_METER_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_METER_TYPE_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_meter_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_meter_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_meter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_meter_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MirrorSessionAttr convert_sai_mirror_session_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MIRROR_SESSION_ATTR_TYPE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TYPE; - - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORT; - - case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TRUNCATE_SIZE; - - case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SAMPLE_RATE; - - case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_CONGESTION_MODE; - - case SAI_MIRROR_SESSION_ATTR_TC: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TC; - - case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_TPID; - - case SAI_MIRROR_SESSION_ATTR_VLAN_ID: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_ID; - - case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_PRI; - - case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_CFI; - - case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_HEADER_VALID; - - case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE; - - case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_IPHDR_VERSION; - - case SAI_MIRROR_SESSION_ATTR_TOS: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TOS; - - case SAI_MIRROR_SESSION_ATTR_TTL: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_TTL; - - case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_IP_ADDRESS; - - case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_IP_ADDRESS; - - case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS; - - case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_MAC_ADDRESS; - - case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE; - - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID; - - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST; - - case SAI_MIRROR_SESSION_ATTR_POLICER: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_POLICER; - - case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_SRC_PORT; - - case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_DST_PORT; - - case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::MIRROR_SESSION_ATTR_UNSPECIFIED; - } -} -sai_mirror_session_attr_t convert_sai_mirror_session_attr_t_to_sai(lemming::dataplane::sai::MirrorSessionAttr val) { - switch (val) { - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TYPE: return SAI_MIRROR_SESSION_ATTR_TYPE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORT: return SAI_MIRROR_SESSION_ATTR_MONITOR_PORT; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TRUNCATE_SIZE: return SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SAMPLE_RATE: return SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_CONGESTION_MODE: return SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TC: return SAI_MIRROR_SESSION_ATTR_TC; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_TPID: return SAI_MIRROR_SESSION_ATTR_VLAN_TPID; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_ID: return SAI_MIRROR_SESSION_ATTR_VLAN_ID; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_PRI: return SAI_MIRROR_SESSION_ATTR_VLAN_PRI; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_CFI: return SAI_MIRROR_SESSION_ATTR_VLAN_CFI; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: return SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: return SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_IPHDR_VERSION: return SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TOS: return SAI_MIRROR_SESSION_ATTR_TOS; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_TTL: return SAI_MIRROR_SESSION_ATTR_TTL; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: return SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_IP_ADDRESS: return SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: return SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: return SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: return SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: return SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_MONITOR_PORTLIST: return SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_POLICER: return SAI_MIRROR_SESSION_ATTR_POLICER; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_SRC_PORT: return SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_UDP_DST_PORT: return SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT; - - case lemming::dataplane::sai::MIRROR_SESSION_ATTR_COUNTER_ID: return SAI_MIRROR_SESSION_ATTR_COUNTER_ID; - - default: return SAI_MIRROR_SESSION_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_mirror_session_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_mirror_session_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_mirror_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_mirror_session_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MirrorSessionCongestionMode convert_sai_mirror_session_congestion_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT: return lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; - - case SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED: return lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_CORRELATED; - - default: return lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_UNSPECIFIED; - } -} -sai_mirror_session_congestion_mode_t convert_sai_mirror_session_congestion_mode_t_to_sai(lemming::dataplane::sai::MirrorSessionCongestionMode val) { - switch (val) { - - case lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT: return SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; - - case lemming::dataplane::sai::MIRROR_SESSION_CONGESTION_MODE_CORRELATED: return SAI_MIRROR_SESSION_CONGESTION_MODE_CORRELATED; - - default: return SAI_MIRROR_SESSION_CONGESTION_MODE_INDEPENDENT; - } -} - -google::protobuf::RepeatedField convert_list_sai_mirror_session_congestion_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_mirror_session_congestion_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_mirror_session_congestion_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_mirror_session_congestion_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MirrorSessionType convert_sai_mirror_session_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MIRROR_SESSION_TYPE_LOCAL: return lemming::dataplane::sai::MIRROR_SESSION_TYPE_LOCAL; - - case SAI_MIRROR_SESSION_TYPE_REMOTE: return lemming::dataplane::sai::MIRROR_SESSION_TYPE_REMOTE; - - case SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE: return lemming::dataplane::sai::MIRROR_SESSION_TYPE_ENHANCED_REMOTE; - - case SAI_MIRROR_SESSION_TYPE_SFLOW: return lemming::dataplane::sai::MIRROR_SESSION_TYPE_SFLOW; - - default: return lemming::dataplane::sai::MIRROR_SESSION_TYPE_UNSPECIFIED; - } -} -sai_mirror_session_type_t convert_sai_mirror_session_type_t_to_sai(lemming::dataplane::sai::MirrorSessionType val) { - switch (val) { - - case lemming::dataplane::sai::MIRROR_SESSION_TYPE_LOCAL: return SAI_MIRROR_SESSION_TYPE_LOCAL; - - case lemming::dataplane::sai::MIRROR_SESSION_TYPE_REMOTE: return SAI_MIRROR_SESSION_TYPE_REMOTE; - - case lemming::dataplane::sai::MIRROR_SESSION_TYPE_ENHANCED_REMOTE: return SAI_MIRROR_SESSION_TYPE_ENHANCED_REMOTE; - - case lemming::dataplane::sai::MIRROR_SESSION_TYPE_SFLOW: return SAI_MIRROR_SESSION_TYPE_SFLOW; - - default: return SAI_MIRROR_SESSION_TYPE_LOCAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_mirror_session_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_mirror_session_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_mirror_session_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_mirror_session_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MyMacAttr convert_sai_my_mac_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MY_MAC_ATTR_PRIORITY: return lemming::dataplane::sai::MY_MAC_ATTR_PRIORITY; - - case SAI_MY_MAC_ATTR_PORT_ID: return lemming::dataplane::sai::MY_MAC_ATTR_PORT_ID; - - case SAI_MY_MAC_ATTR_VLAN_ID: return lemming::dataplane::sai::MY_MAC_ATTR_VLAN_ID; - - case SAI_MY_MAC_ATTR_MAC_ADDRESS: return lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS; - - case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: return lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS_MASK; - - default: return lemming::dataplane::sai::MY_MAC_ATTR_UNSPECIFIED; - } -} -sai_my_mac_attr_t convert_sai_my_mac_attr_t_to_sai(lemming::dataplane::sai::MyMacAttr val) { - switch (val) { - - case lemming::dataplane::sai::MY_MAC_ATTR_PRIORITY: return SAI_MY_MAC_ATTR_PRIORITY; - - case lemming::dataplane::sai::MY_MAC_ATTR_PORT_ID: return SAI_MY_MAC_ATTR_PORT_ID; - - case lemming::dataplane::sai::MY_MAC_ATTR_VLAN_ID: return SAI_MY_MAC_ATTR_VLAN_ID; - - case lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS: return SAI_MY_MAC_ATTR_MAC_ADDRESS; - - case lemming::dataplane::sai::MY_MAC_ATTR_MAC_ADDRESS_MASK: return SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK; - - default: return SAI_MY_MAC_ATTR_PRIORITY; - } -} - -google::protobuf::RepeatedField convert_list_sai_my_mac_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_my_mac_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_my_mac_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_my_mac_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MySidEntryAttr convert_sai_my_sid_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; - - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR; - - case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_PACKET_ACTION; - - case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TRAP_PRIORITY; - - case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_NEXT_HOP_ID; - - case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TUNNEL_ID; - - case SAI_MY_SID_ENTRY_ATTR_VRF: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_VRF; - - case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_COUNTER_ID; - - default: return lemming::dataplane::sai::MY_SID_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_my_sid_entry_attr_t convert_sai_my_sid_entry_attr_t_to_sai(lemming::dataplane::sai::MySidEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_PACKET_ACTION: return SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TRAP_PRIORITY: return SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_NEXT_HOP_ID: return SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_TUNNEL_ID: return SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_VRF: return SAI_MY_SID_ENTRY_ATTR_VRF; - - case lemming::dataplane::sai::MY_SID_ENTRY_ATTR_COUNTER_ID: return SAI_MY_SID_ENTRY_ATTR_COUNTER_ID; - - default: return SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR; - } -} - -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_my_sid_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_my_sid_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_my_sid_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD; - - default: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_UNSPECIFIED; - } -} -sai_my_sid_entry_endpoint_behavior_flavor_t convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor val) { - switch (val) { - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USP; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_USD_AND_USP; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USD; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_PSP_AND_USP_AND_USD; - - default: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_FLAVOR_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::MySidEntryEndpointBehavior convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START; - - case SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END; - - default: return lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UNSPECIFIED; - } -} -sai_my_sid_entry_endpoint_behavior_t convert_sai_my_sid_entry_endpoint_behavior_t_to_sai(lemming::dataplane::sai::MySidEntryEndpointBehavior val) { - switch (val) { - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_X; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_T; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX6; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DX4; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT6; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT4; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_DT46; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_ENCAPS_RED; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_B6_INSERT_RED; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UN; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_UA; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_START; - - case lemming::dataplane::sai::MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_CUSTOM_RANGE_END; - - default: return SAI_MY_SID_ENTRY_ENDPOINT_BEHAVIOR_E; - } -} - -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_my_sid_entry_endpoint_behavior_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_my_sid_entry_endpoint_behavior_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NatEntryAttr convert_sai_nat_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NAT_ENTRY_ATTR_NAT_TYPE: return lemming::dataplane::sai::NAT_ENTRY_ATTR_NAT_TYPE; - - case SAI_NAT_ENTRY_ATTR_SRC_IP: return lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP; - - case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: return lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP_MASK; - - case SAI_NAT_ENTRY_ATTR_VR_ID: return lemming::dataplane::sai::NAT_ENTRY_ATTR_VR_ID; - - case SAI_NAT_ENTRY_ATTR_DST_IP: return lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP; - - case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: return lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP_MASK; - - case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_SRC_PORT; - - case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_DST_PORT; - - case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT; - - case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_PACKET_COUNT; - - case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT; - - case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_BYTE_COUNT; - - case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: return lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT_COR; - - case SAI_NAT_ENTRY_ATTR_HIT_BIT: return lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT; - - case SAI_NAT_ENTRY_ATTR_AGING_TIME: return lemming::dataplane::sai::NAT_ENTRY_ATTR_AGING_TIME; - - default: return lemming::dataplane::sai::NAT_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_nat_entry_attr_t convert_sai_nat_entry_attr_t_to_sai(lemming::dataplane::sai::NatEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_NAT_TYPE: return SAI_NAT_ENTRY_ATTR_NAT_TYPE; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP: return SAI_NAT_ENTRY_ATTR_SRC_IP; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_SRC_IP_MASK: return SAI_NAT_ENTRY_ATTR_SRC_IP_MASK; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_VR_ID: return SAI_NAT_ENTRY_ATTR_VR_ID; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP: return SAI_NAT_ENTRY_ATTR_DST_IP; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_DST_IP_MASK: return SAI_NAT_ENTRY_ATTR_DST_IP_MASK; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_SRC_PORT: return SAI_NAT_ENTRY_ATTR_L4_SRC_PORT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_L4_DST_PORT: return SAI_NAT_ENTRY_ATTR_L4_DST_PORT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: return SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_PACKET_COUNT: return SAI_NAT_ENTRY_ATTR_PACKET_COUNT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: return SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_BYTE_COUNT: return SAI_NAT_ENTRY_ATTR_BYTE_COUNT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT_COR: return SAI_NAT_ENTRY_ATTR_HIT_BIT_COR; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_HIT_BIT: return SAI_NAT_ENTRY_ATTR_HIT_BIT; - - case lemming::dataplane::sai::NAT_ENTRY_ATTR_AGING_TIME: return SAI_NAT_ENTRY_ATTR_AGING_TIME; - - default: return SAI_NAT_ENTRY_ATTR_NAT_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_nat_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_nat_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_nat_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_nat_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NatEvent convert_sai_nat_event_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NAT_EVENT_NONE: return lemming::dataplane::sai::NAT_EVENT_NONE; - - case SAI_NAT_EVENT_AGED: return lemming::dataplane::sai::NAT_EVENT_AGED; - - default: return lemming::dataplane::sai::NAT_EVENT_UNSPECIFIED; - } -} -sai_nat_event_t convert_sai_nat_event_t_to_sai(lemming::dataplane::sai::NatEvent val) { - switch (val) { - - case lemming::dataplane::sai::NAT_EVENT_NONE: return SAI_NAT_EVENT_NONE; - - case lemming::dataplane::sai::NAT_EVENT_AGED: return SAI_NAT_EVENT_AGED; - - default: return SAI_NAT_EVENT_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_nat_event_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_nat_event_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_nat_event_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_nat_event_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NatType convert_sai_nat_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NAT_TYPE_NONE: return lemming::dataplane::sai::NAT_TYPE_NONE; - - case SAI_NAT_TYPE_SOURCE_NAT: return lemming::dataplane::sai::NAT_TYPE_SOURCE_NAT; - - case SAI_NAT_TYPE_DESTINATION_NAT: return lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT; - - case SAI_NAT_TYPE_DOUBLE_NAT: return lemming::dataplane::sai::NAT_TYPE_DOUBLE_NAT; - - case SAI_NAT_TYPE_DESTINATION_NAT_POOL: return lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT_POOL; - - default: return lemming::dataplane::sai::NAT_TYPE_UNSPECIFIED; - } -} -sai_nat_type_t convert_sai_nat_type_t_to_sai(lemming::dataplane::sai::NatType val) { - switch (val) { - - case lemming::dataplane::sai::NAT_TYPE_NONE: return SAI_NAT_TYPE_NONE; - - case lemming::dataplane::sai::NAT_TYPE_SOURCE_NAT: return SAI_NAT_TYPE_SOURCE_NAT; - - case lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT: return SAI_NAT_TYPE_DESTINATION_NAT; - - case lemming::dataplane::sai::NAT_TYPE_DOUBLE_NAT: return SAI_NAT_TYPE_DOUBLE_NAT; - - case lemming::dataplane::sai::NAT_TYPE_DESTINATION_NAT_POOL: return SAI_NAT_TYPE_DESTINATION_NAT_POOL; - - default: return SAI_NAT_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_nat_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_nat_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_nat_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_nat_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NatZoneCounterAttr convert_sai_nat_zone_counter_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_NAT_TYPE; - - case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ZONE_ID; - - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD; - - case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT; - - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED; - - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT; - - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS; - - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT; - - default: return lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_UNSPECIFIED; - } -} -sai_nat_zone_counter_attr_t convert_sai_nat_zone_counter_attr_t_to_sai(lemming::dataplane::sai::NatZoneCounterAttr val) { - switch (val) { - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_NAT_TYPE: return SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ZONE_ID: return SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: return SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: return SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: return SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS; - - case lemming::dataplane::sai::NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: return SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT; - - default: return SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_nat_zone_counter_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_nat_zone_counter_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_nat_zone_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_nat_zone_counter_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NativeHashField convert_sai_native_hash_field_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NATIVE_HASH_FIELD_SRC_IP: return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IP; - - case SAI_NATIVE_HASH_FIELD_DST_IP: return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IP; - - case SAI_NATIVE_HASH_FIELD_INNER_SRC_IP: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IP; - - case SAI_NATIVE_HASH_FIELD_INNER_DST_IP: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IP; - - case SAI_NATIVE_HASH_FIELD_SRC_IPV4: return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV4; - - case SAI_NATIVE_HASH_FIELD_DST_IPV4: return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV4; - - case SAI_NATIVE_HASH_FIELD_SRC_IPV6: return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV6; - - case SAI_NATIVE_HASH_FIELD_DST_IPV6: return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV6; - - case SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV4; - - case SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV4; - - case SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV6; - - case SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV6; - - case SAI_NATIVE_HASH_FIELD_VLAN_ID: return lemming::dataplane::sai::NATIVE_HASH_FIELD_VLAN_ID; - - case SAI_NATIVE_HASH_FIELD_IP_PROTOCOL: return lemming::dataplane::sai::NATIVE_HASH_FIELD_IP_PROTOCOL; - - case SAI_NATIVE_HASH_FIELD_ETHERTYPE: return lemming::dataplane::sai::NATIVE_HASH_FIELD_ETHERTYPE; - - case SAI_NATIVE_HASH_FIELD_L4_SRC_PORT: return lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_SRC_PORT; - - case SAI_NATIVE_HASH_FIELD_L4_DST_PORT: return lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_DST_PORT; - - case SAI_NATIVE_HASH_FIELD_SRC_MAC: return lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_MAC; - - case SAI_NATIVE_HASH_FIELD_DST_MAC: return lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_MAC; - - case SAI_NATIVE_HASH_FIELD_IN_PORT: return lemming::dataplane::sai::NATIVE_HASH_FIELD_IN_PORT; - - case SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_IP_PROTOCOL; - - case SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_ETHERTYPE; - - case SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_SRC_PORT; - - case SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_DST_PORT; - - case SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_MAC; - - case SAI_NATIVE_HASH_FIELD_INNER_DST_MAC: return lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_MAC; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_ALL; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_0; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_1; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_2; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_3; - - case SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4: return lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_4; - - case SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL: return lemming::dataplane::sai::NATIVE_HASH_FIELD_IPV6_FLOW_LABEL; - - case SAI_NATIVE_HASH_FIELD_NONE: return lemming::dataplane::sai::NATIVE_HASH_FIELD_NONE; - - default: return lemming::dataplane::sai::NATIVE_HASH_FIELD_UNSPECIFIED; - } -} -sai_native_hash_field_t convert_sai_native_hash_field_t_to_sai(lemming::dataplane::sai::NativeHashField val) { - switch (val) { - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IP: return SAI_NATIVE_HASH_FIELD_SRC_IP; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IP: return SAI_NATIVE_HASH_FIELD_DST_IP; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IP: return SAI_NATIVE_HASH_FIELD_INNER_SRC_IP; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IP: return SAI_NATIVE_HASH_FIELD_INNER_DST_IP; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV4: return SAI_NATIVE_HASH_FIELD_SRC_IPV4; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV4: return SAI_NATIVE_HASH_FIELD_DST_IPV4; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_IPV6: return SAI_NATIVE_HASH_FIELD_SRC_IPV6; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_IPV6: return SAI_NATIVE_HASH_FIELD_DST_IPV6; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV4: return SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV4; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV4: return SAI_NATIVE_HASH_FIELD_INNER_DST_IPV4; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_IPV6: return SAI_NATIVE_HASH_FIELD_INNER_SRC_IPV6; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_IPV6: return SAI_NATIVE_HASH_FIELD_INNER_DST_IPV6; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_VLAN_ID: return SAI_NATIVE_HASH_FIELD_VLAN_ID; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_IP_PROTOCOL: return SAI_NATIVE_HASH_FIELD_IP_PROTOCOL; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_ETHERTYPE: return SAI_NATIVE_HASH_FIELD_ETHERTYPE; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_SRC_PORT: return SAI_NATIVE_HASH_FIELD_L4_SRC_PORT; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_L4_DST_PORT: return SAI_NATIVE_HASH_FIELD_L4_DST_PORT; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_SRC_MAC: return SAI_NATIVE_HASH_FIELD_SRC_MAC; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_DST_MAC: return SAI_NATIVE_HASH_FIELD_DST_MAC; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_IN_PORT: return SAI_NATIVE_HASH_FIELD_IN_PORT; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_IP_PROTOCOL: return SAI_NATIVE_HASH_FIELD_INNER_IP_PROTOCOL; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_ETHERTYPE: return SAI_NATIVE_HASH_FIELD_INNER_ETHERTYPE; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_SRC_PORT: return SAI_NATIVE_HASH_FIELD_INNER_L4_SRC_PORT; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_L4_DST_PORT: return SAI_NATIVE_HASH_FIELD_INNER_L4_DST_PORT; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_SRC_MAC: return SAI_NATIVE_HASH_FIELD_INNER_SRC_MAC; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_INNER_DST_MAC: return SAI_NATIVE_HASH_FIELD_INNER_DST_MAC; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_ALL: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_ALL; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_0: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_0; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_1: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_1; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_2: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_2; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_3: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_3; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_MPLS_LABEL_4: return SAI_NATIVE_HASH_FIELD_MPLS_LABEL_4; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_IPV6_FLOW_LABEL: return SAI_NATIVE_HASH_FIELD_IPV6_FLOW_LABEL; - - case lemming::dataplane::sai::NATIVE_HASH_FIELD_NONE: return SAI_NATIVE_HASH_FIELD_NONE; - - default: return SAI_NATIVE_HASH_FIELD_SRC_IP; - } -} - -google::protobuf::RepeatedField convert_list_sai_native_hash_field_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_native_hash_field_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_native_hash_field_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_native_hash_field_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NeighborEntryAttr convert_sai_neighbor_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; - - case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_PACKET_ACTION; - - case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID; - - case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE; - - case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_META_DATA; - - case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_COUNTER_ID; - - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX; - - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX; - - case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IS_LOCAL; - - case SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY; - - default: return lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_neighbor_entry_attr_t convert_sai_neighbor_entry_attr_t_to_sai(lemming::dataplane::sai::NeighborEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: return SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: return SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: return SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: return SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_META_DATA: return SAI_NEIGHBOR_ENTRY_ATTR_META_DATA; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_COUNTER_ID: return SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: return SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: return SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IS_LOCAL: return SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL; - - case lemming::dataplane::sai::NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: return SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY; - - default: return SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_neighbor_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_neighbor_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_neighbor_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_neighbor_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopAttr convert_sai_next_hop_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_ATTR_TYPE: return lemming::dataplane::sai::NEXT_HOP_ATTR_TYPE; - - case SAI_NEXT_HOP_ATTR_IP: return lemming::dataplane::sai::NEXT_HOP_ATTR_IP; - - case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: return lemming::dataplane::sai::NEXT_HOP_ATTR_ROUTER_INTERFACE_ID; - - case SAI_NEXT_HOP_ATTR_TUNNEL_ID: return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_ID; - - case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_VNI; - - case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: return lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_MAC; - - case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: return lemming::dataplane::sai::NEXT_HOP_ATTR_SRV6_SIDLIST_ID; - - case SAI_NEXT_HOP_ATTR_LABELSTACK: return lemming::dataplane::sai::NEXT_HOP_ATTR_LABELSTACK; - - case SAI_NEXT_HOP_ATTR_COUNTER_ID: return lemming::dataplane::sai::NEXT_HOP_ATTR_COUNTER_ID; - - case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL; - - case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TYPE; - - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_MODE; - - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_VALUE; - - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_MODE; - - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: return lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_VALUE; - - case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return lemming::dataplane::sai::NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE; - - case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE; - - case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: return lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE; - - default: return lemming::dataplane::sai::NEXT_HOP_ATTR_UNSPECIFIED; - } -} -sai_next_hop_attr_t convert_sai_next_hop_attr_t_to_sai(lemming::dataplane::sai::NextHopAttr val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_ATTR_TYPE: return SAI_NEXT_HOP_ATTR_TYPE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_IP: return SAI_NEXT_HOP_ATTR_IP; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: return SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_ID: return SAI_NEXT_HOP_ATTR_TUNNEL_ID; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_VNI: return SAI_NEXT_HOP_ATTR_TUNNEL_VNI; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_TUNNEL_MAC: return SAI_NEXT_HOP_ATTR_TUNNEL_MAC; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_SRV6_SIDLIST_ID: return SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_LABELSTACK: return SAI_NEXT_HOP_ATTR_LABELSTACK; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_COUNTER_ID: return SAI_NEXT_HOP_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: return SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TYPE: return SAI_NEXT_HOP_ATTR_OUTSEG_TYPE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_MODE: return SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: return SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_MODE: return SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: return SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: return SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: return SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE; - - case lemming::dataplane::sai::NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: return SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE; - - default: return SAI_NEXT_HOP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupAttr convert_sai_next_hop_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST; - - case SAI_NEXT_HOP_GROUP_ATTR_TYPE: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_TYPE; - - case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER; - - case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_COUNTER_ID; - - case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE; - - case SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_REAL_SIZE; - - case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SELECTION_MAP; - - case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP; - - case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID; - - case SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS; - - case SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS; - - case SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS; - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST; - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST; - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_UNSPECIFIED; - } -} -sai_next_hop_group_attr_t convert_sai_next_hop_group_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_TYPE: return SAI_NEXT_HOP_GROUP_ATTR_TYPE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: return SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_COUNTER_ID: return SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: return SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_REAL_SIZE: return SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_SELECTION_MAP: return SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: return SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: return SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: return SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: return SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: return SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST; - - default: return SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupMapAttr convert_sai_next_hop_group_map_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_TYPE; - - case SAI_NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST: return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_UNSPECIFIED; - } -} -sai_next_hop_group_map_attr_t convert_sai_next_hop_group_map_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupMapAttr val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_TYPE: return SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST: return SAI_NEXT_HOP_GROUP_MAP_ATTR_MAP_TO_VALUE_LIST; - - default: return SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_map_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_map_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_map_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupMapType convert_sai_next_hop_group_map_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX: return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_TYPE_UNSPECIFIED; - } -} -sai_next_hop_group_map_type_t convert_sai_next_hop_group_map_type_t_to_sai(lemming::dataplane::sai::NextHopGroupMapType val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX: return SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; - - default: return SAI_NEXT_HOP_GROUP_MAP_TYPE_FORWARDING_CLASS_TO_INDEX; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_map_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_map_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_map_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupMemberAttr convert_sai_next_hop_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_INDEX; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID; - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_next_hop_group_member_attr_t convert_sai_next_hop_group_member_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH; - - default: return SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupMemberConfiguredRole convert_sai_next_hop_group_member_configured_role_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; - - case SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_UNSPECIFIED; - } -} -sai_next_hop_group_member_configured_role_t convert_sai_next_hop_group_member_configured_role_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberConfiguredRole val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY: return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY: return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_STANDBY; - - default: return SAI_NEXT_HOP_GROUP_MEMBER_CONFIGURED_ROLE_PRIMARY; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_configured_role_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_member_configured_role_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_member_configured_role_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_member_configured_role_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupMemberObservedRole convert_sai_next_hop_group_member_observed_role_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; - - case SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_UNSPECIFIED; - } -} -sai_next_hop_group_member_observed_role_t convert_sai_next_hop_group_member_observed_role_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberObservedRole val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE: return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE: return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_INACTIVE; - - default: return SAI_NEXT_HOP_GROUP_MEMBER_OBSERVED_ROLE_ACTIVE; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_observed_role_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_member_observed_role_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_member_observed_role_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_member_observed_role_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopGroupType convert_sai_next_hop_group_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; - - case SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP; - - case SAI_NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP; - - case SAI_NEXT_HOP_GROUP_TYPE_PROTECTION: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_PROTECTION; - - case SAI_NEXT_HOP_GROUP_TYPE_CLASS_BASED: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_CLASS_BASED; - - case SAI_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS; - - default: return lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_UNSPECIFIED; - } -} -sai_next_hop_group_type_t convert_sai_next_hop_group_type_t_to_sai(lemming::dataplane::sai::NextHopGroupType val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP: return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP: return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP: return SAI_NEXT_HOP_GROUP_TYPE_FINE_GRAIN_ECMP; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_PROTECTION: return SAI_NEXT_HOP_GROUP_TYPE_PROTECTION; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_CLASS_BASED: return SAI_NEXT_HOP_GROUP_TYPE_CLASS_BASED; - - case lemming::dataplane::sai::NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS: return SAI_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS; - - default: return SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_group_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_group_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_group_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::NextHopType convert_sai_next_hop_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_NEXT_HOP_TYPE_IP: return lemming::dataplane::sai::NEXT_HOP_TYPE_IP; - - case SAI_NEXT_HOP_TYPE_MPLS: return lemming::dataplane::sai::NEXT_HOP_TYPE_MPLS; - - case SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP: return lemming::dataplane::sai::NEXT_HOP_TYPE_TUNNEL_ENCAP; - - case SAI_NEXT_HOP_TYPE_SRV6_SIDLIST: return lemming::dataplane::sai::NEXT_HOP_TYPE_SRV6_SIDLIST; - - case SAI_NEXT_HOP_TYPE_IPMC: return lemming::dataplane::sai::NEXT_HOP_TYPE_IPMC; - - default: return lemming::dataplane::sai::NEXT_HOP_TYPE_UNSPECIFIED; - } -} -sai_next_hop_type_t convert_sai_next_hop_type_t_to_sai(lemming::dataplane::sai::NextHopType val) { - switch (val) { - - case lemming::dataplane::sai::NEXT_HOP_TYPE_IP: return SAI_NEXT_HOP_TYPE_IP; - - case lemming::dataplane::sai::NEXT_HOP_TYPE_MPLS: return SAI_NEXT_HOP_TYPE_MPLS; - - case lemming::dataplane::sai::NEXT_HOP_TYPE_TUNNEL_ENCAP: return SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP; - - case lemming::dataplane::sai::NEXT_HOP_TYPE_SRV6_SIDLIST: return SAI_NEXT_HOP_TYPE_SRV6_SIDLIST; - - case lemming::dataplane::sai::NEXT_HOP_TYPE_IPMC: return SAI_NEXT_HOP_TYPE_IPMC; - - default: return SAI_NEXT_HOP_TYPE_IP; - } -} - -google::protobuf::RepeatedField convert_list_sai_next_hop_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_next_hop_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_next_hop_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_next_hop_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::ObjectStage convert_sai_object_stage_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OBJECT_STAGE_BOTH: return lemming::dataplane::sai::OBJECT_STAGE_BOTH; - - case SAI_OBJECT_STAGE_INGRESS: return lemming::dataplane::sai::OBJECT_STAGE_INGRESS; - - case SAI_OBJECT_STAGE_EGRESS: return lemming::dataplane::sai::OBJECT_STAGE_EGRESS; - - default: return lemming::dataplane::sai::OBJECT_STAGE_UNSPECIFIED; - } -} -sai_object_stage_t convert_sai_object_stage_t_to_sai(lemming::dataplane::sai::ObjectStage val) { - switch (val) { - - case lemming::dataplane::sai::OBJECT_STAGE_BOTH: return SAI_OBJECT_STAGE_BOTH; - - case lemming::dataplane::sai::OBJECT_STAGE_INGRESS: return SAI_OBJECT_STAGE_INGRESS; - - case lemming::dataplane::sai::OBJECT_STAGE_EGRESS: return SAI_OBJECT_STAGE_EGRESS; - - default: return SAI_OBJECT_STAGE_BOTH; - } -} - -google::protobuf::RepeatedField convert_list_sai_object_stage_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_object_stage_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_object_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_object_stage_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::ObjectTypeExtensions convert_sai_object_type_extensions_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START: return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_START; - - case SAI_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY; - - case SAI_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY; - - case SAI_OBJECT_TYPE_DASH_ACL_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_GROUP; - - case SAI_OBJECT_TYPE_DASH_ACL_RULE: return lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_RULE; - - case SAI_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY; - - case SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY; - - case SAI_OBJECT_TYPE_ENI: return lemming::dataplane::sai::OBJECT_TYPE_ENI; - - case SAI_OBJECT_TYPE_INBOUND_ROUTING_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_INBOUND_ROUTING_ENTRY; - - case SAI_OBJECT_TYPE_METER_BUCKET: return lemming::dataplane::sai::OBJECT_TYPE_METER_BUCKET; - - case SAI_OBJECT_TYPE_METER_POLICY: return lemming::dataplane::sai::OBJECT_TYPE_METER_POLICY; - - case SAI_OBJECT_TYPE_METER_RULE: return lemming::dataplane::sai::OBJECT_TYPE_METER_RULE; - - case SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY; - - case SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY; - - case SAI_OBJECT_TYPE_VNET: return lemming::dataplane::sai::OBJECT_TYPE_VNET; - - case SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_PA_VALIDATION_ENTRY; - - case SAI_OBJECT_TYPE_VIP_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_VIP_ENTRY; - - case SAI_OBJECT_TYPE_EXTENSIONS_RANGE_END: return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_END; - - default: return lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_UNSPECIFIED; - } -} -sai_object_type_extensions_t convert_sai_object_type_extensions_t_to_sai(lemming::dataplane::sai::ObjectTypeExtensions val) { - switch (val) { - - case lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_START: return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START; - - case lemming::dataplane::sai::OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY: return SAI_OBJECT_TYPE_TABLE_BITMAP_ROUTER_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY: return SAI_OBJECT_TYPE_TABLE_META_TUNNEL_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_GROUP: return SAI_OBJECT_TYPE_DASH_ACL_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_DASH_ACL_RULE: return SAI_OBJECT_TYPE_DASH_ACL_RULE; - - case lemming::dataplane::sai::OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY: return SAI_OBJECT_TYPE_DIRECTION_LOOKUP_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY: return SAI_OBJECT_TYPE_ENI_ETHER_ADDRESS_MAP_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_ENI: return SAI_OBJECT_TYPE_ENI; - - case lemming::dataplane::sai::OBJECT_TYPE_INBOUND_ROUTING_ENTRY: return SAI_OBJECT_TYPE_INBOUND_ROUTING_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_METER_BUCKET: return SAI_OBJECT_TYPE_METER_BUCKET; - - case lemming::dataplane::sai::OBJECT_TYPE_METER_POLICY: return SAI_OBJECT_TYPE_METER_POLICY; - - case lemming::dataplane::sai::OBJECT_TYPE_METER_RULE: return SAI_OBJECT_TYPE_METER_RULE; - - case lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY: return SAI_OBJECT_TYPE_OUTBOUND_CA_TO_PA_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY: return SAI_OBJECT_TYPE_OUTBOUND_ROUTING_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_VNET: return SAI_OBJECT_TYPE_VNET; - - case lemming::dataplane::sai::OBJECT_TYPE_PA_VALIDATION_ENTRY: return SAI_OBJECT_TYPE_PA_VALIDATION_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_VIP_ENTRY: return SAI_OBJECT_TYPE_VIP_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_EXTENSIONS_RANGE_END: return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_END; - - default: return SAI_OBJECT_TYPE_EXTENSIONS_RANGE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_object_type_extensions_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_object_type_extensions_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_object_type_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_object_type_extensions_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::ObjectType convert_sai_object_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OBJECT_TYPE_NULL: return lemming::dataplane::sai::OBJECT_TYPE_NULL; - - case SAI_OBJECT_TYPE_PORT: return lemming::dataplane::sai::OBJECT_TYPE_PORT; - - case SAI_OBJECT_TYPE_LAG: return lemming::dataplane::sai::OBJECT_TYPE_LAG; - - case SAI_OBJECT_TYPE_VIRTUAL_ROUTER: return lemming::dataplane::sai::OBJECT_TYPE_VIRTUAL_ROUTER; - - case SAI_OBJECT_TYPE_NEXT_HOP: return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP; - - case SAI_OBJECT_TYPE_NEXT_HOP_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP; - - case SAI_OBJECT_TYPE_ROUTER_INTERFACE: return lemming::dataplane::sai::OBJECT_TYPE_ROUTER_INTERFACE; - - case SAI_OBJECT_TYPE_ACL_TABLE: return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE; - - case SAI_OBJECT_TYPE_ACL_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_ACL_ENTRY; - - case SAI_OBJECT_TYPE_ACL_COUNTER: return lemming::dataplane::sai::OBJECT_TYPE_ACL_COUNTER; - - case SAI_OBJECT_TYPE_ACL_RANGE: return lemming::dataplane::sai::OBJECT_TYPE_ACL_RANGE; - - case SAI_OBJECT_TYPE_ACL_TABLE_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP; - - case SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_HOSTIF: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF; - - case SAI_OBJECT_TYPE_MIRROR_SESSION: return lemming::dataplane::sai::OBJECT_TYPE_MIRROR_SESSION; - - case SAI_OBJECT_TYPE_SAMPLEPACKET: return lemming::dataplane::sai::OBJECT_TYPE_SAMPLEPACKET; - - case SAI_OBJECT_TYPE_STP: return lemming::dataplane::sai::OBJECT_TYPE_STP; - - case SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP_GROUP; - - case SAI_OBJECT_TYPE_POLICER: return lemming::dataplane::sai::OBJECT_TYPE_POLICER; - - case SAI_OBJECT_TYPE_WRED: return lemming::dataplane::sai::OBJECT_TYPE_WRED; - - case SAI_OBJECT_TYPE_QOS_MAP: return lemming::dataplane::sai::OBJECT_TYPE_QOS_MAP; - - case SAI_OBJECT_TYPE_QUEUE: return lemming::dataplane::sai::OBJECT_TYPE_QUEUE; - - case SAI_OBJECT_TYPE_SCHEDULER: return lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER; - - case SAI_OBJECT_TYPE_SCHEDULER_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER_GROUP; - - case SAI_OBJECT_TYPE_BUFFER_POOL: return lemming::dataplane::sai::OBJECT_TYPE_BUFFER_POOL; - - case SAI_OBJECT_TYPE_BUFFER_PROFILE: return lemming::dataplane::sai::OBJECT_TYPE_BUFFER_PROFILE; - - case SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_INGRESS_PRIORITY_GROUP; - - case SAI_OBJECT_TYPE_LAG_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_LAG_MEMBER; - - case SAI_OBJECT_TYPE_HASH: return lemming::dataplane::sai::OBJECT_TYPE_HASH; - - case SAI_OBJECT_TYPE_UDF: return lemming::dataplane::sai::OBJECT_TYPE_UDF; - - case SAI_OBJECT_TYPE_UDF_MATCH: return lemming::dataplane::sai::OBJECT_TYPE_UDF_MATCH; - - case SAI_OBJECT_TYPE_UDF_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_UDF_GROUP; - - case SAI_OBJECT_TYPE_FDB_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_FDB_ENTRY; - - case SAI_OBJECT_TYPE_SWITCH: return lemming::dataplane::sai::OBJECT_TYPE_SWITCH; - - case SAI_OBJECT_TYPE_HOSTIF_TRAP: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP; - - case SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TABLE_ENTRY; - - case SAI_OBJECT_TYPE_NEIGHBOR_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_NEIGHBOR_ENTRY; - - case SAI_OBJECT_TYPE_ROUTE_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_ROUTE_ENTRY; - - case SAI_OBJECT_TYPE_VLAN: return lemming::dataplane::sai::OBJECT_TYPE_VLAN; - - case SAI_OBJECT_TYPE_VLAN_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_VLAN_MEMBER; - - case SAI_OBJECT_TYPE_HOSTIF_PACKET: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_PACKET; - - case SAI_OBJECT_TYPE_TUNNEL_MAP: return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP; - - case SAI_OBJECT_TYPE_TUNNEL: return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL; - - case SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; - - case SAI_OBJECT_TYPE_FDB_FLUSH: return lemming::dataplane::sai::OBJECT_TYPE_FDB_FLUSH; - - case SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_STP_PORT: return lemming::dataplane::sai::OBJECT_TYPE_STP_PORT; - - case SAI_OBJECT_TYPE_RPF_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP; - - case SAI_OBJECT_TYPE_RPF_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_L2MC_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP; - - case SAI_OBJECT_TYPE_L2MC_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_IPMC_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP; - - case SAI_OBJECT_TYPE_IPMC_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_L2MC_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_L2MC_ENTRY; - - case SAI_OBJECT_TYPE_IPMC_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_IPMC_ENTRY; - - case SAI_OBJECT_TYPE_MCAST_FDB_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_MCAST_FDB_ENTRY; - - case SAI_OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP: return lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; - - case SAI_OBJECT_TYPE_BRIDGE: return lemming::dataplane::sai::OBJECT_TYPE_BRIDGE; - - case SAI_OBJECT_TYPE_BRIDGE_PORT: return lemming::dataplane::sai::OBJECT_TYPE_BRIDGE_PORT; - - case SAI_OBJECT_TYPE_TUNNEL_MAP_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP_ENTRY; - - case SAI_OBJECT_TYPE_TAM: return lemming::dataplane::sai::OBJECT_TYPE_TAM; - - case SAI_OBJECT_TYPE_SRV6_SIDLIST: return lemming::dataplane::sai::OBJECT_TYPE_SRV6_SIDLIST; - - case SAI_OBJECT_TYPE_PORT_POOL: return lemming::dataplane::sai::OBJECT_TYPE_PORT_POOL; - - case SAI_OBJECT_TYPE_INSEG_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_INSEG_ENTRY; - - case SAI_OBJECT_TYPE_DTEL: return lemming::dataplane::sai::OBJECT_TYPE_DTEL; - - case SAI_OBJECT_TYPE_DTEL_QUEUE_REPORT: return lemming::dataplane::sai::OBJECT_TYPE_DTEL_QUEUE_REPORT; - - case SAI_OBJECT_TYPE_DTEL_INT_SESSION: return lemming::dataplane::sai::OBJECT_TYPE_DTEL_INT_SESSION; - - case SAI_OBJECT_TYPE_DTEL_REPORT_SESSION: return lemming::dataplane::sai::OBJECT_TYPE_DTEL_REPORT_SESSION; - - case SAI_OBJECT_TYPE_DTEL_EVENT: return lemming::dataplane::sai::OBJECT_TYPE_DTEL_EVENT; - - case SAI_OBJECT_TYPE_BFD_SESSION: return lemming::dataplane::sai::OBJECT_TYPE_BFD_SESSION; - - case SAI_OBJECT_TYPE_ISOLATION_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP; - - case SAI_OBJECT_TYPE_ISOLATION_GROUP_MEMBER: return lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP_MEMBER; - - case SAI_OBJECT_TYPE_TAM_MATH_FUNC: return lemming::dataplane::sai::OBJECT_TYPE_TAM_MATH_FUNC; - - case SAI_OBJECT_TYPE_TAM_REPORT: return lemming::dataplane::sai::OBJECT_TYPE_TAM_REPORT; - - case SAI_OBJECT_TYPE_TAM_EVENT_THRESHOLD: return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_THRESHOLD; - - case SAI_OBJECT_TYPE_TAM_TEL_TYPE: return lemming::dataplane::sai::OBJECT_TYPE_TAM_TEL_TYPE; - - case SAI_OBJECT_TYPE_TAM_TRANSPORT: return lemming::dataplane::sai::OBJECT_TYPE_TAM_TRANSPORT; - - case SAI_OBJECT_TYPE_TAM_TELEMETRY: return lemming::dataplane::sai::OBJECT_TYPE_TAM_TELEMETRY; - - case SAI_OBJECT_TYPE_TAM_COLLECTOR: return lemming::dataplane::sai::OBJECT_TYPE_TAM_COLLECTOR; - - case SAI_OBJECT_TYPE_TAM_EVENT_ACTION: return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_ACTION; - - case SAI_OBJECT_TYPE_TAM_EVENT: return lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT; - - case SAI_OBJECT_TYPE_NAT_ZONE_COUNTER: return lemming::dataplane::sai::OBJECT_TYPE_NAT_ZONE_COUNTER; - - case SAI_OBJECT_TYPE_NAT_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_NAT_ENTRY; - - case SAI_OBJECT_TYPE_TAM_INT: return lemming::dataplane::sai::OBJECT_TYPE_TAM_INT; - - case SAI_OBJECT_TYPE_COUNTER: return lemming::dataplane::sai::OBJECT_TYPE_COUNTER; - - case SAI_OBJECT_TYPE_DEBUG_COUNTER: return lemming::dataplane::sai::OBJECT_TYPE_DEBUG_COUNTER; - - case SAI_OBJECT_TYPE_PORT_CONNECTOR: return lemming::dataplane::sai::OBJECT_TYPE_PORT_CONNECTOR; - - case SAI_OBJECT_TYPE_PORT_SERDES: return lemming::dataplane::sai::OBJECT_TYPE_PORT_SERDES; - - case SAI_OBJECT_TYPE_MACSEC: return lemming::dataplane::sai::OBJECT_TYPE_MACSEC; - - case SAI_OBJECT_TYPE_MACSEC_PORT: return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_PORT; - - case SAI_OBJECT_TYPE_MACSEC_FLOW: return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_FLOW; - - case SAI_OBJECT_TYPE_MACSEC_SC: return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SC; - - case SAI_OBJECT_TYPE_MACSEC_SA: return lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SA; - - case SAI_OBJECT_TYPE_SYSTEM_PORT: return lemming::dataplane::sai::OBJECT_TYPE_SYSTEM_PORT; - - case SAI_OBJECT_TYPE_FINE_GRAINED_HASH_FIELD: return lemming::dataplane::sai::OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; - - case SAI_OBJECT_TYPE_SWITCH_TUNNEL: return lemming::dataplane::sai::OBJECT_TYPE_SWITCH_TUNNEL; - - case SAI_OBJECT_TYPE_MY_SID_ENTRY: return lemming::dataplane::sai::OBJECT_TYPE_MY_SID_ENTRY; - - case SAI_OBJECT_TYPE_MY_MAC: return lemming::dataplane::sai::OBJECT_TYPE_MY_MAC; - - case SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MAP: return lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MAP; - - case SAI_OBJECT_TYPE_IPSEC: return lemming::dataplane::sai::OBJECT_TYPE_IPSEC; - - case SAI_OBJECT_TYPE_IPSEC_PORT: return lemming::dataplane::sai::OBJECT_TYPE_IPSEC_PORT; - - case SAI_OBJECT_TYPE_IPSEC_SA: return lemming::dataplane::sai::OBJECT_TYPE_IPSEC_SA; - - case SAI_OBJECT_TYPE_GENERIC_PROGRAMMABLE: return lemming::dataplane::sai::OBJECT_TYPE_GENERIC_PROGRAMMABLE; - - case SAI_OBJECT_TYPE_ARS_PROFILE: return lemming::dataplane::sai::OBJECT_TYPE_ARS_PROFILE; - - case SAI_OBJECT_TYPE_ARS: return lemming::dataplane::sai::OBJECT_TYPE_ARS; - - case SAI_OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP: return lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; - - case SAI_OBJECT_TYPE_TWAMP_SESSION: return lemming::dataplane::sai::OBJECT_TYPE_TWAMP_SESSION; - - case SAI_OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION: return lemming::dataplane::sai::OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; - - case SAI_OBJECT_TYPE_POE_DEVICE: return lemming::dataplane::sai::OBJECT_TYPE_POE_DEVICE; - - case SAI_OBJECT_TYPE_POE_PSE: return lemming::dataplane::sai::OBJECT_TYPE_POE_PSE; - - case SAI_OBJECT_TYPE_POE_PORT: return lemming::dataplane::sai::OBJECT_TYPE_POE_PORT; - - case SAI_OBJECT_TYPE_MAX: return lemming::dataplane::sai::OBJECT_TYPE_MAX; - - case SAI_OBJECT_TYPE_CUSTOM_RANGE_START: return lemming::dataplane::sai::OBJECT_TYPE_CUSTOM_RANGE_START; - - case SAI_OBJECT_TYPE_CUSTOM_RANGE_END: return lemming::dataplane::sai::OBJECT_TYPE_CUSTOM_RANGE_END; - - default: return lemming::dataplane::sai::OBJECT_TYPE_UNSPECIFIED; - } -} -sai_object_type_t convert_sai_object_type_t_to_sai(lemming::dataplane::sai::ObjectType val) { - switch (val) { - - case lemming::dataplane::sai::OBJECT_TYPE_NULL: return SAI_OBJECT_TYPE_NULL; - - case lemming::dataplane::sai::OBJECT_TYPE_PORT: return SAI_OBJECT_TYPE_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_LAG: return SAI_OBJECT_TYPE_LAG; - - case lemming::dataplane::sai::OBJECT_TYPE_VIRTUAL_ROUTER: return SAI_OBJECT_TYPE_VIRTUAL_ROUTER; - - case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP: return SAI_OBJECT_TYPE_NEXT_HOP; - - case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP: return SAI_OBJECT_TYPE_NEXT_HOP_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_ROUTER_INTERFACE: return SAI_OBJECT_TYPE_ROUTER_INTERFACE; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE: return SAI_OBJECT_TYPE_ACL_TABLE; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_ENTRY: return SAI_OBJECT_TYPE_ACL_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_COUNTER: return SAI_OBJECT_TYPE_ACL_COUNTER; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_RANGE: return SAI_OBJECT_TYPE_ACL_RANGE; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP: return SAI_OBJECT_TYPE_ACL_TABLE_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER: return SAI_OBJECT_TYPE_ACL_TABLE_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF: return SAI_OBJECT_TYPE_HOSTIF; - - case lemming::dataplane::sai::OBJECT_TYPE_MIRROR_SESSION: return SAI_OBJECT_TYPE_MIRROR_SESSION; - - case lemming::dataplane::sai::OBJECT_TYPE_SAMPLEPACKET: return SAI_OBJECT_TYPE_SAMPLEPACKET; - - case lemming::dataplane::sai::OBJECT_TYPE_STP: return SAI_OBJECT_TYPE_STP; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP_GROUP: return SAI_OBJECT_TYPE_HOSTIF_TRAP_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_POLICER: return SAI_OBJECT_TYPE_POLICER; - - case lemming::dataplane::sai::OBJECT_TYPE_WRED: return SAI_OBJECT_TYPE_WRED; - - case lemming::dataplane::sai::OBJECT_TYPE_QOS_MAP: return SAI_OBJECT_TYPE_QOS_MAP; - - case lemming::dataplane::sai::OBJECT_TYPE_QUEUE: return SAI_OBJECT_TYPE_QUEUE; - - case lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER: return SAI_OBJECT_TYPE_SCHEDULER; - - case lemming::dataplane::sai::OBJECT_TYPE_SCHEDULER_GROUP: return SAI_OBJECT_TYPE_SCHEDULER_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_BUFFER_POOL: return SAI_OBJECT_TYPE_BUFFER_POOL; - - case lemming::dataplane::sai::OBJECT_TYPE_BUFFER_PROFILE: return SAI_OBJECT_TYPE_BUFFER_PROFILE; - - case lemming::dataplane::sai::OBJECT_TYPE_INGRESS_PRIORITY_GROUP: return SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_LAG_MEMBER: return SAI_OBJECT_TYPE_LAG_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_HASH: return SAI_OBJECT_TYPE_HASH; - - case lemming::dataplane::sai::OBJECT_TYPE_UDF: return SAI_OBJECT_TYPE_UDF; - - case lemming::dataplane::sai::OBJECT_TYPE_UDF_MATCH: return SAI_OBJECT_TYPE_UDF_MATCH; - - case lemming::dataplane::sai::OBJECT_TYPE_UDF_GROUP: return SAI_OBJECT_TYPE_UDF_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_FDB_ENTRY: return SAI_OBJECT_TYPE_FDB_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_SWITCH: return SAI_OBJECT_TYPE_SWITCH; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TRAP: return SAI_OBJECT_TYPE_HOSTIF_TRAP; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_TABLE_ENTRY: return SAI_OBJECT_TYPE_HOSTIF_TABLE_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_NEIGHBOR_ENTRY: return SAI_OBJECT_TYPE_NEIGHBOR_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_ROUTE_ENTRY: return SAI_OBJECT_TYPE_ROUTE_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_VLAN: return SAI_OBJECT_TYPE_VLAN; - - case lemming::dataplane::sai::OBJECT_TYPE_VLAN_MEMBER: return SAI_OBJECT_TYPE_VLAN_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_PACKET: return SAI_OBJECT_TYPE_HOSTIF_PACKET; - - case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP: return SAI_OBJECT_TYPE_TUNNEL_MAP; - - case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL: return SAI_OBJECT_TYPE_TUNNEL; - - case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY: return SAI_OBJECT_TYPE_TUNNEL_TERM_TABLE_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_FDB_FLUSH: return SAI_OBJECT_TYPE_FDB_FLUSH; - - case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER: return SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_STP_PORT: return SAI_OBJECT_TYPE_STP_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP: return SAI_OBJECT_TYPE_RPF_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_RPF_GROUP_MEMBER: return SAI_OBJECT_TYPE_RPF_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP: return SAI_OBJECT_TYPE_L2MC_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_L2MC_GROUP_MEMBER: return SAI_OBJECT_TYPE_L2MC_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP: return SAI_OBJECT_TYPE_IPMC_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_IPMC_GROUP_MEMBER: return SAI_OBJECT_TYPE_IPMC_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_L2MC_ENTRY: return SAI_OBJECT_TYPE_L2MC_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_IPMC_ENTRY: return SAI_OBJECT_TYPE_IPMC_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_MCAST_FDB_ENTRY: return SAI_OBJECT_TYPE_MCAST_FDB_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP: return SAI_OBJECT_TYPE_HOSTIF_USER_DEFINED_TRAP; - - case lemming::dataplane::sai::OBJECT_TYPE_BRIDGE: return SAI_OBJECT_TYPE_BRIDGE; - - case lemming::dataplane::sai::OBJECT_TYPE_BRIDGE_PORT: return SAI_OBJECT_TYPE_BRIDGE_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_TUNNEL_MAP_ENTRY: return SAI_OBJECT_TYPE_TUNNEL_MAP_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM: return SAI_OBJECT_TYPE_TAM; - - case lemming::dataplane::sai::OBJECT_TYPE_SRV6_SIDLIST: return SAI_OBJECT_TYPE_SRV6_SIDLIST; - - case lemming::dataplane::sai::OBJECT_TYPE_PORT_POOL: return SAI_OBJECT_TYPE_PORT_POOL; - - case lemming::dataplane::sai::OBJECT_TYPE_INSEG_ENTRY: return SAI_OBJECT_TYPE_INSEG_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_DTEL: return SAI_OBJECT_TYPE_DTEL; - - case lemming::dataplane::sai::OBJECT_TYPE_DTEL_QUEUE_REPORT: return SAI_OBJECT_TYPE_DTEL_QUEUE_REPORT; - - case lemming::dataplane::sai::OBJECT_TYPE_DTEL_INT_SESSION: return SAI_OBJECT_TYPE_DTEL_INT_SESSION; - - case lemming::dataplane::sai::OBJECT_TYPE_DTEL_REPORT_SESSION: return SAI_OBJECT_TYPE_DTEL_REPORT_SESSION; - - case lemming::dataplane::sai::OBJECT_TYPE_DTEL_EVENT: return SAI_OBJECT_TYPE_DTEL_EVENT; - - case lemming::dataplane::sai::OBJECT_TYPE_BFD_SESSION: return SAI_OBJECT_TYPE_BFD_SESSION; - - case lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP: return SAI_OBJECT_TYPE_ISOLATION_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_ISOLATION_GROUP_MEMBER: return SAI_OBJECT_TYPE_ISOLATION_GROUP_MEMBER; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_MATH_FUNC: return SAI_OBJECT_TYPE_TAM_MATH_FUNC; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_REPORT: return SAI_OBJECT_TYPE_TAM_REPORT; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_THRESHOLD: return SAI_OBJECT_TYPE_TAM_EVENT_THRESHOLD; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_TEL_TYPE: return SAI_OBJECT_TYPE_TAM_TEL_TYPE; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_TRANSPORT: return SAI_OBJECT_TYPE_TAM_TRANSPORT; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_TELEMETRY: return SAI_OBJECT_TYPE_TAM_TELEMETRY; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_COLLECTOR: return SAI_OBJECT_TYPE_TAM_COLLECTOR; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT_ACTION: return SAI_OBJECT_TYPE_TAM_EVENT_ACTION; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_EVENT: return SAI_OBJECT_TYPE_TAM_EVENT; - - case lemming::dataplane::sai::OBJECT_TYPE_NAT_ZONE_COUNTER: return SAI_OBJECT_TYPE_NAT_ZONE_COUNTER; - - case lemming::dataplane::sai::OBJECT_TYPE_NAT_ENTRY: return SAI_OBJECT_TYPE_NAT_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_INT: return SAI_OBJECT_TYPE_TAM_INT; - - case lemming::dataplane::sai::OBJECT_TYPE_COUNTER: return SAI_OBJECT_TYPE_COUNTER; - - case lemming::dataplane::sai::OBJECT_TYPE_DEBUG_COUNTER: return SAI_OBJECT_TYPE_DEBUG_COUNTER; - - case lemming::dataplane::sai::OBJECT_TYPE_PORT_CONNECTOR: return SAI_OBJECT_TYPE_PORT_CONNECTOR; - - case lemming::dataplane::sai::OBJECT_TYPE_PORT_SERDES: return SAI_OBJECT_TYPE_PORT_SERDES; - - case lemming::dataplane::sai::OBJECT_TYPE_MACSEC: return SAI_OBJECT_TYPE_MACSEC; - - case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_PORT: return SAI_OBJECT_TYPE_MACSEC_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_FLOW: return SAI_OBJECT_TYPE_MACSEC_FLOW; - - case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SC: return SAI_OBJECT_TYPE_MACSEC_SC; - - case lemming::dataplane::sai::OBJECT_TYPE_MACSEC_SA: return SAI_OBJECT_TYPE_MACSEC_SA; - - case lemming::dataplane::sai::OBJECT_TYPE_SYSTEM_PORT: return SAI_OBJECT_TYPE_SYSTEM_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_FINE_GRAINED_HASH_FIELD: return SAI_OBJECT_TYPE_FINE_GRAINED_HASH_FIELD; - - case lemming::dataplane::sai::OBJECT_TYPE_SWITCH_TUNNEL: return SAI_OBJECT_TYPE_SWITCH_TUNNEL; - - case lemming::dataplane::sai::OBJECT_TYPE_MY_SID_ENTRY: return SAI_OBJECT_TYPE_MY_SID_ENTRY; - - case lemming::dataplane::sai::OBJECT_TYPE_MY_MAC: return SAI_OBJECT_TYPE_MY_MAC; - - case lemming::dataplane::sai::OBJECT_TYPE_NEXT_HOP_GROUP_MAP: return SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MAP; - - case lemming::dataplane::sai::OBJECT_TYPE_IPSEC: return SAI_OBJECT_TYPE_IPSEC; - - case lemming::dataplane::sai::OBJECT_TYPE_IPSEC_PORT: return SAI_OBJECT_TYPE_IPSEC_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_IPSEC_SA: return SAI_OBJECT_TYPE_IPSEC_SA; - - case lemming::dataplane::sai::OBJECT_TYPE_GENERIC_PROGRAMMABLE: return SAI_OBJECT_TYPE_GENERIC_PROGRAMMABLE; - - case lemming::dataplane::sai::OBJECT_TYPE_ARS_PROFILE: return SAI_OBJECT_TYPE_ARS_PROFILE; - - case lemming::dataplane::sai::OBJECT_TYPE_ARS: return SAI_OBJECT_TYPE_ARS; - - case lemming::dataplane::sai::OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP: return SAI_OBJECT_TYPE_ACL_TABLE_CHAIN_GROUP; - - case lemming::dataplane::sai::OBJECT_TYPE_TWAMP_SESSION: return SAI_OBJECT_TYPE_TWAMP_SESSION; - - case lemming::dataplane::sai::OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION: return SAI_OBJECT_TYPE_TAM_COUNTER_SUBSCRIPTION; - - case lemming::dataplane::sai::OBJECT_TYPE_POE_DEVICE: return SAI_OBJECT_TYPE_POE_DEVICE; - - case lemming::dataplane::sai::OBJECT_TYPE_POE_PSE: return SAI_OBJECT_TYPE_POE_PSE; - - case lemming::dataplane::sai::OBJECT_TYPE_POE_PORT: return SAI_OBJECT_TYPE_POE_PORT; - - case lemming::dataplane::sai::OBJECT_TYPE_MAX: return SAI_OBJECT_TYPE_MAX; - - case lemming::dataplane::sai::OBJECT_TYPE_CUSTOM_RANGE_START: return SAI_OBJECT_TYPE_CUSTOM_RANGE_START; - - case lemming::dataplane::sai::OBJECT_TYPE_CUSTOM_RANGE_END: return SAI_OBJECT_TYPE_CUSTOM_RANGE_END; - - default: return SAI_OBJECT_TYPE_NULL; - } -} - -google::protobuf::RepeatedField convert_list_sai_object_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_object_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_object_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_object_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::OutDropReason convert_sai_out_drop_reason_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OUT_DROP_REASON_START: return lemming::dataplane::sai::OUT_DROP_REASON_START; - - case SAI_OUT_DROP_REASON_EGRESS_VLAN_FILTER: return lemming::dataplane::sai::OUT_DROP_REASON_EGRESS_VLAN_FILTER; - - case SAI_OUT_DROP_REASON_L3_ANY: return lemming::dataplane::sai::OUT_DROP_REASON_L3_ANY; - - case SAI_OUT_DROP_REASON_L3_EGRESS_LINK_DOWN: return lemming::dataplane::sai::OUT_DROP_REASON_L3_EGRESS_LINK_DOWN; - - case SAI_OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP: return lemming::dataplane::sai::OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP; - - case SAI_OUT_DROP_REASON_END: return lemming::dataplane::sai::OUT_DROP_REASON_END; - - case SAI_OUT_DROP_REASON_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_BASE; - - case SAI_OUT_DROP_REASON_CUSTOM_RANGE_END: return lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_END; - - default: return lemming::dataplane::sai::OUT_DROP_REASON_UNSPECIFIED; - } -} -sai_out_drop_reason_t convert_sai_out_drop_reason_t_to_sai(lemming::dataplane::sai::OutDropReason val) { - switch (val) { - - case lemming::dataplane::sai::OUT_DROP_REASON_START: return SAI_OUT_DROP_REASON_START; - - case lemming::dataplane::sai::OUT_DROP_REASON_EGRESS_VLAN_FILTER: return SAI_OUT_DROP_REASON_EGRESS_VLAN_FILTER; - - case lemming::dataplane::sai::OUT_DROP_REASON_L3_ANY: return SAI_OUT_DROP_REASON_L3_ANY; - - case lemming::dataplane::sai::OUT_DROP_REASON_L3_EGRESS_LINK_DOWN: return SAI_OUT_DROP_REASON_L3_EGRESS_LINK_DOWN; - - case lemming::dataplane::sai::OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP: return SAI_OUT_DROP_REASON_TUNNEL_LOOPBACK_PACKET_DROP; - - case lemming::dataplane::sai::OUT_DROP_REASON_END: return SAI_OUT_DROP_REASON_END; - - case lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_BASE: return SAI_OUT_DROP_REASON_CUSTOM_RANGE_BASE; - - case lemming::dataplane::sai::OUT_DROP_REASON_CUSTOM_RANGE_END: return SAI_OUT_DROP_REASON_CUSTOM_RANGE_END; - - default: return SAI_OUT_DROP_REASON_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_out_drop_reason_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_out_drop_reason_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_out_drop_reason_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_out_drop_reason_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::OutsegExpMode convert_sai_outseg_exp_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OUTSEG_EXP_MODE_UNIFORM: return lemming::dataplane::sai::OUTSEG_EXP_MODE_UNIFORM; - - case SAI_OUTSEG_EXP_MODE_PIPE: return lemming::dataplane::sai::OUTSEG_EXP_MODE_PIPE; - - default: return lemming::dataplane::sai::OUTSEG_EXP_MODE_UNSPECIFIED; - } -} -sai_outseg_exp_mode_t convert_sai_outseg_exp_mode_t_to_sai(lemming::dataplane::sai::OutsegExpMode val) { - switch (val) { - - case lemming::dataplane::sai::OUTSEG_EXP_MODE_UNIFORM: return SAI_OUTSEG_EXP_MODE_UNIFORM; - - case lemming::dataplane::sai::OUTSEG_EXP_MODE_PIPE: return SAI_OUTSEG_EXP_MODE_PIPE; - - default: return SAI_OUTSEG_EXP_MODE_UNIFORM; - } -} - -google::protobuf::RepeatedField convert_list_sai_outseg_exp_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_outseg_exp_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_outseg_exp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_outseg_exp_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::OutsegTtlMode convert_sai_outseg_ttl_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OUTSEG_TTL_MODE_UNIFORM: return lemming::dataplane::sai::OUTSEG_TTL_MODE_UNIFORM; - - case SAI_OUTSEG_TTL_MODE_PIPE: return lemming::dataplane::sai::OUTSEG_TTL_MODE_PIPE; - - default: return lemming::dataplane::sai::OUTSEG_TTL_MODE_UNSPECIFIED; - } -} -sai_outseg_ttl_mode_t convert_sai_outseg_ttl_mode_t_to_sai(lemming::dataplane::sai::OutsegTtlMode val) { - switch (val) { - - case lemming::dataplane::sai::OUTSEG_TTL_MODE_UNIFORM: return SAI_OUTSEG_TTL_MODE_UNIFORM; - - case lemming::dataplane::sai::OUTSEG_TTL_MODE_PIPE: return SAI_OUTSEG_TTL_MODE_PIPE; - - default: return SAI_OUTSEG_TTL_MODE_UNIFORM; - } -} - -google::protobuf::RepeatedField convert_list_sai_outseg_ttl_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_outseg_ttl_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_outseg_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_outseg_ttl_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::OutsegType convert_sai_outseg_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_OUTSEG_TYPE_PUSH: return lemming::dataplane::sai::OUTSEG_TYPE_PUSH; - - case SAI_OUTSEG_TYPE_SWAP: return lemming::dataplane::sai::OUTSEG_TYPE_SWAP; - - default: return lemming::dataplane::sai::OUTSEG_TYPE_UNSPECIFIED; - } -} -sai_outseg_type_t convert_sai_outseg_type_t_to_sai(lemming::dataplane::sai::OutsegType val) { - switch (val) { - - case lemming::dataplane::sai::OUTSEG_TYPE_PUSH: return SAI_OUTSEG_TYPE_PUSH; - - case lemming::dataplane::sai::OUTSEG_TYPE_SWAP: return SAI_OUTSEG_TYPE_SWAP; - - default: return SAI_OUTSEG_TYPE_PUSH; - } -} - -google::protobuf::RepeatedField convert_list_sai_outseg_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_outseg_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_outseg_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_outseg_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PacketAction convert_sai_packet_action_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PACKET_ACTION_DROP: return lemming::dataplane::sai::PACKET_ACTION_DROP; - - case SAI_PACKET_ACTION_FORWARD: return lemming::dataplane::sai::PACKET_ACTION_FORWARD; - - case SAI_PACKET_ACTION_COPY: return lemming::dataplane::sai::PACKET_ACTION_COPY; - - case SAI_PACKET_ACTION_COPY_CANCEL: return lemming::dataplane::sai::PACKET_ACTION_COPY_CANCEL; - - case SAI_PACKET_ACTION_TRAP: return lemming::dataplane::sai::PACKET_ACTION_TRAP; - - case SAI_PACKET_ACTION_LOG: return lemming::dataplane::sai::PACKET_ACTION_LOG; - - case SAI_PACKET_ACTION_DENY: return lemming::dataplane::sai::PACKET_ACTION_DENY; - - case SAI_PACKET_ACTION_TRANSIT: return lemming::dataplane::sai::PACKET_ACTION_TRANSIT; - - case SAI_PACKET_ACTION_DONOTDROP: return lemming::dataplane::sai::PACKET_ACTION_DONOTDROP; - - default: return lemming::dataplane::sai::PACKET_ACTION_UNSPECIFIED; - } -} -sai_packet_action_t convert_sai_packet_action_t_to_sai(lemming::dataplane::sai::PacketAction val) { - switch (val) { - - case lemming::dataplane::sai::PACKET_ACTION_DROP: return SAI_PACKET_ACTION_DROP; - - case lemming::dataplane::sai::PACKET_ACTION_FORWARD: return SAI_PACKET_ACTION_FORWARD; - - case lemming::dataplane::sai::PACKET_ACTION_COPY: return SAI_PACKET_ACTION_COPY; - - case lemming::dataplane::sai::PACKET_ACTION_COPY_CANCEL: return SAI_PACKET_ACTION_COPY_CANCEL; - - case lemming::dataplane::sai::PACKET_ACTION_TRAP: return SAI_PACKET_ACTION_TRAP; - - case lemming::dataplane::sai::PACKET_ACTION_LOG: return SAI_PACKET_ACTION_LOG; - - case lemming::dataplane::sai::PACKET_ACTION_DENY: return SAI_PACKET_ACTION_DENY; - - case lemming::dataplane::sai::PACKET_ACTION_TRANSIT: return SAI_PACKET_ACTION_TRANSIT; - - case lemming::dataplane::sai::PACKET_ACTION_DONOTDROP: return SAI_PACKET_ACTION_DONOTDROP; - - default: return SAI_PACKET_ACTION_DROP; - } -} - -google::protobuf::RepeatedField convert_list_sai_packet_action_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_packet_action_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_packet_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_packet_action_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PacketColor convert_sai_packet_color_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PACKET_COLOR_GREEN: return lemming::dataplane::sai::PACKET_COLOR_GREEN; - - case SAI_PACKET_COLOR_YELLOW: return lemming::dataplane::sai::PACKET_COLOR_YELLOW; - - case SAI_PACKET_COLOR_RED: return lemming::dataplane::sai::PACKET_COLOR_RED; - - default: return lemming::dataplane::sai::PACKET_COLOR_UNSPECIFIED; - } -} -sai_packet_color_t convert_sai_packet_color_t_to_sai(lemming::dataplane::sai::PacketColor val) { - switch (val) { - - case lemming::dataplane::sai::PACKET_COLOR_GREEN: return SAI_PACKET_COLOR_GREEN; - - case lemming::dataplane::sai::PACKET_COLOR_YELLOW: return SAI_PACKET_COLOR_YELLOW; - - case lemming::dataplane::sai::PACKET_COLOR_RED: return SAI_PACKET_COLOR_RED; - - default: return SAI_PACKET_COLOR_GREEN; - } -} - -google::protobuf::RepeatedField convert_list_sai_packet_color_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_packet_color_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_packet_color_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_packet_color_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PacketVlan convert_sai_packet_vlan_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PACKET_VLAN_UNTAG: return lemming::dataplane::sai::PACKET_VLAN_UNTAG; - - case SAI_PACKET_VLAN_SINGLE_OUTER_TAG: return lemming::dataplane::sai::PACKET_VLAN_SINGLE_OUTER_TAG; - - case SAI_PACKET_VLAN_DOUBLE_TAG: return lemming::dataplane::sai::PACKET_VLAN_DOUBLE_TAG; - - default: return lemming::dataplane::sai::PACKET_VLAN_UNSPECIFIED; - } -} -sai_packet_vlan_t convert_sai_packet_vlan_t_to_sai(lemming::dataplane::sai::PacketVlan val) { - switch (val) { - - case lemming::dataplane::sai::PACKET_VLAN_UNTAG: return SAI_PACKET_VLAN_UNTAG; - - case lemming::dataplane::sai::PACKET_VLAN_SINGLE_OUTER_TAG: return SAI_PACKET_VLAN_SINGLE_OUTER_TAG; - - case lemming::dataplane::sai::PACKET_VLAN_DOUBLE_TAG: return SAI_PACKET_VLAN_DOUBLE_TAG; - - default: return SAI_PACKET_VLAN_UNTAG; - } -} - -google::protobuf::RepeatedField convert_list_sai_packet_vlan_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_packet_vlan_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_packet_vlan_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_packet_vlan_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PoePortActiveChannelType convert_sai_poe_port_active_channel_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A: return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A; - - case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_B: return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_B; - - case SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B: return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B; - - default: return lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_UNSPECIFIED; - } -} -sai_poe_port_active_channel_type_t convert_sai_poe_port_active_channel_type_t_to_sai(lemming::dataplane::sai::PoePortActiveChannelType val) { - switch (val) { - - case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A: return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A; - - case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_B: return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_B; - - case lemming::dataplane::sai::POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B: return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A_AND_B; - - default: return SAI_POE_PORT_ACTIVE_CHANNEL_TYPE_A; - } -} - -google::protobuf::RepeatedField convert_list_sai_poe_port_active_channel_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_poe_port_active_channel_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_poe_port_active_channel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_poe_port_active_channel_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PoePortClassMethodType convert_sai_poe_port_class_method_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR: return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_REGULAR; - - case SAI_POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS: return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS; - - default: return lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_UNSPECIFIED; - } -} -sai_poe_port_class_method_type_t convert_sai_poe_port_class_method_type_t_to_sai(lemming::dataplane::sai::PoePortClassMethodType val) { - switch (val) { - - case lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_REGULAR: return SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR; - - case lemming::dataplane::sai::POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS: return SAI_POE_PORT_CLASS_METHOD_TYPE_AUTO_CLASS; - - default: return SAI_POE_PORT_CLASS_METHOD_TYPE_REGULAR; - } -} - -google::protobuf::RepeatedField convert_list_sai_poe_port_class_method_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_poe_port_class_method_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_poe_port_class_method_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_poe_port_class_method_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PoePortSignatureType convert_sai_poe_port_signature_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POE_PORT_SIGNATURE_TYPE_SINGLE: return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_SINGLE; - - case SAI_POE_PORT_SIGNATURE_TYPE_DUAL: return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_DUAL; - - default: return lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_UNSPECIFIED; - } -} -sai_poe_port_signature_type_t convert_sai_poe_port_signature_type_t_to_sai(lemming::dataplane::sai::PoePortSignatureType val) { - switch (val) { - - case lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_SINGLE: return SAI_POE_PORT_SIGNATURE_TYPE_SINGLE; - - case lemming::dataplane::sai::POE_PORT_SIGNATURE_TYPE_DUAL: return SAI_POE_PORT_SIGNATURE_TYPE_DUAL; - - default: return SAI_POE_PORT_SIGNATURE_TYPE_SINGLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_poe_port_signature_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_poe_port_signature_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_poe_port_signature_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_poe_port_signature_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PolicerAttr convert_sai_policer_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POLICER_ATTR_METER_TYPE: return lemming::dataplane::sai::POLICER_ATTR_METER_TYPE; - - case SAI_POLICER_ATTR_MODE: return lemming::dataplane::sai::POLICER_ATTR_MODE; - - case SAI_POLICER_ATTR_COLOR_SOURCE: return lemming::dataplane::sai::POLICER_ATTR_COLOR_SOURCE; - - case SAI_POLICER_ATTR_CBS: return lemming::dataplane::sai::POLICER_ATTR_CBS; - - case SAI_POLICER_ATTR_CIR: return lemming::dataplane::sai::POLICER_ATTR_CIR; - - case SAI_POLICER_ATTR_PBS: return lemming::dataplane::sai::POLICER_ATTR_PBS; - - case SAI_POLICER_ATTR_PIR: return lemming::dataplane::sai::POLICER_ATTR_PIR; - - case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: return lemming::dataplane::sai::POLICER_ATTR_GREEN_PACKET_ACTION; - - case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: return lemming::dataplane::sai::POLICER_ATTR_YELLOW_PACKET_ACTION; - - case SAI_POLICER_ATTR_RED_PACKET_ACTION: return lemming::dataplane::sai::POLICER_ATTR_RED_PACKET_ACTION; - - case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: return lemming::dataplane::sai::POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST; - - case SAI_POLICER_ATTR_OBJECT_STAGE: return lemming::dataplane::sai::POLICER_ATTR_OBJECT_STAGE; - - default: return lemming::dataplane::sai::POLICER_ATTR_UNSPECIFIED; - } -} -sai_policer_attr_t convert_sai_policer_attr_t_to_sai(lemming::dataplane::sai::PolicerAttr val) { - switch (val) { - - case lemming::dataplane::sai::POLICER_ATTR_METER_TYPE: return SAI_POLICER_ATTR_METER_TYPE; - - case lemming::dataplane::sai::POLICER_ATTR_MODE: return SAI_POLICER_ATTR_MODE; - - case lemming::dataplane::sai::POLICER_ATTR_COLOR_SOURCE: return SAI_POLICER_ATTR_COLOR_SOURCE; - - case lemming::dataplane::sai::POLICER_ATTR_CBS: return SAI_POLICER_ATTR_CBS; - - case lemming::dataplane::sai::POLICER_ATTR_CIR: return SAI_POLICER_ATTR_CIR; - - case lemming::dataplane::sai::POLICER_ATTR_PBS: return SAI_POLICER_ATTR_PBS; - - case lemming::dataplane::sai::POLICER_ATTR_PIR: return SAI_POLICER_ATTR_PIR; - - case lemming::dataplane::sai::POLICER_ATTR_GREEN_PACKET_ACTION: return SAI_POLICER_ATTR_GREEN_PACKET_ACTION; - - case lemming::dataplane::sai::POLICER_ATTR_YELLOW_PACKET_ACTION: return SAI_POLICER_ATTR_YELLOW_PACKET_ACTION; - - case lemming::dataplane::sai::POLICER_ATTR_RED_PACKET_ACTION: return SAI_POLICER_ATTR_RED_PACKET_ACTION; - - case lemming::dataplane::sai::POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: return SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST; - - case lemming::dataplane::sai::POLICER_ATTR_OBJECT_STAGE: return SAI_POLICER_ATTR_OBJECT_STAGE; - - default: return SAI_POLICER_ATTR_METER_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_policer_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_policer_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_policer_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_policer_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PolicerColorSource convert_sai_policer_color_source_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POLICER_COLOR_SOURCE_BLIND: return lemming::dataplane::sai::POLICER_COLOR_SOURCE_BLIND; - - case SAI_POLICER_COLOR_SOURCE_AWARE: return lemming::dataplane::sai::POLICER_COLOR_SOURCE_AWARE; - - case SAI_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::POLICER_COLOR_SOURCE_UNSPECIFIED; - } -} -sai_policer_color_source_t convert_sai_policer_color_source_t_to_sai(lemming::dataplane::sai::PolicerColorSource val) { - switch (val) { - - case lemming::dataplane::sai::POLICER_COLOR_SOURCE_BLIND: return SAI_POLICER_COLOR_SOURCE_BLIND; - - case lemming::dataplane::sai::POLICER_COLOR_SOURCE_AWARE: return SAI_POLICER_COLOR_SOURCE_AWARE; - - case lemming::dataplane::sai::POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE: return SAI_POLICER_COLOR_SOURCE_CUSTOM_RANGE_BASE; - - default: return SAI_POLICER_COLOR_SOURCE_BLIND; - } -} - -google::protobuf::RepeatedField convert_list_sai_policer_color_source_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_policer_color_source_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_policer_color_source_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_policer_color_source_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PolicerMode convert_sai_policer_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POLICER_MODE_SR_TCM: return lemming::dataplane::sai::POLICER_MODE_SR_TCM; - - case SAI_POLICER_MODE_TR_TCM: return lemming::dataplane::sai::POLICER_MODE_TR_TCM; - - case SAI_POLICER_MODE_STORM_CONTROL: return lemming::dataplane::sai::POLICER_MODE_STORM_CONTROL; - - case SAI_POLICER_MODE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::POLICER_MODE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::POLICER_MODE_UNSPECIFIED; - } -} -sai_policer_mode_t convert_sai_policer_mode_t_to_sai(lemming::dataplane::sai::PolicerMode val) { - switch (val) { - - case lemming::dataplane::sai::POLICER_MODE_SR_TCM: return SAI_POLICER_MODE_SR_TCM; - - case lemming::dataplane::sai::POLICER_MODE_TR_TCM: return SAI_POLICER_MODE_TR_TCM; - - case lemming::dataplane::sai::POLICER_MODE_STORM_CONTROL: return SAI_POLICER_MODE_STORM_CONTROL; - - case lemming::dataplane::sai::POLICER_MODE_CUSTOM_RANGE_BASE: return SAI_POLICER_MODE_CUSTOM_RANGE_BASE; - - default: return SAI_POLICER_MODE_SR_TCM; - } -} - -google::protobuf::RepeatedField convert_list_sai_policer_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_policer_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_policer_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_policer_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PolicerStat convert_sai_policer_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_POLICER_STAT_PACKETS: return lemming::dataplane::sai::POLICER_STAT_PACKETS; - - case SAI_POLICER_STAT_ATTR_BYTES: return lemming::dataplane::sai::POLICER_STAT_ATTR_BYTES; - - case SAI_POLICER_STAT_GREEN_PACKETS: return lemming::dataplane::sai::POLICER_STAT_GREEN_PACKETS; - - case SAI_POLICER_STAT_GREEN_BYTES: return lemming::dataplane::sai::POLICER_STAT_GREEN_BYTES; - - case SAI_POLICER_STAT_YELLOW_PACKETS: return lemming::dataplane::sai::POLICER_STAT_YELLOW_PACKETS; - - case SAI_POLICER_STAT_YELLOW_BYTES: return lemming::dataplane::sai::POLICER_STAT_YELLOW_BYTES; - - case SAI_POLICER_STAT_RED_PACKETS: return lemming::dataplane::sai::POLICER_STAT_RED_PACKETS; - - case SAI_POLICER_STAT_RED_BYTES: return lemming::dataplane::sai::POLICER_STAT_RED_BYTES; - - case SAI_POLICER_STAT_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::POLICER_STAT_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::POLICER_STAT_UNSPECIFIED; - } -} -sai_policer_stat_t convert_sai_policer_stat_t_to_sai(lemming::dataplane::sai::PolicerStat val) { - switch (val) { - - case lemming::dataplane::sai::POLICER_STAT_PACKETS: return SAI_POLICER_STAT_PACKETS; - - case lemming::dataplane::sai::POLICER_STAT_ATTR_BYTES: return SAI_POLICER_STAT_ATTR_BYTES; - - case lemming::dataplane::sai::POLICER_STAT_GREEN_PACKETS: return SAI_POLICER_STAT_GREEN_PACKETS; - - case lemming::dataplane::sai::POLICER_STAT_GREEN_BYTES: return SAI_POLICER_STAT_GREEN_BYTES; - - case lemming::dataplane::sai::POLICER_STAT_YELLOW_PACKETS: return SAI_POLICER_STAT_YELLOW_PACKETS; - - case lemming::dataplane::sai::POLICER_STAT_YELLOW_BYTES: return SAI_POLICER_STAT_YELLOW_BYTES; - - case lemming::dataplane::sai::POLICER_STAT_RED_PACKETS: return SAI_POLICER_STAT_RED_PACKETS; - - case lemming::dataplane::sai::POLICER_STAT_RED_BYTES: return SAI_POLICER_STAT_RED_BYTES; - - case lemming::dataplane::sai::POLICER_STAT_CUSTOM_RANGE_BASE: return SAI_POLICER_STAT_CUSTOM_RANGE_BASE; - - default: return SAI_POLICER_STAT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_policer_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_policer_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_policer_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_policer_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortAttrExtensions convert_sai_port_attr_extensions_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_ATTR_EXTENSIONS_RANGE_START: return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_START; - - case SAI_PORT_ATTR_EXTENSIONS_RANGE_END: return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_END; - - default: return lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_UNSPECIFIED; - } -} -sai_port_attr_extensions_t convert_sai_port_attr_extensions_t_to_sai(lemming::dataplane::sai::PortAttrExtensions val) { - switch (val) { - - case lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_START: return SAI_PORT_ATTR_EXTENSIONS_RANGE_START; - - case lemming::dataplane::sai::PORT_ATTR_EXTENSIONS_RANGE_END: return SAI_PORT_ATTR_EXTENSIONS_RANGE_END; - - default: return SAI_PORT_ATTR_EXTENSIONS_RANGE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_attr_extensions_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_attr_extensions_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_attr_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_attr_extensions_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortAttr convert_sai_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_ATTR_TYPE: return lemming::dataplane::sai::PORT_ATTR_TYPE; - - case SAI_PORT_ATTR_OPER_STATUS: return lemming::dataplane::sai::PORT_ATTR_OPER_STATUS; - - case SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE; - - case SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: return lemming::dataplane::sai::PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE; - - case SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES: return lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_QUEUES; - - case SAI_PORT_ATTR_QOS_QUEUE_LIST: return lemming::dataplane::sai::PORT_ATTR_QOS_QUEUE_LIST; - - case SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: return lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS; - - case SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: return lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_GROUP_LIST; - - case SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: return lemming::dataplane::sai::PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE; - - case SAI_PORT_ATTR_SUPPORTED_SPEED: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_SPEED; - - case SAI_PORT_ATTR_SUPPORTED_FEC_MODE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE; - - case SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED; - - case SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED; - - case SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_AUTO_NEG_MODE; - - case SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE; - - case SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE; - - case SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_MEDIA_TYPE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_SPEED; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE; - - case SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: return lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE; - - case SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: return lemming::dataplane::sai::PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS; - - case SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: return lemming::dataplane::sai::PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST; - - case SAI_PORT_ATTR_EYE_VALUES: return lemming::dataplane::sai::PORT_ATTR_EYE_VALUES; - - case SAI_PORT_ATTR_OPER_SPEED: return lemming::dataplane::sai::PORT_ATTR_OPER_SPEED; - - case SAI_PORT_ATTR_HW_LANE_LIST: return lemming::dataplane::sai::PORT_ATTR_HW_LANE_LIST; - - case SAI_PORT_ATTR_SPEED: return lemming::dataplane::sai::PORT_ATTR_SPEED; - - case SAI_PORT_ATTR_FULL_DUPLEX_MODE: return lemming::dataplane::sai::PORT_ATTR_FULL_DUPLEX_MODE; - - case SAI_PORT_ATTR_AUTO_NEG_MODE: return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_MODE; - - case SAI_PORT_ATTR_ADMIN_STATE: return lemming::dataplane::sai::PORT_ATTR_ADMIN_STATE; - - case SAI_PORT_ATTR_MEDIA_TYPE: return lemming::dataplane::sai::PORT_ATTR_MEDIA_TYPE; - - case SAI_PORT_ATTR_ADVERTISED_SPEED: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_SPEED; - - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE; - - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED; - - case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED; - - case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_AUTO_NEG_MODE; - - case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE; - - case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE; - - case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_MEDIA_TYPE; - - case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_OUI_CODE; - - case SAI_PORT_ATTR_PORT_VLAN_ID: return lemming::dataplane::sai::PORT_ATTR_PORT_VLAN_ID; - - case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: return lemming::dataplane::sai::PORT_ATTR_DEFAULT_VLAN_PRIORITY; - - case SAI_PORT_ATTR_DROP_UNTAGGED: return lemming::dataplane::sai::PORT_ATTR_DROP_UNTAGGED; - - case SAI_PORT_ATTR_DROP_TAGGED: return lemming::dataplane::sai::PORT_ATTR_DROP_TAGGED; - - case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: return lemming::dataplane::sai::PORT_ATTR_INTERNAL_LOOPBACK_MODE; - - case SAI_PORT_ATTR_USE_EXTENDED_FEC: return lemming::dataplane::sai::PORT_ATTR_USE_EXTENDED_FEC; - - case SAI_PORT_ATTR_FEC_MODE: return lemming::dataplane::sai::PORT_ATTR_FEC_MODE; - - case SAI_PORT_ATTR_FEC_MODE_EXTENDED: return lemming::dataplane::sai::PORT_ATTR_FEC_MODE_EXTENDED; - - case SAI_PORT_ATTR_UPDATE_DSCP: return lemming::dataplane::sai::PORT_ATTR_UPDATE_DSCP; - - case SAI_PORT_ATTR_MTU: return lemming::dataplane::sai::PORT_ATTR_MTU; - - case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: return lemming::dataplane::sai::PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID; - - case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: return lemming::dataplane::sai::PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID; - - case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: return lemming::dataplane::sai::PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID; - - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: return lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE; - - case SAI_PORT_ATTR_INGRESS_ACL: return lemming::dataplane::sai::PORT_ATTR_INGRESS_ACL; - - case SAI_PORT_ATTR_EGRESS_ACL: return lemming::dataplane::sai::PORT_ATTR_EGRESS_ACL; - - case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: return lemming::dataplane::sai::PORT_ATTR_INGRESS_MACSEC_ACL; - - case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: return lemming::dataplane::sai::PORT_ATTR_EGRESS_MACSEC_ACL; - - case SAI_PORT_ATTR_MACSEC_PORT_LIST: return lemming::dataplane::sai::PORT_ATTR_MACSEC_PORT_LIST; - - case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: return lemming::dataplane::sai::PORT_ATTR_INGRESS_MIRROR_SESSION; - - case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: return lemming::dataplane::sai::PORT_ATTR_EGRESS_MIRROR_SESSION; - - case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; - - case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE; - - case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: return lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION; - - case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: return lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION; - - case SAI_PORT_ATTR_POLICER_ID: return lemming::dataplane::sai::PORT_ATTR_POLICER_ID; - - case SAI_PORT_ATTR_QOS_DEFAULT_TC: return lemming::dataplane::sai::PORT_ATTR_QOS_DEFAULT_TC; - - case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_TC_MAP; - - case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP; - - case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_TC_MAP; - - case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_COLOR_MAP; - - case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_QUEUE_MAP; - - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; - - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP; - - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP; - - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP; - - case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: return lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_PROFILE_ID; - - case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: return lemming::dataplane::sai::PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST; - - case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: return lemming::dataplane::sai::PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST; - - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE; - - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL; - - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_RX; - - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_TX; - - case SAI_PORT_ATTR_META_DATA: return lemming::dataplane::sai::PORT_ATTR_META_DATA; - - case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: return lemming::dataplane::sai::PORT_ATTR_EGRESS_BLOCK_PORT_LIST; - - case SAI_PORT_ATTR_HW_PROFILE_ID: return lemming::dataplane::sai::PORT_ATTR_HW_PROFILE_ID; - - case SAI_PORT_ATTR_EEE_ENABLE: return lemming::dataplane::sai::PORT_ATTR_EEE_ENABLE; - - case SAI_PORT_ATTR_EEE_IDLE_TIME: return lemming::dataplane::sai::PORT_ATTR_EEE_IDLE_TIME; - - case SAI_PORT_ATTR_EEE_WAKE_TIME: return lemming::dataplane::sai::PORT_ATTR_EEE_WAKE_TIME; - - case SAI_PORT_ATTR_PORT_POOL_LIST: return lemming::dataplane::sai::PORT_ATTR_PORT_POOL_LIST; - - case SAI_PORT_ATTR_ISOLATION_GROUP: return lemming::dataplane::sai::PORT_ATTR_ISOLATION_GROUP; - - case SAI_PORT_ATTR_PKT_TX_ENABLE: return lemming::dataplane::sai::PORT_ATTR_PKT_TX_ENABLE; - - case SAI_PORT_ATTR_TAM_OBJECT: return lemming::dataplane::sai::PORT_ATTR_TAM_OBJECT; - - case SAI_PORT_ATTR_SERDES_PREEMPHASIS: return lemming::dataplane::sai::PORT_ATTR_SERDES_PREEMPHASIS; - - case SAI_PORT_ATTR_SERDES_IDRIVER: return lemming::dataplane::sai::PORT_ATTR_SERDES_IDRIVER; - - case SAI_PORT_ATTR_SERDES_IPREDRIVER: return lemming::dataplane::sai::PORT_ATTR_SERDES_IPREDRIVER; - - case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_ENABLE; - - case SAI_PORT_ATTR_PTP_MODE: return lemming::dataplane::sai::PORT_ATTR_PTP_MODE; - - case SAI_PORT_ATTR_INTERFACE_TYPE: return lemming::dataplane::sai::PORT_ATTR_INTERFACE_TYPE; - - case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: return lemming::dataplane::sai::PORT_ATTR_ADVERTISED_INTERFACE_TYPE; - - case SAI_PORT_ATTR_REFERENCE_CLOCK: return lemming::dataplane::sai::PORT_ATTR_REFERENCE_CLOCK; - - case SAI_PORT_ATTR_PRBS_POLYNOMIAL: return lemming::dataplane::sai::PORT_ATTR_PRBS_POLYNOMIAL; - - case SAI_PORT_ATTR_PORT_SERDES_ID: return lemming::dataplane::sai::PORT_ATTR_PORT_SERDES_ID; - - case SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_FAILURE_STATUS; - - case SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS: return lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_RX_STATUS; - - case SAI_PORT_ATTR_PRBS_CONFIG: return lemming::dataplane::sai::PORT_ATTR_PRBS_CONFIG; - - case SAI_PORT_ATTR_PRBS_LOCK_STATUS: return lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_STATUS; - - case SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS: return lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_LOSS_STATUS; - - case SAI_PORT_ATTR_PRBS_RX_STATUS: return lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATUS; - - case SAI_PORT_ATTR_PRBS_RX_STATE: return lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATE; - - case SAI_PORT_ATTR_AUTO_NEG_STATUS: return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_STATUS; - - case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: return lemming::dataplane::sai::PORT_ATTR_DISABLE_DECREMENT_TTL; - - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP; - - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; - - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case SAI_PORT_ATTR_TPID: return lemming::dataplane::sai::PORT_ATTR_TPID; - - case SAI_PORT_ATTR_ERR_STATUS_LIST: return lemming::dataplane::sai::PORT_ATTR_ERR_STATUS_LIST; - - case SAI_PORT_ATTR_FABRIC_ATTACHED: return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED; - - case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE; - - case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID; - - case SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: return lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX; - - case SAI_PORT_ATTR_FABRIC_REACHABILITY: return lemming::dataplane::sai::PORT_ATTR_FABRIC_REACHABILITY; - - case SAI_PORT_ATTR_SYSTEM_PORT: return lemming::dataplane::sai::PORT_ATTR_SYSTEM_PORT; - - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE; - - case SAI_PORT_ATTR_LOOPBACK_MODE: return lemming::dataplane::sai::PORT_ATTR_LOOPBACK_MODE; - - case SAI_PORT_ATTR_MDIX_MODE_STATUS: return lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_STATUS; - - case SAI_PORT_ATTR_MDIX_MODE_CONFIG: return lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_CONFIG; - - case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_CONFIG_MODE; - - case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: return lemming::dataplane::sai::PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT; - - case SAI_PORT_ATTR_MODULE_TYPE: return lemming::dataplane::sai::PORT_ATTR_MODULE_TYPE; - - case SAI_PORT_ATTR_DUAL_MEDIA: return lemming::dataplane::sai::PORT_ATTR_DUAL_MEDIA; - - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: return lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED; - - case SAI_PORT_ATTR_IPG: return lemming::dataplane::sai::PORT_ATTR_IPG; - - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: return lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD; - - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: return lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD; - - case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; - - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: return lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; - - case SAI_PORT_ATTR_IPSEC_PORT: return lemming::dataplane::sai::PORT_ATTR_IPSEC_PORT; - - case SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE: return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE; - - case SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL: return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL; - - case SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE: return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE; - - case SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL: return lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL; - - case SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: return lemming::dataplane::sai::PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE; - - case SAI_PORT_ATTR_RX_SIGNAL_DETECT: return lemming::dataplane::sai::PORT_ATTR_RX_SIGNAL_DETECT; - - case SAI_PORT_ATTR_RX_LOCK_STATUS: return lemming::dataplane::sai::PORT_ATTR_RX_LOCK_STATUS; - - case SAI_PORT_ATTR_PCS_RX_LINK_STATUS: return lemming::dataplane::sai::PORT_ATTR_PCS_RX_LINK_STATUS; - - case SAI_PORT_ATTR_FEC_ALIGNMENT_LOCK: return lemming::dataplane::sai::PORT_ATTR_FEC_ALIGNMENT_LOCK; - - case SAI_PORT_ATTR_FABRIC_ISOLATE: return lemming::dataplane::sai::PORT_ATTR_FABRIC_ISOLATE; - - case SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: return lemming::dataplane::sai::PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE; - - case SAI_PORT_ATTR_ARS_ENABLE: return lemming::dataplane::sai::PORT_ATTR_ARS_ENABLE; - - case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR; - - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE; - - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE; - - case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: return lemming::dataplane::sai::PORT_ATTR_ARS_ALTERNATE_PATH; - - case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: return lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA; - - case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_ALGORITHM; - - case SAI_PORT_ATTR_ECMP_HASH_SEED: return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_SEED; - - case SAI_PORT_ATTR_ECMP_HASH_OFFSET: return lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_OFFSET; - - case SAI_PORT_ATTR_OPER_PORT_FEC_MODE: return lemming::dataplane::sai::PORT_ATTR_OPER_PORT_FEC_MODE; - - case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: return lemming::dataplane::sai::PORT_ATTR_HOST_TX_SIGNAL_ENABLE; - - case SAI_PORT_ATTR_HOST_TX_READY_STATUS: return lemming::dataplane::sai::PORT_ATTR_HOST_TX_READY_STATUS; - - case SAI_PORT_ATTR_PATH_TRACING_INTF: return lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_INTF; - - case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: return lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE; - - case SAI_PORT_ATTR_RX_FREQUENCY_OFFSET_PPM: return lemming::dataplane::sai::PORT_ATTR_RX_FREQUENCY_OFFSET_PPM; - - case SAI_PORT_ATTR_RX_SNR: return lemming::dataplane::sai::PORT_ATTR_RX_SNR; - - case SAI_PORT_ATTR_DATAPATH_ENABLE: return lemming::dataplane::sai::PORT_ATTR_DATAPATH_ENABLE; - - case SAI_PORT_ATTR_CABLE_PAIR_STATE: return lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_STATE; - - case SAI_PORT_ATTR_CABLE_PAIR_LENGTH: return lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_LENGTH; - - case SAI_PORT_ATTR_CABLE_TYPE: return lemming::dataplane::sai::PORT_ATTR_CABLE_TYPE; - - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT; - - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: return lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT; - - case SAI_PORT_ATTR_POE_PORT_ID: return lemming::dataplane::sai::PORT_ATTR_POE_PORT_ID; - - default: return lemming::dataplane::sai::PORT_ATTR_UNSPECIFIED; - } -} -sai_port_attr_t convert_sai_port_attr_t_to_sai(lemming::dataplane::sai::PortAttr val) { - switch (val) { - - case lemming::dataplane::sai::PORT_ATTR_TYPE: return SAI_PORT_ATTR_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_OPER_STATUS: return SAI_PORT_ATTR_OPER_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: return SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: return SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_QUEUES: return SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES; - - case lemming::dataplane::sai::PORT_ATTR_QOS_QUEUE_LIST: return SAI_PORT_ATTR_QOS_QUEUE_LIST; - - case lemming::dataplane::sai::PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: return SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS; - - case lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: return SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST; - - case lemming::dataplane::sai::PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: return SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_SPEED: return SAI_PORT_ATTR_SUPPORTED_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE: return SAI_PORT_ATTR_SUPPORTED_FEC_MODE; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: return SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: return SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: return SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: return SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: return SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_MEDIA_TYPE: return SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_SPEED: return SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: return SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: return SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: return SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE; - - case lemming::dataplane::sai::PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: return SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: return SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST; - - case lemming::dataplane::sai::PORT_ATTR_EYE_VALUES: return SAI_PORT_ATTR_EYE_VALUES; - - case lemming::dataplane::sai::PORT_ATTR_OPER_SPEED: return SAI_PORT_ATTR_OPER_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_HW_LANE_LIST: return SAI_PORT_ATTR_HW_LANE_LIST; - - case lemming::dataplane::sai::PORT_ATTR_SPEED: return SAI_PORT_ATTR_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_FULL_DUPLEX_MODE: return SAI_PORT_ATTR_FULL_DUPLEX_MODE; - - case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_MODE: return SAI_PORT_ATTR_AUTO_NEG_MODE; - - case lemming::dataplane::sai::PORT_ATTR_ADMIN_STATE: return SAI_PORT_ATTR_ADMIN_STATE; - - case lemming::dataplane::sai::PORT_ATTR_MEDIA_TYPE: return SAI_PORT_ATTR_MEDIA_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_SPEED: return SAI_PORT_ATTR_ADVERTISED_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE: return SAI_PORT_ATTR_ADVERTISED_FEC_MODE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: return SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: return SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: return SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: return SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: return SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_MEDIA_TYPE: return SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_OUI_CODE: return SAI_PORT_ATTR_ADVERTISED_OUI_CODE; - - case lemming::dataplane::sai::PORT_ATTR_PORT_VLAN_ID: return SAI_PORT_ATTR_PORT_VLAN_ID; - - case lemming::dataplane::sai::PORT_ATTR_DEFAULT_VLAN_PRIORITY: return SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY; - - case lemming::dataplane::sai::PORT_ATTR_DROP_UNTAGGED: return SAI_PORT_ATTR_DROP_UNTAGGED; - - case lemming::dataplane::sai::PORT_ATTR_DROP_TAGGED: return SAI_PORT_ATTR_DROP_TAGGED; - - case lemming::dataplane::sai::PORT_ATTR_INTERNAL_LOOPBACK_MODE: return SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE; - - case lemming::dataplane::sai::PORT_ATTR_USE_EXTENDED_FEC: return SAI_PORT_ATTR_USE_EXTENDED_FEC; - - case lemming::dataplane::sai::PORT_ATTR_FEC_MODE: return SAI_PORT_ATTR_FEC_MODE; - - case lemming::dataplane::sai::PORT_ATTR_FEC_MODE_EXTENDED: return SAI_PORT_ATTR_FEC_MODE_EXTENDED; - - case lemming::dataplane::sai::PORT_ATTR_UPDATE_DSCP: return SAI_PORT_ATTR_UPDATE_DSCP; - - case lemming::dataplane::sai::PORT_ATTR_MTU: return SAI_PORT_ATTR_MTU; - - case lemming::dataplane::sai::PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: return SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID; - - case lemming::dataplane::sai::PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: return SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID; - - case lemming::dataplane::sai::PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: return SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID; - - case lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: return SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_ACL: return SAI_PORT_ATTR_INGRESS_ACL; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_ACL: return SAI_PORT_ATTR_EGRESS_ACL; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_MACSEC_ACL: return SAI_PORT_ATTR_INGRESS_MACSEC_ACL; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_MACSEC_ACL: return SAI_PORT_ATTR_EGRESS_MACSEC_ACL; - - case lemming::dataplane::sai::PORT_ATTR_MACSEC_PORT_LIST: return SAI_PORT_ATTR_MACSEC_PORT_LIST; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_MIRROR_SESSION: return SAI_PORT_ATTR_INGRESS_MIRROR_SESSION; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_MIRROR_SESSION: return SAI_PORT_ATTR_EGRESS_MIRROR_SESSION; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: return SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: return SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: return SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: return SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION; - - case lemming::dataplane::sai::PORT_ATTR_POLICER_ID: return SAI_PORT_ATTR_POLICER_ID; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DEFAULT_TC: return SAI_PORT_ATTR_QOS_DEFAULT_TC; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_TC_MAP: return SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: return SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_TC_MAP: return SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: return SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_QUEUE_MAP: return SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: return SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: return SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: return SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: return SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID; - - case lemming::dataplane::sai::PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: return SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST; - - case lemming::dataplane::sai::PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: return SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST; - - case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE; - - case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL: return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL; - - case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX; - - case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX; - - case lemming::dataplane::sai::PORT_ATTR_META_DATA: return SAI_PORT_ATTR_META_DATA; - - case lemming::dataplane::sai::PORT_ATTR_EGRESS_BLOCK_PORT_LIST: return SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST; - - case lemming::dataplane::sai::PORT_ATTR_HW_PROFILE_ID: return SAI_PORT_ATTR_HW_PROFILE_ID; - - case lemming::dataplane::sai::PORT_ATTR_EEE_ENABLE: return SAI_PORT_ATTR_EEE_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_EEE_IDLE_TIME: return SAI_PORT_ATTR_EEE_IDLE_TIME; - - case lemming::dataplane::sai::PORT_ATTR_EEE_WAKE_TIME: return SAI_PORT_ATTR_EEE_WAKE_TIME; - - case lemming::dataplane::sai::PORT_ATTR_PORT_POOL_LIST: return SAI_PORT_ATTR_PORT_POOL_LIST; - - case lemming::dataplane::sai::PORT_ATTR_ISOLATION_GROUP: return SAI_PORT_ATTR_ISOLATION_GROUP; - - case lemming::dataplane::sai::PORT_ATTR_PKT_TX_ENABLE: return SAI_PORT_ATTR_PKT_TX_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_TAM_OBJECT: return SAI_PORT_ATTR_TAM_OBJECT; - - case lemming::dataplane::sai::PORT_ATTR_SERDES_PREEMPHASIS: return SAI_PORT_ATTR_SERDES_PREEMPHASIS; - - case lemming::dataplane::sai::PORT_ATTR_SERDES_IDRIVER: return SAI_PORT_ATTR_SERDES_IDRIVER; - - case lemming::dataplane::sai::PORT_ATTR_SERDES_IPREDRIVER: return SAI_PORT_ATTR_SERDES_IPREDRIVER; - - case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_ENABLE: return SAI_PORT_ATTR_LINK_TRAINING_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_PTP_MODE: return SAI_PORT_ATTR_PTP_MODE; - - case lemming::dataplane::sai::PORT_ATTR_INTERFACE_TYPE: return SAI_PORT_ATTR_INTERFACE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_ADVERTISED_INTERFACE_TYPE: return SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_REFERENCE_CLOCK: return SAI_PORT_ATTR_REFERENCE_CLOCK; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_POLYNOMIAL: return SAI_PORT_ATTR_PRBS_POLYNOMIAL; - - case lemming::dataplane::sai::PORT_ATTR_PORT_SERDES_ID: return SAI_PORT_ATTR_PORT_SERDES_ID; - - case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: return SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_LINK_TRAINING_RX_STATUS: return SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_CONFIG: return SAI_PORT_ATTR_PRBS_CONFIG; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_STATUS: return SAI_PORT_ATTR_PRBS_LOCK_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_LOCK_LOSS_STATUS: return SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATUS: return SAI_PORT_ATTR_PRBS_RX_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PRBS_RX_STATE: return SAI_PORT_ATTR_PRBS_RX_STATE; - - case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_STATUS: return SAI_PORT_ATTR_AUTO_NEG_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_DISABLE_DECREMENT_TTL: return SAI_PORT_ATTR_DISABLE_DECREMENT_TTL; - - case lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case lemming::dataplane::sai::PORT_ATTR_TPID: return SAI_PORT_ATTR_TPID; - - case lemming::dataplane::sai::PORT_ATTR_ERR_STATUS_LIST: return SAI_PORT_ATTR_ERR_STATUS_LIST; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED: return SAI_PORT_ATTR_FABRIC_ATTACHED; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: return SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: return SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: return SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_REACHABILITY: return SAI_PORT_ATTR_FABRIC_REACHABILITY; - - case lemming::dataplane::sai::PORT_ATTR_SYSTEM_PORT: return SAI_PORT_ATTR_SYSTEM_PORT; - - case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: return SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE; - - case lemming::dataplane::sai::PORT_ATTR_LOOPBACK_MODE: return SAI_PORT_ATTR_LOOPBACK_MODE; - - case lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_STATUS: return SAI_PORT_ATTR_MDIX_MODE_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_MDIX_MODE_CONFIG: return SAI_PORT_ATTR_MDIX_MODE_CONFIG; - - case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_CONFIG_MODE: return SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE; - - case lemming::dataplane::sai::PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: return SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT; - - case lemming::dataplane::sai::PORT_ATTR_MODULE_TYPE: return SAI_PORT_ATTR_MODULE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_DUAL_MEDIA: return SAI_PORT_ATTR_DUAL_MEDIA; - - case lemming::dataplane::sai::PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: return SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED; - - case lemming::dataplane::sai::PORT_ATTR_IPG: return SAI_PORT_ATTR_IPG; - - case lemming::dataplane::sai::PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: return SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD; - - case lemming::dataplane::sai::PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: return SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD; - - case lemming::dataplane::sai::PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: return SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; - - case lemming::dataplane::sai::PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: return SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; - - case lemming::dataplane::sai::PORT_ATTR_IPSEC_PORT: return SAI_PORT_ATTR_IPSEC_PORT; - - case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE: return SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL_RANGE; - - case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLD_INTERVAL: return SAI_PORT_ATTR_PFC_TC_DLD_INTERVAL; - - case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE: return SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL_RANGE; - - case lemming::dataplane::sai::PORT_ATTR_PFC_TC_DLR_INTERVAL: return SAI_PORT_ATTR_PFC_TC_DLR_INTERVAL; - - case lemming::dataplane::sai::PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: return SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE; - - case lemming::dataplane::sai::PORT_ATTR_RX_SIGNAL_DETECT: return SAI_PORT_ATTR_RX_SIGNAL_DETECT; - - case lemming::dataplane::sai::PORT_ATTR_RX_LOCK_STATUS: return SAI_PORT_ATTR_RX_LOCK_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PCS_RX_LINK_STATUS: return SAI_PORT_ATTR_PCS_RX_LINK_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_FEC_ALIGNMENT_LOCK: return SAI_PORT_ATTR_FEC_ALIGNMENT_LOCK; - - case lemming::dataplane::sai::PORT_ATTR_FABRIC_ISOLATE: return SAI_PORT_ATTR_FABRIC_ISOLATE; - - case lemming::dataplane::sai::PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: return SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE; - - case lemming::dataplane::sai::PORT_ATTR_ARS_ENABLE: return SAI_PORT_ATTR_ARS_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: return SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR; - - case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: return SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: return SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_ARS_ALTERNATE_PATH: return SAI_PORT_ATTR_ARS_ALTERNATE_PATH; - - case lemming::dataplane::sai::PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: return SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA; - - case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_ALGORITHM: return SAI_PORT_ATTR_ECMP_HASH_ALGORITHM; - - case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_SEED: return SAI_PORT_ATTR_ECMP_HASH_SEED; - - case lemming::dataplane::sai::PORT_ATTR_ECMP_HASH_OFFSET: return SAI_PORT_ATTR_ECMP_HASH_OFFSET; - - case lemming::dataplane::sai::PORT_ATTR_OPER_PORT_FEC_MODE: return SAI_PORT_ATTR_OPER_PORT_FEC_MODE; - - case lemming::dataplane::sai::PORT_ATTR_HOST_TX_SIGNAL_ENABLE: return SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_HOST_TX_READY_STATUS: return SAI_PORT_ATTR_HOST_TX_READY_STATUS; - - case lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_INTF: return SAI_PORT_ATTR_PATH_TRACING_INTF; - - case lemming::dataplane::sai::PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: return SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_RX_FREQUENCY_OFFSET_PPM: return SAI_PORT_ATTR_RX_FREQUENCY_OFFSET_PPM; - - case lemming::dataplane::sai::PORT_ATTR_RX_SNR: return SAI_PORT_ATTR_RX_SNR; - - case lemming::dataplane::sai::PORT_ATTR_DATAPATH_ENABLE: return SAI_PORT_ATTR_DATAPATH_ENABLE; - - case lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_STATE: return SAI_PORT_ATTR_CABLE_PAIR_STATE; - - case lemming::dataplane::sai::PORT_ATTR_CABLE_PAIR_LENGTH: return SAI_PORT_ATTR_CABLE_PAIR_LENGTH; - - case lemming::dataplane::sai::PORT_ATTR_CABLE_TYPE: return SAI_PORT_ATTR_CABLE_TYPE; - - case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: return SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT; - - case lemming::dataplane::sai::PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: return SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT; - - case lemming::dataplane::sai::PORT_ATTR_POE_PORT_ID: return SAI_PORT_ATTR_POE_PORT_ID; - - default: return SAI_PORT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortAutoNegConfigMode convert_sai_port_auto_neg_config_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED: return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_DISABLED; - - case SAI_PORT_AUTO_NEG_CONFIG_MODE_AUTO: return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_AUTO; - - case SAI_PORT_AUTO_NEG_CONFIG_MODE_SLAVE: return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_SLAVE; - - case SAI_PORT_AUTO_NEG_CONFIG_MODE_MASTER: return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_MASTER; - - default: return lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_UNSPECIFIED; - } -} -sai_port_auto_neg_config_mode_t convert_sai_port_auto_neg_config_mode_t_to_sai(lemming::dataplane::sai::PortAutoNegConfigMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_DISABLED: return SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED; - - case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_AUTO: return SAI_PORT_AUTO_NEG_CONFIG_MODE_AUTO; - - case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_SLAVE: return SAI_PORT_AUTO_NEG_CONFIG_MODE_SLAVE; - - case lemming::dataplane::sai::PORT_AUTO_NEG_CONFIG_MODE_MASTER: return SAI_PORT_AUTO_NEG_CONFIG_MODE_MASTER; - - default: return SAI_PORT_AUTO_NEG_CONFIG_MODE_DISABLED; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_auto_neg_config_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_auto_neg_config_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_auto_neg_config_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_auto_neg_config_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortBreakoutModeType convert_sai_port_breakout_mode_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE: return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_1_LANE; - - case SAI_PORT_BREAKOUT_MODE_TYPE_2_LANE: return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_2_LANE; - - case SAI_PORT_BREAKOUT_MODE_TYPE_4_LANE: return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_4_LANE; - - case SAI_PORT_BREAKOUT_MODE_TYPE_MAX: return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_MAX; - - default: return lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_UNSPECIFIED; - } -} -sai_port_breakout_mode_type_t convert_sai_port_breakout_mode_type_t_to_sai(lemming::dataplane::sai::PortBreakoutModeType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_1_LANE: return SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE; - - case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_2_LANE: return SAI_PORT_BREAKOUT_MODE_TYPE_2_LANE; - - case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_4_LANE: return SAI_PORT_BREAKOUT_MODE_TYPE_4_LANE; - - case lemming::dataplane::sai::PORT_BREAKOUT_MODE_TYPE_MAX: return SAI_PORT_BREAKOUT_MODE_TYPE_MAX; - - default: return SAI_PORT_BREAKOUT_MODE_TYPE_1_LANE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_breakout_mode_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_breakout_mode_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_breakout_mode_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_breakout_mode_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortCablePairState convert_sai_port_cable_pair_state_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_CABLE_PAIR_STATE_OK: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OK; - - case SAI_PORT_CABLE_PAIR_STATE_OPEN: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OPEN; - - case SAI_PORT_CABLE_PAIR_STATE_SHORT: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_SHORT; - - case SAI_PORT_CABLE_PAIR_STATE_CROSSTALK: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_CROSSTALK; - - case SAI_PORT_CABLE_PAIR_STATE_UNKNOWN: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNKNOWN; - - default: return lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNSPECIFIED; - } -} -sai_port_cable_pair_state_t convert_sai_port_cable_pair_state_t_to_sai(lemming::dataplane::sai::PortCablePairState val) { - switch (val) { - - case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OK: return SAI_PORT_CABLE_PAIR_STATE_OK; - - case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_OPEN: return SAI_PORT_CABLE_PAIR_STATE_OPEN; - - case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_SHORT: return SAI_PORT_CABLE_PAIR_STATE_SHORT; - - case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_CROSSTALK: return SAI_PORT_CABLE_PAIR_STATE_CROSSTALK; - - case lemming::dataplane::sai::PORT_CABLE_PAIR_STATE_UNKNOWN: return SAI_PORT_CABLE_PAIR_STATE_UNKNOWN; - - default: return SAI_PORT_CABLE_PAIR_STATE_OK; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_cable_pair_state_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_cable_pair_state_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_cable_pair_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_cable_pair_state_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortCableType convert_sai_port_cable_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_CABLE_TYPE_UNKNOWN: return lemming::dataplane::sai::PORT_CABLE_TYPE_UNKNOWN; - - case SAI_PORT_CABLE_TYPE_CAT5: return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5; - - case SAI_PORT_CABLE_TYPE_CAT5E: return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5E; - - case SAI_PORT_CABLE_TYPE_CAT6: return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6; - - case SAI_PORT_CABLE_TYPE_CAT6A: return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6A; - - case SAI_PORT_CABLE_TYPE_CAT7: return lemming::dataplane::sai::PORT_CABLE_TYPE_CAT7; - - default: return lemming::dataplane::sai::PORT_CABLE_TYPE_UNSPECIFIED; - } -} -sai_port_cable_type_t convert_sai_port_cable_type_t_to_sai(lemming::dataplane::sai::PortCableType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_CABLE_TYPE_UNKNOWN: return SAI_PORT_CABLE_TYPE_UNKNOWN; - - case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5: return SAI_PORT_CABLE_TYPE_CAT5; - - case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT5E: return SAI_PORT_CABLE_TYPE_CAT5E; - - case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6: return SAI_PORT_CABLE_TYPE_CAT6; - - case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT6A: return SAI_PORT_CABLE_TYPE_CAT6A; - - case lemming::dataplane::sai::PORT_CABLE_TYPE_CAT7: return SAI_PORT_CABLE_TYPE_CAT7; - - default: return SAI_PORT_CABLE_TYPE_UNKNOWN; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_cable_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_cable_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_cable_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_cable_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortConnectorAttr convert_sai_port_connector_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; - - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID; - - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID; - - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID; - - case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_FAILOVER_MODE; - - default: return lemming::dataplane::sai::PORT_CONNECTOR_ATTR_UNSPECIFIED; - } -} -sai_port_connector_attr_t convert_sai_port_connector_attr_t_to_sai(lemming::dataplane::sai::PortConnectorAttr val) { - switch (val) { - - case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; - - case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: return SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID; - - case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID; - - case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: return SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID; - - case lemming::dataplane::sai::PORT_CONNECTOR_ATTR_FAILOVER_MODE: return SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE; - - default: return SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_connector_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_connector_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_connector_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_connector_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortConnectorFailoverMode convert_sai_port_connector_failover_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE: return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_DISABLE; - - case SAI_PORT_CONNECTOR_FAILOVER_MODE_PRIMARY: return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_PRIMARY; - - case SAI_PORT_CONNECTOR_FAILOVER_MODE_SECONDARY: return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_SECONDARY; - - default: return lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_UNSPECIFIED; - } -} -sai_port_connector_failover_mode_t convert_sai_port_connector_failover_mode_t_to_sai(lemming::dataplane::sai::PortConnectorFailoverMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_DISABLE: return SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE; - - case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_PRIMARY: return SAI_PORT_CONNECTOR_FAILOVER_MODE_PRIMARY; - - case lemming::dataplane::sai::PORT_CONNECTOR_FAILOVER_MODE_SECONDARY: return SAI_PORT_CONNECTOR_FAILOVER_MODE_SECONDARY; - - default: return SAI_PORT_CONNECTOR_FAILOVER_MODE_DISABLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_connector_failover_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_connector_failover_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_connector_failover_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_connector_failover_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortDatapathEnable convert_sai_port_datapath_enable_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE: return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; - - case SAI_PORT_DATAPATH_ENABLE_PCS_IEEE_MODE: return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PCS_IEEE_MODE; - - default: return lemming::dataplane::sai::PORT_DATAPATH_ENABLE_UNSPECIFIED; - } -} -sai_port_datapath_enable_t convert_sai_port_datapath_enable_t_to_sai(lemming::dataplane::sai::PortDatapathEnable val) { - switch (val) { - - case lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE: return SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; - - case lemming::dataplane::sai::PORT_DATAPATH_ENABLE_PCS_IEEE_MODE: return SAI_PORT_DATAPATH_ENABLE_PCS_IEEE_MODE; - - default: return SAI_PORT_DATAPATH_ENABLE_PASS_THROUGH_MODE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_datapath_enable_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_datapath_enable_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_datapath_enable_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_datapath_enable_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortDualMedia convert_sai_port_dual_media_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_DUAL_MEDIA_NONE: return lemming::dataplane::sai::PORT_DUAL_MEDIA_NONE; - - case SAI_PORT_DUAL_MEDIA_COPPER_ONLY: return lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_ONLY; - - case SAI_PORT_DUAL_MEDIA_FIBER_ONLY: return lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_ONLY; - - case SAI_PORT_DUAL_MEDIA_COPPER_PREFERRED: return lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_PREFERRED; - - case SAI_PORT_DUAL_MEDIA_FIBER_PREFERRED: return lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_PREFERRED; - - default: return lemming::dataplane::sai::PORT_DUAL_MEDIA_UNSPECIFIED; - } -} -sai_port_dual_media_t convert_sai_port_dual_media_t_to_sai(lemming::dataplane::sai::PortDualMedia val) { - switch (val) { - - case lemming::dataplane::sai::PORT_DUAL_MEDIA_NONE: return SAI_PORT_DUAL_MEDIA_NONE; - - case lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_ONLY: return SAI_PORT_DUAL_MEDIA_COPPER_ONLY; - - case lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_ONLY: return SAI_PORT_DUAL_MEDIA_FIBER_ONLY; - - case lemming::dataplane::sai::PORT_DUAL_MEDIA_COPPER_PREFERRED: return SAI_PORT_DUAL_MEDIA_COPPER_PREFERRED; - - case lemming::dataplane::sai::PORT_DUAL_MEDIA_FIBER_PREFERRED: return SAI_PORT_DUAL_MEDIA_FIBER_PREFERRED; - - default: return SAI_PORT_DUAL_MEDIA_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_dual_media_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_dual_media_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_dual_media_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_dual_media_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortErrStatus convert_sai_port_err_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR: return lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; - - case SAI_PORT_ERR_STATUS_DATA_UNIT_SIZE: return lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_SIZE; - - case SAI_PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: return lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; - - case SAI_PORT_ERR_STATUS_CODE_GROUP_ERROR: return lemming::dataplane::sai::PORT_ERR_STATUS_CODE_GROUP_ERROR; - - case SAI_PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR: return lemming::dataplane::sai::PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR; - - case SAI_PORT_ERR_STATUS_NO_RX_REACHABILITY: return lemming::dataplane::sai::PORT_ERR_STATUS_NO_RX_REACHABILITY; - - case SAI_PORT_ERR_STATUS_CRC_RATE: return lemming::dataplane::sai::PORT_ERR_STATUS_CRC_RATE; - - case SAI_PORT_ERR_STATUS_REMOTE_FAULT_STATUS: return lemming::dataplane::sai::PORT_ERR_STATUS_REMOTE_FAULT_STATUS; - - case SAI_PORT_ERR_STATUS_MAX: return lemming::dataplane::sai::PORT_ERR_STATUS_MAX; - - default: return lemming::dataplane::sai::PORT_ERR_STATUS_UNSPECIFIED; - } -} -sai_port_err_status_t convert_sai_port_err_status_t_to_sai(lemming::dataplane::sai::PortErrStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR: return SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; - - case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_SIZE: return SAI_PORT_ERR_STATUS_DATA_UNIT_SIZE; - - case lemming::dataplane::sai::PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR: return SAI_PORT_ERR_STATUS_DATA_UNIT_MISALIGNMENT_ERROR; - - case lemming::dataplane::sai::PORT_ERR_STATUS_CODE_GROUP_ERROR: return SAI_PORT_ERR_STATUS_CODE_GROUP_ERROR; - - case lemming::dataplane::sai::PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR: return SAI_PORT_ERR_STATUS_SIGNAL_LOCAL_ERROR; - - case lemming::dataplane::sai::PORT_ERR_STATUS_NO_RX_REACHABILITY: return SAI_PORT_ERR_STATUS_NO_RX_REACHABILITY; - - case lemming::dataplane::sai::PORT_ERR_STATUS_CRC_RATE: return SAI_PORT_ERR_STATUS_CRC_RATE; - - case lemming::dataplane::sai::PORT_ERR_STATUS_REMOTE_FAULT_STATUS: return SAI_PORT_ERR_STATUS_REMOTE_FAULT_STATUS; - - case lemming::dataplane::sai::PORT_ERR_STATUS_MAX: return SAI_PORT_ERR_STATUS_MAX; - - default: return SAI_PORT_ERR_STATUS_DATA_UNIT_CRC_ERROR; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_err_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_err_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_err_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_err_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortFecModeExtended convert_sai_port_fec_mode_extended_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_FEC_MODE_EXTENDED_NONE: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_NONE; - - case SAI_PORT_FEC_MODE_EXTENDED_RS528: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS528; - - case SAI_PORT_FEC_MODE_EXTENDED_RS544: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544; - - case SAI_PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED; - - case SAI_PORT_FEC_MODE_EXTENDED_FC: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_FC; - - default: return lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_UNSPECIFIED; - } -} -sai_port_fec_mode_extended_t convert_sai_port_fec_mode_extended_t_to_sai(lemming::dataplane::sai::PortFecModeExtended val) { - switch (val) { - - case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_NONE: return SAI_PORT_FEC_MODE_EXTENDED_NONE; - - case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS528: return SAI_PORT_FEC_MODE_EXTENDED_RS528; - - case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544: return SAI_PORT_FEC_MODE_EXTENDED_RS544; - - case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED: return SAI_PORT_FEC_MODE_EXTENDED_RS544_INTERLEAVED; - - case lemming::dataplane::sai::PORT_FEC_MODE_EXTENDED_FC: return SAI_PORT_FEC_MODE_EXTENDED_FC; - - default: return SAI_PORT_FEC_MODE_EXTENDED_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_fec_mode_extended_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_fec_mode_extended_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_fec_mode_extended_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_fec_mode_extended_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortFecMode convert_sai_port_fec_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_FEC_MODE_NONE: return lemming::dataplane::sai::PORT_FEC_MODE_NONE; - - case SAI_PORT_FEC_MODE_RS: return lemming::dataplane::sai::PORT_FEC_MODE_RS; - - case SAI_PORT_FEC_MODE_FC: return lemming::dataplane::sai::PORT_FEC_MODE_FC; - - default: return lemming::dataplane::sai::PORT_FEC_MODE_UNSPECIFIED; - } -} -sai_port_fec_mode_t convert_sai_port_fec_mode_t_to_sai(lemming::dataplane::sai::PortFecMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_FEC_MODE_NONE: return SAI_PORT_FEC_MODE_NONE; - - case lemming::dataplane::sai::PORT_FEC_MODE_RS: return SAI_PORT_FEC_MODE_RS; - - case lemming::dataplane::sai::PORT_FEC_MODE_FC: return SAI_PORT_FEC_MODE_FC; - - default: return SAI_PORT_FEC_MODE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_fec_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_fec_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_fec_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_fec_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortFlowControlMode convert_sai_port_flow_control_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_FLOW_CONTROL_MODE_DISABLE: return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_DISABLE; - - case SAI_PORT_FLOW_CONTROL_MODE_TX_ONLY: return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_TX_ONLY; - - case SAI_PORT_FLOW_CONTROL_MODE_RX_ONLY: return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_RX_ONLY; - - case SAI_PORT_FLOW_CONTROL_MODE_BOTH_ENABLE: return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_BOTH_ENABLE; - - default: return lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_UNSPECIFIED; - } -} -sai_port_flow_control_mode_t convert_sai_port_flow_control_mode_t_to_sai(lemming::dataplane::sai::PortFlowControlMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_DISABLE: return SAI_PORT_FLOW_CONTROL_MODE_DISABLE; - - case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_TX_ONLY: return SAI_PORT_FLOW_CONTROL_MODE_TX_ONLY; - - case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_RX_ONLY: return SAI_PORT_FLOW_CONTROL_MODE_RX_ONLY; - - case lemming::dataplane::sai::PORT_FLOW_CONTROL_MODE_BOTH_ENABLE: return SAI_PORT_FLOW_CONTROL_MODE_BOTH_ENABLE; - - default: return SAI_PORT_FLOW_CONTROL_MODE_DISABLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_flow_control_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_flow_control_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_flow_control_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_flow_control_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortHostTxReadyStatus convert_sai_port_host_tx_ready_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_HOST_TX_READY_STATUS_NOT_READY: return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_NOT_READY; - - case SAI_PORT_HOST_TX_READY_STATUS_READY: return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_READY; - - default: return lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_UNSPECIFIED; - } -} -sai_port_host_tx_ready_status_t convert_sai_port_host_tx_ready_status_t_to_sai(lemming::dataplane::sai::PortHostTxReadyStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_NOT_READY: return SAI_PORT_HOST_TX_READY_STATUS_NOT_READY; - - case lemming::dataplane::sai::PORT_HOST_TX_READY_STATUS_READY: return SAI_PORT_HOST_TX_READY_STATUS_READY; - - default: return SAI_PORT_HOST_TX_READY_STATUS_NOT_READY; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_host_tx_ready_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_host_tx_ready_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_host_tx_ready_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_host_tx_ready_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortInterfaceType convert_sai_port_interface_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_INTERFACE_TYPE_NONE: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_NONE; - - case SAI_PORT_INTERFACE_TYPE_CR: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR; - - case SAI_PORT_INTERFACE_TYPE_CR2: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR2; - - case SAI_PORT_INTERFACE_TYPE_CR4: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR4; - - case SAI_PORT_INTERFACE_TYPE_SR: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR; - - case SAI_PORT_INTERFACE_TYPE_SR2: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR2; - - case SAI_PORT_INTERFACE_TYPE_SR4: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR4; - - case SAI_PORT_INTERFACE_TYPE_LR: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR; - - case SAI_PORT_INTERFACE_TYPE_LR4: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR4; - - case SAI_PORT_INTERFACE_TYPE_KR: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR; - - case SAI_PORT_INTERFACE_TYPE_KR4: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR4; - - case SAI_PORT_INTERFACE_TYPE_CAUI: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI; - - case SAI_PORT_INTERFACE_TYPE_GMII: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_GMII; - - case SAI_PORT_INTERFACE_TYPE_SFI: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SFI; - - case SAI_PORT_INTERFACE_TYPE_XLAUI: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XLAUI; - - case SAI_PORT_INTERFACE_TYPE_KR2: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR2; - - case SAI_PORT_INTERFACE_TYPE_CAUI4: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI4; - - case SAI_PORT_INTERFACE_TYPE_XAUI: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XAUI; - - case SAI_PORT_INTERFACE_TYPE_XFI: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XFI; - - case SAI_PORT_INTERFACE_TYPE_XGMII: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_XGMII; - - case SAI_PORT_INTERFACE_TYPE_CR8: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR8; - - case SAI_PORT_INTERFACE_TYPE_KR8: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR8; - - case SAI_PORT_INTERFACE_TYPE_SR8: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR8; - - case SAI_PORT_INTERFACE_TYPE_LR8: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR8; - - case SAI_PORT_INTERFACE_TYPE_USXGMII: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_USXGMII; - - case SAI_PORT_INTERFACE_TYPE_MAX: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_MAX; - - default: return lemming::dataplane::sai::PORT_INTERFACE_TYPE_UNSPECIFIED; - } -} -sai_port_interface_type_t convert_sai_port_interface_type_t_to_sai(lemming::dataplane::sai::PortInterfaceType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_NONE: return SAI_PORT_INTERFACE_TYPE_NONE; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR: return SAI_PORT_INTERFACE_TYPE_CR; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR2: return SAI_PORT_INTERFACE_TYPE_CR2; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR4: return SAI_PORT_INTERFACE_TYPE_CR4; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR: return SAI_PORT_INTERFACE_TYPE_SR; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR2: return SAI_PORT_INTERFACE_TYPE_SR2; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR4: return SAI_PORT_INTERFACE_TYPE_SR4; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR: return SAI_PORT_INTERFACE_TYPE_LR; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR4: return SAI_PORT_INTERFACE_TYPE_LR4; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR: return SAI_PORT_INTERFACE_TYPE_KR; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR4: return SAI_PORT_INTERFACE_TYPE_KR4; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI: return SAI_PORT_INTERFACE_TYPE_CAUI; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_GMII: return SAI_PORT_INTERFACE_TYPE_GMII; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SFI: return SAI_PORT_INTERFACE_TYPE_SFI; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XLAUI: return SAI_PORT_INTERFACE_TYPE_XLAUI; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR2: return SAI_PORT_INTERFACE_TYPE_KR2; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CAUI4: return SAI_PORT_INTERFACE_TYPE_CAUI4; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XAUI: return SAI_PORT_INTERFACE_TYPE_XAUI; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XFI: return SAI_PORT_INTERFACE_TYPE_XFI; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_XGMII: return SAI_PORT_INTERFACE_TYPE_XGMII; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_CR8: return SAI_PORT_INTERFACE_TYPE_CR8; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_KR8: return SAI_PORT_INTERFACE_TYPE_KR8; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_SR8: return SAI_PORT_INTERFACE_TYPE_SR8; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_LR8: return SAI_PORT_INTERFACE_TYPE_LR8; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_USXGMII: return SAI_PORT_INTERFACE_TYPE_USXGMII; - - case lemming::dataplane::sai::PORT_INTERFACE_TYPE_MAX: return SAI_PORT_INTERFACE_TYPE_MAX; - - default: return SAI_PORT_INTERFACE_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_interface_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_interface_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_interface_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_interface_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortInternalLoopbackMode convert_sai_port_internal_loopback_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE: return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_NONE; - - case SAI_PORT_INTERNAL_LOOPBACK_MODE_PHY: return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_PHY; - - case SAI_PORT_INTERNAL_LOOPBACK_MODE_MAC: return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_MAC; - - default: return lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_UNSPECIFIED; - } -} -sai_port_internal_loopback_mode_t convert_sai_port_internal_loopback_mode_t_to_sai(lemming::dataplane::sai::PortInternalLoopbackMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_NONE: return SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE; - - case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_PHY: return SAI_PORT_INTERNAL_LOOPBACK_MODE_PHY; - - case lemming::dataplane::sai::PORT_INTERNAL_LOOPBACK_MODE_MAC: return SAI_PORT_INTERNAL_LOOPBACK_MODE_MAC; - - default: return SAI_PORT_INTERNAL_LOOPBACK_MODE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_internal_loopback_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_internal_loopback_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_internal_loopback_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_internal_loopback_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortLinkTrainingFailureStatus convert_sai_port_link_training_failure_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR: return lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; - - case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR: return lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR; - - case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD: return lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD; - - case SAI_PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT: return lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT; - - default: return lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_UNSPECIFIED; - } -} -sai_port_link_training_failure_status_t convert_sai_port_link_training_failure_status_t_to_sai(lemming::dataplane::sai::PortLinkTrainingFailureStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR: return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; - - case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR: return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_FRAME_LOCK_ERROR; - - case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD: return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_SNR_LOWER_THRESHOLD; - - case lemming::dataplane::sai::PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT: return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_TIME_OUT; - - default: return SAI_PORT_LINK_TRAINING_FAILURE_STATUS_NO_ERROR; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_link_training_failure_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_link_training_failure_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_link_training_failure_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_link_training_failure_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortLinkTrainingRxStatus convert_sai_port_link_training_rx_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED: return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; - - case SAI_PORT_LINK_TRAINING_RX_STATUS_TRAINED: return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_TRAINED; - - default: return lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_UNSPECIFIED; - } -} -sai_port_link_training_rx_status_t convert_sai_port_link_training_rx_status_t_to_sai(lemming::dataplane::sai::PortLinkTrainingRxStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED: return SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; - - case lemming::dataplane::sai::PORT_LINK_TRAINING_RX_STATUS_TRAINED: return SAI_PORT_LINK_TRAINING_RX_STATUS_TRAINED; - - default: return SAI_PORT_LINK_TRAINING_RX_STATUS_NOT_TRAINED; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_link_training_rx_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_link_training_rx_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_link_training_rx_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_link_training_rx_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortLoopbackMode convert_sai_port_loopback_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_LOOPBACK_MODE_NONE: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_NONE; - - case SAI_PORT_LOOPBACK_MODE_PHY: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY; - - case SAI_PORT_LOOPBACK_MODE_MAC: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC; - - case SAI_PORT_LOOPBACK_MODE_PHY_REMOTE: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY_REMOTE; - - case SAI_PORT_LOOPBACK_MODE_MAC_REMOTE: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC_REMOTE; - - default: return lemming::dataplane::sai::PORT_LOOPBACK_MODE_UNSPECIFIED; - } -} -sai_port_loopback_mode_t convert_sai_port_loopback_mode_t_to_sai(lemming::dataplane::sai::PortLoopbackMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_LOOPBACK_MODE_NONE: return SAI_PORT_LOOPBACK_MODE_NONE; - - case lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY: return SAI_PORT_LOOPBACK_MODE_PHY; - - case lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC: return SAI_PORT_LOOPBACK_MODE_MAC; - - case lemming::dataplane::sai::PORT_LOOPBACK_MODE_PHY_REMOTE: return SAI_PORT_LOOPBACK_MODE_PHY_REMOTE; - - case lemming::dataplane::sai::PORT_LOOPBACK_MODE_MAC_REMOTE: return SAI_PORT_LOOPBACK_MODE_MAC_REMOTE; - - default: return SAI_PORT_LOOPBACK_MODE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_loopback_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_loopback_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_loopback_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_loopback_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortMdixModeConfig convert_sai_port_mdix_mode_config_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_MDIX_MODE_CONFIG_AUTO: return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_AUTO; - - case SAI_PORT_MDIX_MODE_CONFIG_STRAIGHT: return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_STRAIGHT; - - case SAI_PORT_MDIX_MODE_CONFIG_CROSSOVER: return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_CROSSOVER; - - default: return lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_UNSPECIFIED; - } -} -sai_port_mdix_mode_config_t convert_sai_port_mdix_mode_config_t_to_sai(lemming::dataplane::sai::PortMdixModeConfig val) { - switch (val) { - - case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_AUTO: return SAI_PORT_MDIX_MODE_CONFIG_AUTO; - - case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_STRAIGHT: return SAI_PORT_MDIX_MODE_CONFIG_STRAIGHT; - - case lemming::dataplane::sai::PORT_MDIX_MODE_CONFIG_CROSSOVER: return SAI_PORT_MDIX_MODE_CONFIG_CROSSOVER; - - default: return SAI_PORT_MDIX_MODE_CONFIG_AUTO; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_mdix_mode_config_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_mdix_mode_config_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_mdix_mode_config_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_mdix_mode_config_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortMdixModeStatus convert_sai_port_mdix_mode_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_MDIX_MODE_STATUS_STRAIGHT: return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_STRAIGHT; - - case SAI_PORT_MDIX_MODE_STATUS_CROSSOVER: return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_CROSSOVER; - - default: return lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_UNSPECIFIED; - } -} -sai_port_mdix_mode_status_t convert_sai_port_mdix_mode_status_t_to_sai(lemming::dataplane::sai::PortMdixModeStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_STRAIGHT: return SAI_PORT_MDIX_MODE_STATUS_STRAIGHT; - - case lemming::dataplane::sai::PORT_MDIX_MODE_STATUS_CROSSOVER: return SAI_PORT_MDIX_MODE_STATUS_CROSSOVER; - - default: return SAI_PORT_MDIX_MODE_STATUS_STRAIGHT; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_mdix_mode_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_mdix_mode_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_mdix_mode_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_mdix_mode_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortMediaType convert_sai_port_media_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_MEDIA_TYPE_NOT_PRESENT: return lemming::dataplane::sai::PORT_MEDIA_TYPE_NOT_PRESENT; - - case SAI_PORT_MEDIA_TYPE_UNKNOWN: return lemming::dataplane::sai::PORT_MEDIA_TYPE_UNKNOWN; - - case SAI_PORT_MEDIA_TYPE_FIBER: return lemming::dataplane::sai::PORT_MEDIA_TYPE_FIBER; - - case SAI_PORT_MEDIA_TYPE_COPPER: return lemming::dataplane::sai::PORT_MEDIA_TYPE_COPPER; - - case SAI_PORT_MEDIA_TYPE_BACKPLANE: return lemming::dataplane::sai::PORT_MEDIA_TYPE_BACKPLANE; - - default: return lemming::dataplane::sai::PORT_MEDIA_TYPE_UNSPECIFIED; - } -} -sai_port_media_type_t convert_sai_port_media_type_t_to_sai(lemming::dataplane::sai::PortMediaType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_MEDIA_TYPE_NOT_PRESENT: return SAI_PORT_MEDIA_TYPE_NOT_PRESENT; - - case lemming::dataplane::sai::PORT_MEDIA_TYPE_UNKNOWN: return SAI_PORT_MEDIA_TYPE_UNKNOWN; - - case lemming::dataplane::sai::PORT_MEDIA_TYPE_FIBER: return SAI_PORT_MEDIA_TYPE_FIBER; - - case lemming::dataplane::sai::PORT_MEDIA_TYPE_COPPER: return SAI_PORT_MEDIA_TYPE_COPPER; - - case lemming::dataplane::sai::PORT_MEDIA_TYPE_BACKPLANE: return SAI_PORT_MEDIA_TYPE_BACKPLANE; - - default: return SAI_PORT_MEDIA_TYPE_NOT_PRESENT; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_media_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_media_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_media_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_media_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortModuleType convert_sai_port_module_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_MODULE_TYPE_1000BASE_X: return lemming::dataplane::sai::PORT_MODULE_TYPE_1000BASE_X; - - case SAI_PORT_MODULE_TYPE_100FX: return lemming::dataplane::sai::PORT_MODULE_TYPE_100FX; - - case SAI_PORT_MODULE_TYPE_SGMII_SLAVE: return lemming::dataplane::sai::PORT_MODULE_TYPE_SGMII_SLAVE; - - default: return lemming::dataplane::sai::PORT_MODULE_TYPE_UNSPECIFIED; - } -} -sai_port_module_type_t convert_sai_port_module_type_t_to_sai(lemming::dataplane::sai::PortModuleType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_MODULE_TYPE_1000BASE_X: return SAI_PORT_MODULE_TYPE_1000BASE_X; - - case lemming::dataplane::sai::PORT_MODULE_TYPE_100FX: return SAI_PORT_MODULE_TYPE_100FX; - - case lemming::dataplane::sai::PORT_MODULE_TYPE_SGMII_SLAVE: return SAI_PORT_MODULE_TYPE_SGMII_SLAVE; - - default: return SAI_PORT_MODULE_TYPE_1000BASE_X; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_module_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_module_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_module_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_module_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortOperStatus convert_sai_port_oper_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_OPER_STATUS_UNKNOWN: return lemming::dataplane::sai::PORT_OPER_STATUS_UNKNOWN; - - case SAI_PORT_OPER_STATUS_UP: return lemming::dataplane::sai::PORT_OPER_STATUS_UP; - - case SAI_PORT_OPER_STATUS_DOWN: return lemming::dataplane::sai::PORT_OPER_STATUS_DOWN; - - case SAI_PORT_OPER_STATUS_TESTING: return lemming::dataplane::sai::PORT_OPER_STATUS_TESTING; - - case SAI_PORT_OPER_STATUS_NOT_PRESENT: return lemming::dataplane::sai::PORT_OPER_STATUS_NOT_PRESENT; - - default: return lemming::dataplane::sai::PORT_OPER_STATUS_UNSPECIFIED; - } -} -sai_port_oper_status_t convert_sai_port_oper_status_t_to_sai(lemming::dataplane::sai::PortOperStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_OPER_STATUS_UNKNOWN: return SAI_PORT_OPER_STATUS_UNKNOWN; - - case lemming::dataplane::sai::PORT_OPER_STATUS_UP: return SAI_PORT_OPER_STATUS_UP; - - case lemming::dataplane::sai::PORT_OPER_STATUS_DOWN: return SAI_PORT_OPER_STATUS_DOWN; - - case lemming::dataplane::sai::PORT_OPER_STATUS_TESTING: return SAI_PORT_OPER_STATUS_TESTING; - - case lemming::dataplane::sai::PORT_OPER_STATUS_NOT_PRESENT: return SAI_PORT_OPER_STATUS_NOT_PRESENT; - - default: return SAI_PORT_OPER_STATUS_UNKNOWN; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_oper_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_oper_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_oper_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_oper_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPathTracingTimestampType convert_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15: return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; - - case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19: return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19; - - case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23: return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23; - - case SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27: return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27; - - default: return lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_UNSPECIFIED; - } -} -sai_port_path_tracing_timestamp_type_t convert_sai_port_path_tracing_timestamp_type_t_to_sai(lemming::dataplane::sai::PortPathTracingTimestampType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15: return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; - - case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19: return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_12_19; - - case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23: return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_16_23; - - case lemming::dataplane::sai::PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27: return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_20_27; - - default: return SAI_PORT_PATH_TRACING_TIMESTAMP_TYPE_8_15; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_path_tracing_timestamp_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_path_tracing_timestamp_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_path_tracing_timestamp_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPoolAttr convert_sai_port_pool_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_POOL_ATTR_PORT_ID: return lemming::dataplane::sai::PORT_POOL_ATTR_PORT_ID; - - case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: return lemming::dataplane::sai::PORT_POOL_ATTR_BUFFER_POOL_ID; - - case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: return lemming::dataplane::sai::PORT_POOL_ATTR_QOS_WRED_PROFILE_ID; - - default: return lemming::dataplane::sai::PORT_POOL_ATTR_UNSPECIFIED; - } -} -sai_port_pool_attr_t convert_sai_port_pool_attr_t_to_sai(lemming::dataplane::sai::PortPoolAttr val) { - switch (val) { - - case lemming::dataplane::sai::PORT_POOL_ATTR_PORT_ID: return SAI_PORT_POOL_ATTR_PORT_ID; - - case lemming::dataplane::sai::PORT_POOL_ATTR_BUFFER_POOL_ID: return SAI_PORT_POOL_ATTR_BUFFER_POOL_ID; - - case lemming::dataplane::sai::PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: return SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID; - - default: return SAI_PORT_POOL_ATTR_PORT_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_pool_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_pool_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_pool_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_pool_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPoolStat convert_sai_port_pool_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_POOL_STAT_IF_OCTETS: return lemming::dataplane::sai::PORT_POOL_STAT_IF_OCTETS; - - case SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; - - case SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES; - - case SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; - - case SAI_PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS; - - case SAI_PORT_POOL_STAT_RED_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_BYTES; - - case SAI_PORT_POOL_STAT_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_PACKETS; - - case SAI_PORT_POOL_STAT_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_BYTES; - - case SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; - - case SAI_PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS; - - case SAI_PORT_POOL_STAT_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_BYTES; - - case SAI_PORT_POOL_STAT_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_POOL_STAT_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_WATERMARK_BYTES; - - case SAI_PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_POOL_STAT_SHARED_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_POOL_STAT_SHARED_WATERMARK_BYTES; - - case SAI_PORT_POOL_STAT_DROPPED_PKTS: return lemming::dataplane::sai::PORT_POOL_STAT_DROPPED_PKTS; - - default: return lemming::dataplane::sai::PORT_POOL_STAT_UNSPECIFIED; - } -} -sai_port_pool_stat_t convert_sai_port_pool_stat_t_to_sai(lemming::dataplane::sai::PortPoolStat val) { - switch (val) { - - case lemming::dataplane::sai::PORT_POOL_STAT_IF_OCTETS: return SAI_PORT_POOL_STAT_IF_OCTETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS: return SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES: return SAI_PORT_POOL_STAT_GREEN_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS: return SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES: return SAI_PORT_POOL_STAT_YELLOW_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS: return SAI_PORT_POOL_STAT_RED_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_DROPPED_BYTES: return SAI_PORT_POOL_STAT_RED_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_PACKETS: return SAI_PORT_POOL_STAT_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_WRED_DROPPED_BYTES: return SAI_PORT_POOL_STAT_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES: return SAI_PORT_POOL_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return SAI_PORT_POOL_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS: return SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES: return SAI_PORT_POOL_STAT_RED_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS: return SAI_PORT_POOL_STAT_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::PORT_POOL_STAT_WRED_ECN_MARKED_BYTES: return SAI_PORT_POOL_STAT_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_CURR_OCCUPANCY_BYTES: return SAI_PORT_POOL_STAT_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_WATERMARK_BYTES: return SAI_PORT_POOL_STAT_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES: return SAI_PORT_POOL_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_SHARED_WATERMARK_BYTES: return SAI_PORT_POOL_STAT_SHARED_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_POOL_STAT_DROPPED_PKTS: return SAI_PORT_POOL_STAT_DROPPED_PKTS; - - default: return SAI_PORT_POOL_STAT_IF_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_pool_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_pool_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_pool_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_pool_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPrbsConfig convert_sai_port_prbs_config_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_PRBS_CONFIG_DISABLE: return lemming::dataplane::sai::PORT_PRBS_CONFIG_DISABLE; - - case SAI_PORT_PRBS_CONFIG_ENABLE_TX_RX: return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX_RX; - - case SAI_PORT_PRBS_CONFIG_ENABLE_RX: return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_RX; - - case SAI_PORT_PRBS_CONFIG_ENABLE_TX: return lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX; - - default: return lemming::dataplane::sai::PORT_PRBS_CONFIG_UNSPECIFIED; - } -} -sai_port_prbs_config_t convert_sai_port_prbs_config_t_to_sai(lemming::dataplane::sai::PortPrbsConfig val) { - switch (val) { - - case lemming::dataplane::sai::PORT_PRBS_CONFIG_DISABLE: return SAI_PORT_PRBS_CONFIG_DISABLE; - - case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX_RX: return SAI_PORT_PRBS_CONFIG_ENABLE_TX_RX; - - case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_RX: return SAI_PORT_PRBS_CONFIG_ENABLE_RX; - - case lemming::dataplane::sai::PORT_PRBS_CONFIG_ENABLE_TX: return SAI_PORT_PRBS_CONFIG_ENABLE_TX; - - default: return SAI_PORT_PRBS_CONFIG_DISABLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_prbs_config_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_prbs_config_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_prbs_config_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_prbs_config_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPrbsRxStatus convert_sai_port_prbs_rx_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_PRBS_RX_STATUS_OK: return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_OK; - - case SAI_PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS: return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS; - - case SAI_PORT_PRBS_RX_STATUS_NOT_LOCKED: return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_NOT_LOCKED; - - case SAI_PORT_PRBS_RX_STATUS_LOST_LOCK: return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOST_LOCK; - - default: return lemming::dataplane::sai::PORT_PRBS_RX_STATUS_UNSPECIFIED; - } -} -sai_port_prbs_rx_status_t convert_sai_port_prbs_rx_status_t_to_sai(lemming::dataplane::sai::PortPrbsRxStatus val) { - switch (val) { - - case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_OK: return SAI_PORT_PRBS_RX_STATUS_OK; - - case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS: return SAI_PORT_PRBS_RX_STATUS_LOCK_WITH_ERRORS; - - case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_NOT_LOCKED: return SAI_PORT_PRBS_RX_STATUS_NOT_LOCKED; - - case lemming::dataplane::sai::PORT_PRBS_RX_STATUS_LOST_LOCK: return SAI_PORT_PRBS_RX_STATUS_LOST_LOCK; - - default: return SAI_PORT_PRBS_RX_STATUS_OK; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_prbs_rx_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_prbs_rx_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_prbs_rx_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_prbs_rx_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPriorityFlowControlMode convert_sai_port_priority_flow_control_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED: return lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; - - case SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE: return lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE; - - default: return lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_UNSPECIFIED; - } -} -sai_port_priority_flow_control_mode_t convert_sai_port_priority_flow_control_mode_t_to_sai(lemming::dataplane::sai::PortPriorityFlowControlMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED: return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; - - case lemming::dataplane::sai::PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE: return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_SEPARATE; - - default: return SAI_PORT_PRIORITY_FLOW_CONTROL_MODE_COMBINED; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_priority_flow_control_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_priority_flow_control_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_priority_flow_control_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_priority_flow_control_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortPtpMode convert_sai_port_ptp_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_PTP_MODE_NONE: return lemming::dataplane::sai::PORT_PTP_MODE_NONE; - - case SAI_PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP: return lemming::dataplane::sai::PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP; - - case SAI_PORT_PTP_MODE_TWO_STEP_TIMESTAMP: return lemming::dataplane::sai::PORT_PTP_MODE_TWO_STEP_TIMESTAMP; - - default: return lemming::dataplane::sai::PORT_PTP_MODE_UNSPECIFIED; - } -} -sai_port_ptp_mode_t convert_sai_port_ptp_mode_t_to_sai(lemming::dataplane::sai::PortPtpMode val) { - switch (val) { - - case lemming::dataplane::sai::PORT_PTP_MODE_NONE: return SAI_PORT_PTP_MODE_NONE; - - case lemming::dataplane::sai::PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP: return SAI_PORT_PTP_MODE_SINGLE_STEP_TIMESTAMP; - - case lemming::dataplane::sai::PORT_PTP_MODE_TWO_STEP_TIMESTAMP: return SAI_PORT_PTP_MODE_TWO_STEP_TIMESTAMP; - - default: return SAI_PORT_PTP_MODE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_ptp_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_ptp_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_ptp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_ptp_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortSerdesAttr convert_sai_port_serdes_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_SERDES_ATTR_PORT_ID: return lemming::dataplane::sai::PORT_SERDES_ATTR_PORT_ID; - - case SAI_PORT_SERDES_ATTR_PREEMPHASIS: return lemming::dataplane::sai::PORT_SERDES_ATTR_PREEMPHASIS; - - case SAI_PORT_SERDES_ATTR_IDRIVER: return lemming::dataplane::sai::PORT_SERDES_ATTR_IDRIVER; - - case SAI_PORT_SERDES_ATTR_IPREDRIVER: return lemming::dataplane::sai::PORT_SERDES_ATTR_IPREDRIVER; - - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE1; - - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE2; - - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE3; - - case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_MAIN; - - case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST1; - - case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST2; - - case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST3; - - case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_ATTN; - - case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PAM4_RATIO; - - case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_OUT_COMMON_MODE; - - case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE; - - case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE; - - case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_VLTG_REG; - - case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_VLTG_REG; - - case SAI_PORT_SERDES_ATTR_TX_PRECODING: return lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PRECODING; - - case SAI_PORT_SERDES_ATTR_RX_PRECODING: return lemming::dataplane::sai::PORT_SERDES_ATTR_RX_PRECODING; - - default: return lemming::dataplane::sai::PORT_SERDES_ATTR_UNSPECIFIED; - } -} -sai_port_serdes_attr_t convert_sai_port_serdes_attr_t_to_sai(lemming::dataplane::sai::PortSerdesAttr val) { - switch (val) { - - case lemming::dataplane::sai::PORT_SERDES_ATTR_PORT_ID: return SAI_PORT_SERDES_ATTR_PORT_ID; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_PREEMPHASIS: return SAI_PORT_SERDES_ATTR_PREEMPHASIS; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_IDRIVER: return SAI_PORT_SERDES_ATTR_IDRIVER; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_IPREDRIVER: return SAI_PORT_SERDES_ATTR_IPREDRIVER; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE1: return SAI_PORT_SERDES_ATTR_TX_FIR_PRE1; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE2: return SAI_PORT_SERDES_ATTR_TX_FIR_PRE2; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_PRE3: return SAI_PORT_SERDES_ATTR_TX_FIR_PRE3; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_MAIN: return SAI_PORT_SERDES_ATTR_TX_FIR_MAIN; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST1: return SAI_PORT_SERDES_ATTR_TX_FIR_POST1; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST2: return SAI_PORT_SERDES_ATTR_TX_FIR_POST2; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_POST3: return SAI_PORT_SERDES_ATTR_TX_FIR_POST3; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_FIR_ATTN: return SAI_PORT_SERDES_ATTR_TX_FIR_ATTN; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PAM4_RATIO: return SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: return SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: return SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: return SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: return SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: return SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_TX_PRECODING: return SAI_PORT_SERDES_ATTR_TX_PRECODING; - - case lemming::dataplane::sai::PORT_SERDES_ATTR_RX_PRECODING: return SAI_PORT_SERDES_ATTR_RX_PRECODING; - - default: return SAI_PORT_SERDES_ATTR_PORT_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_serdes_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_serdes_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_serdes_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_serdes_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortStatExtensions convert_sai_port_stat_extensions_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_STAT_EXTENSIONS_RANGE_START: return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_START; - - case SAI_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS: return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS; - - case SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES: return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES; - - case SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS: return lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS; - - case SAI_PORT_STAT_EXTENSIONS_RANGE_END: return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_END; - - default: return lemming::dataplane::sai::PORT_STAT_EXTENSIONS_UNSPECIFIED; - } -} -sai_port_stat_extensions_t convert_sai_port_stat_extensions_t_to_sai(lemming::dataplane::sai::PortStatExtensions val) { - switch (val) { - - case lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_START: return SAI_PORT_STAT_EXTENSIONS_RANGE_START; - - case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS: return SAI_PORT_STAT_LB_FAST_PATH_ICMP_IN_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES: return SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_BYTES; - - case lemming::dataplane::sai::PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS: return SAI_PORT_STAT_LB_FAST_PATH_ENI_MISS_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_EXTENSIONS_RANGE_END: return SAI_PORT_STAT_EXTENSIONS_RANGE_END; - - default: return SAI_PORT_STAT_EXTENSIONS_RANGE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_stat_extensions_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_stat_extensions_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_stat_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_stat_extensions_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortStat convert_sai_port_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_STAT_START: return lemming::dataplane::sai::PORT_STAT_START; - - case SAI_PORT_STAT_IF_IN_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_IN_UCAST_PKTS; - - case SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_IN_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IF_IN_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IF_IN_DISCARDS; - - case SAI_PORT_STAT_IF_IN_ERRORS: return lemming::dataplane::sai::PORT_STAT_IF_IN_ERRORS; - - case SAI_PORT_STAT_IF_IN_UNKNOWN_PROTOS: return lemming::dataplane::sai::PORT_STAT_IF_IN_UNKNOWN_PROTOS; - - case SAI_PORT_STAT_IF_IN_BROADCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_IN_BROADCAST_PKTS; - - case SAI_PORT_STAT_IF_IN_MULTICAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_IN_MULTICAST_PKTS; - - case SAI_PORT_STAT_IF_IN_VLAN_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IF_IN_VLAN_DISCARDS; - - case SAI_PORT_STAT_IF_OUT_OCTETS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_OCTETS; - - case SAI_PORT_STAT_IF_OUT_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_UCAST_PKTS; - - case SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IF_OUT_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_DISCARDS; - - case SAI_PORT_STAT_IF_OUT_ERRORS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_ERRORS; - - case SAI_PORT_STAT_IF_OUT_QLEN: return lemming::dataplane::sai::PORT_STAT_IF_OUT_QLEN; - - case SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_BROADCAST_PKTS; - - case SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_MULTICAST_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_DROP_EVENTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_DROP_EVENTS; - - case SAI_PORT_STAT_ETHER_STATS_MULTICAST_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_MULTICAST_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_BROADCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_BROADCAST_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_FRAGMENTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_FRAGMENTS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_64_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_64_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OVERSIZE_PKTS; - - case SAI_PORT_STAT_ETHER_RX_OVERSIZE_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_RX_OVERSIZE_PKTS; - - case SAI_PORT_STAT_ETHER_TX_OVERSIZE_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_TX_OVERSIZE_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_JABBERS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_JABBERS; - - case SAI_PORT_STAT_ETHER_STATS_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OCTETS; - - case SAI_PORT_STAT_ETHER_STATS_PKTS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS; - - case SAI_PORT_STAT_ETHER_STATS_COLLISIONS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_COLLISIONS; - - case SAI_PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS; - - case SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_TX_NO_ERRORS; - - case SAI_PORT_STAT_ETHER_STATS_RX_NO_ERRORS: return lemming::dataplane::sai::PORT_STAT_ETHER_STATS_RX_NO_ERRORS; - - case SAI_PORT_STAT_IP_IN_RECEIVES: return lemming::dataplane::sai::PORT_STAT_IP_IN_RECEIVES; - - case SAI_PORT_STAT_IP_IN_OCTETS: return lemming::dataplane::sai::PORT_STAT_IP_IN_OCTETS; - - case SAI_PORT_STAT_IP_IN_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IP_IN_UCAST_PKTS; - - case SAI_PORT_STAT_IP_IN_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IP_IN_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IP_IN_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IP_IN_DISCARDS; - - case SAI_PORT_STAT_IP_OUT_OCTETS: return lemming::dataplane::sai::PORT_STAT_IP_OUT_OCTETS; - - case SAI_PORT_STAT_IP_OUT_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IP_OUT_UCAST_PKTS; - - case SAI_PORT_STAT_IP_OUT_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IP_OUT_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IP_OUT_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IP_OUT_DISCARDS; - - case SAI_PORT_STAT_IPV6_IN_RECEIVES: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_RECEIVES; - - case SAI_PORT_STAT_IPV6_IN_OCTETS: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_OCTETS; - - case SAI_PORT_STAT_IPV6_IN_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_UCAST_PKTS; - - case SAI_PORT_STAT_IPV6_IN_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IPV6_IN_MCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_MCAST_PKTS; - - case SAI_PORT_STAT_IPV6_IN_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IPV6_IN_DISCARDS; - - case SAI_PORT_STAT_IPV6_OUT_OCTETS: return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_OCTETS; - - case SAI_PORT_STAT_IPV6_OUT_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_UCAST_PKTS; - - case SAI_PORT_STAT_IPV6_OUT_NON_UCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_NON_UCAST_PKTS; - - case SAI_PORT_STAT_IPV6_OUT_MCAST_PKTS: return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_MCAST_PKTS; - - case SAI_PORT_STAT_IPV6_OUT_DISCARDS: return lemming::dataplane::sai::PORT_STAT_IPV6_OUT_DISCARDS; - - case SAI_PORT_STAT_GREEN_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_PACKETS; - - case SAI_PORT_STAT_GREEN_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_BYTES; - - case SAI_PORT_STAT_YELLOW_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case SAI_PORT_STAT_YELLOW_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_BYTES; - - case SAI_PORT_STAT_RED_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_PACKETS; - - case SAI_PORT_STAT_RED_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_BYTES; - - case SAI_PORT_STAT_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_PACKETS; - - case SAI_PORT_STAT_WRED_DROPPED_BYTES: return lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_BYTES; - - case SAI_PORT_STAT_ECN_MARKED_PACKETS: return lemming::dataplane::sai::PORT_STAT_ECN_MARKED_PACKETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_64_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_64_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS; - - case SAI_PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_64_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_64_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS; - - case SAI_PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS: return lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS; - - case SAI_PORT_STAT_IN_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_STAT_IN_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_STAT_IN_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_STAT_IN_WATERMARK_BYTES; - - case SAI_PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_STAT_IN_SHARED_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_STAT_IN_SHARED_WATERMARK_BYTES; - - case SAI_PORT_STAT_OUT_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_STAT_OUT_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_STAT_OUT_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_STAT_OUT_WATERMARK_BYTES; - - case SAI_PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES; - - case SAI_PORT_STAT_OUT_SHARED_WATERMARK_BYTES: return lemming::dataplane::sai::PORT_STAT_OUT_SHARED_WATERMARK_BYTES; - - case SAI_PORT_STAT_IN_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_DROPPED_PKTS; - - case SAI_PORT_STAT_PAUSE_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PAUSE_RX_PKTS; - - case SAI_PORT_STAT_PAUSE_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PAUSE_TX_PKTS; - - case SAI_PORT_STAT_PFC_0_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PKTS; - - case SAI_PORT_STAT_PFC_0_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PKTS; - - case SAI_PORT_STAT_PFC_1_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PKTS; - - case SAI_PORT_STAT_PFC_1_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PKTS; - - case SAI_PORT_STAT_PFC_2_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PKTS; - - case SAI_PORT_STAT_PFC_2_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PKTS; - - case SAI_PORT_STAT_PFC_3_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PKTS; - - case SAI_PORT_STAT_PFC_3_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PKTS; - - case SAI_PORT_STAT_PFC_4_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PKTS; - - case SAI_PORT_STAT_PFC_4_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PKTS; - - case SAI_PORT_STAT_PFC_5_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PKTS; - - case SAI_PORT_STAT_PFC_5_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PKTS; - - case SAI_PORT_STAT_PFC_6_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PKTS; - - case SAI_PORT_STAT_PFC_6_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PKTS; - - case SAI_PORT_STAT_PFC_7_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PKTS; - - case SAI_PORT_STAT_PFC_7_TX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PKTS; - - case SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION: return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION; - - case SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION_US: return lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION_US; - - case SAI_PORT_STAT_PFC_0_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_0_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_1_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_1_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_2_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_2_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_3_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_3_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_4_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_4_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_5_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_5_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_6_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_6_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_PFC_7_ON2OFF_RX_PKTS: return lemming::dataplane::sai::PORT_STAT_PFC_7_ON2OFF_RX_PKTS; - - case SAI_PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_FCS_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FCS_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES; - - case SAI_PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES; - - case SAI_PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS; - - case SAI_PORT_STAT_DOT3_STATS_LATE_COLLISIONS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_LATE_COLLISIONS; - - case SAI_PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS; - - case SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS; - - case SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS; - - case SAI_PORT_STAT_DOT3_STATS_SYMBOL_ERRORS: return lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SYMBOL_ERRORS; - - case SAI_PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES: return lemming::dataplane::sai::PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES; - - case SAI_PORT_STAT_EEE_TX_EVENT_COUNT: return lemming::dataplane::sai::PORT_STAT_EEE_TX_EVENT_COUNT; - - case SAI_PORT_STAT_EEE_RX_EVENT_COUNT: return lemming::dataplane::sai::PORT_STAT_EEE_RX_EVENT_COUNT; - - case SAI_PORT_STAT_EEE_TX_DURATION: return lemming::dataplane::sai::PORT_STAT_EEE_TX_DURATION; - - case SAI_PORT_STAT_EEE_RX_DURATION: return lemming::dataplane::sai::PORT_STAT_EEE_RX_DURATION; - - case SAI_PORT_STAT_PRBS_ERROR_COUNT: return lemming::dataplane::sai::PORT_STAT_PRBS_ERROR_COUNT; - - case SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES; - - case SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES; - - case SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS; - - case SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS: return lemming::dataplane::sai::PORT_STAT_IF_IN_FABRIC_DATA_UNITS; - - case SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS: return lemming::dataplane::sai::PORT_STAT_IF_OUT_FABRIC_DATA_UNITS; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15; - - case SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16; - - case SAI_PORT_STAT_IF_IN_FEC_CORRECTED_BITS: return lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTED_BITS; - - case SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE: return lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_BASE; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case SAI_PORT_STAT_IN_DROP_REASON_RANGE_END: return lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_END; - - case SAI_PORT_STAT_OUT_DROP_REASON_RANGE_BASE: return lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_BASE; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case SAI_PORT_STAT_OUT_DROP_REASON_RANGE_END: return lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_END; - - case SAI_PORT_STAT_END: return lemming::dataplane::sai::PORT_STAT_END; - - default: return lemming::dataplane::sai::PORT_STAT_UNSPECIFIED; - } -} -sai_port_stat_t convert_sai_port_stat_t_to_sai(lemming::dataplane::sai::PortStat val) { - switch (val) { - - case lemming::dataplane::sai::PORT_STAT_START: return SAI_PORT_STAT_START; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_UCAST_PKTS: return SAI_PORT_STAT_IF_IN_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_NON_UCAST_PKTS: return SAI_PORT_STAT_IF_IN_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_DISCARDS: return SAI_PORT_STAT_IF_IN_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_ERRORS: return SAI_PORT_STAT_IF_IN_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_UNKNOWN_PROTOS: return SAI_PORT_STAT_IF_IN_UNKNOWN_PROTOS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_BROADCAST_PKTS: return SAI_PORT_STAT_IF_IN_BROADCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_MULTICAST_PKTS: return SAI_PORT_STAT_IF_IN_MULTICAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_VLAN_DISCARDS: return SAI_PORT_STAT_IF_IN_VLAN_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_OCTETS: return SAI_PORT_STAT_IF_OUT_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_UCAST_PKTS: return SAI_PORT_STAT_IF_OUT_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_NON_UCAST_PKTS: return SAI_PORT_STAT_IF_OUT_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_DISCARDS: return SAI_PORT_STAT_IF_OUT_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_ERRORS: return SAI_PORT_STAT_IF_OUT_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_QLEN: return SAI_PORT_STAT_IF_OUT_QLEN; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_BROADCAST_PKTS: return SAI_PORT_STAT_IF_OUT_BROADCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_MULTICAST_PKTS: return SAI_PORT_STAT_IF_OUT_MULTICAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_DROP_EVENTS: return SAI_PORT_STAT_ETHER_STATS_DROP_EVENTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_MULTICAST_PKTS: return SAI_PORT_STAT_ETHER_STATS_MULTICAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_BROADCAST_PKTS: return SAI_PORT_STAT_ETHER_STATS_BROADCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS: return SAI_PORT_STAT_ETHER_STATS_UNDERSIZE_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_FRAGMENTS: return SAI_PORT_STAT_ETHER_STATS_FRAGMENTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_64_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_64_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_65_TO_127_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_128_TO_255_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_256_TO_511_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_512_TO_1023_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_1024_TO_1518_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_1519_TO_2047_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_2048_TO_4095_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_4096_TO_9216_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS: return SAI_PORT_STAT_ETHER_STATS_PKTS_9217_TO_16383_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OVERSIZE_PKTS: return SAI_PORT_STAT_ETHER_STATS_OVERSIZE_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_RX_OVERSIZE_PKTS: return SAI_PORT_STAT_ETHER_RX_OVERSIZE_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_TX_OVERSIZE_PKTS: return SAI_PORT_STAT_ETHER_TX_OVERSIZE_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_JABBERS: return SAI_PORT_STAT_ETHER_STATS_JABBERS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_OCTETS: return SAI_PORT_STAT_ETHER_STATS_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_PKTS: return SAI_PORT_STAT_ETHER_STATS_PKTS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_COLLISIONS: return SAI_PORT_STAT_ETHER_STATS_COLLISIONS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS: return SAI_PORT_STAT_ETHER_STATS_CRC_ALIGN_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_TX_NO_ERRORS: return SAI_PORT_STAT_ETHER_STATS_TX_NO_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_STATS_RX_NO_ERRORS: return SAI_PORT_STAT_ETHER_STATS_RX_NO_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_IP_IN_RECEIVES: return SAI_PORT_STAT_IP_IN_RECEIVES; - - case lemming::dataplane::sai::PORT_STAT_IP_IN_OCTETS: return SAI_PORT_STAT_IP_IN_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IP_IN_UCAST_PKTS: return SAI_PORT_STAT_IP_IN_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IP_IN_NON_UCAST_PKTS: return SAI_PORT_STAT_IP_IN_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IP_IN_DISCARDS: return SAI_PORT_STAT_IP_IN_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IP_OUT_OCTETS: return SAI_PORT_STAT_IP_OUT_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IP_OUT_UCAST_PKTS: return SAI_PORT_STAT_IP_OUT_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IP_OUT_NON_UCAST_PKTS: return SAI_PORT_STAT_IP_OUT_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IP_OUT_DISCARDS: return SAI_PORT_STAT_IP_OUT_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_RECEIVES: return SAI_PORT_STAT_IPV6_IN_RECEIVES; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_OCTETS: return SAI_PORT_STAT_IPV6_IN_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_UCAST_PKTS: return SAI_PORT_STAT_IPV6_IN_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_NON_UCAST_PKTS: return SAI_PORT_STAT_IPV6_IN_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_MCAST_PKTS: return SAI_PORT_STAT_IPV6_IN_MCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_IN_DISCARDS: return SAI_PORT_STAT_IPV6_IN_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_OCTETS: return SAI_PORT_STAT_IPV6_OUT_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_UCAST_PKTS: return SAI_PORT_STAT_IPV6_OUT_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_NON_UCAST_PKTS: return SAI_PORT_STAT_IPV6_OUT_NON_UCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_MCAST_PKTS: return SAI_PORT_STAT_IPV6_OUT_MCAST_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IPV6_OUT_DISCARDS: return SAI_PORT_STAT_IPV6_OUT_DISCARDS; - - case lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_PACKETS: return SAI_PORT_STAT_GREEN_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_GREEN_WRED_DROPPED_BYTES: return SAI_PORT_STAT_GREEN_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_PACKETS: return SAI_PORT_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_YELLOW_WRED_DROPPED_BYTES: return SAI_PORT_STAT_YELLOW_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_PACKETS: return SAI_PORT_STAT_RED_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_RED_WRED_DROPPED_BYTES: return SAI_PORT_STAT_RED_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_PACKETS: return SAI_PORT_STAT_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_WRED_DROPPED_BYTES: return SAI_PORT_STAT_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::PORT_STAT_ECN_MARKED_PACKETS: return SAI_PORT_STAT_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_64_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_64_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_65_TO_127_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_128_TO_255_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_256_TO_511_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_512_TO_1023_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_1024_TO_1518_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_1519_TO_2047_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_2048_TO_4095_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_4096_TO_9216_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS: return SAI_PORT_STAT_ETHER_IN_PKTS_9217_TO_16383_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_64_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_64_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_65_TO_127_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_128_TO_255_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_256_TO_511_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_512_TO_1023_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_1024_TO_1518_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_1519_TO_2047_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_2048_TO_4095_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_4096_TO_9216_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS: return SAI_PORT_STAT_ETHER_OUT_PKTS_9217_TO_16383_OCTETS; - - case lemming::dataplane::sai::PORT_STAT_IN_CURR_OCCUPANCY_BYTES: return SAI_PORT_STAT_IN_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_STAT_IN_WATERMARK_BYTES: return SAI_PORT_STAT_IN_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES: return SAI_PORT_STAT_IN_SHARED_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_STAT_IN_SHARED_WATERMARK_BYTES: return SAI_PORT_STAT_IN_SHARED_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_STAT_OUT_CURR_OCCUPANCY_BYTES: return SAI_PORT_STAT_OUT_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_STAT_OUT_WATERMARK_BYTES: return SAI_PORT_STAT_OUT_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES: return SAI_PORT_STAT_OUT_SHARED_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::PORT_STAT_OUT_SHARED_WATERMARK_BYTES: return SAI_PORT_STAT_OUT_SHARED_WATERMARK_BYTES; - - case lemming::dataplane::sai::PORT_STAT_IN_DROPPED_PKTS: return SAI_PORT_STAT_IN_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_DROPPED_PKTS: return SAI_PORT_STAT_OUT_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PAUSE_RX_PKTS: return SAI_PORT_STAT_PAUSE_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PAUSE_TX_PKTS: return SAI_PORT_STAT_PAUSE_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PKTS: return SAI_PORT_STAT_PFC_0_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PKTS: return SAI_PORT_STAT_PFC_0_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PKTS: return SAI_PORT_STAT_PFC_1_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PKTS: return SAI_PORT_STAT_PFC_1_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PKTS: return SAI_PORT_STAT_PFC_2_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PKTS: return SAI_PORT_STAT_PFC_2_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PKTS: return SAI_PORT_STAT_PFC_3_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PKTS: return SAI_PORT_STAT_PFC_3_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PKTS: return SAI_PORT_STAT_PFC_4_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PKTS: return SAI_PORT_STAT_PFC_4_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PKTS: return SAI_PORT_STAT_PFC_5_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PKTS: return SAI_PORT_STAT_PFC_5_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PKTS: return SAI_PORT_STAT_PFC_6_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PKTS: return SAI_PORT_STAT_PFC_6_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PKTS: return SAI_PORT_STAT_PFC_7_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PKTS: return SAI_PORT_STAT_PFC_7_TX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION: return SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_0_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_0_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_1_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_1_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_2_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_2_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_3_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_3_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_4_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_4_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_5_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_5_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_6_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_6_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_RX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_7_RX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_TX_PAUSE_DURATION_US: return SAI_PORT_STAT_PFC_7_TX_PAUSE_DURATION_US; - - case lemming::dataplane::sai::PORT_STAT_PFC_0_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_0_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_1_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_1_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_2_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_2_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_3_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_3_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_4_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_4_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_5_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_5_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_6_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_6_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_PFC_7_ON2OFF_RX_PKTS: return SAI_PORT_STAT_PFC_7_ON2OFF_RX_PKTS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS: return SAI_PORT_STAT_DOT3_STATS_ALIGNMENT_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FCS_ERRORS: return SAI_PORT_STAT_DOT3_STATS_FCS_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES: return SAI_PORT_STAT_DOT3_STATS_SINGLE_COLLISION_FRAMES; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES: return SAI_PORT_STAT_DOT3_STATS_MULTIPLE_COLLISION_FRAMES; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS: return SAI_PORT_STAT_DOT3_STATS_SQE_TEST_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS: return SAI_PORT_STAT_DOT3_STATS_DEFERRED_TRANSMISSIONS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_LATE_COLLISIONS: return SAI_PORT_STAT_DOT3_STATS_LATE_COLLISIONS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS: return SAI_PORT_STAT_DOT3_STATS_EXCESSIVE_COLLISIONS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS: return SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_TRANSMIT_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS: return SAI_PORT_STAT_DOT3_STATS_CARRIER_SENSE_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS: return SAI_PORT_STAT_DOT3_STATS_FRAME_TOO_LONGS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS: return SAI_PORT_STAT_DOT3_STATS_INTERNAL_MAC_RECEIVE_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_STATS_SYMBOL_ERRORS: return SAI_PORT_STAT_DOT3_STATS_SYMBOL_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES: return SAI_PORT_STAT_DOT3_CONTROL_IN_UNKNOWN_OPCODES; - - case lemming::dataplane::sai::PORT_STAT_EEE_TX_EVENT_COUNT: return SAI_PORT_STAT_EEE_TX_EVENT_COUNT; - - case lemming::dataplane::sai::PORT_STAT_EEE_RX_EVENT_COUNT: return SAI_PORT_STAT_EEE_RX_EVENT_COUNT; - - case lemming::dataplane::sai::PORT_STAT_EEE_TX_DURATION: return SAI_PORT_STAT_EEE_TX_DURATION; - - case lemming::dataplane::sai::PORT_STAT_EEE_RX_DURATION: return SAI_PORT_STAT_EEE_RX_DURATION; - - case lemming::dataplane::sai::PORT_STAT_PRBS_ERROR_COUNT: return SAI_PORT_STAT_PRBS_ERROR_COUNT; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES: return SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES: return SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS: return SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FABRIC_DATA_UNITS: return SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS; - - case lemming::dataplane::sai::PORT_STAT_IF_OUT_FABRIC_DATA_UNITS: return SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S0; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S1; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S2; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S3; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S4; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S5; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S6; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S7; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S8; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S9; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S10; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S11; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S12; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S13; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S14; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S15; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16: return SAI_PORT_STAT_IF_IN_FEC_CODEWORD_ERRORS_S16; - - case lemming::dataplane::sai::PORT_STAT_IF_IN_FEC_CORRECTED_BITS: return SAI_PORT_STAT_IF_IN_FEC_CORRECTED_BITS; - - case lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_BASE: return SAI_PORT_STAT_IN_DROP_REASON_RANGE_BASE; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return SAI_PORT_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_IN_DROP_REASON_RANGE_END: return SAI_PORT_STAT_IN_DROP_REASON_RANGE_END; - - case lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_BASE: return SAI_PORT_STAT_OUT_DROP_REASON_RANGE_BASE; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return SAI_PORT_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case lemming::dataplane::sai::PORT_STAT_OUT_DROP_REASON_RANGE_END: return SAI_PORT_STAT_OUT_DROP_REASON_RANGE_END; - - case lemming::dataplane::sai::PORT_STAT_END: return SAI_PORT_STAT_END; - - default: return SAI_PORT_STAT_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::PortType convert_sai_port_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_PORT_TYPE_LOGICAL: return lemming::dataplane::sai::PORT_TYPE_LOGICAL; - - case SAI_PORT_TYPE_CPU: return lemming::dataplane::sai::PORT_TYPE_CPU; - - case SAI_PORT_TYPE_FABRIC: return lemming::dataplane::sai::PORT_TYPE_FABRIC; - - case SAI_PORT_TYPE_RECYCLE: return lemming::dataplane::sai::PORT_TYPE_RECYCLE; - - default: return lemming::dataplane::sai::PORT_TYPE_UNSPECIFIED; - } -} -sai_port_type_t convert_sai_port_type_t_to_sai(lemming::dataplane::sai::PortType val) { - switch (val) { - - case lemming::dataplane::sai::PORT_TYPE_LOGICAL: return SAI_PORT_TYPE_LOGICAL; - - case lemming::dataplane::sai::PORT_TYPE_CPU: return SAI_PORT_TYPE_CPU; - - case lemming::dataplane::sai::PORT_TYPE_FABRIC: return SAI_PORT_TYPE_FABRIC; - - case lemming::dataplane::sai::PORT_TYPE_RECYCLE: return SAI_PORT_TYPE_RECYCLE; - - default: return SAI_PORT_TYPE_LOGICAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_port_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_port_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_port_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QosMapAttr convert_sai_qos_map_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QOS_MAP_ATTR_TYPE: return lemming::dataplane::sai::QOS_MAP_ATTR_TYPE; - - case SAI_QOS_MAP_ATTR_MAP_TO_VALUE_LIST: return lemming::dataplane::sai::QOS_MAP_ATTR_MAP_TO_VALUE_LIST; - - default: return lemming::dataplane::sai::QOS_MAP_ATTR_UNSPECIFIED; - } -} -sai_qos_map_attr_t convert_sai_qos_map_attr_t_to_sai(lemming::dataplane::sai::QosMapAttr val) { - switch (val) { - - case lemming::dataplane::sai::QOS_MAP_ATTR_TYPE: return SAI_QOS_MAP_ATTR_TYPE; - - case lemming::dataplane::sai::QOS_MAP_ATTR_MAP_TO_VALUE_LIST: return SAI_QOS_MAP_ATTR_MAP_TO_VALUE_LIST; - - default: return SAI_QOS_MAP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_qos_map_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_qos_map_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_qos_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_qos_map_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QosMapType convert_sai_qos_map_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QOS_MAP_TYPE_DOT1P_TO_TC: return lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_TC; - - case SAI_QOS_MAP_TYPE_DOT1P_TO_COLOR: return lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_COLOR; - - case SAI_QOS_MAP_TYPE_DSCP_TO_TC: return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_TC; - - case SAI_QOS_MAP_TYPE_DSCP_TO_COLOR: return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_COLOR; - - case SAI_QOS_MAP_TYPE_TC_TO_QUEUE: return lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_QUEUE; - - case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP: return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP; - - case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P: return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P; - - case SAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP: return lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP; - - case SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP: return lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP; - - case SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE: return lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE; - - case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_TC: return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_TC; - - case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_COLOR: return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_COLOR; - - case SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP: return lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP; - - case SAI_QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS: return lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS; - - case SAI_QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS: return lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS; - - case SAI_QOS_MAP_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::QOS_MAP_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::QOS_MAP_TYPE_UNSPECIFIED; - } -} -sai_qos_map_type_t convert_sai_qos_map_type_t_to_sai(lemming::dataplane::sai::QosMapType val) { - switch (val) { - - case lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_TC: return SAI_QOS_MAP_TYPE_DOT1P_TO_TC; - - case lemming::dataplane::sai::QOS_MAP_TYPE_DOT1P_TO_COLOR: return SAI_QOS_MAP_TYPE_DOT1P_TO_COLOR; - - case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_TC: return SAI_QOS_MAP_TYPE_DSCP_TO_TC; - - case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_COLOR: return SAI_QOS_MAP_TYPE_DSCP_TO_COLOR; - - case lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_QUEUE: return SAI_QOS_MAP_TYPE_TC_TO_QUEUE; - - case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP: return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DSCP; - - case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P: return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_DOT1P; - - case lemming::dataplane::sai::QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP: return SAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP; - - case lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP: return SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP; - - case lemming::dataplane::sai::QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE: return SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_QUEUE; - - case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_TC: return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_TC; - - case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_COLOR: return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_COLOR; - - case lemming::dataplane::sai::QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP: return SAI_QOS_MAP_TYPE_TC_AND_COLOR_TO_MPLS_EXP; - - case lemming::dataplane::sai::QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS: return SAI_QOS_MAP_TYPE_DSCP_TO_FORWARDING_CLASS; - - case lemming::dataplane::sai::QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS: return SAI_QOS_MAP_TYPE_MPLS_EXP_TO_FORWARDING_CLASS; - - case lemming::dataplane::sai::QOS_MAP_TYPE_CUSTOM_RANGE_BASE: return SAI_QOS_MAP_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_QOS_MAP_TYPE_DOT1P_TO_TC; - } -} - -google::protobuf::RepeatedField convert_list_sai_qos_map_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_qos_map_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_qos_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_qos_map_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QueueAttr convert_sai_queue_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QUEUE_ATTR_TYPE: return lemming::dataplane::sai::QUEUE_ATTR_TYPE; - - case SAI_QUEUE_ATTR_PORT: return lemming::dataplane::sai::QUEUE_ATTR_PORT; - - case SAI_QUEUE_ATTR_INDEX: return lemming::dataplane::sai::QUEUE_ATTR_INDEX; - - case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: return lemming::dataplane::sai::QUEUE_ATTR_PARENT_SCHEDULER_NODE; - - case SAI_QUEUE_ATTR_WRED_PROFILE_ID: return lemming::dataplane::sai::QUEUE_ATTR_WRED_PROFILE_ID; - - case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: return lemming::dataplane::sai::QUEUE_ATTR_BUFFER_PROFILE_ID; - - case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: return lemming::dataplane::sai::QUEUE_ATTR_SCHEDULER_PROFILE_ID; - - case SAI_QUEUE_ATTR_PAUSE_STATUS: return lemming::dataplane::sai::QUEUE_ATTR_PAUSE_STATUS; - - case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: return lemming::dataplane::sai::QUEUE_ATTR_ENABLE_PFC_DLDR; - - case SAI_QUEUE_ATTR_PFC_DLR_INIT: return lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_INIT; - - case SAI_QUEUE_ATTR_TAM_OBJECT: return lemming::dataplane::sai::QUEUE_ATTR_TAM_OBJECT; - - case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: return lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_PACKET_ACTION; - - case SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: return lemming::dataplane::sai::QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE; - - default: return lemming::dataplane::sai::QUEUE_ATTR_UNSPECIFIED; - } -} -sai_queue_attr_t convert_sai_queue_attr_t_to_sai(lemming::dataplane::sai::QueueAttr val) { - switch (val) { - - case lemming::dataplane::sai::QUEUE_ATTR_TYPE: return SAI_QUEUE_ATTR_TYPE; - - case lemming::dataplane::sai::QUEUE_ATTR_PORT: return SAI_QUEUE_ATTR_PORT; - - case lemming::dataplane::sai::QUEUE_ATTR_INDEX: return SAI_QUEUE_ATTR_INDEX; - - case lemming::dataplane::sai::QUEUE_ATTR_PARENT_SCHEDULER_NODE: return SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE; - - case lemming::dataplane::sai::QUEUE_ATTR_WRED_PROFILE_ID: return SAI_QUEUE_ATTR_WRED_PROFILE_ID; - - case lemming::dataplane::sai::QUEUE_ATTR_BUFFER_PROFILE_ID: return SAI_QUEUE_ATTR_BUFFER_PROFILE_ID; - - case lemming::dataplane::sai::QUEUE_ATTR_SCHEDULER_PROFILE_ID: return SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID; - - case lemming::dataplane::sai::QUEUE_ATTR_PAUSE_STATUS: return SAI_QUEUE_ATTR_PAUSE_STATUS; - - case lemming::dataplane::sai::QUEUE_ATTR_ENABLE_PFC_DLDR: return SAI_QUEUE_ATTR_ENABLE_PFC_DLDR; - - case lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_INIT: return SAI_QUEUE_ATTR_PFC_DLR_INIT; - - case lemming::dataplane::sai::QUEUE_ATTR_TAM_OBJECT: return SAI_QUEUE_ATTR_TAM_OBJECT; - - case lemming::dataplane::sai::QUEUE_ATTR_PFC_DLR_PACKET_ACTION: return SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION; - - case lemming::dataplane::sai::QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: return SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE; - - default: return SAI_QUEUE_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_queue_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_queue_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_queue_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_queue_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QueuePfcContinuousDeadlockState convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED: return lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; - - case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED: return lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED; - - case SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS: return lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS; - - default: return lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_UNSPECIFIED; - } -} -sai_queue_pfc_continuous_deadlock_state_t convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai(lemming::dataplane::sai::QueuePfcContinuousDeadlockState val) { - switch (val) { - - case lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED: return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; - - case lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED: return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED; - - case lemming::dataplane::sai::QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS: return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_PAUSED_NOT_CONTINUOUS; - - default: return SAI_QUEUE_PFC_CONTINUOUS_DEADLOCK_STATE_NOT_PAUSED; - } -} - -google::protobuf::RepeatedField convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QueuePfcDeadlockEventType convert_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED: return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; - - case SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED: return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED; - - default: return lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_UNSPECIFIED; - } -} -sai_queue_pfc_deadlock_event_type_t convert_sai_queue_pfc_deadlock_event_type_t_to_sai(lemming::dataplane::sai::QueuePfcDeadlockEventType val) { - switch (val) { - - case lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED: return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; - - case lemming::dataplane::sai::QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED: return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_RECOVERED; - - default: return SAI_QUEUE_PFC_DEADLOCK_EVENT_TYPE_DETECTED; - } -} - -google::protobuf::RepeatedField convert_list_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_queue_pfc_deadlock_event_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_queue_pfc_deadlock_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_queue_pfc_deadlock_event_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QueueStat convert_sai_queue_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QUEUE_STAT_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_PACKETS; - - case SAI_QUEUE_STAT_BYTES: return lemming::dataplane::sai::QUEUE_STAT_BYTES; - - case SAI_QUEUE_STAT_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_DROPPED_BYTES; - - case SAI_QUEUE_STAT_GREEN_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_GREEN_PACKETS; - - case SAI_QUEUE_STAT_GREEN_BYTES: return lemming::dataplane::sai::QUEUE_STAT_GREEN_BYTES; - - case SAI_QUEUE_STAT_GREEN_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_GREEN_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_BYTES; - - case SAI_QUEUE_STAT_YELLOW_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_PACKETS; - - case SAI_QUEUE_STAT_YELLOW_BYTES: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_BYTES; - - case SAI_QUEUE_STAT_YELLOW_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_YELLOW_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_BYTES; - - case SAI_QUEUE_STAT_RED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_RED_PACKETS; - - case SAI_QUEUE_STAT_RED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_RED_BYTES; - - case SAI_QUEUE_STAT_RED_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_RED_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_BYTES; - - case SAI_QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_GREEN_WRED_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_BYTES; - - case SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES; - - case SAI_QUEUE_STAT_RED_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_RED_WRED_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_BYTES; - - case SAI_QUEUE_STAT_WRED_DROPPED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_PACKETS; - - case SAI_QUEUE_STAT_WRED_DROPPED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_BYTES; - - case SAI_QUEUE_STAT_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_BYTES; - - case SAI_QUEUE_STAT_WATERMARK_BYTES: return lemming::dataplane::sai::QUEUE_STAT_WATERMARK_BYTES; - - case SAI_QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES: return lemming::dataplane::sai::QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES: return lemming::dataplane::sai::QUEUE_STAT_SHARED_WATERMARK_BYTES; - - case SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES; - - case SAI_QUEUE_STAT_WRED_ECN_MARKED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_PACKETS; - - case SAI_QUEUE_STAT_WRED_ECN_MARKED_BYTES: return lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_BYTES; - - case SAI_QUEUE_STAT_CURR_OCCUPANCY_LEVEL: return lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_LEVEL; - - case SAI_QUEUE_STAT_WATERMARK_LEVEL: return lemming::dataplane::sai::QUEUE_STAT_WATERMARK_LEVEL; - - case SAI_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS: return lemming::dataplane::sai::QUEUE_STAT_CREDIT_WD_DELETED_PACKETS; - - case SAI_QUEUE_STAT_DELAY_WATERMARK_NS: return lemming::dataplane::sai::QUEUE_STAT_DELAY_WATERMARK_NS; - - case SAI_QUEUE_STAT_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::QUEUE_STAT_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::QUEUE_STAT_UNSPECIFIED; - } -} -sai_queue_stat_t convert_sai_queue_stat_t_to_sai(lemming::dataplane::sai::QueueStat val) { - switch (val) { - - case lemming::dataplane::sai::QUEUE_STAT_PACKETS: return SAI_QUEUE_STAT_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_BYTES: return SAI_QUEUE_STAT_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_DROPPED_PACKETS: return SAI_QUEUE_STAT_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_DROPPED_BYTES: return SAI_QUEUE_STAT_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_PACKETS: return SAI_QUEUE_STAT_GREEN_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_BYTES: return SAI_QUEUE_STAT_GREEN_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_PACKETS: return SAI_QUEUE_STAT_GREEN_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_DROPPED_BYTES: return SAI_QUEUE_STAT_GREEN_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_PACKETS: return SAI_QUEUE_STAT_YELLOW_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_BYTES: return SAI_QUEUE_STAT_YELLOW_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_PACKETS: return SAI_QUEUE_STAT_YELLOW_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_DROPPED_BYTES: return SAI_QUEUE_STAT_YELLOW_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_RED_PACKETS: return SAI_QUEUE_STAT_RED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_RED_BYTES: return SAI_QUEUE_STAT_RED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_PACKETS: return SAI_QUEUE_STAT_RED_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_RED_DROPPED_BYTES: return SAI_QUEUE_STAT_RED_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS: return SAI_QUEUE_STAT_GREEN_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_DROPPED_BYTES: return SAI_QUEUE_STAT_GREEN_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS: return SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES: return SAI_QUEUE_STAT_YELLOW_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_PACKETS: return SAI_QUEUE_STAT_RED_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_DROPPED_BYTES: return SAI_QUEUE_STAT_RED_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_PACKETS: return SAI_QUEUE_STAT_WRED_DROPPED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_WRED_DROPPED_BYTES: return SAI_QUEUE_STAT_WRED_DROPPED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_BYTES: return SAI_QUEUE_STAT_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_WATERMARK_BYTES: return SAI_QUEUE_STAT_WATERMARK_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES: return SAI_QUEUE_STAT_SHARED_CURR_OCCUPANCY_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_SHARED_WATERMARK_BYTES: return SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS: return SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES: return SAI_QUEUE_STAT_GREEN_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS: return SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES: return SAI_QUEUE_STAT_YELLOW_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS: return SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES: return SAI_QUEUE_STAT_RED_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_PACKETS: return SAI_QUEUE_STAT_WRED_ECN_MARKED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_WRED_ECN_MARKED_BYTES: return SAI_QUEUE_STAT_WRED_ECN_MARKED_BYTES; - - case lemming::dataplane::sai::QUEUE_STAT_CURR_OCCUPANCY_LEVEL: return SAI_QUEUE_STAT_CURR_OCCUPANCY_LEVEL; - - case lemming::dataplane::sai::QUEUE_STAT_WATERMARK_LEVEL: return SAI_QUEUE_STAT_WATERMARK_LEVEL; - - case lemming::dataplane::sai::QUEUE_STAT_CREDIT_WD_DELETED_PACKETS: return SAI_QUEUE_STAT_CREDIT_WD_DELETED_PACKETS; - - case lemming::dataplane::sai::QUEUE_STAT_DELAY_WATERMARK_NS: return SAI_QUEUE_STAT_DELAY_WATERMARK_NS; - - case lemming::dataplane::sai::QUEUE_STAT_CUSTOM_RANGE_BASE: return SAI_QUEUE_STAT_CUSTOM_RANGE_BASE; - - default: return SAI_QUEUE_STAT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_queue_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_queue_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_queue_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_queue_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::QueueType convert_sai_queue_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_QUEUE_TYPE_ALL: return lemming::dataplane::sai::QUEUE_TYPE_ALL; - - case SAI_QUEUE_TYPE_UNICAST: return lemming::dataplane::sai::QUEUE_TYPE_UNICAST; - - case SAI_QUEUE_TYPE_MULTICAST: return lemming::dataplane::sai::QUEUE_TYPE_MULTICAST; - - case SAI_QUEUE_TYPE_UNICAST_VOQ: return lemming::dataplane::sai::QUEUE_TYPE_UNICAST_VOQ; - - case SAI_QUEUE_TYPE_MULTICAST_VOQ: return lemming::dataplane::sai::QUEUE_TYPE_MULTICAST_VOQ; - - case SAI_QUEUE_TYPE_FABRIC_TX: return lemming::dataplane::sai::QUEUE_TYPE_FABRIC_TX; - - case SAI_QUEUE_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::QUEUE_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::QUEUE_TYPE_UNSPECIFIED; - } -} -sai_queue_type_t convert_sai_queue_type_t_to_sai(lemming::dataplane::sai::QueueType val) { - switch (val) { - - case lemming::dataplane::sai::QUEUE_TYPE_ALL: return SAI_QUEUE_TYPE_ALL; - - case lemming::dataplane::sai::QUEUE_TYPE_UNICAST: return SAI_QUEUE_TYPE_UNICAST; - - case lemming::dataplane::sai::QUEUE_TYPE_MULTICAST: return SAI_QUEUE_TYPE_MULTICAST; - - case lemming::dataplane::sai::QUEUE_TYPE_UNICAST_VOQ: return SAI_QUEUE_TYPE_UNICAST_VOQ; - - case lemming::dataplane::sai::QUEUE_TYPE_MULTICAST_VOQ: return SAI_QUEUE_TYPE_MULTICAST_VOQ; - - case lemming::dataplane::sai::QUEUE_TYPE_FABRIC_TX: return SAI_QUEUE_TYPE_FABRIC_TX; - - case lemming::dataplane::sai::QUEUE_TYPE_CUSTOM_RANGE_BASE: return SAI_QUEUE_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_QUEUE_TYPE_ALL; - } -} - -google::protobuf::RepeatedField convert_list_sai_queue_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_queue_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_queue_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_queue_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RouteEntryAttr convert_sai_route_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PACKET_ACTION; - - case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_USER_TRAP_ID; - - case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_NEXT_HOP_ID; - - case SAI_ROUTE_ENTRY_ATTR_META_DATA: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_META_DATA; - - case SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY; - - case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_COUNTER_ID; - - case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PREFIX_AGG_ID; - - default: return lemming::dataplane::sai::ROUTE_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_route_entry_attr_t convert_sai_route_entry_attr_t_to_sai(lemming::dataplane::sai::RouteEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PACKET_ACTION: return SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_USER_TRAP_ID: return SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_NEXT_HOP_ID: return SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_META_DATA: return SAI_ROUTE_ENTRY_ATTR_META_DATA; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: return SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_COUNTER_ID: return SAI_ROUTE_ENTRY_ATTR_COUNTER_ID; - - case lemming::dataplane::sai::ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: return SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID; - - default: return SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_route_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_route_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_route_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_route_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RouterInterfaceAttr convert_sai_router_interface_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; - - case SAI_ROUTER_INTERFACE_ATTR_TYPE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_TYPE; - - case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_PORT_ID; - - case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VLAN_ID; - - case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID; - - case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INNER_VLAN_ID; - - case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_BRIDGE_ID; - - case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS; - - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE; - - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE; - - case SAI_ROUTER_INTERFACE_ATTR_MTU: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_MTU; - - case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INGRESS_ACL; - - case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_EGRESS_ACL; - - case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION; - - case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE; - - case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE; - - case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION; - - case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_IS_VIRTUAL; - - case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NAT_ZONE_ID; - - case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL; - - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE; - - case SAI_ROUTER_INTERFACE_ATTR_LABEL: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LABEL; - - default: return lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_UNSPECIFIED; - } -} -sai_router_interface_attr_t convert_sai_router_interface_attr_t_to_sai(lemming::dataplane::sai::RouterInterfaceAttr val) { - switch (val) { - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: return SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_TYPE: return SAI_ROUTER_INTERFACE_ATTR_TYPE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_PORT_ID: return SAI_ROUTER_INTERFACE_ATTR_PORT_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_VLAN_ID: return SAI_ROUTER_INTERFACE_ATTR_VLAN_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: return SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: return SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_BRIDGE_ID: return SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: return SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: return SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: return SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_MTU: return SAI_ROUTER_INTERFACE_ATTR_MTU; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_INGRESS_ACL: return SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_EGRESS_ACL: return SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: return SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: return SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: return SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: return SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_IS_VIRTUAL: return SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: return SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: return SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: return SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_ATTR_LABEL: return SAI_ROUTER_INTERFACE_ATTR_LABEL; - - default: return SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_router_interface_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_router_interface_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_router_interface_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_router_interface_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RouterInterfaceStat convert_sai_router_interface_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ROUTER_INTERFACE_STAT_IN_OCTETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_OCTETS; - - case SAI_ROUTER_INTERFACE_STAT_IN_PACKETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_PACKETS; - - case SAI_ROUTER_INTERFACE_STAT_OUT_OCTETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_OCTETS; - - case SAI_ROUTER_INTERFACE_STAT_OUT_PACKETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_PACKETS; - - case SAI_ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS; - - case SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS; - - case SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS; - - case SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS; - - default: return lemming::dataplane::sai::ROUTER_INTERFACE_STAT_UNSPECIFIED; - } -} -sai_router_interface_stat_t convert_sai_router_interface_stat_t_to_sai(lemming::dataplane::sai::RouterInterfaceStat val) { - switch (val) { - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_OCTETS: return SAI_ROUTER_INTERFACE_STAT_IN_OCTETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_PACKETS: return SAI_ROUTER_INTERFACE_STAT_IN_PACKETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_OCTETS: return SAI_ROUTER_INTERFACE_STAT_OUT_OCTETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_PACKETS: return SAI_ROUTER_INTERFACE_STAT_OUT_PACKETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS: return SAI_ROUTER_INTERFACE_STAT_IN_ERROR_OCTETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS: return SAI_ROUTER_INTERFACE_STAT_IN_ERROR_PACKETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS: return SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_OCTETS; - - case lemming::dataplane::sai::ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS: return SAI_ROUTER_INTERFACE_STAT_OUT_ERROR_PACKETS; - - default: return SAI_ROUTER_INTERFACE_STAT_IN_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_router_interface_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_router_interface_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_router_interface_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_router_interface_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RouterInterfaceType convert_sai_router_interface_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_ROUTER_INTERFACE_TYPE_PORT: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_PORT; - - case SAI_ROUTER_INTERFACE_TYPE_VLAN: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_VLAN; - - case SAI_ROUTER_INTERFACE_TYPE_LOOPBACK: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_LOOPBACK; - - case SAI_ROUTER_INTERFACE_TYPE_MPLS_ROUTER: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_MPLS_ROUTER; - - case SAI_ROUTER_INTERFACE_TYPE_SUB_PORT: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_SUB_PORT; - - case SAI_ROUTER_INTERFACE_TYPE_BRIDGE: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_BRIDGE; - - case SAI_ROUTER_INTERFACE_TYPE_QINQ_PORT: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_QINQ_PORT; - - default: return lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_UNSPECIFIED; - } -} -sai_router_interface_type_t convert_sai_router_interface_type_t_to_sai(lemming::dataplane::sai::RouterInterfaceType val) { - switch (val) { - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_PORT: return SAI_ROUTER_INTERFACE_TYPE_PORT; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_VLAN: return SAI_ROUTER_INTERFACE_TYPE_VLAN; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_LOOPBACK: return SAI_ROUTER_INTERFACE_TYPE_LOOPBACK; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_MPLS_ROUTER: return SAI_ROUTER_INTERFACE_TYPE_MPLS_ROUTER; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_SUB_PORT: return SAI_ROUTER_INTERFACE_TYPE_SUB_PORT; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_BRIDGE: return SAI_ROUTER_INTERFACE_TYPE_BRIDGE; - - case lemming::dataplane::sai::ROUTER_INTERFACE_TYPE_QINQ_PORT: return SAI_ROUTER_INTERFACE_TYPE_QINQ_PORT; - - default: return SAI_ROUTER_INTERFACE_TYPE_PORT; - } -} - -google::protobuf::RepeatedField convert_list_sai_router_interface_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_router_interface_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_router_interface_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_router_interface_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RpfGroupAttr convert_sai_rpf_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: return lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; - - case SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST: return lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_MEMBER_LIST; - - default: return lemming::dataplane::sai::RPF_GROUP_ATTR_UNSPECIFIED; - } -} -sai_rpf_group_attr_t convert_sai_rpf_group_attr_t_to_sai(lemming::dataplane::sai::RpfGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: return SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; - - case lemming::dataplane::sai::RPF_GROUP_ATTR_RPF_MEMBER_LIST: return SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST; - - default: return SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_rpf_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_rpf_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_rpf_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_rpf_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::RpfGroupMemberAttr convert_sai_rpf_group_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; - - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID; - - default: return lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_rpf_group_member_attr_t convert_sai_rpf_group_member_attr_t_to_sai(lemming::dataplane::sai::RpfGroupMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: return SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; - - case lemming::dataplane::sai::RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: return SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID; - - default: return SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_rpf_group_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_rpf_group_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_rpf_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_rpf_group_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SamplepacketAttr convert_sai_samplepacket_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: return lemming::dataplane::sai::SAMPLEPACKET_ATTR_SAMPLE_RATE; - - case SAI_SAMPLEPACKET_ATTR_TYPE: return lemming::dataplane::sai::SAMPLEPACKET_ATTR_TYPE; - - case SAI_SAMPLEPACKET_ATTR_MODE: return lemming::dataplane::sai::SAMPLEPACKET_ATTR_MODE; - - default: return lemming::dataplane::sai::SAMPLEPACKET_ATTR_UNSPECIFIED; - } -} -sai_samplepacket_attr_t convert_sai_samplepacket_attr_t_to_sai(lemming::dataplane::sai::SamplepacketAttr val) { - switch (val) { - - case lemming::dataplane::sai::SAMPLEPACKET_ATTR_SAMPLE_RATE: return SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE; - - case lemming::dataplane::sai::SAMPLEPACKET_ATTR_TYPE: return SAI_SAMPLEPACKET_ATTR_TYPE; - - case lemming::dataplane::sai::SAMPLEPACKET_ATTR_MODE: return SAI_SAMPLEPACKET_ATTR_MODE; - - default: return SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_samplepacket_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_samplepacket_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_samplepacket_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_samplepacket_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SamplepacketMode convert_sai_samplepacket_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SAMPLEPACKET_MODE_EXCLUSIVE: return lemming::dataplane::sai::SAMPLEPACKET_MODE_EXCLUSIVE; - - case SAI_SAMPLEPACKET_MODE_SHARED: return lemming::dataplane::sai::SAMPLEPACKET_MODE_SHARED; - - default: return lemming::dataplane::sai::SAMPLEPACKET_MODE_UNSPECIFIED; - } -} -sai_samplepacket_mode_t convert_sai_samplepacket_mode_t_to_sai(lemming::dataplane::sai::SamplepacketMode val) { - switch (val) { - - case lemming::dataplane::sai::SAMPLEPACKET_MODE_EXCLUSIVE: return SAI_SAMPLEPACKET_MODE_EXCLUSIVE; - - case lemming::dataplane::sai::SAMPLEPACKET_MODE_SHARED: return SAI_SAMPLEPACKET_MODE_SHARED; - - default: return SAI_SAMPLEPACKET_MODE_EXCLUSIVE; - } -} - -google::protobuf::RepeatedField convert_list_sai_samplepacket_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_samplepacket_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_samplepacket_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_samplepacket_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SamplepacketType convert_sai_samplepacket_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SAMPLEPACKET_TYPE_SLOW_PATH: return lemming::dataplane::sai::SAMPLEPACKET_TYPE_SLOW_PATH; - - case SAI_SAMPLEPACKET_TYPE_MIRROR_SESSION: return lemming::dataplane::sai::SAMPLEPACKET_TYPE_MIRROR_SESSION; - - default: return lemming::dataplane::sai::SAMPLEPACKET_TYPE_UNSPECIFIED; - } -} -sai_samplepacket_type_t convert_sai_samplepacket_type_t_to_sai(lemming::dataplane::sai::SamplepacketType val) { - switch (val) { - - case lemming::dataplane::sai::SAMPLEPACKET_TYPE_SLOW_PATH: return SAI_SAMPLEPACKET_TYPE_SLOW_PATH; - - case lemming::dataplane::sai::SAMPLEPACKET_TYPE_MIRROR_SESSION: return SAI_SAMPLEPACKET_TYPE_MIRROR_SESSION; - - default: return SAI_SAMPLEPACKET_TYPE_SLOW_PATH; - } -} - -google::protobuf::RepeatedField convert_list_sai_samplepacket_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_samplepacket_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_samplepacket_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_samplepacket_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SchedulerAttr convert_sai_scheduler_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: return lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_TYPE; - - case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: return lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_WEIGHT; - - case SAI_SCHEDULER_ATTR_METER_TYPE: return lemming::dataplane::sai::SCHEDULER_ATTR_METER_TYPE; - - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: return lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_RATE; - - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: return lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE; - - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: return lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_RATE; - - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: return lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE; - - default: return lemming::dataplane::sai::SCHEDULER_ATTR_UNSPECIFIED; - } -} -sai_scheduler_attr_t convert_sai_scheduler_attr_t_to_sai(lemming::dataplane::sai::SchedulerAttr val) { - switch (val) { - - case lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_TYPE: return SAI_SCHEDULER_ATTR_SCHEDULING_TYPE; - - case lemming::dataplane::sai::SCHEDULER_ATTR_SCHEDULING_WEIGHT: return SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT; - - case lemming::dataplane::sai::SCHEDULER_ATTR_METER_TYPE: return SAI_SCHEDULER_ATTR_METER_TYPE; - - case lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: return SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE; - - case lemming::dataplane::sai::SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: return SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE; - - case lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: return SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE; - - case lemming::dataplane::sai::SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: return SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE; - - default: return SAI_SCHEDULER_ATTR_SCHEDULING_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_scheduler_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_scheduler_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_scheduler_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_scheduler_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SchedulerGroupAttr convert_sai_scheduler_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_COUNT; - - case SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_LIST; - - case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PORT_ID; - - case SAI_SCHEDULER_GROUP_ATTR_LEVEL: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_LEVEL; - - case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_MAX_CHILDS; - - case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID; - - case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PARENT_NODE; - - default: return lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_UNSPECIFIED; - } -} -sai_scheduler_group_attr_t convert_sai_scheduler_group_attr_t_to_sai(lemming::dataplane::sai::SchedulerGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_COUNT: return SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_CHILD_LIST: return SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PORT_ID: return SAI_SCHEDULER_GROUP_ATTR_PORT_ID; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_LEVEL: return SAI_SCHEDULER_GROUP_ATTR_LEVEL; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_MAX_CHILDS: return SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: return SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID; - - case lemming::dataplane::sai::SCHEDULER_GROUP_ATTR_PARENT_NODE: return SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE; - - default: return SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT; - } -} - -google::protobuf::RepeatedField convert_list_sai_scheduler_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_scheduler_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_scheduler_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_scheduler_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SchedulingType convert_sai_scheduling_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SCHEDULING_TYPE_STRICT: return lemming::dataplane::sai::SCHEDULING_TYPE_STRICT; - - case SAI_SCHEDULING_TYPE_WRR: return lemming::dataplane::sai::SCHEDULING_TYPE_WRR; - - case SAI_SCHEDULING_TYPE_DWRR: return lemming::dataplane::sai::SCHEDULING_TYPE_DWRR; - - default: return lemming::dataplane::sai::SCHEDULING_TYPE_UNSPECIFIED; - } -} -sai_scheduling_type_t convert_sai_scheduling_type_t_to_sai(lemming::dataplane::sai::SchedulingType val) { - switch (val) { - - case lemming::dataplane::sai::SCHEDULING_TYPE_STRICT: return SAI_SCHEDULING_TYPE_STRICT; - - case lemming::dataplane::sai::SCHEDULING_TYPE_WRR: return SAI_SCHEDULING_TYPE_WRR; - - case lemming::dataplane::sai::SCHEDULING_TYPE_DWRR: return SAI_SCHEDULING_TYPE_DWRR; - - default: return SAI_SCHEDULING_TYPE_STRICT; - } -} - -google::protobuf::RepeatedField convert_list_sai_scheduling_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_scheduling_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_scheduling_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_scheduling_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::Srv6SidlistAttr convert_sai_srv6_sidlist_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SRV6_SIDLIST_ATTR_TYPE: return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TYPE; - - case SAI_SRV6_SIDLIST_ATTR_TLV_LIST: return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TLV_LIST; - - case SAI_SRV6_SIDLIST_ATTR_SEGMENT_LIST: return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SEGMENT_LIST; - - case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_NEXT_HOP_ID; - - default: return lemming::dataplane::sai::SRV6_SIDLIST_ATTR_UNSPECIFIED; - } -} -sai_srv6_sidlist_attr_t convert_sai_srv6_sidlist_attr_t_to_sai(lemming::dataplane::sai::Srv6SidlistAttr val) { - switch (val) { - - case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TYPE: return SAI_SRV6_SIDLIST_ATTR_TYPE; - - case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_TLV_LIST: return SAI_SRV6_SIDLIST_ATTR_TLV_LIST; - - case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_SEGMENT_LIST: return SAI_SRV6_SIDLIST_ATTR_SEGMENT_LIST; - - case lemming::dataplane::sai::SRV6_SIDLIST_ATTR_NEXT_HOP_ID: return SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID; - - default: return SAI_SRV6_SIDLIST_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_srv6_sidlist_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_srv6_sidlist_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_srv6_sidlist_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::Srv6SidlistStat convert_sai_srv6_sidlist_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SRV6_SIDLIST_STAT_OUT_PACKETS: return lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_PACKETS; - - case SAI_SRV6_SIDLIST_STAT_OUT_OCTETS: return lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_OCTETS; - - default: return lemming::dataplane::sai::SRV6_SIDLIST_STAT_UNSPECIFIED; - } -} -sai_srv6_sidlist_stat_t convert_sai_srv6_sidlist_stat_t_to_sai(lemming::dataplane::sai::Srv6SidlistStat val) { - switch (val) { - - case lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_PACKETS: return SAI_SRV6_SIDLIST_STAT_OUT_PACKETS; - - case lemming::dataplane::sai::SRV6_SIDLIST_STAT_OUT_OCTETS: return SAI_SRV6_SIDLIST_STAT_OUT_OCTETS; - - default: return SAI_SRV6_SIDLIST_STAT_OUT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_srv6_sidlist_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_srv6_sidlist_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_srv6_sidlist_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::Srv6SidlistType convert_sai_srv6_sidlist_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SRV6_SIDLIST_TYPE_INSERT: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT; - - case SAI_SRV6_SIDLIST_TYPE_INSERT_RED: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT_RED; - - case SAI_SRV6_SIDLIST_TYPE_ENCAPS: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS; - - case SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS_RED; - - case SAI_SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::SRV6_SIDLIST_TYPE_UNSPECIFIED; - } -} -sai_srv6_sidlist_type_t convert_sai_srv6_sidlist_type_t_to_sai(lemming::dataplane::sai::Srv6SidlistType val) { - switch (val) { - - case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT: return SAI_SRV6_SIDLIST_TYPE_INSERT; - - case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_INSERT_RED: return SAI_SRV6_SIDLIST_TYPE_INSERT_RED; - - case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS: return SAI_SRV6_SIDLIST_TYPE_ENCAPS; - - case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_ENCAPS_RED: return SAI_SRV6_SIDLIST_TYPE_ENCAPS_RED; - - case lemming::dataplane::sai::SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE: return SAI_SRV6_SIDLIST_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_SRV6_SIDLIST_TYPE_INSERT; - } -} - -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_srv6_sidlist_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_srv6_sidlist_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_srv6_sidlist_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::StatsMode convert_sai_stats_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_STATS_MODE_READ: return lemming::dataplane::sai::STATS_MODE_READ; - - case SAI_STATS_MODE_READ_AND_CLEAR: return lemming::dataplane::sai::STATS_MODE_READ_AND_CLEAR; - - case SAI_STATS_MODE_BULK_READ: return lemming::dataplane::sai::STATS_MODE_BULK_READ; - - case SAI_STATS_MODE_BULK_CLEAR: return lemming::dataplane::sai::STATS_MODE_BULK_CLEAR; - - case SAI_STATS_MODE_BULK_READ_AND_CLEAR: return lemming::dataplane::sai::STATS_MODE_BULK_READ_AND_CLEAR; - - default: return lemming::dataplane::sai::STATS_MODE_UNSPECIFIED; - } -} -sai_stats_mode_t convert_sai_stats_mode_t_to_sai(lemming::dataplane::sai::StatsMode val) { - switch (val) { - - case lemming::dataplane::sai::STATS_MODE_READ: return SAI_STATS_MODE_READ; - - case lemming::dataplane::sai::STATS_MODE_READ_AND_CLEAR: return SAI_STATS_MODE_READ_AND_CLEAR; - - case lemming::dataplane::sai::STATS_MODE_BULK_READ: return SAI_STATS_MODE_BULK_READ; - - case lemming::dataplane::sai::STATS_MODE_BULK_CLEAR: return SAI_STATS_MODE_BULK_CLEAR; - - case lemming::dataplane::sai::STATS_MODE_BULK_READ_AND_CLEAR: return SAI_STATS_MODE_BULK_READ_AND_CLEAR; - - default: return SAI_STATS_MODE_READ; - } -} - -google::protobuf::RepeatedField convert_list_sai_stats_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_stats_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_stats_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_stats_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::StpAttr convert_sai_stp_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_STP_ATTR_VLAN_LIST: return lemming::dataplane::sai::STP_ATTR_VLAN_LIST; - - case SAI_STP_ATTR_BRIDGE_ID: return lemming::dataplane::sai::STP_ATTR_BRIDGE_ID; - - case SAI_STP_ATTR_PORT_LIST: return lemming::dataplane::sai::STP_ATTR_PORT_LIST; - - default: return lemming::dataplane::sai::STP_ATTR_UNSPECIFIED; - } -} -sai_stp_attr_t convert_sai_stp_attr_t_to_sai(lemming::dataplane::sai::StpAttr val) { - switch (val) { - - case lemming::dataplane::sai::STP_ATTR_VLAN_LIST: return SAI_STP_ATTR_VLAN_LIST; - - case lemming::dataplane::sai::STP_ATTR_BRIDGE_ID: return SAI_STP_ATTR_BRIDGE_ID; - - case lemming::dataplane::sai::STP_ATTR_PORT_LIST: return SAI_STP_ATTR_PORT_LIST; - - default: return SAI_STP_ATTR_VLAN_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_stp_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_stp_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_stp_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_stp_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::StpPortAttr convert_sai_stp_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_STP_PORT_ATTR_STP: return lemming::dataplane::sai::STP_PORT_ATTR_STP; - - case SAI_STP_PORT_ATTR_BRIDGE_PORT: return lemming::dataplane::sai::STP_PORT_ATTR_BRIDGE_PORT; - - case SAI_STP_PORT_ATTR_STATE: return lemming::dataplane::sai::STP_PORT_ATTR_STATE; - - default: return lemming::dataplane::sai::STP_PORT_ATTR_UNSPECIFIED; - } -} -sai_stp_port_attr_t convert_sai_stp_port_attr_t_to_sai(lemming::dataplane::sai::StpPortAttr val) { - switch (val) { - - case lemming::dataplane::sai::STP_PORT_ATTR_STP: return SAI_STP_PORT_ATTR_STP; - - case lemming::dataplane::sai::STP_PORT_ATTR_BRIDGE_PORT: return SAI_STP_PORT_ATTR_BRIDGE_PORT; - - case lemming::dataplane::sai::STP_PORT_ATTR_STATE: return SAI_STP_PORT_ATTR_STATE; - - default: return SAI_STP_PORT_ATTR_STP; - } -} - -google::protobuf::RepeatedField convert_list_sai_stp_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_stp_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_stp_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_stp_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::StpPortState convert_sai_stp_port_state_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_STP_PORT_STATE_LEARNING: return lemming::dataplane::sai::STP_PORT_STATE_LEARNING; - - case SAI_STP_PORT_STATE_FORWARDING: return lemming::dataplane::sai::STP_PORT_STATE_FORWARDING; - - case SAI_STP_PORT_STATE_BLOCKING: return lemming::dataplane::sai::STP_PORT_STATE_BLOCKING; - - default: return lemming::dataplane::sai::STP_PORT_STATE_UNSPECIFIED; - } -} -sai_stp_port_state_t convert_sai_stp_port_state_t_to_sai(lemming::dataplane::sai::StpPortState val) { - switch (val) { - - case lemming::dataplane::sai::STP_PORT_STATE_LEARNING: return SAI_STP_PORT_STATE_LEARNING; - - case lemming::dataplane::sai::STP_PORT_STATE_FORWARDING: return SAI_STP_PORT_STATE_FORWARDING; - - case lemming::dataplane::sai::STP_PORT_STATE_BLOCKING: return SAI_STP_PORT_STATE_BLOCKING; - - default: return SAI_STP_PORT_STATE_LEARNING; - } -} - -google::protobuf::RepeatedField convert_list_sai_stp_port_state_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_stp_port_state_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_stp_port_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_stp_port_state_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchAsicSdkHealthCategory convert_sai_switch_asic_sdk_health_category_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; - - case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW; - - case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW; - - case SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW; - - default: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_UNSPECIFIED; - } -} -sai_switch_asic_sdk_health_category_t convert_sai_switch_asic_sdk_health_category_t_to_sai(lemming::dataplane::sai::SwitchAsicSdkHealthCategory val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW: return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW: return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_FW; - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW: return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_CPU_HW; - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW: return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_ASIC_HW; - - default: return SAI_SWITCH_ASIC_SDK_HEALTH_CATEGORY_SW; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_asic_sdk_health_category_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_asic_sdk_health_category_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_asic_sdk_health_category_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_asic_sdk_health_category_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchAsicSdkHealthSeverity convert_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; - - case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING; - - case SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE; - - default: return lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_UNSPECIFIED; - } -} -sai_switch_asic_sdk_health_severity_t convert_sai_switch_asic_sdk_health_severity_t_to_sai(lemming::dataplane::sai::SwitchAsicSdkHealthSeverity val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL: return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING: return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_WARNING; - - case lemming::dataplane::sai::SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE: return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_NOTICE; - - default: return SAI_SWITCH_ASIC_SDK_HEALTH_SEVERITY_FATAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_asic_sdk_health_severity_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_asic_sdk_health_severity_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_asic_sdk_health_severity_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchAttrExtensions convert_sai_switch_attr_extensions_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START: return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_START; - - case SAI_SWITCH_ATTR_EXTENSIONS_RANGE_END: return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_END; - - default: return lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_UNSPECIFIED; - } -} -sai_switch_attr_extensions_t convert_sai_switch_attr_extensions_t_to_sai(lemming::dataplane::sai::SwitchAttrExtensions val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_START: return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START; - - case lemming::dataplane::sai::SWITCH_ATTR_EXTENSIONS_RANGE_END: return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_END; - - default: return SAI_SWITCH_ATTR_EXTENSIONS_RANGE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_attr_extensions_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_attr_extensions_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_attr_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_attr_extensions_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchAttr convert_sai_switch_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; - - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: return lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS; - - case SAI_SWITCH_ATTR_PORT_LIST: return lemming::dataplane::sai::SWITCH_ATTR_PORT_LIST; - - case SAI_SWITCH_ATTR_PORT_MAX_MTU: return lemming::dataplane::sai::SWITCH_ATTR_PORT_MAX_MTU; - - case SAI_SWITCH_ATTR_CPU_PORT: return lemming::dataplane::sai::SWITCH_ATTR_CPU_PORT; - - case SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: return lemming::dataplane::sai::SWITCH_ATTR_MAX_VIRTUAL_ROUTERS; - - case SAI_SWITCH_ATTR_FDB_TABLE_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_FDB_TABLE_SIZE; - - case SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE; - - case SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_L3_ROUTE_TABLE_SIZE; - - case SAI_SWITCH_ATTR_LAG_MEMBERS: return lemming::dataplane::sai::SWITCH_ATTR_LAG_MEMBERS; - - case SAI_SWITCH_ATTR_NUMBER_OF_LAGS: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_LAGS; - - case SAI_SWITCH_ATTR_ECMP_MEMBERS: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBERS; - - case SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS; - - case SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES; - - case SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES; - - case SAI_SWITCH_ATTR_NUMBER_OF_QUEUES: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_QUEUES; - - case SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_CPU_QUEUES; - - case SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: return lemming::dataplane::sai::SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED; - - case SAI_SWITCH_ATTR_OPER_STATUS: return lemming::dataplane::sai::SWITCH_ATTR_OPER_STATUS; - - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: return lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS; - - case SAI_SWITCH_ATTR_TEMP_LIST: return lemming::dataplane::sai::SWITCH_ATTR_TEMP_LIST; - - case SAI_SWITCH_ATTR_MAX_TEMP: return lemming::dataplane::sai::SWITCH_ATTR_MAX_TEMP; - - case SAI_SWITCH_ATTR_AVERAGE_TEMP: return lemming::dataplane::sai::SWITCH_ATTR_AVERAGE_TEMP; - - case SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_PORT_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_PORT_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_VLAN_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_VLAN_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_ACL_USER_META_DATA_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_META_DATA_RANGE; - - case SAI_SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE; - - case SAI_SWITCH_ATTR_DEFAULT_VLAN_ID: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VLAN_ID; - - case SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_STP_INST_ID; - - case SAI_SWITCH_ATTR_MAX_STP_INSTANCE: return lemming::dataplane::sai::SWITCH_ATTR_MAX_STP_INSTANCE; - - case SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID; - - case SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID; - - case SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID; - - case SAI_SWITCH_ATTR_INGRESS_ACL: return lemming::dataplane::sai::SWITCH_ATTR_INGRESS_ACL; - - case SAI_SWITCH_ATTR_EGRESS_ACL: return lemming::dataplane::sai::SWITCH_ATTR_EGRESS_ACL; - - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES; - - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS; - - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL; - - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP; - - case SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_TOTAL_BUFFER_SIZE; - - case SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: return lemming::dataplane::sai::SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM; - - case SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: return lemming::dataplane::sai::SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_FDB_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_L2MC_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPMC_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAT_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAT_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE; - - case SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP; - - case SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY; - - case SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP: return lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_TRAP_GROUP; - - case SAI_SWITCH_ATTR_ECMP_HASH: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH; - - case SAI_SWITCH_ATTR_LAG_HASH: return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH; - - case SAI_SWITCH_ATTR_RESTART_WARM: return lemming::dataplane::sai::SWITCH_ATTR_RESTART_WARM; - - case SAI_SWITCH_ATTR_WARM_RECOVER: return lemming::dataplane::sai::SWITCH_ATTR_WARM_RECOVER; - - case SAI_SWITCH_ATTR_RESTART_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_RESTART_TYPE; - - case SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: return lemming::dataplane::sai::SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL; - - case SAI_SWITCH_ATTR_NV_STORAGE_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_NV_STORAGE_SIZE; - - case SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT: return lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_ACTION_COUNT; - - case SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT: return lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_RANGE_COUNT; - - case SAI_SWITCH_ATTR_ACL_CAPABILITY: return lemming::dataplane::sai::SWITCH_ATTR_ACL_CAPABILITY; - - case SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: return lemming::dataplane::sai::SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY; - - case SAI_SWITCH_ATTR_SWITCHING_MODE: return lemming::dataplane::sai::SWITCH_ATTR_SWITCHING_MODE; - - case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE; - - case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE; - - case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: return lemming::dataplane::sai::SWITCH_ATTR_SRC_MAC_ADDRESS; - - case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: return lemming::dataplane::sai::SWITCH_ATTR_MAX_LEARNED_ADDRESSES; - - case SAI_SWITCH_ATTR_FDB_AGING_TIME: return lemming::dataplane::sai::SWITCH_ATTR_FDB_AGING_TIME; - - case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: return lemming::dataplane::sai::SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION; - - case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: return lemming::dataplane::sai::SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION; - - case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: return lemming::dataplane::sai::SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION; - - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM; - - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED; - - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET; - - case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH; - - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4; - - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4; - - case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV6; - - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM; - - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_SEED; - - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET; - - case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: return lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH; - - case SAI_SWITCH_ATTR_LAG_HASH_IPV4: return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4; - - case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4; - - case SAI_SWITCH_ATTR_LAG_HASH_IPV6: return lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV6; - - case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: return lemming::dataplane::sai::SWITCH_ATTR_COUNTER_REFRESH_INTERVAL; - - case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DEFAULT_TC; - - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP; - - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP; - - case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_TC_MAP; - - case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP; - - case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP; - - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; - - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHELL_ENABLE; - - case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_PROFILE_ID; - - case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_HARDWARE_INFO; - - case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_PATH_NAME; - - case SAI_SWITCH_ATTR_INIT_SWITCH: return lemming::dataplane::sai::SWITCH_ATTR_INIT_SWITCH; - - case SAI_SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY; - - case SAI_SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY; - - case SAI_SWITCH_ATTR_FDB_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_FDB_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY; - - case SAI_SWITCH_ATTR_PACKET_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_PACKET_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_FAST_API_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_FAST_API_ENABLE; - - case SAI_SWITCH_ATTR_MIRROR_TC: return lemming::dataplane::sai::SWITCH_ATTR_MIRROR_TC; - - case SAI_SWITCH_ATTR_ACL_STAGE_INGRESS: return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_INGRESS; - - case SAI_SWITCH_ATTR_ACL_STAGE_EGRESS: return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_EGRESS; - - case SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH: return lemming::dataplane::sai::SWITCH_ATTR_SRV6_MAX_SID_DEPTH; - - case SAI_SWITCH_ATTR_SRV6_TLV_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_SRV6_TLV_TYPE; - - case SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: return lemming::dataplane::sai::SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES; - - case SAI_SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY; - - case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: return lemming::dataplane::sai::SWITCH_ATTR_PFC_DLR_PACKET_ACTION; - - case SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE; - - case SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL: return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL; - - case SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE: return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE; - - case SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL: return lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL; - - case SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE; - - case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: return lemming::dataplane::sai::SWITCH_ATTR_TPID_OUTER_VLAN; - - case SAI_SWITCH_ATTR_TPID_INNER_VLAN: return lemming::dataplane::sai::SWITCH_ATTR_TPID_INNER_VLAN; - - case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_CRC_CHECK_ENABLE; - - case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_CRC_RECALCULATION_ENABLE; - - case SAI_SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY; - - case SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_BFD_SESSION; - - case SAI_SWITCH_ATTR_MAX_BFD_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_MAX_BFD_SESSION; - - case SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE; - - case SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE; - - case SAI_SWITCH_ATTR_MIN_BFD_RX: return lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_RX; - - case SAI_SWITCH_ATTR_MIN_BFD_TX: return lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_TX; - - case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE; - - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: return lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC; - - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: return lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_PORT; - - case SAI_SWITCH_ATTR_MAX_MIRROR_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_MAX_MIRROR_SESSION; - - case SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION; - - case SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE; - - case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: return lemming::dataplane::sai::SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL; - - case SAI_SWITCH_ATTR_TAM_OBJECT_ID: return lemming::dataplane::sai::SWITCH_ATTR_TAM_OBJECT_ID; - - case SAI_SWITCH_ATTR_TAM_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_TAM_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST; - - case SAI_SWITCH_ATTR_PRE_SHUTDOWN: return lemming::dataplane::sai::SWITCH_ATTR_PRE_SHUTDOWN; - - case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: return lemming::dataplane::sai::SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID; - - case SAI_SWITCH_ATTR_NAT_ENABLE: return lemming::dataplane::sai::SWITCH_ATTR_NAT_ENABLE; - - case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: return lemming::dataplane::sai::SWITCH_ATTR_HARDWARE_ACCESS_BUS; - - case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: return lemming::dataplane::sai::SWITCH_ATTR_PLATFROM_CONTEXT; - - case SAI_SWITCH_ATTR_REGISTER_READ: return lemming::dataplane::sai::SWITCH_ATTR_REGISTER_READ; - - case SAI_SWITCH_ATTR_REGISTER_WRITE: return lemming::dataplane::sai::SWITCH_ATTR_REGISTER_WRITE; - - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST; - - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_METHOD; - - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_TYPE; - - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE; - - case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_BROADCAST_STOP; - - case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH; - - case SAI_SWITCH_ATTR_FIRMWARE_STATUS: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_STATUS; - - case SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MAJOR_VERSION; - - case SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION: return lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MINOR_VERSION; - - case SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST: return lemming::dataplane::sai::SWITCH_ATTR_PORT_CONNECTOR_LIST; - - case SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: return lemming::dataplane::sai::SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT; - - case SAI_SWITCH_ATTR_TYPE: return lemming::dataplane::sai::SWITCH_ATTR_TYPE; - - case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: return lemming::dataplane::sai::SWITCH_ATTR_MACSEC_OBJECT_LIST; - - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP; - - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; - - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case SAI_SWITCH_ATTR_SWITCH_ID: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ID; - - case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: return lemming::dataplane::sai::SWITCH_ATTR_MAX_SYSTEM_CORES; - - case SAI_SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST: return lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST; - - case SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS; - - case SAI_SWITCH_ATTR_SYSTEM_PORT_LIST: return lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_LIST; - - case SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: return lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS; - - case SAI_SWITCH_ATTR_FABRIC_PORT_LIST: return lemming::dataplane::sai::SWITCH_ATTR_FABRIC_PORT_LIST; - - case SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE; - - case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: return lemming::dataplane::sai::SWITCH_ATTR_FAILOVER_CONFIG_MODE; - - case SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: return lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_FAILOVER_MODE; - - case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: return lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_OBJECTS_LIST; - - case SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: return lemming::dataplane::sai::SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE; - - case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: return lemming::dataplane::sai::SWITCH_ATTR_PRE_INGRESS_ACL; - - case SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY; - - case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: return lemming::dataplane::sai::SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST; - - case SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_MY_MAC_LIST: return lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_LIST; - - case SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: return lemming::dataplane::sai::SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES; - - case SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES; - - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: return lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES; - - case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; - - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: return lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; - - case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_OBJECT_ID; - - case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_TAG_TPID; - - case SAI_SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY; - - case SAI_SWITCH_ATTR_NAT_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_NAT_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: return lemming::dataplane::sai::SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT; - - case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: return lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBER_COUNT; - - case SAI_SWITCH_ATTR_ARS_PROFILE: return lemming::dataplane::sai::SWITCH_ATTR_ARS_PROFILE; - - case SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS: return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_POST_INGRESS; - - case SAI_SWITCH_ATTR_CREDIT_WD: return lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD; - - case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: return lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD_TIMER; - - case SAI_SWITCH_ATTR_SWITCH_ISOLATE: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ISOLATE; - - case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: return lemming::dataplane::sai::SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE; - - case SAI_SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return lemming::dataplane::sai::SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return lemming::dataplane::sai::SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return lemming::dataplane::sai::SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case SAI_SWITCH_ATTR_ACL_CHAIN_LIST: return lemming::dataplane::sai::SWITCH_ATTR_ACL_CHAIN_LIST; - - case SAI_SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY; - - case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: return lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY; - - case SAI_SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY: return lemming::dataplane::sai::SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY; - - case SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_TWAMP_SESSION; - - case SAI_SWITCH_ATTR_MAX_TWAMP_SESSION: return lemming::dataplane::sai::SWITCH_ATTR_MAX_TWAMP_SESSION; - - case SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY; - - case SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: return lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS; - - case SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: return lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_PRE_INGRESS; - - case SAI_SWITCH_ATTR_POE_DEVICE_LIST: return lemming::dataplane::sai::SWITCH_ATTR_POE_DEVICE_LIST; - - default: return lemming::dataplane::sai::SWITCH_ATTR_UNSPECIFIED; - } -} -sai_switch_attr_t convert_sai_switch_attr_t_to_sai(lemming::dataplane::sai::SwitchAttr val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: return SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: return SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_LIST: return SAI_SWITCH_ATTR_PORT_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_MAX_MTU: return SAI_SWITCH_ATTR_PORT_MAX_MTU; - - case lemming::dataplane::sai::SWITCH_ATTR_CPU_PORT: return SAI_SWITCH_ATTR_CPU_PORT; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: return SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_TABLE_SIZE: return SAI_SWITCH_ATTR_FDB_TABLE_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: return SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: return SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_MEMBERS: return SAI_SWITCH_ATTR_LAG_MEMBERS; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_LAGS: return SAI_SWITCH_ATTR_NUMBER_OF_LAGS; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBERS: return SAI_SWITCH_ATTR_ECMP_MEMBERS; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: return SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: return SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: return SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_QUEUES: return SAI_SWITCH_ATTR_NUMBER_OF_QUEUES; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: return SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES; - - case lemming::dataplane::sai::SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: return SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED; - - case lemming::dataplane::sai::SWITCH_ATTR_OPER_STATUS: return SAI_SWITCH_ATTR_OPER_STATUS; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: return SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS; - - case lemming::dataplane::sai::SWITCH_ATTR_TEMP_LIST: return SAI_SWITCH_ATTR_TEMP_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_TEMP: return SAI_SWITCH_ATTR_MAX_TEMP; - - case lemming::dataplane::sai::SWITCH_ATTR_AVERAGE_TEMP: return SAI_SWITCH_ATTR_AVERAGE_TEMP; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: return SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_FDB_DST_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_ROUTE_DST_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_NEIGHBOR_DST_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_PORT_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_VLAN_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_VLAN_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_META_DATA_RANGE: return SAI_SWITCH_ATTR_ACL_USER_META_DATA_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE: return SAI_SWITCH_ATTR_ACL_USER_TRAP_ID_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VLAN_ID: return SAI_SWITCH_ATTR_DEFAULT_VLAN_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_STP_INST_ID: return SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_STP_INSTANCE: return SAI_SWITCH_ATTR_MAX_STP_INSTANCE; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: return SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: return SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: return SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_INGRESS_ACL: return SAI_SWITCH_ATTR_INGRESS_ACL; - - case lemming::dataplane::sai::SWITCH_ATTR_EGRESS_ACL: return SAI_SWITCH_ATTR_EGRESS_ACL; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: return SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP; - - case lemming::dataplane::sai::SWITCH_ATTR_TOTAL_BUFFER_SIZE: return SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: return SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM; - - case lemming::dataplane::sai::SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: return SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_FDB_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE: return SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP: return SAI_SWITCH_ATTR_AVAILABLE_ACL_TABLE_GROUP; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_DEFAULT_TRAP_GROUP: return SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH: return SAI_SWITCH_ATTR_ECMP_HASH; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH: return SAI_SWITCH_ATTR_LAG_HASH; - - case lemming::dataplane::sai::SWITCH_ATTR_RESTART_WARM: return SAI_SWITCH_ATTR_RESTART_WARM; - - case lemming::dataplane::sai::SWITCH_ATTR_WARM_RECOVER: return SAI_SWITCH_ATTR_WARM_RECOVER; - - case lemming::dataplane::sai::SWITCH_ATTR_RESTART_TYPE: return SAI_SWITCH_ATTR_RESTART_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: return SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL; - - case lemming::dataplane::sai::SWITCH_ATTR_NV_STORAGE_SIZE: return SAI_SWITCH_ATTR_NV_STORAGE_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_ACTION_COUNT: return SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_ACL_RANGE_COUNT: return SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_CAPABILITY: return SAI_SWITCH_ATTR_ACL_CAPABILITY; - - case lemming::dataplane::sai::SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: return SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCHING_MODE: return SAI_SWITCH_ATTR_SWITCHING_MODE; - - case lemming::dataplane::sai::SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: return SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: return SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_SRC_MAC_ADDRESS: return SAI_SWITCH_ATTR_SRC_MAC_ADDRESS; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_LEARNED_ADDRESSES: return SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_AGING_TIME: return SAI_SWITCH_ATTR_FDB_AGING_TIME; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: return SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: return SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: return SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: return SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: return SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4: return SAI_SWITCH_ATTR_ECMP_HASH_IPV4; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: return SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_HASH_IPV6: return SAI_SWITCH_ATTR_ECMP_HASH_IPV6; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: return SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: return SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4: return SAI_SWITCH_ATTR_LAG_HASH_IPV4; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: return SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4; - - case lemming::dataplane::sai::SWITCH_ATTR_LAG_HASH_IPV6: return SAI_SWITCH_ATTR_LAG_HASH_IPV6; - - case lemming::dataplane::sai::SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: return SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DEFAULT_TC: return SAI_SWITCH_ATTR_QOS_DEFAULT_TC; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: return SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: return SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: return SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: return SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: return SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHELL_ENABLE: return SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_PROFILE_ID: return SAI_SWITCH_ATTR_SWITCH_PROFILE_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_HARDWARE_INFO: return SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_PATH_NAME: return SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME; - - case lemming::dataplane::sai::SWITCH_ATTR_INIT_SWITCH: return SAI_SWITCH_ATTR_INIT_SWITCH; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY: return SAI_SWITCH_ATTR_SWITCH_STATE_CHANGE_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY: return SAI_SWITCH_ATTR_SWITCH_SHUTDOWN_REQUEST_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_FDB_EVENT_NOTIFY: return SAI_SWITCH_ATTR_FDB_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: return SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_PACKET_EVENT_NOTIFY: return SAI_SWITCH_ATTR_PACKET_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_FAST_API_ENABLE: return SAI_SWITCH_ATTR_FAST_API_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_MIRROR_TC: return SAI_SWITCH_ATTR_MIRROR_TC; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_INGRESS: return SAI_SWITCH_ATTR_ACL_STAGE_INGRESS; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_EGRESS: return SAI_SWITCH_ATTR_ACL_STAGE_EGRESS; - - case lemming::dataplane::sai::SWITCH_ATTR_SRV6_MAX_SID_DEPTH: return SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH; - - case lemming::dataplane::sai::SWITCH_ATTR_SRV6_TLV_TYPE: return SAI_SWITCH_ATTR_SRV6_TLV_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: return SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES; - - case lemming::dataplane::sai::SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY: return SAI_SWITCH_ATTR_QUEUE_PFC_DEADLOCK_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_PFC_DLR_PACKET_ACTION: return SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION; - - case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE: return SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLD_INTERVAL: return SAI_SWITCH_ATTR_PFC_TC_DLD_INTERVAL; - - case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE: return SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL_RANGE; - - case lemming::dataplane::sai::SWITCH_ATTR_PFC_TC_DLR_INTERVAL: return SAI_SWITCH_ATTR_PFC_TC_DLR_INTERVAL; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: return SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_TPID_OUTER_VLAN: return SAI_SWITCH_ATTR_TPID_OUTER_VLAN; - - case lemming::dataplane::sai::SWITCH_ATTR_TPID_INNER_VLAN: return SAI_SWITCH_ATTR_TPID_INNER_VLAN; - - case lemming::dataplane::sai::SWITCH_ATTR_CRC_CHECK_ENABLE: return SAI_SWITCH_ATTR_CRC_CHECK_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_CRC_RECALCULATION_ENABLE: return SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY: return SAI_SWITCH_ATTR_BFD_SESSION_STATE_CHANGE_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_BFD_SESSION: return SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_BFD_SESSION: return SAI_SWITCH_ATTR_MAX_BFD_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: return SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: return SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_RX: return SAI_SWITCH_ATTR_MIN_BFD_RX; - - case lemming::dataplane::sai::SWITCH_ATTR_MIN_BFD_TX: return SAI_SWITCH_ATTR_MIN_BFD_TX; - - case lemming::dataplane::sai::SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: return SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: return SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC; - - case lemming::dataplane::sai::SWITCH_ATTR_VXLAN_DEFAULT_PORT: return SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_MIRROR_SESSION: return SAI_SWITCH_ATTR_MAX_MIRROR_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: return SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: return SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE; - - case lemming::dataplane::sai::SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: return SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL; - - case lemming::dataplane::sai::SWITCH_ATTR_TAM_OBJECT_ID: return SAI_SWITCH_ATTR_TAM_OBJECT_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_TAM_EVENT_NOTIFY: return SAI_SWITCH_ATTR_TAM_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: return SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PRE_SHUTDOWN: return SAI_SWITCH_ATTR_PRE_SHUTDOWN; - - case lemming::dataplane::sai::SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: return SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_NAT_ENABLE: return SAI_SWITCH_ATTR_NAT_ENABLE; - - case lemming::dataplane::sai::SWITCH_ATTR_HARDWARE_ACCESS_BUS: return SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS; - - case lemming::dataplane::sai::SWITCH_ATTR_PLATFROM_CONTEXT: return SAI_SWITCH_ATTR_PLATFROM_CONTEXT; - - case lemming::dataplane::sai::SWITCH_ATTR_REGISTER_READ: return SAI_SWITCH_ATTR_REGISTER_READ; - - case lemming::dataplane::sai::SWITCH_ATTR_REGISTER_WRITE: return SAI_SWITCH_ATTR_REGISTER_WRITE; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: return SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_METHOD: return SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_LOAD_TYPE: return SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: return SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: return SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: return SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_STATUS: return SAI_SWITCH_ATTR_FIRMWARE_STATUS; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: return SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION; - - case lemming::dataplane::sai::SWITCH_ATTR_FIRMWARE_MINOR_VERSION: return SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_CONNECTOR_LIST: return SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: return SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT; - - case lemming::dataplane::sai::SWITCH_ATTR_TYPE: return SAI_SWITCH_ATTR_TYPE; - - case lemming::dataplane::sai::SWITCH_ATTR_MACSEC_OBJECT_LIST: return SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: return SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ID: return SAI_SWITCH_ATTR_SWITCH_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_SYSTEM_CORES: return SAI_SWITCH_ATTR_MAX_SYSTEM_CORES; - - case lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST: return SAI_SWITCH_ATTR_SYSTEM_PORT_CONFIG_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: return SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS; - - case lemming::dataplane::sai::SWITCH_ATTR_SYSTEM_PORT_LIST: return SAI_SWITCH_ATTR_SYSTEM_PORT_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: return SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS; - - case lemming::dataplane::sai::SWITCH_ATTR_FABRIC_PORT_LIST: return SAI_SWITCH_ATTR_FABRIC_PORT_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: return SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_FAILOVER_CONFIG_MODE: return SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE; - - case lemming::dataplane::sai::SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: return SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE; - - case lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_OBJECTS_LIST: return SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: return SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE; - - case lemming::dataplane::sai::SWITCH_ATTR_PRE_INGRESS_ACL: return SAI_SWITCH_ATTR_PRE_INGRESS_ACL; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: return SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: return SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: return SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_MY_MAC_LIST: return SAI_SWITCH_ATTR_MY_MAC_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: return SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: return SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: return SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: return SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: return SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP; - - case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_OBJECT_ID: return SAI_SWITCH_ATTR_IPSEC_OBJECT_ID; - - case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_TAG_TPID: return SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID; - - case lemming::dataplane::sai::SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY: return SAI_SWITCH_ATTR_IPSEC_SA_STATUS_CHANGE_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_NAT_EVENT_NOTIFY: return SAI_SWITCH_ATTR_NAT_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: return SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT; - - case lemming::dataplane::sai::SWITCH_ATTR_ECMP_MEMBER_COUNT: return SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT; - - case lemming::dataplane::sai::SWITCH_ATTR_ARS_PROFILE: return SAI_SWITCH_ATTR_ARS_PROFILE; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_POST_INGRESS: return SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS; - - case lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD: return SAI_SWITCH_ATTR_CREDIT_WD; - - case lemming::dataplane::sai::SWITCH_ATTR_CREDIT_WD_TIMER: return SAI_SWITCH_ATTR_CREDIT_WD_TIMER; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ISOLATE: return SAI_SWITCH_ATTR_SWITCH_ISOLATE; - - case lemming::dataplane::sai::SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: return SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE; - - case lemming::dataplane::sai::SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY: return SAI_SWITCH_ATTR_SWITCH_ASIC_SDK_HEALTH_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case lemming::dataplane::sai::SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case lemming::dataplane::sai::SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: return SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_CHAIN_LIST: return SAI_SWITCH_ATTR_ACL_CHAIN_LIST; - - case lemming::dataplane::sai::SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY: return SAI_SWITCH_ATTR_PORT_HOST_TX_READY_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: return SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: return SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY; - - case lemming::dataplane::sai::SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY: return SAI_SWITCH_ATTR_TWAMP_SESSION_EVENT_NOTIFY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: return SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_MAX_TWAMP_SESSION: return SAI_SWITCH_ATTR_MAX_TWAMP_SESSION; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: return SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY; - - case lemming::dataplane::sai::SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: return SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS; - - case lemming::dataplane::sai::SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: return SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS; - - case lemming::dataplane::sai::SWITCH_ATTR_POE_DEVICE_LIST: return SAI_SWITCH_ATTR_POE_DEVICE_LIST; - - default: return SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchFailoverConfigMode convert_sai_switch_failover_config_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS: return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; - - case SAI_SWITCH_FAILOVER_CONFIG_MODE_HITLESS: return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_HITLESS; - - default: return lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_UNSPECIFIED; - } -} -sai_switch_failover_config_mode_t convert_sai_switch_failover_config_mode_t_to_sai(lemming::dataplane::sai::SwitchFailoverConfigMode val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS: return SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; - - case lemming::dataplane::sai::SWITCH_FAILOVER_CONFIG_MODE_HITLESS: return SAI_SWITCH_FAILOVER_CONFIG_MODE_HITLESS; - - default: return SAI_SWITCH_FAILOVER_CONFIG_MODE_NO_HITLESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_failover_config_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_failover_config_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_failover_config_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_failover_config_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchFirmwareLoadMethod convert_sai_switch_firmware_load_method_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_NONE; - - case SAI_SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL; - - case SAI_SWITCH_FIRMWARE_LOAD_METHOD_EEPROM: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_EEPROM; - - default: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_UNSPECIFIED; - } -} -sai_switch_firmware_load_method_t convert_sai_switch_firmware_load_method_t_to_sai(lemming::dataplane::sai::SwitchFirmwareLoadMethod val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_NONE: return SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE; - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL: return SAI_SWITCH_FIRMWARE_LOAD_METHOD_INTERNAL; - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_METHOD_EEPROM: return SAI_SWITCH_FIRMWARE_LOAD_METHOD_EEPROM; - - default: return SAI_SWITCH_FIRMWARE_LOAD_METHOD_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_firmware_load_method_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_firmware_load_method_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_firmware_load_method_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_firmware_load_method_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchFirmwareLoadType convert_sai_switch_firmware_load_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_SKIP; - - case SAI_SWITCH_FIRMWARE_LOAD_TYPE_FORCE: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_FORCE; - - case SAI_SWITCH_FIRMWARE_LOAD_TYPE_AUTO: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_AUTO; - - default: return lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_UNSPECIFIED; - } -} -sai_switch_firmware_load_type_t convert_sai_switch_firmware_load_type_t_to_sai(lemming::dataplane::sai::SwitchFirmwareLoadType val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_SKIP: return SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP; - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_FORCE: return SAI_SWITCH_FIRMWARE_LOAD_TYPE_FORCE; - - case lemming::dataplane::sai::SWITCH_FIRMWARE_LOAD_TYPE_AUTO: return SAI_SWITCH_FIRMWARE_LOAD_TYPE_AUTO; - - default: return SAI_SWITCH_FIRMWARE_LOAD_TYPE_SKIP; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_firmware_load_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_firmware_load_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_firmware_load_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_firmware_load_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchHardwareAccessBus convert_sai_switch_hardware_access_bus_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO: return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_MDIO; - - case SAI_SWITCH_HARDWARE_ACCESS_BUS_I2C: return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_I2C; - - case SAI_SWITCH_HARDWARE_ACCESS_BUS_CPLD: return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_CPLD; - - default: return lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_UNSPECIFIED; - } -} -sai_switch_hardware_access_bus_t convert_sai_switch_hardware_access_bus_t_to_sai(lemming::dataplane::sai::SwitchHardwareAccessBus val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_MDIO: return SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO; - - case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_I2C: return SAI_SWITCH_HARDWARE_ACCESS_BUS_I2C; - - case lemming::dataplane::sai::SWITCH_HARDWARE_ACCESS_BUS_CPLD: return SAI_SWITCH_HARDWARE_ACCESS_BUS_CPLD; - - default: return SAI_SWITCH_HARDWARE_ACCESS_BUS_MDIO; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_hardware_access_bus_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_hardware_access_bus_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_hardware_access_bus_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_hardware_access_bus_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode convert_sai_switch_hostif_oper_status_update_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION: return lemming::dataplane::sai::SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; - - case SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER: return lemming::dataplane::sai::SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER; - - default: return lemming::dataplane::sai::SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_UNSPECIFIED; - } -} -sai_switch_hostif_oper_status_update_mode_t convert_sai_switch_hostif_oper_status_update_mode_t_to_sai(lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION: return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; - - case lemming::dataplane::sai::SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER: return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_SAI_ADAPTER; - - default: return SAI_SWITCH_HOSTIF_OPER_STATUS_UPDATE_MODE_APPLICATION; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_hostif_oper_status_update_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_hostif_oper_status_update_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_hostif_oper_status_update_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_hostif_oper_status_update_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchMcastSnoopingCapability convert_sai_switch_mcast_snooping_capability_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE: return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; - - case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG: return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG; - - case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_SG: return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_SG; - - case SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG: return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG; - - default: return lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_UNSPECIFIED; - } -} -sai_switch_mcast_snooping_capability_t convert_sai_switch_mcast_snooping_capability_t_to_sai(lemming::dataplane::sai::SwitchMcastSnoopingCapability val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_NONE: return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; - - case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG: return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG; - - case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_SG: return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_SG; - - case lemming::dataplane::sai::SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG: return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_XG_AND_SG; - - default: return SAI_SWITCH_MCAST_SNOOPING_CAPABILITY_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_mcast_snooping_capability_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_mcast_snooping_capability_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_mcast_snooping_capability_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_mcast_snooping_capability_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchOperStatus convert_sai_switch_oper_status_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_OPER_STATUS_UNKNOWN: return lemming::dataplane::sai::SWITCH_OPER_STATUS_UNKNOWN; - - case SAI_SWITCH_OPER_STATUS_UP: return lemming::dataplane::sai::SWITCH_OPER_STATUS_UP; - - case SAI_SWITCH_OPER_STATUS_DOWN: return lemming::dataplane::sai::SWITCH_OPER_STATUS_DOWN; - - case SAI_SWITCH_OPER_STATUS_FAILED: return lemming::dataplane::sai::SWITCH_OPER_STATUS_FAILED; - - default: return lemming::dataplane::sai::SWITCH_OPER_STATUS_UNSPECIFIED; - } -} -sai_switch_oper_status_t convert_sai_switch_oper_status_t_to_sai(lemming::dataplane::sai::SwitchOperStatus val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_OPER_STATUS_UNKNOWN: return SAI_SWITCH_OPER_STATUS_UNKNOWN; - - case lemming::dataplane::sai::SWITCH_OPER_STATUS_UP: return SAI_SWITCH_OPER_STATUS_UP; - - case lemming::dataplane::sai::SWITCH_OPER_STATUS_DOWN: return SAI_SWITCH_OPER_STATUS_DOWN; - - case lemming::dataplane::sai::SWITCH_OPER_STATUS_FAILED: return SAI_SWITCH_OPER_STATUS_FAILED; - - default: return SAI_SWITCH_OPER_STATUS_UNKNOWN; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_oper_status_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_oper_status_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_oper_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_oper_status_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchRestartType convert_sai_switch_restart_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_RESTART_TYPE_NONE: return lemming::dataplane::sai::SWITCH_RESTART_TYPE_NONE; - - case SAI_SWITCH_RESTART_TYPE_PLANNED: return lemming::dataplane::sai::SWITCH_RESTART_TYPE_PLANNED; - - case SAI_SWITCH_RESTART_TYPE_ANY: return lemming::dataplane::sai::SWITCH_RESTART_TYPE_ANY; - - default: return lemming::dataplane::sai::SWITCH_RESTART_TYPE_UNSPECIFIED; - } -} -sai_switch_restart_type_t convert_sai_switch_restart_type_t_to_sai(lemming::dataplane::sai::SwitchRestartType val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_RESTART_TYPE_NONE: return SAI_SWITCH_RESTART_TYPE_NONE; - - case lemming::dataplane::sai::SWITCH_RESTART_TYPE_PLANNED: return SAI_SWITCH_RESTART_TYPE_PLANNED; - - case lemming::dataplane::sai::SWITCH_RESTART_TYPE_ANY: return SAI_SWITCH_RESTART_TYPE_ANY; - - default: return SAI_SWITCH_RESTART_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_restart_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_restart_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_restart_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_restart_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchStat convert_sai_switch_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE: return lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_END: return lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_END; - - case SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE: return lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_END: return lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_END; - - case SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE: return lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE; - - case SAI_SWITCH_STAT_REACHABILITY_DROP: return lemming::dataplane::sai::SWITCH_STAT_REACHABILITY_DROP; - - case SAI_SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL: return lemming::dataplane::sai::SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL; - - case SAI_SWITCH_STAT_GLOBAL_DROP: return lemming::dataplane::sai::SWITCH_STAT_GLOBAL_DROP; - - case SAI_SWITCH_STAT_PACKET_INTEGRITY_DROP: return lemming::dataplane::sai::SWITCH_STAT_PACKET_INTEGRITY_DROP; - - case SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END: return lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END; - - default: return lemming::dataplane::sai::SWITCH_STAT_UNSPECIFIED; - } -} -sai_switch_stat_t convert_sai_switch_stat_t_to_sai(lemming::dataplane::sai::SwitchStat val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_BASE: return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return SAI_SWITCH_STAT_IN_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_IN_DROP_REASON_RANGE_END: return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_END; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE: return SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_BASE; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_1_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_2_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_3_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_4_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_5_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_6_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS: return SAI_SWITCH_STAT_OUT_CONFIGURED_DROP_REASONS_7_DROPPED_PKTS; - - case lemming::dataplane::sai::SWITCH_STAT_OUT_DROP_REASON_RANGE_END: return SAI_SWITCH_STAT_OUT_DROP_REASON_RANGE_END; - - case lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE: return SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_BASE; - - case lemming::dataplane::sai::SWITCH_STAT_REACHABILITY_DROP: return SAI_SWITCH_STAT_REACHABILITY_DROP; - - case lemming::dataplane::sai::SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL: return SAI_SWITCH_STAT_HIGHEST_QUEUE_CONGESTION_LEVEL; - - case lemming::dataplane::sai::SWITCH_STAT_GLOBAL_DROP: return SAI_SWITCH_STAT_GLOBAL_DROP; - - case lemming::dataplane::sai::SWITCH_STAT_PACKET_INTEGRITY_DROP: return SAI_SWITCH_STAT_PACKET_INTEGRITY_DROP; - - case lemming::dataplane::sai::SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END: return SAI_SWITCH_STAT_FABRIC_DROP_REASON_RANGE_END; - - default: return SAI_SWITCH_STAT_IN_DROP_REASON_RANGE_BASE; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchSwitchingMode convert_sai_switch_switching_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH: return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_CUT_THROUGH; - - case SAI_SWITCH_SWITCHING_MODE_STORE_AND_FORWARD: return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_STORE_AND_FORWARD; - - default: return lemming::dataplane::sai::SWITCH_SWITCHING_MODE_UNSPECIFIED; - } -} -sai_switch_switching_mode_t convert_sai_switch_switching_mode_t_to_sai(lemming::dataplane::sai::SwitchSwitchingMode val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_SWITCHING_MODE_CUT_THROUGH: return SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH; - - case lemming::dataplane::sai::SWITCH_SWITCHING_MODE_STORE_AND_FORWARD: return SAI_SWITCH_SWITCHING_MODE_STORE_AND_FORWARD; - - default: return SAI_SWITCH_SWITCHING_MODE_CUT_THROUGH; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_switching_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_switching_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_switching_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_switching_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchTunnelAttr convert_sai_switch_tunnel_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; - - case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE; - - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS; - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE; - - case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_MAPPERS; - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE; - - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT; - - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; - - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; - - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; - - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; - - default: return lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_UNSPECIFIED; - } -} -sai_switch_tunnel_attr_t convert_sai_switch_tunnel_attr_t_to_sai(lemming::dataplane::sai::SwitchTunnelAttr val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: return SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: return SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: return SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: return SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: return SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: return SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: return SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: return SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; - - case lemming::dataplane::sai::SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: return SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; - - default: return SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_tunnel_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_tunnel_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_tunnel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_tunnel_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SwitchType convert_sai_switch_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SWITCH_TYPE_NPU: return lemming::dataplane::sai::SWITCH_TYPE_NPU; - - case SAI_SWITCH_TYPE_PHY: return lemming::dataplane::sai::SWITCH_TYPE_PHY; - - case SAI_SWITCH_TYPE_VOQ: return lemming::dataplane::sai::SWITCH_TYPE_VOQ; - - case SAI_SWITCH_TYPE_FABRIC: return lemming::dataplane::sai::SWITCH_TYPE_FABRIC; - - case SAI_SWITCH_TYPE_POE: return lemming::dataplane::sai::SWITCH_TYPE_POE; - - default: return lemming::dataplane::sai::SWITCH_TYPE_UNSPECIFIED; - } -} -sai_switch_type_t convert_sai_switch_type_t_to_sai(lemming::dataplane::sai::SwitchType val) { - switch (val) { - - case lemming::dataplane::sai::SWITCH_TYPE_NPU: return SAI_SWITCH_TYPE_NPU; - - case lemming::dataplane::sai::SWITCH_TYPE_PHY: return SAI_SWITCH_TYPE_PHY; - - case lemming::dataplane::sai::SWITCH_TYPE_VOQ: return SAI_SWITCH_TYPE_VOQ; - - case lemming::dataplane::sai::SWITCH_TYPE_FABRIC: return SAI_SWITCH_TYPE_FABRIC; - - case lemming::dataplane::sai::SWITCH_TYPE_POE: return SAI_SWITCH_TYPE_POE; - - default: return SAI_SWITCH_TYPE_NPU; - } -} - -google::protobuf::RepeatedField convert_list_sai_switch_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_switch_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_switch_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_switch_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SystemPortAttr convert_sai_system_port_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SYSTEM_PORT_ATTR_TYPE: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_TYPE; - - case SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS; - - case SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_VOQ_LIST; - - case SAI_SYSTEM_PORT_ATTR_PORT: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_PORT; - - case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_ADMIN_STATE; - - case SAI_SYSTEM_PORT_ATTR_CONFIG_INFO: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_CONFIG_INFO; - - case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; - - default: return lemming::dataplane::sai::SYSTEM_PORT_ATTR_UNSPECIFIED; - } -} -sai_system_port_attr_t convert_sai_system_port_attr_t_to_sai(lemming::dataplane::sai::SystemPortAttr val) { - switch (val) { - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_TYPE: return SAI_SYSTEM_PORT_ATTR_TYPE; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: return SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_VOQ_LIST: return SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_PORT: return SAI_SYSTEM_PORT_ATTR_PORT; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_ADMIN_STATE: return SAI_SYSTEM_PORT_ATTR_ADMIN_STATE; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_CONFIG_INFO: return SAI_SYSTEM_PORT_ATTR_CONFIG_INFO; - - case lemming::dataplane::sai::SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: return SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP; - - default: return SAI_SYSTEM_PORT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_system_port_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_system_port_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_system_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_system_port_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::SystemPortType convert_sai_system_port_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_SYSTEM_PORT_TYPE_LOCAL: return lemming::dataplane::sai::SYSTEM_PORT_TYPE_LOCAL; - - case SAI_SYSTEM_PORT_TYPE_REMOTE: return lemming::dataplane::sai::SYSTEM_PORT_TYPE_REMOTE; - - default: return lemming::dataplane::sai::SYSTEM_PORT_TYPE_UNSPECIFIED; - } -} -sai_system_port_type_t convert_sai_system_port_type_t_to_sai(lemming::dataplane::sai::SystemPortType val) { - switch (val) { - - case lemming::dataplane::sai::SYSTEM_PORT_TYPE_LOCAL: return SAI_SYSTEM_PORT_TYPE_LOCAL; - - case lemming::dataplane::sai::SYSTEM_PORT_TYPE_REMOTE: return SAI_SYSTEM_PORT_TYPE_REMOTE; - - default: return SAI_SYSTEM_PORT_TYPE_LOCAL; - } -} - -google::protobuf::RepeatedField convert_list_sai_system_port_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_system_port_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_system_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_system_port_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapClassificationEntryAction convert_sai_table_bitmap_classification_entry_action_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION; - - default: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_UNSPECIFIED; - } -} -sai_table_bitmap_classification_entry_action_t convert_sai_table_bitmap_classification_entry_action_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryAction val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_NOACTION; - - default: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ACTION_SET_METADATA; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_action_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_classification_entry_action_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_classification_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_classification_entry_action_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapClassificationEntryAttr convert_sai_table_bitmap_classification_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY; - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT; - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA; - - default: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_table_bitmap_classification_entry_attr_t convert_sai_table_bitmap_classification_entry_attr_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ROUTER_INTERFACE_KEY; - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IS_DEFAULT; - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_IN_RIF_METADATA; - - default: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_ATTR_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_classification_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_classification_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_classification_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapClassificationEntryStat convert_sai_table_bitmap_classification_entry_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; - - case SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS; - - default: return lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_UNSPECIFIED; - } -} -sai_table_bitmap_classification_entry_stat_t convert_sai_table_bitmap_classification_entry_stat_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryStat val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; - - case lemming::dataplane::sai::TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_OCTETS; - - default: return SAI_TABLE_BITMAP_CLASSIFICATION_ENTRY_STAT_HIT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_classification_entry_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_classification_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_classification_entry_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapRouterEntryAction convert_sai_table_bitmap_router_entry_action_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION; - - default: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_UNSPECIFIED; - } -} -sai_table_bitmap_router_entry_action_t convert_sai_table_bitmap_router_entry_action_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryAction val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_LOCAL; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_CPU; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_DROP; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_NOACTION; - - default: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ACTION_TO_NEXTHOP; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_action_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_router_entry_action_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_router_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_router_entry_action_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapRouterEntryAttr convert_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID; - - default: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_table_bitmap_router_entry_attr_t convert_sai_table_bitmap_router_entry_attr_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_PRIORITY; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_KEY; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_IN_RIF_METADATA_MASK; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_DST_IP_KEY; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TUNNEL_INDEX; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_NEXT_HOP; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ROUTER_INTERFACE; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_TRAP_ID; - - default: return SAI_TABLE_BITMAP_ROUTER_ENTRY_ATTR_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_router_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_router_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_router_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableBitmapRouterEntryStat convert_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; - - case SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS; - - default: return lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_UNSPECIFIED; - } -} -sai_table_bitmap_router_entry_stat_t convert_sai_table_bitmap_router_entry_stat_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryStat val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS: return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; - - case lemming::dataplane::sai::TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS: return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_OCTETS; - - default: return SAI_TABLE_BITMAP_ROUTER_ENTRY_STAT_HIT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_bitmap_router_entry_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_bitmap_router_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_bitmap_router_entry_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableMetaTunnelEntryAction convert_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; - - case SAI_TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION; - - default: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_UNSPECIFIED; - } -} -sai_table_meta_tunnel_entry_action_t convert_sai_table_meta_tunnel_entry_action_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryAction val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP: return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION: return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_NOACTION; - - default: return SAI_TABLE_META_TUNNEL_ENTRY_ACTION_TUNNEL_ENCAP; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_meta_tunnel_entry_action_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_meta_tunnel_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_meta_tunnel_entry_action_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableMetaTunnelEntryAttr convert_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY; - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT; - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID; - - case SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP; - - default: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_table_meta_tunnel_entry_attr_t convert_sai_table_meta_tunnel_entry_attr_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_ACTION: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_METADATA_KEY; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_IS_DEFAULT; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_TUNNEL_ID; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_UNDERLAY_DIP; - - default: return SAI_TABLE_META_TUNNEL_ENTRY_ATTR_ACTION; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_meta_tunnel_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_meta_tunnel_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_meta_tunnel_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TableMetaTunnelEntryStat convert_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; - - case SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS; - - default: return lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_UNSPECIFIED; - } -} -sai_table_meta_tunnel_entry_stat_t convert_sai_table_meta_tunnel_entry_stat_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryStat val) { - switch (val) { - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS: return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; - - case lemming::dataplane::sai::TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS: return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_OCTETS; - - default: return SAI_TABLE_META_TUNNEL_ENTRY_STAT_HIT_PACKETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_table_meta_tunnel_entry_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_table_meta_tunnel_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_table_meta_tunnel_entry_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamAttr convert_sai_tam_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: return lemming::dataplane::sai::TAM_ATTR_TELEMETRY_OBJECTS_LIST; - - case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: return lemming::dataplane::sai::TAM_ATTR_EVENT_OBJECTS_LIST; - - case SAI_TAM_ATTR_INT_OBJECTS_LIST: return lemming::dataplane::sai::TAM_ATTR_INT_OBJECTS_LIST; - - case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: return lemming::dataplane::sai::TAM_ATTR_TAM_BIND_POINT_TYPE_LIST; - - default: return lemming::dataplane::sai::TAM_ATTR_UNSPECIFIED; - } -} -sai_tam_attr_t convert_sai_tam_attr_t_to_sai(lemming::dataplane::sai::TamAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_ATTR_TELEMETRY_OBJECTS_LIST: return SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST; - - case lemming::dataplane::sai::TAM_ATTR_EVENT_OBJECTS_LIST: return SAI_TAM_ATTR_EVENT_OBJECTS_LIST; - - case lemming::dataplane::sai::TAM_ATTR_INT_OBJECTS_LIST: return SAI_TAM_ATTR_INT_OBJECTS_LIST; - - case lemming::dataplane::sai::TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: return SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST; - - default: return SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamBindPointType convert_sai_tam_bind_point_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_BIND_POINT_TYPE_QUEUE: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_QUEUE; - - case SAI_TAM_BIND_POINT_TYPE_PORT: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_PORT; - - case SAI_TAM_BIND_POINT_TYPE_LAG: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_LAG; - - case SAI_TAM_BIND_POINT_TYPE_VLAN: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_VLAN; - - case SAI_TAM_BIND_POINT_TYPE_SWITCH: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_SWITCH; - - case SAI_TAM_BIND_POINT_TYPE_IPG: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_IPG; - - case SAI_TAM_BIND_POINT_TYPE_BSP: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_BSP; - - default: return lemming::dataplane::sai::TAM_BIND_POINT_TYPE_UNSPECIFIED; - } -} -sai_tam_bind_point_type_t convert_sai_tam_bind_point_type_t_to_sai(lemming::dataplane::sai::TamBindPointType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_QUEUE: return SAI_TAM_BIND_POINT_TYPE_QUEUE; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_PORT: return SAI_TAM_BIND_POINT_TYPE_PORT; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_LAG: return SAI_TAM_BIND_POINT_TYPE_LAG; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_VLAN: return SAI_TAM_BIND_POINT_TYPE_VLAN; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_SWITCH: return SAI_TAM_BIND_POINT_TYPE_SWITCH; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_IPG: return SAI_TAM_BIND_POINT_TYPE_IPG; - - case lemming::dataplane::sai::TAM_BIND_POINT_TYPE_BSP: return SAI_TAM_BIND_POINT_TYPE_BSP; - - default: return SAI_TAM_BIND_POINT_TYPE_QUEUE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_bind_point_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_bind_point_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_bind_point_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_bind_point_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamCollectorAttr convert_sai_tam_collector_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_COLLECTOR_ATTR_SRC_IP: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_SRC_IP; - - case SAI_TAM_COLLECTOR_ATTR_DST_IP: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DST_IP; - - case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_LOCALHOST; - - case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID; - - case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRUNCATE_SIZE; - - case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRANSPORT; - - case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DSCP_VALUE; - - case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_HOSTIF_TRAP; - - default: return lemming::dataplane::sai::TAM_COLLECTOR_ATTR_UNSPECIFIED; - } -} -sai_tam_collector_attr_t convert_sai_tam_collector_attr_t_to_sai(lemming::dataplane::sai::TamCollectorAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_SRC_IP: return SAI_TAM_COLLECTOR_ATTR_SRC_IP; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DST_IP: return SAI_TAM_COLLECTOR_ATTR_DST_IP; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_LOCALHOST: return SAI_TAM_COLLECTOR_ATTR_LOCALHOST; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: return SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: return SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_TRANSPORT: return SAI_TAM_COLLECTOR_ATTR_TRANSPORT; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_DSCP_VALUE: return SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE; - - case lemming::dataplane::sai::TAM_COLLECTOR_ATTR_HOSTIF_TRAP: return SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP; - - default: return SAI_TAM_COLLECTOR_ATTR_SRC_IP; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_collector_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_collector_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_collector_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_collector_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamCounterSubscriptionAttr convert_sai_tam_counter_subscription_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID; - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID; - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL; - - default: return lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_UNSPECIFIED; - } -} -sai_tam_counter_subscription_attr_t convert_sai_tam_counter_subscription_attr_t_to_sai(lemming::dataplane::sai::TamCounterSubscriptionAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; - - case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID; - - case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID; - - case lemming::dataplane::sai::TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL; - - default: return SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_counter_subscription_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_counter_subscription_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_counter_subscription_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_counter_subscription_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamEventActionAttr convert_sai_tam_event_action_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_REPORT_TYPE; - - case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE; - - default: return lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_UNSPECIFIED; - } -} -sai_tam_event_action_attr_t convert_sai_tam_event_action_attr_t_to_sai(lemming::dataplane::sai::TamEventActionAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_REPORT_TYPE: return SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE; - - case lemming::dataplane::sai::TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: return SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE; - - default: return SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_event_action_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_event_action_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_event_action_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_event_action_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamEventAttr convert_sai_tam_event_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_EVENT_ATTR_TYPE: return lemming::dataplane::sai::TAM_EVENT_ATTR_TYPE; - - case SAI_TAM_EVENT_ATTR_ACTION_LIST: return lemming::dataplane::sai::TAM_EVENT_ATTR_ACTION_LIST; - - case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: return lemming::dataplane::sai::TAM_EVENT_ATTR_COLLECTOR_LIST; - - case SAI_TAM_EVENT_ATTR_THRESHOLD: return lemming::dataplane::sai::TAM_EVENT_ATTR_THRESHOLD; - - case SAI_TAM_EVENT_ATTR_DSCP_VALUE: return lemming::dataplane::sai::TAM_EVENT_ATTR_DSCP_VALUE; - - default: return lemming::dataplane::sai::TAM_EVENT_ATTR_UNSPECIFIED; - } -} -sai_tam_event_attr_t convert_sai_tam_event_attr_t_to_sai(lemming::dataplane::sai::TamEventAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_EVENT_ATTR_TYPE: return SAI_TAM_EVENT_ATTR_TYPE; - - case lemming::dataplane::sai::TAM_EVENT_ATTR_ACTION_LIST: return SAI_TAM_EVENT_ATTR_ACTION_LIST; - - case lemming::dataplane::sai::TAM_EVENT_ATTR_COLLECTOR_LIST: return SAI_TAM_EVENT_ATTR_COLLECTOR_LIST; - - case lemming::dataplane::sai::TAM_EVENT_ATTR_THRESHOLD: return SAI_TAM_EVENT_ATTR_THRESHOLD; - - case lemming::dataplane::sai::TAM_EVENT_ATTR_DSCP_VALUE: return SAI_TAM_EVENT_ATTR_DSCP_VALUE; - - default: return SAI_TAM_EVENT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_event_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_event_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_event_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_event_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamEventThresholdAttr convert_sai_tam_event_threshold_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; - - case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK; - - case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LATENCY; - - case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_RATE; - - case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE; - - case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNIT; - - default: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNSPECIFIED; - } -} -sai_tam_event_threshold_attr_t convert_sai_tam_event_threshold_attr_t_to_sai(lemming::dataplane::sai::TamEventThresholdAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: return SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: return SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_LATENCY: return SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_RATE: return SAI_TAM_EVENT_THRESHOLD_ATTR_RATE; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: return SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_ATTR_UNIT: return SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT; - - default: return SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_event_threshold_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_event_threshold_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_event_threshold_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_event_threshold_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamEventThresholdUnit convert_sai_tam_event_threshold_unit_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_NANOSEC; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_USEC: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_USEC; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_MSEC: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_MSEC; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_PERCENT: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PERCENT; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_BYTES: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_BYTES; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_PACKETS: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PACKETS; - - case SAI_TAM_EVENT_THRESHOLD_UNIT_CELLS: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_CELLS; - - default: return lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_UNSPECIFIED; - } -} -sai_tam_event_threshold_unit_t convert_sai_tam_event_threshold_unit_t_to_sai(lemming::dataplane::sai::TamEventThresholdUnit val) { - switch (val) { - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_NANOSEC: return SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_USEC: return SAI_TAM_EVENT_THRESHOLD_UNIT_USEC; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_MSEC: return SAI_TAM_EVENT_THRESHOLD_UNIT_MSEC; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PERCENT: return SAI_TAM_EVENT_THRESHOLD_UNIT_PERCENT; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_BYTES: return SAI_TAM_EVENT_THRESHOLD_UNIT_BYTES; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_PACKETS: return SAI_TAM_EVENT_THRESHOLD_UNIT_PACKETS; - - case lemming::dataplane::sai::TAM_EVENT_THRESHOLD_UNIT_CELLS: return SAI_TAM_EVENT_THRESHOLD_UNIT_CELLS; - - default: return SAI_TAM_EVENT_THRESHOLD_UNIT_NANOSEC; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_event_threshold_unit_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_event_threshold_unit_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_event_threshold_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_event_threshold_unit_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamEventType convert_sai_tam_event_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_EVENT_TYPE_FLOW_STATE: return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_STATE; - - case SAI_TAM_EVENT_TYPE_FLOW_WATCHLIST: return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_WATCHLIST; - - case SAI_TAM_EVENT_TYPE_FLOW_TCPFLAG: return lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_TCPFLAG; - - case SAI_TAM_EVENT_TYPE_QUEUE_THRESHOLD: return lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_THRESHOLD; - - case SAI_TAM_EVENT_TYPE_QUEUE_TAIL_DROP: return lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_TAIL_DROP; - - case SAI_TAM_EVENT_TYPE_PACKET_DROP: return lemming::dataplane::sai::TAM_EVENT_TYPE_PACKET_DROP; - - case SAI_TAM_EVENT_TYPE_RESOURCE_UTILIZATION: return lemming::dataplane::sai::TAM_EVENT_TYPE_RESOURCE_UTILIZATION; - - case SAI_TAM_EVENT_TYPE_IPG_SHARED: return lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_SHARED; - - case SAI_TAM_EVENT_TYPE_IPG_XOFF_ROOM: return lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_XOFF_ROOM; - - case SAI_TAM_EVENT_TYPE_BSP: return lemming::dataplane::sai::TAM_EVENT_TYPE_BSP; - - default: return lemming::dataplane::sai::TAM_EVENT_TYPE_UNSPECIFIED; - } -} -sai_tam_event_type_t convert_sai_tam_event_type_t_to_sai(lemming::dataplane::sai::TamEventType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_STATE: return SAI_TAM_EVENT_TYPE_FLOW_STATE; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_WATCHLIST: return SAI_TAM_EVENT_TYPE_FLOW_WATCHLIST; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_FLOW_TCPFLAG: return SAI_TAM_EVENT_TYPE_FLOW_TCPFLAG; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_THRESHOLD: return SAI_TAM_EVENT_TYPE_QUEUE_THRESHOLD; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_QUEUE_TAIL_DROP: return SAI_TAM_EVENT_TYPE_QUEUE_TAIL_DROP; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_PACKET_DROP: return SAI_TAM_EVENT_TYPE_PACKET_DROP; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_RESOURCE_UTILIZATION: return SAI_TAM_EVENT_TYPE_RESOURCE_UTILIZATION; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_SHARED: return SAI_TAM_EVENT_TYPE_IPG_SHARED; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_IPG_XOFF_ROOM: return SAI_TAM_EVENT_TYPE_IPG_XOFF_ROOM; - - case lemming::dataplane::sai::TAM_EVENT_TYPE_BSP: return SAI_TAM_EVENT_TYPE_BSP; - - default: return SAI_TAM_EVENT_TYPE_FLOW_STATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_event_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_event_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_event_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamIntAttr convert_sai_tam_int_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_INT_ATTR_TYPE: return lemming::dataplane::sai::TAM_INT_ATTR_TYPE; - - case SAI_TAM_INT_ATTR_DEVICE_ID: return lemming::dataplane::sai::TAM_INT_ATTR_DEVICE_ID; - - case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: return lemming::dataplane::sai::TAM_INT_ATTR_IOAM_TRACE_TYPE; - - case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_TYPE; - - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB1; - - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB2; - - case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE; - - case SAI_TAM_INT_ATTR_INLINE: return lemming::dataplane::sai::TAM_INT_ATTR_INLINE; - - case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: return lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL; - - case SAI_TAM_INT_ATTR_TRACE_VECTOR: return lemming::dataplane::sai::TAM_INT_ATTR_TRACE_VECTOR; - - case SAI_TAM_INT_ATTR_ACTION_VECTOR: return lemming::dataplane::sai::TAM_INT_ATTR_ACTION_VECTOR; - - case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: return lemming::dataplane::sai::TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP; - - case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: return lemming::dataplane::sai::TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE; - - case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: return lemming::dataplane::sai::TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE; - - case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: return lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ALL_PACKETS; - - case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: return lemming::dataplane::sai::TAM_INT_ATTR_FLOW_LIVENESS_PERIOD; - - case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: return lemming::dataplane::sai::TAM_INT_ATTR_LATENCY_SENSITIVITY; - - case SAI_TAM_INT_ATTR_ACL_GROUP: return lemming::dataplane::sai::TAM_INT_ATTR_ACL_GROUP; - - case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: return lemming::dataplane::sai::TAM_INT_ATTR_MAX_HOP_COUNT; - - case SAI_TAM_INT_ATTR_MAX_LENGTH: return lemming::dataplane::sai::TAM_INT_ATTR_MAX_LENGTH; - - case SAI_TAM_INT_ATTR_NAME_SPACE_ID: return lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID; - - case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: return lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL; - - case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: return lemming::dataplane::sai::TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; - - case SAI_TAM_INT_ATTR_COLLECTOR_LIST: return lemming::dataplane::sai::TAM_INT_ATTR_COLLECTOR_LIST; - - case SAI_TAM_INT_ATTR_MATH_FUNC: return lemming::dataplane::sai::TAM_INT_ATTR_MATH_FUNC; - - case SAI_TAM_INT_ATTR_REPORT_ID: return lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ID; - - default: return lemming::dataplane::sai::TAM_INT_ATTR_UNSPECIFIED; - } -} -sai_tam_int_attr_t convert_sai_tam_int_attr_t_to_sai(lemming::dataplane::sai::TamIntAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_INT_ATTR_TYPE: return SAI_TAM_INT_ATTR_TYPE; - - case lemming::dataplane::sai::TAM_INT_ATTR_DEVICE_ID: return SAI_TAM_INT_ATTR_DEVICE_ID; - - case lemming::dataplane::sai::TAM_INT_ATTR_IOAM_TRACE_TYPE: return SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE; - - case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_TYPE: return SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE; - - case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB1: return SAI_TAM_INT_ATTR_INT_PRESENCE_PB1; - - case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_PB2: return SAI_TAM_INT_ATTR_INT_PRESENCE_PB2; - - case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: return SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE; - - case lemming::dataplane::sai::TAM_INT_ATTR_INLINE: return SAI_TAM_INT_ATTR_INLINE; - - case lemming::dataplane::sai::TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: return SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL; - - case lemming::dataplane::sai::TAM_INT_ATTR_TRACE_VECTOR: return SAI_TAM_INT_ATTR_TRACE_VECTOR; - - case lemming::dataplane::sai::TAM_INT_ATTR_ACTION_VECTOR: return SAI_TAM_INT_ATTR_ACTION_VECTOR; - - case lemming::dataplane::sai::TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: return SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP; - - case lemming::dataplane::sai::TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: return SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE; - - case lemming::dataplane::sai::TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: return SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE; - - case lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ALL_PACKETS: return SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS; - - case lemming::dataplane::sai::TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: return SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD; - - case lemming::dataplane::sai::TAM_INT_ATTR_LATENCY_SENSITIVITY: return SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY; - - case lemming::dataplane::sai::TAM_INT_ATTR_ACL_GROUP: return SAI_TAM_INT_ATTR_ACL_GROUP; - - case lemming::dataplane::sai::TAM_INT_ATTR_MAX_HOP_COUNT: return SAI_TAM_INT_ATTR_MAX_HOP_COUNT; - - case lemming::dataplane::sai::TAM_INT_ATTR_MAX_LENGTH: return SAI_TAM_INT_ATTR_MAX_LENGTH; - - case lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID: return SAI_TAM_INT_ATTR_NAME_SPACE_ID; - - case lemming::dataplane::sai::TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: return SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL; - - case lemming::dataplane::sai::TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: return SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE; - - case lemming::dataplane::sai::TAM_INT_ATTR_COLLECTOR_LIST: return SAI_TAM_INT_ATTR_COLLECTOR_LIST; - - case lemming::dataplane::sai::TAM_INT_ATTR_MATH_FUNC: return SAI_TAM_INT_ATTR_MATH_FUNC; - - case lemming::dataplane::sai::TAM_INT_ATTR_REPORT_ID: return SAI_TAM_INT_ATTR_REPORT_ID; - - default: return SAI_TAM_INT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_int_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_int_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_int_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_int_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamIntPresenceType convert_sai_tam_int_presence_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED: return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNDEFINED; - - case SAI_TAM_INT_PRESENCE_TYPE_PB: return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_PB; - - case SAI_TAM_INT_PRESENCE_TYPE_L3_PROTOCOL: return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_L3_PROTOCOL; - - case SAI_TAM_INT_PRESENCE_TYPE_DSCP: return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_DSCP; - - default: return lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNSPECIFIED; - } -} -sai_tam_int_presence_type_t convert_sai_tam_int_presence_type_t_to_sai(lemming::dataplane::sai::TamIntPresenceType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_UNDEFINED: return SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED; - - case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_PB: return SAI_TAM_INT_PRESENCE_TYPE_PB; - - case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_L3_PROTOCOL: return SAI_TAM_INT_PRESENCE_TYPE_L3_PROTOCOL; - - case lemming::dataplane::sai::TAM_INT_PRESENCE_TYPE_DSCP: return SAI_TAM_INT_PRESENCE_TYPE_DSCP; - - default: return SAI_TAM_INT_PRESENCE_TYPE_UNDEFINED; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_int_presence_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_int_presence_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_int_presence_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_int_presence_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamIntType convert_sai_tam_int_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_INT_TYPE_IOAM: return lemming::dataplane::sai::TAM_INT_TYPE_IOAM; - - case SAI_TAM_INT_TYPE_IFA1: return lemming::dataplane::sai::TAM_INT_TYPE_IFA1; - - case SAI_TAM_INT_TYPE_IFA2: return lemming::dataplane::sai::TAM_INT_TYPE_IFA2; - - case SAI_TAM_INT_TYPE_P4_INT_1: return lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_1; - - case SAI_TAM_INT_TYPE_P4_INT_2: return lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_2; - - case SAI_TAM_INT_TYPE_DIRECT_EXPORT: return lemming::dataplane::sai::TAM_INT_TYPE_DIRECT_EXPORT; - - case SAI_TAM_INT_TYPE_IFA1_TAILSTAMP: return lemming::dataplane::sai::TAM_INT_TYPE_IFA1_TAILSTAMP; - - case SAI_TAM_INT_TYPE_PATH_TRACING: return lemming::dataplane::sai::TAM_INT_TYPE_PATH_TRACING; - - default: return lemming::dataplane::sai::TAM_INT_TYPE_UNSPECIFIED; - } -} -sai_tam_int_type_t convert_sai_tam_int_type_t_to_sai(lemming::dataplane::sai::TamIntType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_INT_TYPE_IOAM: return SAI_TAM_INT_TYPE_IOAM; - - case lemming::dataplane::sai::TAM_INT_TYPE_IFA1: return SAI_TAM_INT_TYPE_IFA1; - - case lemming::dataplane::sai::TAM_INT_TYPE_IFA2: return SAI_TAM_INT_TYPE_IFA2; - - case lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_1: return SAI_TAM_INT_TYPE_P4_INT_1; - - case lemming::dataplane::sai::TAM_INT_TYPE_P4_INT_2: return SAI_TAM_INT_TYPE_P4_INT_2; - - case lemming::dataplane::sai::TAM_INT_TYPE_DIRECT_EXPORT: return SAI_TAM_INT_TYPE_DIRECT_EXPORT; - - case lemming::dataplane::sai::TAM_INT_TYPE_IFA1_TAILSTAMP: return SAI_TAM_INT_TYPE_IFA1_TAILSTAMP; - - case lemming::dataplane::sai::TAM_INT_TYPE_PATH_TRACING: return SAI_TAM_INT_TYPE_PATH_TRACING; - - default: return SAI_TAM_INT_TYPE_IOAM; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_int_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_int_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_int_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_int_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamMathFuncAttr convert_sai_tam_math_func_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: return lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; - - default: return lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_UNSPECIFIED; - } -} -sai_tam_math_func_attr_t convert_sai_tam_math_func_attr_t_to_sai(lemming::dataplane::sai::TamMathFuncAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: return SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; - - default: return SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_math_func_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_math_func_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_math_func_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_math_func_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamReportAttr convert_sai_tam_report_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_REPORT_ATTR_TYPE: return lemming::dataplane::sai::TAM_REPORT_ATTR_TYPE; - - case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: return lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS; - - case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: return lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY; - - case SAI_TAM_REPORT_ATTR_QUOTA: return lemming::dataplane::sai::TAM_REPORT_ATTR_QUOTA; - - case SAI_TAM_REPORT_ATTR_REPORT_MODE: return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_MODE; - - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL; - - case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: return lemming::dataplane::sai::TAM_REPORT_ATTR_ENTERPRISE_NUMBER; - - case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: return lemming::dataplane::sai::TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL; - - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: return lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT; - - default: return lemming::dataplane::sai::TAM_REPORT_ATTR_UNSPECIFIED; - } -} -sai_tam_report_attr_t convert_sai_tam_report_attr_t_to_sai(lemming::dataplane::sai::TamReportAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_REPORT_ATTR_TYPE: return SAI_TAM_REPORT_ATTR_TYPE; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: return SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: return SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_QUOTA: return SAI_TAM_REPORT_ATTR_QUOTA; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_MODE: return SAI_TAM_REPORT_ATTR_REPORT_MODE; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL: return SAI_TAM_REPORT_ATTR_REPORT_INTERVAL; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_ENTERPRISE_NUMBER: return SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: return SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL; - - case lemming::dataplane::sai::TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: return SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT; - - default: return SAI_TAM_REPORT_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_report_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_report_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_report_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_report_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamReportIntervalUnit convert_sai_tam_report_interval_unit_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC: return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_NANOSEC; - - case SAI_TAM_REPORT_INTERVAL_UNIT_USEC: return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_USEC; - - case SAI_TAM_REPORT_INTERVAL_UNIT_MSEC: return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_MSEC; - - default: return lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_UNSPECIFIED; - } -} -sai_tam_report_interval_unit_t convert_sai_tam_report_interval_unit_t_to_sai(lemming::dataplane::sai::TamReportIntervalUnit val) { - switch (val) { - - case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_NANOSEC: return SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC; - - case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_USEC: return SAI_TAM_REPORT_INTERVAL_UNIT_USEC; - - case lemming::dataplane::sai::TAM_REPORT_INTERVAL_UNIT_MSEC: return SAI_TAM_REPORT_INTERVAL_UNIT_MSEC; - - default: return SAI_TAM_REPORT_INTERVAL_UNIT_NANOSEC; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_report_interval_unit_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_report_interval_unit_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_report_interval_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_report_interval_unit_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamReportMode convert_sai_tam_report_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_REPORT_MODE_ALL: return lemming::dataplane::sai::TAM_REPORT_MODE_ALL; - - case SAI_TAM_REPORT_MODE_BULK: return lemming::dataplane::sai::TAM_REPORT_MODE_BULK; - - default: return lemming::dataplane::sai::TAM_REPORT_MODE_UNSPECIFIED; - } -} -sai_tam_report_mode_t convert_sai_tam_report_mode_t_to_sai(lemming::dataplane::sai::TamReportMode val) { - switch (val) { - - case lemming::dataplane::sai::TAM_REPORT_MODE_ALL: return SAI_TAM_REPORT_MODE_ALL; - - case lemming::dataplane::sai::TAM_REPORT_MODE_BULK: return SAI_TAM_REPORT_MODE_BULK; - - default: return SAI_TAM_REPORT_MODE_ALL; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_report_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_report_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_report_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_report_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamReportType convert_sai_tam_report_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_REPORT_TYPE_SFLOW: return lemming::dataplane::sai::TAM_REPORT_TYPE_SFLOW; - - case SAI_TAM_REPORT_TYPE_IPFIX: return lemming::dataplane::sai::TAM_REPORT_TYPE_IPFIX; - - case SAI_TAM_REPORT_TYPE_PROTO: return lemming::dataplane::sai::TAM_REPORT_TYPE_PROTO; - - case SAI_TAM_REPORT_TYPE_THRIFT: return lemming::dataplane::sai::TAM_REPORT_TYPE_THRIFT; - - case SAI_TAM_REPORT_TYPE_JSON: return lemming::dataplane::sai::TAM_REPORT_TYPE_JSON; - - case SAI_TAM_REPORT_TYPE_P4_EXTN: return lemming::dataplane::sai::TAM_REPORT_TYPE_P4_EXTN; - - case SAI_TAM_REPORT_TYPE_HISTOGRAM: return lemming::dataplane::sai::TAM_REPORT_TYPE_HISTOGRAM; - - case SAI_TAM_REPORT_TYPE_VENDOR_EXTN: return lemming::dataplane::sai::TAM_REPORT_TYPE_VENDOR_EXTN; - - case SAI_TAM_REPORT_TYPE_GENETLINK: return lemming::dataplane::sai::TAM_REPORT_TYPE_GENETLINK; - - case SAI_TAM_REPORT_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::TAM_REPORT_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::TAM_REPORT_TYPE_UNSPECIFIED; - } -} -sai_tam_report_type_t convert_sai_tam_report_type_t_to_sai(lemming::dataplane::sai::TamReportType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_REPORT_TYPE_SFLOW: return SAI_TAM_REPORT_TYPE_SFLOW; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_IPFIX: return SAI_TAM_REPORT_TYPE_IPFIX; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_PROTO: return SAI_TAM_REPORT_TYPE_PROTO; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_THRIFT: return SAI_TAM_REPORT_TYPE_THRIFT; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_JSON: return SAI_TAM_REPORT_TYPE_JSON; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_P4_EXTN: return SAI_TAM_REPORT_TYPE_P4_EXTN; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_HISTOGRAM: return SAI_TAM_REPORT_TYPE_HISTOGRAM; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_VENDOR_EXTN: return SAI_TAM_REPORT_TYPE_VENDOR_EXTN; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_GENETLINK: return SAI_TAM_REPORT_TYPE_GENETLINK; - - case lemming::dataplane::sai::TAM_REPORT_TYPE_CUSTOM_RANGE_BASE: return SAI_TAM_REPORT_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_TAM_REPORT_TYPE_SFLOW; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_report_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_report_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_report_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_report_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamReportingUnit convert_sai_tam_reporting_unit_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_REPORTING_UNIT_SEC: return lemming::dataplane::sai::TAM_REPORTING_UNIT_SEC; - - case SAI_TAM_REPORTING_UNIT_MINUTE: return lemming::dataplane::sai::TAM_REPORTING_UNIT_MINUTE; - - case SAI_TAM_REPORTING_UNIT_HOUR: return lemming::dataplane::sai::TAM_REPORTING_UNIT_HOUR; - - case SAI_TAM_REPORTING_UNIT_DAY: return lemming::dataplane::sai::TAM_REPORTING_UNIT_DAY; - - default: return lemming::dataplane::sai::TAM_REPORTING_UNIT_UNSPECIFIED; - } -} -sai_tam_reporting_unit_t convert_sai_tam_reporting_unit_t_to_sai(lemming::dataplane::sai::TamReportingUnit val) { - switch (val) { - - case lemming::dataplane::sai::TAM_REPORTING_UNIT_SEC: return SAI_TAM_REPORTING_UNIT_SEC; - - case lemming::dataplane::sai::TAM_REPORTING_UNIT_MINUTE: return SAI_TAM_REPORTING_UNIT_MINUTE; - - case lemming::dataplane::sai::TAM_REPORTING_UNIT_HOUR: return SAI_TAM_REPORTING_UNIT_HOUR; - - case lemming::dataplane::sai::TAM_REPORTING_UNIT_DAY: return SAI_TAM_REPORTING_UNIT_DAY; - - default: return SAI_TAM_REPORTING_UNIT_SEC; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_reporting_unit_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_reporting_unit_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_reporting_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_reporting_unit_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTelMathFuncType convert_sai_tam_tel_math_func_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TEL_MATH_FUNC_TYPE_NONE: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_NONE; - - case SAI_TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN; - - case SAI_TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN; - - case SAI_TAM_TEL_MATH_FUNC_TYPE_AVERAGE: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_AVERAGE; - - case SAI_TAM_TEL_MATH_FUNC_TYPE_MODE: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_MODE; - - case SAI_TAM_TEL_MATH_FUNC_TYPE_RATE: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_RATE; - - default: return lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_UNSPECIFIED; - } -} -sai_tam_tel_math_func_type_t convert_sai_tam_tel_math_func_type_t_to_sai(lemming::dataplane::sai::TamTelMathFuncType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_NONE: return SAI_TAM_TEL_MATH_FUNC_TYPE_NONE; - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN: return SAI_TAM_TEL_MATH_FUNC_TYPE_GEO_MEAN; - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN: return SAI_TAM_TEL_MATH_FUNC_TYPE_ALGEBRAIC_MEAN; - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_AVERAGE: return SAI_TAM_TEL_MATH_FUNC_TYPE_AVERAGE; - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_MODE: return SAI_TAM_TEL_MATH_FUNC_TYPE_MODE; - - case lemming::dataplane::sai::TAM_TEL_MATH_FUNC_TYPE_RATE: return SAI_TAM_TEL_MATH_FUNC_TYPE_RATE; - - default: return SAI_TAM_TEL_MATH_FUNC_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_tel_math_func_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_tel_math_func_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_tel_math_func_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_tel_math_func_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTelTypeAttr convert_sai_tam_tel_type_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; - - case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS; - - case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_FABRIC_Q; - - case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_NE_ENABLE; - - case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_DSCP_VALUE; - - case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_MATH_FUNC; - - case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_REPORT_ID; - - case SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST; - - default: return lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_UNSPECIFIED; - } -} -sai_tam_tel_type_attr_t convert_sai_tam_tel_type_attr_t_to_sai(lemming::dataplane::sai::TamTelTypeAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: return SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: return SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: return SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_FABRIC_Q: return SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_NE_ENABLE: return SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_DSCP_VALUE: return SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_MATH_FUNC: return SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_REPORT_ID: return SAI_TAM_TEL_TYPE_ATTR_REPORT_ID; - - case lemming::dataplane::sai::TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: return SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST; - - default: return SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_tel_type_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_tel_type_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_tel_type_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_tel_type_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTelemetryAttr convert_sai_tam_telemetry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; - - case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_COLLECTOR_LIST; - - case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT; - - case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_REPORTING_INTERVAL; - - default: return lemming::dataplane::sai::TAM_TELEMETRY_ATTR_UNSPECIFIED; - } -} -sai_tam_telemetry_attr_t convert_sai_tam_telemetry_attr_t_to_sai(lemming::dataplane::sai::TamTelemetryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: return SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; - - case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_COLLECTOR_LIST: return SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST; - - case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: return SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT; - - case lemming::dataplane::sai::TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: return SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL; - - default: return SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_telemetry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_telemetry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_telemetry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_telemetry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTelemetryType convert_sai_tam_telemetry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TELEMETRY_TYPE_NE: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_NE; - - case SAI_TAM_TELEMETRY_TYPE_SWITCH: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_SWITCH; - - case SAI_TAM_TELEMETRY_TYPE_FABRIC: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FABRIC; - - case SAI_TAM_TELEMETRY_TYPE_FLOW: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FLOW; - - case SAI_TAM_TELEMETRY_TYPE_INT: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_INT; - - case SAI_TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION; - - default: return lemming::dataplane::sai::TAM_TELEMETRY_TYPE_UNSPECIFIED; - } -} -sai_tam_telemetry_type_t convert_sai_tam_telemetry_type_t_to_sai(lemming::dataplane::sai::TamTelemetryType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_NE: return SAI_TAM_TELEMETRY_TYPE_NE; - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_SWITCH: return SAI_TAM_TELEMETRY_TYPE_SWITCH; - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FABRIC: return SAI_TAM_TELEMETRY_TYPE_FABRIC; - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_FLOW: return SAI_TAM_TELEMETRY_TYPE_FLOW; - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_INT: return SAI_TAM_TELEMETRY_TYPE_INT; - - case lemming::dataplane::sai::TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION: return SAI_TAM_TELEMETRY_TYPE_COUNTER_SUBSCRIPTION; - - default: return SAI_TAM_TELEMETRY_TYPE_NE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_telemetry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_telemetry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_telemetry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_telemetry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTransportAttr convert_sai_tam_transport_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; - - case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_SRC_PORT; - - case SAI_TAM_TRANSPORT_ATTR_DST_PORT: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_DST_PORT; - - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE; - - case SAI_TAM_TRANSPORT_ATTR_MTU: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_MTU; - - default: return lemming::dataplane::sai::TAM_TRANSPORT_ATTR_UNSPECIFIED; - } -} -sai_tam_transport_attr_t convert_sai_tam_transport_attr_t_to_sai(lemming::dataplane::sai::TamTransportAttr val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; - - case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_SRC_PORT: return SAI_TAM_TRANSPORT_ATTR_SRC_PORT; - - case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_DST_PORT: return SAI_TAM_TRANSPORT_ATTR_DST_PORT; - - case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE; - - case lemming::dataplane::sai::TAM_TRANSPORT_ATTR_MTU: return SAI_TAM_TRANSPORT_ATTR_MTU; - - default: return SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_transport_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_transport_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_transport_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_transport_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTransportAuthType convert_sai_tam_transport_auth_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TRANSPORT_AUTH_TYPE_NONE: return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_NONE; - - case SAI_TAM_TRANSPORT_AUTH_TYPE_SSL: return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_SSL; - - case SAI_TAM_TRANSPORT_AUTH_TYPE_TLS: return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_TLS; - - default: return lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_UNSPECIFIED; - } -} -sai_tam_transport_auth_type_t convert_sai_tam_transport_auth_type_t_to_sai(lemming::dataplane::sai::TamTransportAuthType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_NONE: return SAI_TAM_TRANSPORT_AUTH_TYPE_NONE; - - case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_SSL: return SAI_TAM_TRANSPORT_AUTH_TYPE_SSL; - - case lemming::dataplane::sai::TAM_TRANSPORT_AUTH_TYPE_TLS: return SAI_TAM_TRANSPORT_AUTH_TYPE_TLS; - - default: return SAI_TAM_TRANSPORT_AUTH_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_transport_auth_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_transport_auth_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_transport_auth_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_transport_auth_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TamTransportType convert_sai_tam_transport_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TAM_TRANSPORT_TYPE_NONE: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_NONE; - - case SAI_TAM_TRANSPORT_TYPE_TCP: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_TCP; - - case SAI_TAM_TRANSPORT_TYPE_UDP: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UDP; - - case SAI_TAM_TRANSPORT_TYPE_GRPC: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_GRPC; - - case SAI_TAM_TRANSPORT_TYPE_MIRROR: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_MIRROR; - - default: return lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UNSPECIFIED; - } -} -sai_tam_transport_type_t convert_sai_tam_transport_type_t_to_sai(lemming::dataplane::sai::TamTransportType val) { - switch (val) { - - case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_NONE: return SAI_TAM_TRANSPORT_TYPE_NONE; - - case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_TCP: return SAI_TAM_TRANSPORT_TYPE_TCP; - - case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_UDP: return SAI_TAM_TRANSPORT_TYPE_UDP; - - case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_GRPC: return SAI_TAM_TRANSPORT_TYPE_GRPC; - - case lemming::dataplane::sai::TAM_TRANSPORT_TYPE_MIRROR: return SAI_TAM_TRANSPORT_TYPE_MIRROR; - - default: return SAI_TAM_TRANSPORT_TYPE_NONE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tam_transport_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tam_transport_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tam_transport_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tam_transport_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TlvType convert_sai_tlv_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TLV_TYPE_INGRESS: return lemming::dataplane::sai::TLV_TYPE_INGRESS; - - case SAI_TLV_TYPE_EGRESS: return lemming::dataplane::sai::TLV_TYPE_EGRESS; - - case SAI_TLV_TYPE_OPAQUE: return lemming::dataplane::sai::TLV_TYPE_OPAQUE; - - case SAI_TLV_TYPE_HMAC: return lemming::dataplane::sai::TLV_TYPE_HMAC; - - default: return lemming::dataplane::sai::TLV_TYPE_UNSPECIFIED; - } -} -sai_tlv_type_t convert_sai_tlv_type_t_to_sai(lemming::dataplane::sai::TlvType val) { - switch (val) { - - case lemming::dataplane::sai::TLV_TYPE_INGRESS: return SAI_TLV_TYPE_INGRESS; - - case lemming::dataplane::sai::TLV_TYPE_EGRESS: return SAI_TLV_TYPE_EGRESS; - - case lemming::dataplane::sai::TLV_TYPE_OPAQUE: return SAI_TLV_TYPE_OPAQUE; - - case lemming::dataplane::sai::TLV_TYPE_HMAC: return SAI_TLV_TYPE_HMAC; - - default: return SAI_TLV_TYPE_INGRESS; - } -} - -google::protobuf::RepeatedField convert_list_sai_tlv_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tlv_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tlv_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tlv_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelAttr convert_sai_tunnel_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_ATTR_TYPE: return lemming::dataplane::sai::TUNNEL_ATTR_TYPE; - - case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: return lemming::dataplane::sai::TUNNEL_ATTR_UNDERLAY_INTERFACE; - - case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: return lemming::dataplane::sai::TUNNEL_ATTR_OVERLAY_INTERFACE; - - case SAI_TUNNEL_ATTR_PEER_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_PEER_MODE; - - case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_SRC_IP; - - case SAI_TUNNEL_ATTR_ENCAP_DST_IP: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DST_IP; - - case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_MODE; - - case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_VAL; - - case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_MODE; - - case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_VAL; - - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY_VALID; - - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY; - - case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_ECN_MODE; - - case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_MAPPERS; - - case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_ECN_MODE; - - case SAI_TUNNEL_ATTR_DECAP_MAPPERS: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_MAPPERS; - - case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_TTL_MODE; - - case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_DSCP_MODE; - - case SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: return lemming::dataplane::sai::TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST; - - case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: return lemming::dataplane::sai::TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; - - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE; - - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT; - - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; - - case SAI_TUNNEL_ATTR_SA_INDEX: return lemming::dataplane::sai::TUNNEL_ATTR_SA_INDEX; - - case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: return lemming::dataplane::sai::TUNNEL_ATTR_IPSEC_SA_PORT_LIST; - - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: return lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; - - case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; - - case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: return lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; - - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: return lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY; - - default: return lemming::dataplane::sai::TUNNEL_ATTR_UNSPECIFIED; - } -} -sai_tunnel_attr_t convert_sai_tunnel_attr_t_to_sai(lemming::dataplane::sai::TunnelAttr val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_ATTR_TYPE: return SAI_TUNNEL_ATTR_TYPE; - - case lemming::dataplane::sai::TUNNEL_ATTR_UNDERLAY_INTERFACE: return SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE; - - case lemming::dataplane::sai::TUNNEL_ATTR_OVERLAY_INTERFACE: return SAI_TUNNEL_ATTR_OVERLAY_INTERFACE; - - case lemming::dataplane::sai::TUNNEL_ATTR_PEER_MODE: return SAI_TUNNEL_ATTR_PEER_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_SRC_IP: return SAI_TUNNEL_ATTR_ENCAP_SRC_IP; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DST_IP: return SAI_TUNNEL_ATTR_ENCAP_DST_IP; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_MODE: return SAI_TUNNEL_ATTR_ENCAP_TTL_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_TTL_VAL: return SAI_TUNNEL_ATTR_ENCAP_TTL_VAL; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_MODE: return SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_DSCP_VAL: return SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: return SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_GRE_KEY: return SAI_TUNNEL_ATTR_ENCAP_GRE_KEY; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_ECN_MODE: return SAI_TUNNEL_ATTR_ENCAP_ECN_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_MAPPERS: return SAI_TUNNEL_ATTR_ENCAP_MAPPERS; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_ECN_MODE: return SAI_TUNNEL_ATTR_DECAP_ECN_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_MAPPERS: return SAI_TUNNEL_ATTR_DECAP_MAPPERS; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_TTL_MODE: return SAI_TUNNEL_ATTR_DECAP_TTL_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_DSCP_MODE: return SAI_TUNNEL_ATTR_DECAP_DSCP_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: return SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST; - - case lemming::dataplane::sai::TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: return SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION; - - case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE; - - case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT: return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT; - - case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK; - - case lemming::dataplane::sai::TUNNEL_ATTR_SA_INDEX: return SAI_TUNNEL_ATTR_SA_INDEX; - - case lemming::dataplane::sai::TUNNEL_ATTR_IPSEC_SA_PORT_LIST: return SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: return SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP; - - case lemming::dataplane::sai::TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: return SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: return SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP; - - case lemming::dataplane::sai::TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: return SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP; - - case lemming::dataplane::sai::TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: return SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY; - - default: return SAI_TUNNEL_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelDecapEcnMode convert_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_DECAP_ECN_MODE_STANDARD: return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_STANDARD; - - case SAI_TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER: return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER; - - case SAI_TUNNEL_DECAP_ECN_MODE_USER_DEFINED: return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_USER_DEFINED; - - default: return lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_UNSPECIFIED; - } -} -sai_tunnel_decap_ecn_mode_t convert_sai_tunnel_decap_ecn_mode_t_to_sai(lemming::dataplane::sai::TunnelDecapEcnMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_STANDARD: return SAI_TUNNEL_DECAP_ECN_MODE_STANDARD; - - case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER: return SAI_TUNNEL_DECAP_ECN_MODE_COPY_FROM_OUTER; - - case lemming::dataplane::sai::TUNNEL_DECAP_ECN_MODE_USER_DEFINED: return SAI_TUNNEL_DECAP_ECN_MODE_USER_DEFINED; - - default: return SAI_TUNNEL_DECAP_ECN_MODE_STANDARD; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_decap_ecn_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_decap_ecn_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_decap_ecn_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelDscpMode convert_sai_tunnel_dscp_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL: return lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNIFORM_MODEL; - - case SAI_TUNNEL_DSCP_MODE_PIPE_MODEL: return lemming::dataplane::sai::TUNNEL_DSCP_MODE_PIPE_MODEL; - - default: return lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNSPECIFIED; - } -} -sai_tunnel_dscp_mode_t convert_sai_tunnel_dscp_mode_t_to_sai(lemming::dataplane::sai::TunnelDscpMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_DSCP_MODE_UNIFORM_MODEL: return SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL; - - case lemming::dataplane::sai::TUNNEL_DSCP_MODE_PIPE_MODEL: return SAI_TUNNEL_DSCP_MODE_PIPE_MODEL; - - default: return SAI_TUNNEL_DSCP_MODE_UNIFORM_MODEL; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_dscp_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_dscp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_dscp_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelEncapEcnMode convert_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD: return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_STANDARD; - - case SAI_TUNNEL_ENCAP_ECN_MODE_USER_DEFINED: return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_USER_DEFINED; - - default: return lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_UNSPECIFIED; - } -} -sai_tunnel_encap_ecn_mode_t convert_sai_tunnel_encap_ecn_mode_t_to_sai(lemming::dataplane::sai::TunnelEncapEcnMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_STANDARD: return SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD; - - case lemming::dataplane::sai::TUNNEL_ENCAP_ECN_MODE_USER_DEFINED: return SAI_TUNNEL_ENCAP_ECN_MODE_USER_DEFINED; - - default: return SAI_TUNNEL_ENCAP_ECN_MODE_STANDARD; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_encap_ecn_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_encap_ecn_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_encap_ecn_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelMapAttr convert_sai_tunnel_map_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_MAP_ATTR_TYPE: return lemming::dataplane::sai::TUNNEL_MAP_ATTR_TYPE; - - case SAI_TUNNEL_MAP_ATTR_ENTRY_LIST: return lemming::dataplane::sai::TUNNEL_MAP_ATTR_ENTRY_LIST; - - default: return lemming::dataplane::sai::TUNNEL_MAP_ATTR_UNSPECIFIED; - } -} -sai_tunnel_map_attr_t convert_sai_tunnel_map_attr_t_to_sai(lemming::dataplane::sai::TunnelMapAttr val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_MAP_ATTR_TYPE: return SAI_TUNNEL_MAP_ATTR_TYPE; - - case lemming::dataplane::sai::TUNNEL_MAP_ATTR_ENTRY_LIST: return SAI_TUNNEL_MAP_ATTR_ENTRY_LIST; - - default: return SAI_TUNNEL_MAP_ATTR_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_map_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_map_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_map_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelMapEntryAttr convert_sai_tunnel_map_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY; - - case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE; - - default: return lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_tunnel_map_entry_attr_t convert_sai_tunnel_map_entry_attr_t_to_sai(lemming::dataplane::sai::TunnelMapEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: return SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY; - - case lemming::dataplane::sai::TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: return SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE; - - default: return SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_map_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_map_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_map_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_map_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelMapType convert_sai_tunnel_map_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_OECN_TO_UECN; - - case SAI_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN; - - case SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID; - - case SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI; - - case SAI_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF; - - case SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI; - - case SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID; - - case SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI; - - case SAI_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID; - - case SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID; - - case SAI_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF; - - case SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID; - - case SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID; - - case SAI_TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID; - - case SAI_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE; - - default: return lemming::dataplane::sai::TUNNEL_MAP_TYPE_UNSPECIFIED; - } -} -sai_tunnel_map_type_t convert_sai_tunnel_map_type_t_to_sai(lemming::dataplane::sai::TunnelMapType val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_OECN_TO_UECN: return SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN: return SAI_TUNNEL_MAP_TYPE_UECN_OECN_TO_OECN; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID: return SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI: return SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF: return SAI_TUNNEL_MAP_TYPE_VNI_TO_BRIDGE_IF; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI: return SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VNI; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID: return SAI_TUNNEL_MAP_TYPE_VNI_TO_VIRTUAL_ROUTER_ID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI: return SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VNI; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID: return SAI_TUNNEL_MAP_TYPE_VSID_TO_VLAN_ID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID: return SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VSID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF: return SAI_TUNNEL_MAP_TYPE_VSID_TO_BRIDGE_IF; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID: return SAI_TUNNEL_MAP_TYPE_BRIDGE_IF_TO_VSID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID: return SAI_TUNNEL_MAP_TYPE_VIRTUAL_ROUTER_ID_TO_VPN_SID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID: return SAI_TUNNEL_MAP_TYPE_PREFIX_AGG_ID_TO_SRV6_VPN_SID; - - case lemming::dataplane::sai::TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE: return SAI_TUNNEL_MAP_TYPE_CUSTOM_RANGE_BASE; - - default: return SAI_TUNNEL_MAP_TYPE_OECN_TO_UECN; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_map_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_map_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_map_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelPeerMode convert_sai_tunnel_peer_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_PEER_MODE_P2P: return lemming::dataplane::sai::TUNNEL_PEER_MODE_P2P; - - case SAI_TUNNEL_PEER_MODE_P2MP: return lemming::dataplane::sai::TUNNEL_PEER_MODE_P2MP; - - default: return lemming::dataplane::sai::TUNNEL_PEER_MODE_UNSPECIFIED; - } -} -sai_tunnel_peer_mode_t convert_sai_tunnel_peer_mode_t_to_sai(lemming::dataplane::sai::TunnelPeerMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_PEER_MODE_P2P: return SAI_TUNNEL_PEER_MODE_P2P; - - case lemming::dataplane::sai::TUNNEL_PEER_MODE_P2MP: return SAI_TUNNEL_PEER_MODE_P2MP; - - default: return SAI_TUNNEL_PEER_MODE_P2P; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_peer_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_peer_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_peer_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_peer_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelStat convert_sai_tunnel_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_STAT_IN_OCTETS: return lemming::dataplane::sai::TUNNEL_STAT_IN_OCTETS; - - case SAI_TUNNEL_STAT_IN_PACKETS: return lemming::dataplane::sai::TUNNEL_STAT_IN_PACKETS; - - case SAI_TUNNEL_STAT_OUT_OCTETS: return lemming::dataplane::sai::TUNNEL_STAT_OUT_OCTETS; - - case SAI_TUNNEL_STAT_OUT_PACKETS: return lemming::dataplane::sai::TUNNEL_STAT_OUT_PACKETS; - - default: return lemming::dataplane::sai::TUNNEL_STAT_UNSPECIFIED; - } -} -sai_tunnel_stat_t convert_sai_tunnel_stat_t_to_sai(lemming::dataplane::sai::TunnelStat val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_STAT_IN_OCTETS: return SAI_TUNNEL_STAT_IN_OCTETS; - - case lemming::dataplane::sai::TUNNEL_STAT_IN_PACKETS: return SAI_TUNNEL_STAT_IN_PACKETS; - - case lemming::dataplane::sai::TUNNEL_STAT_OUT_OCTETS: return SAI_TUNNEL_STAT_OUT_OCTETS; - - case lemming::dataplane::sai::TUNNEL_STAT_OUT_PACKETS: return SAI_TUNNEL_STAT_OUT_PACKETS; - - default: return SAI_TUNNEL_STAT_IN_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelTermTableEntryAttr convert_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY; - - default: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_UNSPECIFIED; - } -} -sai_tunnel_term_table_entry_attr_t convert_sai_tunnel_term_table_entry_attr_t_to_sai(lemming::dataplane::sai::TunnelTermTableEntryAttr val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY; - - default: return SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_term_table_entry_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_term_table_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_term_table_entry_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelTermTableEntryType convert_sai_tunnel_term_table_entry_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P; - - case SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP; - - default: return lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_UNSPECIFIED; - } -} -sai_tunnel_term_table_entry_type_t convert_sai_tunnel_term_table_entry_type_t_to_sai(lemming::dataplane::sai::TunnelTermTableEntryType val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P: return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP: return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2MP; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P: return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2P; - - case lemming::dataplane::sai::TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP: return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_MP2MP; - - default: return SAI_TUNNEL_TERM_TABLE_ENTRY_TYPE_P2P; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_term_table_entry_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_term_table_entry_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_term_table_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_term_table_entry_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelTtlMode convert_sai_tunnel_ttl_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL: return lemming::dataplane::sai::TUNNEL_TTL_MODE_UNIFORM_MODEL; - - case SAI_TUNNEL_TTL_MODE_PIPE_MODEL: return lemming::dataplane::sai::TUNNEL_TTL_MODE_PIPE_MODEL; - - default: return lemming::dataplane::sai::TUNNEL_TTL_MODE_UNSPECIFIED; - } -} -sai_tunnel_ttl_mode_t convert_sai_tunnel_ttl_mode_t_to_sai(lemming::dataplane::sai::TunnelTtlMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_TTL_MODE_UNIFORM_MODEL: return SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL; - - case lemming::dataplane::sai::TUNNEL_TTL_MODE_PIPE_MODEL: return SAI_TUNNEL_TTL_MODE_PIPE_MODEL; - - default: return SAI_TUNNEL_TTL_MODE_UNIFORM_MODEL; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_ttl_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_ttl_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_ttl_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelType convert_sai_tunnel_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_TYPE_IPINIP: return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP; - - case SAI_TUNNEL_TYPE_IPINIP_GRE: return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_GRE; - - case SAI_TUNNEL_TYPE_VXLAN: return lemming::dataplane::sai::TUNNEL_TYPE_VXLAN; - - case SAI_TUNNEL_TYPE_MPLS: return lemming::dataplane::sai::TUNNEL_TYPE_MPLS; - - case SAI_TUNNEL_TYPE_SRV6: return lemming::dataplane::sai::TUNNEL_TYPE_SRV6; - - case SAI_TUNNEL_TYPE_NVGRE: return lemming::dataplane::sai::TUNNEL_TYPE_NVGRE; - - case SAI_TUNNEL_TYPE_IPINIP_ESP: return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_ESP; - - case SAI_TUNNEL_TYPE_IPINIP_UDP_ESP: return lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_UDP_ESP; - - case SAI_TUNNEL_TYPE_VXLAN_UDP_ESP: return lemming::dataplane::sai::TUNNEL_TYPE_VXLAN_UDP_ESP; - - default: return lemming::dataplane::sai::TUNNEL_TYPE_UNSPECIFIED; - } -} -sai_tunnel_type_t convert_sai_tunnel_type_t_to_sai(lemming::dataplane::sai::TunnelType val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP: return SAI_TUNNEL_TYPE_IPINIP; - - case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_GRE: return SAI_TUNNEL_TYPE_IPINIP_GRE; - - case lemming::dataplane::sai::TUNNEL_TYPE_VXLAN: return SAI_TUNNEL_TYPE_VXLAN; - - case lemming::dataplane::sai::TUNNEL_TYPE_MPLS: return SAI_TUNNEL_TYPE_MPLS; - - case lemming::dataplane::sai::TUNNEL_TYPE_SRV6: return SAI_TUNNEL_TYPE_SRV6; - - case lemming::dataplane::sai::TUNNEL_TYPE_NVGRE: return SAI_TUNNEL_TYPE_NVGRE; - - case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_ESP: return SAI_TUNNEL_TYPE_IPINIP_ESP; - - case lemming::dataplane::sai::TUNNEL_TYPE_IPINIP_UDP_ESP: return SAI_TUNNEL_TYPE_IPINIP_UDP_ESP; - - case lemming::dataplane::sai::TUNNEL_TYPE_VXLAN_UDP_ESP: return SAI_TUNNEL_TYPE_VXLAN_UDP_ESP; - - default: return SAI_TUNNEL_TYPE_IPINIP; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::TunnelVxlanUdpSportMode convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED: return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; - - case SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL: return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL; - - default: return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_UNSPECIFIED; - } -} -sai_tunnel_vxlan_udp_sport_mode_t convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(lemming::dataplane::sai::TunnelVxlanUdpSportMode val) { - switch (val) { - - case lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED: return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; - - case lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL: return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL; - - default: return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; - } -} - -google::protobuf::RepeatedField convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::UdfAttr convert_sai_udf_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_UDF_ATTR_MATCH_ID: return lemming::dataplane::sai::UDF_ATTR_MATCH_ID; - - case SAI_UDF_ATTR_GROUP_ID: return lemming::dataplane::sai::UDF_ATTR_GROUP_ID; - - case SAI_UDF_ATTR_BASE: return lemming::dataplane::sai::UDF_ATTR_BASE; - - case SAI_UDF_ATTR_OFFSET: return lemming::dataplane::sai::UDF_ATTR_OFFSET; - - case SAI_UDF_ATTR_HASH_MASK: return lemming::dataplane::sai::UDF_ATTR_HASH_MASK; - - default: return lemming::dataplane::sai::UDF_ATTR_UNSPECIFIED; - } -} -sai_udf_attr_t convert_sai_udf_attr_t_to_sai(lemming::dataplane::sai::UdfAttr val) { - switch (val) { - - case lemming::dataplane::sai::UDF_ATTR_MATCH_ID: return SAI_UDF_ATTR_MATCH_ID; - - case lemming::dataplane::sai::UDF_ATTR_GROUP_ID: return SAI_UDF_ATTR_GROUP_ID; - - case lemming::dataplane::sai::UDF_ATTR_BASE: return SAI_UDF_ATTR_BASE; - - case lemming::dataplane::sai::UDF_ATTR_OFFSET: return SAI_UDF_ATTR_OFFSET; - - case lemming::dataplane::sai::UDF_ATTR_HASH_MASK: return SAI_UDF_ATTR_HASH_MASK; - - default: return SAI_UDF_ATTR_MATCH_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_udf_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_udf_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_udf_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_udf_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::UdfBase convert_sai_udf_base_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_UDF_BASE_L2: return lemming::dataplane::sai::UDF_BASE_L2; - - case SAI_UDF_BASE_L3: return lemming::dataplane::sai::UDF_BASE_L3; - - case SAI_UDF_BASE_L4: return lemming::dataplane::sai::UDF_BASE_L4; - - default: return lemming::dataplane::sai::UDF_BASE_UNSPECIFIED; - } -} -sai_udf_base_t convert_sai_udf_base_t_to_sai(lemming::dataplane::sai::UdfBase val) { - switch (val) { - - case lemming::dataplane::sai::UDF_BASE_L2: return SAI_UDF_BASE_L2; - - case lemming::dataplane::sai::UDF_BASE_L3: return SAI_UDF_BASE_L3; - - case lemming::dataplane::sai::UDF_BASE_L4: return SAI_UDF_BASE_L4; - - default: return SAI_UDF_BASE_L2; - } -} - -google::protobuf::RepeatedField convert_list_sai_udf_base_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_udf_base_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_udf_base_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_udf_base_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::UdfGroupAttr convert_sai_udf_group_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_UDF_GROUP_ATTR_UDF_LIST: return lemming::dataplane::sai::UDF_GROUP_ATTR_UDF_LIST; - - case SAI_UDF_GROUP_ATTR_TYPE: return lemming::dataplane::sai::UDF_GROUP_ATTR_TYPE; - - case SAI_UDF_GROUP_ATTR_LENGTH: return lemming::dataplane::sai::UDF_GROUP_ATTR_LENGTH; - - default: return lemming::dataplane::sai::UDF_GROUP_ATTR_UNSPECIFIED; - } -} -sai_udf_group_attr_t convert_sai_udf_group_attr_t_to_sai(lemming::dataplane::sai::UdfGroupAttr val) { - switch (val) { - - case lemming::dataplane::sai::UDF_GROUP_ATTR_UDF_LIST: return SAI_UDF_GROUP_ATTR_UDF_LIST; - - case lemming::dataplane::sai::UDF_GROUP_ATTR_TYPE: return SAI_UDF_GROUP_ATTR_TYPE; - - case lemming::dataplane::sai::UDF_GROUP_ATTR_LENGTH: return SAI_UDF_GROUP_ATTR_LENGTH; - - default: return SAI_UDF_GROUP_ATTR_UDF_LIST; - } -} - -google::protobuf::RepeatedField convert_list_sai_udf_group_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_udf_group_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_udf_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_udf_group_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::UdfGroupType convert_sai_udf_group_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_UDF_GROUP_TYPE_START: return lemming::dataplane::sai::UDF_GROUP_TYPE_START; - - case SAI_UDF_GROUP_TYPE_HASH: return lemming::dataplane::sai::UDF_GROUP_TYPE_HASH; - - case SAI_UDF_GROUP_TYPE_END: return lemming::dataplane::sai::UDF_GROUP_TYPE_END; - - default: return lemming::dataplane::sai::UDF_GROUP_TYPE_UNSPECIFIED; - } -} -sai_udf_group_type_t convert_sai_udf_group_type_t_to_sai(lemming::dataplane::sai::UdfGroupType val) { - switch (val) { - - case lemming::dataplane::sai::UDF_GROUP_TYPE_START: return SAI_UDF_GROUP_TYPE_START; - - case lemming::dataplane::sai::UDF_GROUP_TYPE_HASH: return SAI_UDF_GROUP_TYPE_HASH; - - case lemming::dataplane::sai::UDF_GROUP_TYPE_END: return SAI_UDF_GROUP_TYPE_END; - - default: return SAI_UDF_GROUP_TYPE_START; - } -} - -google::protobuf::RepeatedField convert_list_sai_udf_group_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_udf_group_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_udf_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_udf_group_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::UdfMatchAttr convert_sai_udf_match_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_UDF_MATCH_ATTR_L2_TYPE: return lemming::dataplane::sai::UDF_MATCH_ATTR_L2_TYPE; - - case SAI_UDF_MATCH_ATTR_L3_TYPE: return lemming::dataplane::sai::UDF_MATCH_ATTR_L3_TYPE; - - case SAI_UDF_MATCH_ATTR_GRE_TYPE: return lemming::dataplane::sai::UDF_MATCH_ATTR_GRE_TYPE; - - case SAI_UDF_MATCH_ATTR_PRIORITY: return lemming::dataplane::sai::UDF_MATCH_ATTR_PRIORITY; - - case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: return lemming::dataplane::sai::UDF_MATCH_ATTR_L4_DST_PORT_TYPE; - - default: return lemming::dataplane::sai::UDF_MATCH_ATTR_UNSPECIFIED; - } -} -sai_udf_match_attr_t convert_sai_udf_match_attr_t_to_sai(lemming::dataplane::sai::UdfMatchAttr val) { - switch (val) { - - case lemming::dataplane::sai::UDF_MATCH_ATTR_L2_TYPE: return SAI_UDF_MATCH_ATTR_L2_TYPE; - - case lemming::dataplane::sai::UDF_MATCH_ATTR_L3_TYPE: return SAI_UDF_MATCH_ATTR_L3_TYPE; - - case lemming::dataplane::sai::UDF_MATCH_ATTR_GRE_TYPE: return SAI_UDF_MATCH_ATTR_GRE_TYPE; - - case lemming::dataplane::sai::UDF_MATCH_ATTR_PRIORITY: return SAI_UDF_MATCH_ATTR_PRIORITY; - - case lemming::dataplane::sai::UDF_MATCH_ATTR_L4_DST_PORT_TYPE: return SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE; - - default: return SAI_UDF_MATCH_ATTR_L2_TYPE; - } -} - -google::protobuf::RepeatedField convert_list_sai_udf_match_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_udf_match_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_udf_match_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_udf_match_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VirtualRouterAttr convert_sai_virtual_router_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; - - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE; - - case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS; - - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION; - - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION; - - case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION; - - case SAI_VIRTUAL_ROUTER_ATTR_LABEL: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_LABEL; - - default: return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_UNSPECIFIED; - } -} -sai_virtual_router_attr_t convert_sai_virtual_router_attr_t_to_sai(lemming::dataplane::sai::VirtualRouterAttr val) { - switch (val) { - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: return SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: return SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: return SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: return SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION; - - case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_LABEL: return SAI_VIRTUAL_ROUTER_ATTR_LABEL; - - default: return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; - } -} - -google::protobuf::RepeatedField convert_list_sai_virtual_router_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_virtual_router_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_virtual_router_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_virtual_router_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanAttr convert_sai_vlan_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_ATTR_VLAN_ID: return lemming::dataplane::sai::VLAN_ATTR_VLAN_ID; - - case SAI_VLAN_ATTR_MEMBER_LIST: return lemming::dataplane::sai::VLAN_ATTR_MEMBER_LIST; - - case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: return lemming::dataplane::sai::VLAN_ATTR_MAX_LEARNED_ADDRESSES; - - case SAI_VLAN_ATTR_STP_INSTANCE: return lemming::dataplane::sai::VLAN_ATTR_STP_INSTANCE; - - case SAI_VLAN_ATTR_LEARN_DISABLE: return lemming::dataplane::sai::VLAN_ATTR_LEARN_DISABLE; - - case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: return lemming::dataplane::sai::VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE; - - case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: return lemming::dataplane::sai::VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE; - - case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID; - - case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID; - - case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID; - - case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID; - - case SAI_VLAN_ATTR_INGRESS_ACL: return lemming::dataplane::sai::VLAN_ATTR_INGRESS_ACL; - - case SAI_VLAN_ATTR_EGRESS_ACL: return lemming::dataplane::sai::VLAN_ATTR_EGRESS_ACL; - - case SAI_VLAN_ATTR_META_DATA: return lemming::dataplane::sai::VLAN_ATTR_META_DATA; - - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; - - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; - - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; - - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; - - case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: return lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; - - case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: return lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_GROUP; - - case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: return lemming::dataplane::sai::VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE; - - case SAI_VLAN_ATTR_TAM_OBJECT: return lemming::dataplane::sai::VLAN_ATTR_TAM_OBJECT; - - default: return lemming::dataplane::sai::VLAN_ATTR_UNSPECIFIED; - } -} -sai_vlan_attr_t convert_sai_vlan_attr_t_to_sai(lemming::dataplane::sai::VlanAttr val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_ATTR_VLAN_ID: return SAI_VLAN_ATTR_VLAN_ID; - - case lemming::dataplane::sai::VLAN_ATTR_MEMBER_LIST: return SAI_VLAN_ATTR_MEMBER_LIST; - - case lemming::dataplane::sai::VLAN_ATTR_MAX_LEARNED_ADDRESSES: return SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES; - - case lemming::dataplane::sai::VLAN_ATTR_STP_INSTANCE: return SAI_VLAN_ATTR_STP_INSTANCE; - - case lemming::dataplane::sai::VLAN_ATTR_LEARN_DISABLE: return SAI_VLAN_ATTR_LEARN_DISABLE; - - case lemming::dataplane::sai::VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: return SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE; - - case lemming::dataplane::sai::VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: return SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: return SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: return SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: return SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: return SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID; - - case lemming::dataplane::sai::VLAN_ATTR_INGRESS_ACL: return SAI_VLAN_ATTR_INGRESS_ACL; - - case lemming::dataplane::sai::VLAN_ATTR_EGRESS_ACL: return SAI_VLAN_ATTR_EGRESS_ACL; - - case lemming::dataplane::sai::VLAN_ATTR_META_DATA: return SAI_VLAN_ATTR_META_DATA; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: return SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: return SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: return SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: return SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; - - case lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: return SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; - - case lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_GROUP: return SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP; - - case lemming::dataplane::sai::VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: return SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE; - - case lemming::dataplane::sai::VLAN_ATTR_TAM_OBJECT: return SAI_VLAN_ATTR_TAM_OBJECT; - - default: return SAI_VLAN_ATTR_VLAN_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanFloodControlType convert_sai_vlan_flood_control_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_FLOOD_CONTROL_TYPE_ALL: return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_ALL; - - case SAI_VLAN_FLOOD_CONTROL_TYPE_NONE: return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_NONE; - - case SAI_VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP: return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP; - - case SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED: return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_COMBINED; - - default: return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_UNSPECIFIED; - } -} -sai_vlan_flood_control_type_t convert_sai_vlan_flood_control_type_t_to_sai(lemming::dataplane::sai::VlanFloodControlType val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_ALL: return SAI_VLAN_FLOOD_CONTROL_TYPE_ALL; - - case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_NONE: return SAI_VLAN_FLOOD_CONTROL_TYPE_NONE; - - case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP: return SAI_VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP; - - case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_COMBINED: return SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED; - - default: return SAI_VLAN_FLOOD_CONTROL_TYPE_ALL; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_flood_control_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_flood_control_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_flood_control_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_flood_control_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanMcastLookupKeyType convert_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA: return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; - - case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG: return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG; - - case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_SG: return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_SG; - - case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG: return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG; - - default: return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_UNSPECIFIED; - } -} -sai_vlan_mcast_lookup_key_type_t convert_sai_vlan_mcast_lookup_key_type_t_to_sai(lemming::dataplane::sai::VlanMcastLookupKeyType val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA: return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; - - case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG: return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG; - - case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_SG: return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_SG; - - case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG: return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG; - - default: return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_mcast_lookup_key_type_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_mcast_lookup_key_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_mcast_lookup_key_type_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanMemberAttr convert_sai_vlan_member_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_MEMBER_ATTR_VLAN_ID: return lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_ID; - - case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: return lemming::dataplane::sai::VLAN_MEMBER_ATTR_BRIDGE_PORT_ID; - - case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: return lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE; - - default: return lemming::dataplane::sai::VLAN_MEMBER_ATTR_UNSPECIFIED; - } -} -sai_vlan_member_attr_t convert_sai_vlan_member_attr_t_to_sai(lemming::dataplane::sai::VlanMemberAttr val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_ID: return SAI_VLAN_MEMBER_ATTR_VLAN_ID; - - case lemming::dataplane::sai::VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: return SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID; - - case lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: return SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE; - - default: return SAI_VLAN_MEMBER_ATTR_VLAN_ID; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_member_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_member_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_member_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanStat convert_sai_vlan_stat_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_STAT_IN_OCTETS: return lemming::dataplane::sai::VLAN_STAT_IN_OCTETS; - - case SAI_VLAN_STAT_IN_PACKETS: return lemming::dataplane::sai::VLAN_STAT_IN_PACKETS; - - case SAI_VLAN_STAT_IN_UCAST_PKTS: return lemming::dataplane::sai::VLAN_STAT_IN_UCAST_PKTS; - - case SAI_VLAN_STAT_IN_NON_UCAST_PKTS: return lemming::dataplane::sai::VLAN_STAT_IN_NON_UCAST_PKTS; - - case SAI_VLAN_STAT_IN_DISCARDS: return lemming::dataplane::sai::VLAN_STAT_IN_DISCARDS; - - case SAI_VLAN_STAT_IN_ERRORS: return lemming::dataplane::sai::VLAN_STAT_IN_ERRORS; - - case SAI_VLAN_STAT_IN_UNKNOWN_PROTOS: return lemming::dataplane::sai::VLAN_STAT_IN_UNKNOWN_PROTOS; - - case SAI_VLAN_STAT_OUT_OCTETS: return lemming::dataplane::sai::VLAN_STAT_OUT_OCTETS; - - case SAI_VLAN_STAT_OUT_PACKETS: return lemming::dataplane::sai::VLAN_STAT_OUT_PACKETS; - - case SAI_VLAN_STAT_OUT_UCAST_PKTS: return lemming::dataplane::sai::VLAN_STAT_OUT_UCAST_PKTS; - - case SAI_VLAN_STAT_OUT_NON_UCAST_PKTS: return lemming::dataplane::sai::VLAN_STAT_OUT_NON_UCAST_PKTS; - - case SAI_VLAN_STAT_OUT_DISCARDS: return lemming::dataplane::sai::VLAN_STAT_OUT_DISCARDS; - - case SAI_VLAN_STAT_OUT_ERRORS: return lemming::dataplane::sai::VLAN_STAT_OUT_ERRORS; - - case SAI_VLAN_STAT_OUT_QLEN: return lemming::dataplane::sai::VLAN_STAT_OUT_QLEN; - - default: return lemming::dataplane::sai::VLAN_STAT_UNSPECIFIED; - } -} -sai_vlan_stat_t convert_sai_vlan_stat_t_to_sai(lemming::dataplane::sai::VlanStat val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_STAT_IN_OCTETS: return SAI_VLAN_STAT_IN_OCTETS; - - case lemming::dataplane::sai::VLAN_STAT_IN_PACKETS: return SAI_VLAN_STAT_IN_PACKETS; - - case lemming::dataplane::sai::VLAN_STAT_IN_UCAST_PKTS: return SAI_VLAN_STAT_IN_UCAST_PKTS; - - case lemming::dataplane::sai::VLAN_STAT_IN_NON_UCAST_PKTS: return SAI_VLAN_STAT_IN_NON_UCAST_PKTS; - - case lemming::dataplane::sai::VLAN_STAT_IN_DISCARDS: return SAI_VLAN_STAT_IN_DISCARDS; - - case lemming::dataplane::sai::VLAN_STAT_IN_ERRORS: return SAI_VLAN_STAT_IN_ERRORS; - - case lemming::dataplane::sai::VLAN_STAT_IN_UNKNOWN_PROTOS: return SAI_VLAN_STAT_IN_UNKNOWN_PROTOS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_OCTETS: return SAI_VLAN_STAT_OUT_OCTETS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_PACKETS: return SAI_VLAN_STAT_OUT_PACKETS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_UCAST_PKTS: return SAI_VLAN_STAT_OUT_UCAST_PKTS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_NON_UCAST_PKTS: return SAI_VLAN_STAT_OUT_NON_UCAST_PKTS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_DISCARDS: return SAI_VLAN_STAT_OUT_DISCARDS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_ERRORS: return SAI_VLAN_STAT_OUT_ERRORS; - - case lemming::dataplane::sai::VLAN_STAT_OUT_QLEN: return SAI_VLAN_STAT_OUT_QLEN; - - default: return SAI_VLAN_STAT_IN_OCTETS; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_stat_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_stat_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_stat_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::VlanTaggingMode convert_sai_vlan_tagging_mode_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_VLAN_TAGGING_MODE_UNTAGGED: return lemming::dataplane::sai::VLAN_TAGGING_MODE_UNTAGGED; - - case SAI_VLAN_TAGGING_MODE_TAGGED: return lemming::dataplane::sai::VLAN_TAGGING_MODE_TAGGED; - - case SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED: return lemming::dataplane::sai::VLAN_TAGGING_MODE_PRIORITY_TAGGED; - - default: return lemming::dataplane::sai::VLAN_TAGGING_MODE_UNSPECIFIED; - } -} -sai_vlan_tagging_mode_t convert_sai_vlan_tagging_mode_t_to_sai(lemming::dataplane::sai::VlanTaggingMode val) { - switch (val) { - - case lemming::dataplane::sai::VLAN_TAGGING_MODE_UNTAGGED: return SAI_VLAN_TAGGING_MODE_UNTAGGED; - - case lemming::dataplane::sai::VLAN_TAGGING_MODE_TAGGED: return SAI_VLAN_TAGGING_MODE_TAGGED; - - case lemming::dataplane::sai::VLAN_TAGGING_MODE_PRIORITY_TAGGED: return SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED; - - default: return SAI_VLAN_TAGGING_MODE_UNTAGGED; - } -} - -google::protobuf::RepeatedField convert_list_sai_vlan_tagging_mode_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_vlan_tagging_mode_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_vlan_tagging_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_vlan_tagging_mode_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); -} - - - -lemming::dataplane::sai::WredAttr convert_sai_wred_attr_t_to_proto(const sai_int32_t val) { - switch (val) { - - case SAI_WRED_ATTR_GREEN_ENABLE: return lemming::dataplane::sai::WRED_ATTR_GREEN_ENABLE; - - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD; - - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD; - - case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_GREEN_DROP_PROBABILITY; - - case SAI_WRED_ATTR_YELLOW_ENABLE: return lemming::dataplane::sai::WRED_ATTR_YELLOW_ENABLE; - - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD; - - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD; - - case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_YELLOW_DROP_PROBABILITY; - - case SAI_WRED_ATTR_RED_ENABLE: return lemming::dataplane::sai::WRED_ATTR_RED_ENABLE; - - case SAI_WRED_ATTR_RED_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD; - - case SAI_WRED_ATTR_RED_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD; - - case SAI_WRED_ATTR_RED_DROP_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_RED_DROP_PROBABILITY; - - case SAI_WRED_ATTR_WEIGHT: return lemming::dataplane::sai::WRED_ATTR_WEIGHT; - - case SAI_WRED_ATTR_ECN_MARK_MODE: return lemming::dataplane::sai::WRED_ATTR_ECN_MARK_MODE; - - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD; - - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD; - - case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MARK_PROBABILITY; - - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD; - - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD; - - case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY; - - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD; - - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD; - - case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MARK_PROBABILITY; - - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD; - - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD; - - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY; - - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64; - - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64; - - default: return lemming::dataplane::sai::WRED_ATTR_UNSPECIFIED; - } -} -sai_wred_attr_t convert_sai_wred_attr_t_to_sai(lemming::dataplane::sai::WredAttr val) { - switch (val) { - - case lemming::dataplane::sai::WRED_ATTR_GREEN_ENABLE: return SAI_WRED_ATTR_GREEN_ENABLE; - - case lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD: return SAI_WRED_ATTR_GREEN_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD: return SAI_WRED_ATTR_GREEN_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_GREEN_DROP_PROBABILITY: return SAI_WRED_ATTR_GREEN_DROP_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_ENABLE: return SAI_WRED_ATTR_YELLOW_ENABLE; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD: return SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD: return SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_DROP_PROBABILITY: return SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_RED_ENABLE: return SAI_WRED_ATTR_RED_ENABLE; - - case lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD: return SAI_WRED_ATTR_RED_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD: return SAI_WRED_ATTR_RED_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_RED_DROP_PROBABILITY: return SAI_WRED_ATTR_RED_DROP_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_WEIGHT: return SAI_WRED_ATTR_WEIGHT; - - case lemming::dataplane::sai::WRED_ATTR_ECN_MARK_MODE: return SAI_WRED_ATTR_ECN_MARK_MODE; - - case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: return SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: return SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: return SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: return SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: return SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: return SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD: return SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD: return SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MARK_PROBABILITY: return SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD; - - case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY; - - case lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD_64: return SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD_64: return SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD_64: return SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD_64: return SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD_64: return SAI_WRED_ATTR_RED_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD_64: return SAI_WRED_ATTR_RED_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: return SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: return SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: return SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: return SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: return SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: return SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64; - - case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64; - - default: return SAI_WRED_ATTR_GREEN_ENABLE; - } -} - -google::protobuf::RepeatedField convert_list_sai_wred_attr_t_to_proto(const sai_s32_list_t &list) { - google::protobuf::RepeatedField proto_list; - for (int i = 0; i < list.count; i++) { - proto_list.Add(convert_sai_wred_attr_t_to_proto(list.list[i])); - } - return proto_list; -} -void convert_list_sai_wred_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count) { - for (int i = 0; i < proto_list.size(); i++) { - list[i] = convert_sai_wred_attr_t_to_sai(static_cast(proto_list[i])); - } - *count = proto_list.size(); + +google::protobuf::RepeatedField convert_list_sai_tunnel_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_tunnel_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::TunnelVxlanUdpSportMode +convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED: + return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; + + case SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL: + return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL; + + default: + return lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_UNSPECIFIED; + } +} +sai_tunnel_vxlan_udp_sport_mode_t +convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + lemming::dataplane::sai::TunnelVxlanUdpSportMode val) { + switch (val) { + case lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED: + return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; + + case lemming::dataplane::sai::TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL: + return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_EPHEMERAL; + + default: + return SAI_TUNNEL_VXLAN_UDP_SPORT_MODE_USER_DEFINED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::UdfAttr convert_sai_udf_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_UDF_ATTR_MATCH_ID: + return lemming::dataplane::sai::UDF_ATTR_MATCH_ID; + + case SAI_UDF_ATTR_GROUP_ID: + return lemming::dataplane::sai::UDF_ATTR_GROUP_ID; + + case SAI_UDF_ATTR_BASE: + return lemming::dataplane::sai::UDF_ATTR_BASE; + + case SAI_UDF_ATTR_OFFSET: + return lemming::dataplane::sai::UDF_ATTR_OFFSET; + + case SAI_UDF_ATTR_HASH_MASK: + return lemming::dataplane::sai::UDF_ATTR_HASH_MASK; + + default: + return lemming::dataplane::sai::UDF_ATTR_UNSPECIFIED; + } +} +sai_udf_attr_t convert_sai_udf_attr_t_to_sai( + lemming::dataplane::sai::UdfAttr val) { + switch (val) { + case lemming::dataplane::sai::UDF_ATTR_MATCH_ID: + return SAI_UDF_ATTR_MATCH_ID; + + case lemming::dataplane::sai::UDF_ATTR_GROUP_ID: + return SAI_UDF_ATTR_GROUP_ID; + + case lemming::dataplane::sai::UDF_ATTR_BASE: + return SAI_UDF_ATTR_BASE; + + case lemming::dataplane::sai::UDF_ATTR_OFFSET: + return SAI_UDF_ATTR_OFFSET; + + case lemming::dataplane::sai::UDF_ATTR_HASH_MASK: + return SAI_UDF_ATTR_HASH_MASK; + + default: + return SAI_UDF_ATTR_MATCH_ID; + } +} + +google::protobuf::RepeatedField convert_list_sai_udf_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_udf_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_udf_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_udf_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::UdfBase convert_sai_udf_base_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_UDF_BASE_L2: + return lemming::dataplane::sai::UDF_BASE_L2; + + case SAI_UDF_BASE_L3: + return lemming::dataplane::sai::UDF_BASE_L3; + + case SAI_UDF_BASE_L4: + return lemming::dataplane::sai::UDF_BASE_L4; + + default: + return lemming::dataplane::sai::UDF_BASE_UNSPECIFIED; + } +} +sai_udf_base_t convert_sai_udf_base_t_to_sai( + lemming::dataplane::sai::UdfBase val) { + switch (val) { + case lemming::dataplane::sai::UDF_BASE_L2: + return SAI_UDF_BASE_L2; + + case lemming::dataplane::sai::UDF_BASE_L3: + return SAI_UDF_BASE_L3; + + case lemming::dataplane::sai::UDF_BASE_L4: + return SAI_UDF_BASE_L4; + + default: + return SAI_UDF_BASE_L2; + } +} + +google::protobuf::RepeatedField convert_list_sai_udf_base_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_udf_base_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_udf_base_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_udf_base_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::UdfGroupAttr convert_sai_udf_group_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_UDF_GROUP_ATTR_UDF_LIST: + return lemming::dataplane::sai::UDF_GROUP_ATTR_UDF_LIST; + + case SAI_UDF_GROUP_ATTR_TYPE: + return lemming::dataplane::sai::UDF_GROUP_ATTR_TYPE; + + case SAI_UDF_GROUP_ATTR_LENGTH: + return lemming::dataplane::sai::UDF_GROUP_ATTR_LENGTH; + + default: + return lemming::dataplane::sai::UDF_GROUP_ATTR_UNSPECIFIED; + } +} +sai_udf_group_attr_t convert_sai_udf_group_attr_t_to_sai( + lemming::dataplane::sai::UdfGroupAttr val) { + switch (val) { + case lemming::dataplane::sai::UDF_GROUP_ATTR_UDF_LIST: + return SAI_UDF_GROUP_ATTR_UDF_LIST; + + case lemming::dataplane::sai::UDF_GROUP_ATTR_TYPE: + return SAI_UDF_GROUP_ATTR_TYPE; + + case lemming::dataplane::sai::UDF_GROUP_ATTR_LENGTH: + return SAI_UDF_GROUP_ATTR_LENGTH; + + default: + return SAI_UDF_GROUP_ATTR_UDF_LIST; + } +} + +google::protobuf::RepeatedField convert_list_sai_udf_group_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_udf_group_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_udf_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_udf_group_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::UdfGroupType convert_sai_udf_group_type_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_UDF_GROUP_TYPE_START: + return lemming::dataplane::sai::UDF_GROUP_TYPE_START; + + case SAI_UDF_GROUP_TYPE_HASH: + return lemming::dataplane::sai::UDF_GROUP_TYPE_HASH; + + case SAI_UDF_GROUP_TYPE_END: + return lemming::dataplane::sai::UDF_GROUP_TYPE_END; + + default: + return lemming::dataplane::sai::UDF_GROUP_TYPE_UNSPECIFIED; + } +} +sai_udf_group_type_t convert_sai_udf_group_type_t_to_sai( + lemming::dataplane::sai::UdfGroupType val) { + switch (val) { + case lemming::dataplane::sai::UDF_GROUP_TYPE_START: + return SAI_UDF_GROUP_TYPE_START; + + case lemming::dataplane::sai::UDF_GROUP_TYPE_HASH: + return SAI_UDF_GROUP_TYPE_HASH; + + case lemming::dataplane::sai::UDF_GROUP_TYPE_END: + return SAI_UDF_GROUP_TYPE_END; + + default: + return SAI_UDF_GROUP_TYPE_START; + } +} + +google::protobuf::RepeatedField convert_list_sai_udf_group_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_udf_group_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_udf_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_udf_group_type_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::UdfMatchAttr convert_sai_udf_match_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_UDF_MATCH_ATTR_L2_TYPE: + return lemming::dataplane::sai::UDF_MATCH_ATTR_L2_TYPE; + + case SAI_UDF_MATCH_ATTR_L3_TYPE: + return lemming::dataplane::sai::UDF_MATCH_ATTR_L3_TYPE; + + case SAI_UDF_MATCH_ATTR_GRE_TYPE: + return lemming::dataplane::sai::UDF_MATCH_ATTR_GRE_TYPE; + + case SAI_UDF_MATCH_ATTR_PRIORITY: + return lemming::dataplane::sai::UDF_MATCH_ATTR_PRIORITY; + + case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: + return lemming::dataplane::sai::UDF_MATCH_ATTR_L4_DST_PORT_TYPE; + + default: + return lemming::dataplane::sai::UDF_MATCH_ATTR_UNSPECIFIED; + } +} +sai_udf_match_attr_t convert_sai_udf_match_attr_t_to_sai( + lemming::dataplane::sai::UdfMatchAttr val) { + switch (val) { + case lemming::dataplane::sai::UDF_MATCH_ATTR_L2_TYPE: + return SAI_UDF_MATCH_ATTR_L2_TYPE; + + case lemming::dataplane::sai::UDF_MATCH_ATTR_L3_TYPE: + return SAI_UDF_MATCH_ATTR_L3_TYPE; + + case lemming::dataplane::sai::UDF_MATCH_ATTR_GRE_TYPE: + return SAI_UDF_MATCH_ATTR_GRE_TYPE; + + case lemming::dataplane::sai::UDF_MATCH_ATTR_PRIORITY: + return SAI_UDF_MATCH_ATTR_PRIORITY; + + case lemming::dataplane::sai::UDF_MATCH_ATTR_L4_DST_PORT_TYPE: + return SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE; + + default: + return SAI_UDF_MATCH_ATTR_L2_TYPE; + } +} + +google::protobuf::RepeatedField convert_list_sai_udf_match_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_udf_match_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_udf_match_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_udf_match_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VirtualRouterAttr +convert_sai_virtual_router_attr_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: + return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; + + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: + return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE; + + case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: + return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS; + + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: + return lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION; + + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: + return lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION; + + case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: + return lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION; + + case SAI_VIRTUAL_ROUTER_ATTR_LABEL: + return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_LABEL; + + default: + return lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_UNSPECIFIED; + } +} +sai_virtual_router_attr_t convert_sai_virtual_router_attr_t_to_sai( + lemming::dataplane::sai::VirtualRouterAttr val) { + switch (val) { + case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: + return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; + + case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: + return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE; + + case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: + return SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS; + + case lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: + return SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION; + + case lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: + return SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION; + + case lemming::dataplane::sai:: + VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: + return SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION; + + case lemming::dataplane::sai::VIRTUAL_ROUTER_ATTR_LABEL: + return SAI_VIRTUAL_ROUTER_ATTR_LABEL; + + default: + return SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE; + } +} + +google::protobuf::RepeatedField +convert_list_sai_virtual_router_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_virtual_router_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_virtual_router_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_virtual_router_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanAttr convert_sai_vlan_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_VLAN_ATTR_VLAN_ID: + return lemming::dataplane::sai::VLAN_ATTR_VLAN_ID; + + case SAI_VLAN_ATTR_MEMBER_LIST: + return lemming::dataplane::sai::VLAN_ATTR_MEMBER_LIST; + + case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: + return lemming::dataplane::sai::VLAN_ATTR_MAX_LEARNED_ADDRESSES; + + case SAI_VLAN_ATTR_STP_INSTANCE: + return lemming::dataplane::sai::VLAN_ATTR_STP_INSTANCE; + + case SAI_VLAN_ATTR_LEARN_DISABLE: + return lemming::dataplane::sai::VLAN_ATTR_LEARN_DISABLE; + + case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: + return lemming::dataplane::sai::VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE; + + case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: + return lemming::dataplane::sai::VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE; + + case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID; + + case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID; + + case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID; + + case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID; + + case SAI_VLAN_ATTR_INGRESS_ACL: + return lemming::dataplane::sai::VLAN_ATTR_INGRESS_ACL; + + case SAI_VLAN_ATTR_EGRESS_ACL: + return lemming::dataplane::sai::VLAN_ATTR_EGRESS_ACL; + + case SAI_VLAN_ATTR_META_DATA: + return lemming::dataplane::sai::VLAN_ATTR_META_DATA; + + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; + + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; + + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; + + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + return lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; + + case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + return lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; + + case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: + return lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_GROUP; + + case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: + return lemming::dataplane::sai::VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE; + + case SAI_VLAN_ATTR_TAM_OBJECT: + return lemming::dataplane::sai::VLAN_ATTR_TAM_OBJECT; + + case SAI_VLAN_ATTR_STATS_COUNT_MODE: + return lemming::dataplane::sai::VLAN_ATTR_STATS_COUNT_MODE; + + case SAI_VLAN_ATTR_SELECTIVE_COUNTER_LIST: + return lemming::dataplane::sai::VLAN_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return lemming::dataplane::sai::VLAN_ATTR_UNSPECIFIED; + } +} +sai_vlan_attr_t convert_sai_vlan_attr_t_to_sai( + lemming::dataplane::sai::VlanAttr val) { + switch (val) { + case lemming::dataplane::sai::VLAN_ATTR_VLAN_ID: + return SAI_VLAN_ATTR_VLAN_ID; + + case lemming::dataplane::sai::VLAN_ATTR_MEMBER_LIST: + return SAI_VLAN_ATTR_MEMBER_LIST; + + case lemming::dataplane::sai::VLAN_ATTR_MAX_LEARNED_ADDRESSES: + return SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES; + + case lemming::dataplane::sai::VLAN_ATTR_STP_INSTANCE: + return SAI_VLAN_ATTR_STP_INSTANCE; + + case lemming::dataplane::sai::VLAN_ATTR_LEARN_DISABLE: + return SAI_VLAN_ATTR_LEARN_DISABLE; + + case lemming::dataplane::sai::VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: + return SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE; + + case lemming::dataplane::sai::VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: + return SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE; + + case lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: + return SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID; + + case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: + return SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID; + + case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: + return SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID; + + case lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: + return SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID; + + case lemming::dataplane::sai::VLAN_ATTR_INGRESS_ACL: + return SAI_VLAN_ATTR_INGRESS_ACL; + + case lemming::dataplane::sai::VLAN_ATTR_EGRESS_ACL: + return SAI_VLAN_ATTR_EGRESS_ACL; + + case lemming::dataplane::sai::VLAN_ATTR_META_DATA: + return SAI_VLAN_ATTR_META_DATA; + + case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + return SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + return SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP; + + case lemming::dataplane::sai:: + VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + return SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + return SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP; + + case lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + return SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE; + + case lemming::dataplane::sai::VLAN_ATTR_BROADCAST_FLOOD_GROUP: + return SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP; + + case lemming::dataplane::sai::VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: + return SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE; + + case lemming::dataplane::sai::VLAN_ATTR_TAM_OBJECT: + return SAI_VLAN_ATTR_TAM_OBJECT; + + case lemming::dataplane::sai::VLAN_ATTR_STATS_COUNT_MODE: + return SAI_VLAN_ATTR_STATS_COUNT_MODE; + + case lemming::dataplane::sai::VLAN_ATTR_SELECTIVE_COUNTER_LIST: + return SAI_VLAN_ATTR_SELECTIVE_COUNTER_LIST; + + default: + return SAI_VLAN_ATTR_VLAN_ID; + } +} + +google::protobuf::RepeatedField convert_list_sai_vlan_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_vlan_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanFloodControlType +convert_sai_vlan_flood_control_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_VLAN_FLOOD_CONTROL_TYPE_ALL: + return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_ALL; + + case SAI_VLAN_FLOOD_CONTROL_TYPE_NONE: + return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_NONE; + + case SAI_VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP: + return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP; + + case SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED: + return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_COMBINED; + + default: + return lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_UNSPECIFIED; + } +} +sai_vlan_flood_control_type_t convert_sai_vlan_flood_control_type_t_to_sai( + lemming::dataplane::sai::VlanFloodControlType val) { + switch (val) { + case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_ALL: + return SAI_VLAN_FLOOD_CONTROL_TYPE_ALL; + + case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_NONE: + return SAI_VLAN_FLOOD_CONTROL_TYPE_NONE; + + case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP: + return SAI_VLAN_FLOOD_CONTROL_TYPE_L2MC_GROUP; + + case lemming::dataplane::sai::VLAN_FLOOD_CONTROL_TYPE_COMBINED: + return SAI_VLAN_FLOOD_CONTROL_TYPE_COMBINED; + + default: + return SAI_VLAN_FLOOD_CONTROL_TYPE_ALL; + } +} + +google::protobuf::RepeatedField +convert_list_sai_vlan_flood_control_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_vlan_flood_control_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_flood_control_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_flood_control_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanMcastLookupKeyType +convert_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA: + return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; + + case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG: + return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG; + + case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_SG: + return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_SG; + + case SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG: + return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG; + + default: + return lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_UNSPECIFIED; + } +} +sai_vlan_mcast_lookup_key_type_t +convert_sai_vlan_mcast_lookup_key_type_t_to_sai( + lemming::dataplane::sai::VlanMcastLookupKeyType val) { + switch (val) { + case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA: + return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; + + case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG: + return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG; + + case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_SG: + return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_SG; + + case lemming::dataplane::sai::VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG: + return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_XG_AND_SG; + + default: + return SAI_VLAN_MCAST_LOOKUP_KEY_TYPE_MAC_DA; + } +} + +google::protobuf::RepeatedField +convert_list_sai_vlan_mcast_lookup_key_type_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add( + convert_sai_vlan_mcast_lookup_key_type_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_mcast_lookup_key_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_mcast_lookup_key_type_t_to_sai( + static_cast( + proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanMemberAttr convert_sai_vlan_member_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_VLAN_MEMBER_ATTR_VLAN_ID: + return lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_ID; + + case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: + return lemming::dataplane::sai::VLAN_MEMBER_ATTR_BRIDGE_PORT_ID; + + case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: + return lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE; + + default: + return lemming::dataplane::sai::VLAN_MEMBER_ATTR_UNSPECIFIED; + } +} +sai_vlan_member_attr_t convert_sai_vlan_member_attr_t_to_sai( + lemming::dataplane::sai::VlanMemberAttr val) { + switch (val) { + case lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_ID: + return SAI_VLAN_MEMBER_ATTR_VLAN_ID; + + case lemming::dataplane::sai::VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: + return SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID; + + case lemming::dataplane::sai::VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: + return SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE; + + default: + return SAI_VLAN_MEMBER_ATTR_VLAN_ID; + } +} + +google::protobuf::RepeatedField +convert_list_sai_vlan_member_attr_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_vlan_member_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_member_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanStat convert_sai_vlan_stat_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_VLAN_STAT_IN_OCTETS: + return lemming::dataplane::sai::VLAN_STAT_IN_OCTETS; + + case SAI_VLAN_STAT_IN_PACKETS: + return lemming::dataplane::sai::VLAN_STAT_IN_PACKETS; + + case SAI_VLAN_STAT_IN_UCAST_PKTS: + return lemming::dataplane::sai::VLAN_STAT_IN_UCAST_PKTS; + + case SAI_VLAN_STAT_IN_NON_UCAST_PKTS: + return lemming::dataplane::sai::VLAN_STAT_IN_NON_UCAST_PKTS; + + case SAI_VLAN_STAT_IN_DISCARDS: + return lemming::dataplane::sai::VLAN_STAT_IN_DISCARDS; + + case SAI_VLAN_STAT_IN_ERRORS: + return lemming::dataplane::sai::VLAN_STAT_IN_ERRORS; + + case SAI_VLAN_STAT_IN_UNKNOWN_PROTOS: + return lemming::dataplane::sai::VLAN_STAT_IN_UNKNOWN_PROTOS; + + case SAI_VLAN_STAT_OUT_OCTETS: + return lemming::dataplane::sai::VLAN_STAT_OUT_OCTETS; + + case SAI_VLAN_STAT_OUT_PACKETS: + return lemming::dataplane::sai::VLAN_STAT_OUT_PACKETS; + + case SAI_VLAN_STAT_OUT_UCAST_PKTS: + return lemming::dataplane::sai::VLAN_STAT_OUT_UCAST_PKTS; + + case SAI_VLAN_STAT_OUT_NON_UCAST_PKTS: + return lemming::dataplane::sai::VLAN_STAT_OUT_NON_UCAST_PKTS; + + case SAI_VLAN_STAT_OUT_DISCARDS: + return lemming::dataplane::sai::VLAN_STAT_OUT_DISCARDS; + + case SAI_VLAN_STAT_OUT_ERRORS: + return lemming::dataplane::sai::VLAN_STAT_OUT_ERRORS; + + case SAI_VLAN_STAT_OUT_QLEN: + return lemming::dataplane::sai::VLAN_STAT_OUT_QLEN; + + default: + return lemming::dataplane::sai::VLAN_STAT_UNSPECIFIED; + } +} +sai_vlan_stat_t convert_sai_vlan_stat_t_to_sai( + lemming::dataplane::sai::VlanStat val) { + switch (val) { + case lemming::dataplane::sai::VLAN_STAT_IN_OCTETS: + return SAI_VLAN_STAT_IN_OCTETS; + + case lemming::dataplane::sai::VLAN_STAT_IN_PACKETS: + return SAI_VLAN_STAT_IN_PACKETS; + + case lemming::dataplane::sai::VLAN_STAT_IN_UCAST_PKTS: + return SAI_VLAN_STAT_IN_UCAST_PKTS; + + case lemming::dataplane::sai::VLAN_STAT_IN_NON_UCAST_PKTS: + return SAI_VLAN_STAT_IN_NON_UCAST_PKTS; + + case lemming::dataplane::sai::VLAN_STAT_IN_DISCARDS: + return SAI_VLAN_STAT_IN_DISCARDS; + + case lemming::dataplane::sai::VLAN_STAT_IN_ERRORS: + return SAI_VLAN_STAT_IN_ERRORS; + + case lemming::dataplane::sai::VLAN_STAT_IN_UNKNOWN_PROTOS: + return SAI_VLAN_STAT_IN_UNKNOWN_PROTOS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_OCTETS: + return SAI_VLAN_STAT_OUT_OCTETS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_PACKETS: + return SAI_VLAN_STAT_OUT_PACKETS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_UCAST_PKTS: + return SAI_VLAN_STAT_OUT_UCAST_PKTS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_NON_UCAST_PKTS: + return SAI_VLAN_STAT_OUT_NON_UCAST_PKTS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_DISCARDS: + return SAI_VLAN_STAT_OUT_DISCARDS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_ERRORS: + return SAI_VLAN_STAT_OUT_ERRORS; + + case lemming::dataplane::sai::VLAN_STAT_OUT_QLEN: + return SAI_VLAN_STAT_OUT_QLEN; + + default: + return SAI_VLAN_STAT_IN_OCTETS; + } +} + +google::protobuf::RepeatedField convert_list_sai_vlan_stat_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_vlan_stat_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_stat_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::VlanTaggingMode +convert_sai_vlan_tagging_mode_t_to_proto(const sai_int32_t val) { + switch (val) { + case SAI_VLAN_TAGGING_MODE_UNTAGGED: + return lemming::dataplane::sai::VLAN_TAGGING_MODE_UNTAGGED; + + case SAI_VLAN_TAGGING_MODE_TAGGED: + return lemming::dataplane::sai::VLAN_TAGGING_MODE_TAGGED; + + case SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED: + return lemming::dataplane::sai::VLAN_TAGGING_MODE_PRIORITY_TAGGED; + + default: + return lemming::dataplane::sai::VLAN_TAGGING_MODE_UNSPECIFIED; + } +} +sai_vlan_tagging_mode_t convert_sai_vlan_tagging_mode_t_to_sai( + lemming::dataplane::sai::VlanTaggingMode val) { + switch (val) { + case lemming::dataplane::sai::VLAN_TAGGING_MODE_UNTAGGED: + return SAI_VLAN_TAGGING_MODE_UNTAGGED; + + case lemming::dataplane::sai::VLAN_TAGGING_MODE_TAGGED: + return SAI_VLAN_TAGGING_MODE_TAGGED; + + case lemming::dataplane::sai::VLAN_TAGGING_MODE_PRIORITY_TAGGED: + return SAI_VLAN_TAGGING_MODE_PRIORITY_TAGGED; + + default: + return SAI_VLAN_TAGGING_MODE_UNTAGGED; + } +} + +google::protobuf::RepeatedField +convert_list_sai_vlan_tagging_mode_t_to_proto(const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_vlan_tagging_mode_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_vlan_tagging_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_vlan_tagging_mode_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} + +lemming::dataplane::sai::WredAttr convert_sai_wred_attr_t_to_proto( + const sai_int32_t val) { + switch (val) { + case SAI_WRED_ATTR_GREEN_ENABLE: + return lemming::dataplane::sai::WRED_ATTR_GREEN_ENABLE; + + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD; + + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD; + + case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_GREEN_DROP_PROBABILITY; + + case SAI_WRED_ATTR_YELLOW_ENABLE: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_ENABLE; + + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD; + + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD; + + case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_DROP_PROBABILITY; + + case SAI_WRED_ATTR_RED_ENABLE: + return lemming::dataplane::sai::WRED_ATTR_RED_ENABLE; + + case SAI_WRED_ATTR_RED_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD; + + case SAI_WRED_ATTR_RED_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD; + + case SAI_WRED_ATTR_RED_DROP_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_RED_DROP_PROBABILITY; + + case SAI_WRED_ATTR_WEIGHT: + return lemming::dataplane::sai::WRED_ATTR_WEIGHT; + + case SAI_WRED_ATTR_ECN_MARK_MODE: + return lemming::dataplane::sai::WRED_ATTR_ECN_MARK_MODE; + + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD; + + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD; + + case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MARK_PROBABILITY; + + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD; + + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD; + + case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY; + + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD; + + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD; + + case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: + return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MARK_PROBABILITY; + + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD; + + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: + return lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD; + + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: + return lemming::dataplane::sai:: + WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY; + + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: + return lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: + return lemming::dataplane::sai:: + WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64; + + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: + return lemming::dataplane::sai:: + WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64; + + default: + return lemming::dataplane::sai::WRED_ATTR_UNSPECIFIED; + } } +sai_wred_attr_t convert_sai_wred_attr_t_to_sai( + lemming::dataplane::sai::WredAttr val) { + switch (val) { + case lemming::dataplane::sai::WRED_ATTR_GREEN_ENABLE: + return SAI_WRED_ATTR_GREEN_ENABLE; + + case lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD: + return SAI_WRED_ATTR_GREEN_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD: + return SAI_WRED_ATTR_GREEN_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_GREEN_DROP_PROBABILITY: + return SAI_WRED_ATTR_GREEN_DROP_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_ENABLE: + return SAI_WRED_ATTR_YELLOW_ENABLE; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD: + return SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD: + return SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_DROP_PROBABILITY: + return SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_RED_ENABLE: + return SAI_WRED_ATTR_RED_ENABLE; + + case lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD: + return SAI_WRED_ATTR_RED_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD: + return SAI_WRED_ATTR_RED_MAX_THRESHOLD; + case lemming::dataplane::sai::WRED_ATTR_RED_DROP_PROBABILITY: + return SAI_WRED_ATTR_RED_DROP_PROBABILITY; + case lemming::dataplane::sai::WRED_ATTR_WEIGHT: + return SAI_WRED_ATTR_WEIGHT; + + case lemming::dataplane::sai::WRED_ATTR_ECN_MARK_MODE: + return SAI_WRED_ATTR_ECN_MARK_MODE; + + case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: + return SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: + return SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: + return SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: + return SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: + return SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: + return SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD: + return SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD: + return SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MARK_PROBABILITY: + return SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: + return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: + return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD; + + case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: + return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY; + + case lemming::dataplane::sai::WRED_ATTR_GREEN_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_GREEN_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_YELLOW_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_RED_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_RED_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_RED_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_RED_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64; + + case lemming::dataplane::sai::WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: + return SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64; + + default: + return SAI_WRED_ATTR_GREEN_ENABLE; + } +} + +google::protobuf::RepeatedField convert_list_sai_wred_attr_t_to_proto( + const sai_s32_list_t& list) { + google::protobuf::RepeatedField proto_list; + for (int i = 0; i < list.count; i++) { + proto_list.Add(convert_sai_wred_attr_t_to_proto(list.list[i])); + } + return proto_list; +} +void convert_list_sai_wred_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count) { + for (int i = 0; i < proto_list.size(); i++) { + list[i] = convert_sai_wred_attr_t_to_sai( + static_cast(proto_list[i])); + } + *count = proto_list.size(); +} diff --git a/dataplane/standalone/sai/enum.h b/dataplane/standalone/sai/enum.h index 95203c48d..4eaada1d2 100644 --- a/dataplane/standalone/sai/enum.h +++ b/dataplane/standalone/sai/enum.h @@ -16,132 +16,74 @@ #ifndef DATAPLANE_STANDALONE_SAI_ENUM_H_ #define DATAPLANE_STANDALONE_SAI_ENUM_H_ -#include "dataplane/proto/sai/common.pb.h" - -#include "dataplane/proto/sai/stp.pb.h" - -#include "dataplane/proto/sai/udf.pb.h" - +#include "dataplane/proto/sai/acl.pb.h" +#include "dataplane/proto/sai/ars.pb.h" +#include "dataplane/proto/sai/ars_profile.pb.h" #include "dataplane/proto/sai/bfd.pb.h" - +#include "dataplane/proto/sai/bmtor.pb.h" +#include "dataplane/proto/sai/bridge.pb.h" #include "dataplane/proto/sai/buffer.pb.h" - +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/counter.pb.h" +#include "dataplane/proto/sai/dash_acl.pb.h" +#include "dataplane/proto/sai/dash_appliance.pb.h" +#include "dataplane/proto/sai/dash_direction_lookup.pb.h" +#include "dataplane/proto/sai/dash_eni.pb.h" +#include "dataplane/proto/sai/dash_flow.pb.h" +#include "dataplane/proto/sai/dash_ha.pb.h" +#include "dataplane/proto/sai/dash_inbound_routing.pb.h" +#include "dataplane/proto/sai/dash_meter.pb.h" +#include "dataplane/proto/sai/dash_outbound_ca_to_pa.pb.h" +#include "dataplane/proto/sai/dash_outbound_routing.pb.h" +#include "dataplane/proto/sai/dash_pa_validation.pb.h" +#include "dataplane/proto/sai/dash_tunnel.pb.h" +#include "dataplane/proto/sai/dash_vip.pb.h" +#include "dataplane/proto/sai/dash_vnet.pb.h" +#include "dataplane/proto/sai/debug_counter.pb.h" +#include "dataplane/proto/sai/dtel.pb.h" +#include "dataplane/proto/sai/fdb.pb.h" +#include "dataplane/proto/sai/generic_programmable.pb.h" +#include "dataplane/proto/sai/hash.pb.h" #include "dataplane/proto/sai/hostif.pb.h" - +#include "dataplane/proto/sai/icmp_echo.pb.h" +#include "dataplane/proto/sai/ipmc.pb.h" +#include "dataplane/proto/sai/ipmc_group.pb.h" +#include "dataplane/proto/sai/ipsec.pb.h" +#include "dataplane/proto/sai/isolation_group.pb.h" +#include "dataplane/proto/sai/l2mc.pb.h" #include "dataplane/proto/sai/l2mc_group.pb.h" - #include "dataplane/proto/sai/lag.pb.h" - -#include "dataplane/proto/sai/debug_counter.pb.h" - -#include "dataplane/proto/sai/poe.pb.h" - -#include "dataplane/proto/sai/isolation_group.pb.h" - -#include "dataplane/proto/sai/dash_meter.pb.h" - -#include "dataplane/proto/sai/dash_acl.pb.h" - -#include "dataplane/proto/sai/scheduler_group.pb.h" - +#include "dataplane/proto/sai/macsec.pb.h" #include "dataplane/proto/sai/mcast_fdb.pb.h" - #include "dataplane/proto/sai/mirror.pb.h" - +#include "dataplane/proto/sai/mpls.pb.h" +#include "dataplane/proto/sai/my_mac.pb.h" +#include "dataplane/proto/sai/nat.pb.h" +#include "dataplane/proto/sai/neighbor.pb.h" +#include "dataplane/proto/sai/next_hop.pb.h" +#include "dataplane/proto/sai/next_hop_group.pb.h" +#include "dataplane/proto/sai/poe.pb.h" +#include "dataplane/proto/sai/policer.pb.h" +#include "dataplane/proto/sai/port.pb.h" +#include "dataplane/proto/sai/qos_map.pb.h" +#include "dataplane/proto/sai/queue.pb.h" +#include "dataplane/proto/sai/route.pb.h" #include "dataplane/proto/sai/router_interface.pb.h" - #include "dataplane/proto/sai/rpf_group.pb.h" - +#include "dataplane/proto/sai/samplepacket.pb.h" #include "dataplane/proto/sai/scheduler.pb.h" - -#include "dataplane/proto/sai/twamp.pb.h" - +#include "dataplane/proto/sai/scheduler_group.pb.h" #include "dataplane/proto/sai/srv6.pb.h" - -#include "dataplane/proto/sai/dash_eni.pb.h" - -#include "dataplane/proto/sai/dash_direction_lookup.pb.h" - -#include "dataplane/proto/sai/bmtor.pb.h" - -#include "dataplane/proto/sai/port.pb.h" - -#include "dataplane/proto/sai/ars.pb.h" - -#include "dataplane/proto/sai/bridge.pb.h" - -#include "dataplane/proto/sai/counter.pb.h" - -#include "dataplane/proto/sai/next_hop_group.pb.h" - -#include "dataplane/proto/sai/queue.pb.h" - -#include "dataplane/proto/sai/dtel.pb.h" - -#include "dataplane/proto/sai/hash.pb.h" - -#include "dataplane/proto/sai/route.pb.h" - -#include "dataplane/proto/sai/dash_outbound_ca_to_pa.pb.h" - -#include "dataplane/proto/sai/fdb.pb.h" - -#include "dataplane/proto/sai/macsec.pb.h" - +#include "dataplane/proto/sai/stp.pb.h" +#include "dataplane/proto/sai/switch.pb.h" #include "dataplane/proto/sai/system_port.pb.h" - -#include "dataplane/proto/sai/tunnel.pb.h" - -#include "dataplane/proto/sai/ipmc_group.pb.h" - -#include "dataplane/proto/sai/ipmc.pb.h" - -#include "dataplane/proto/sai/dash_vip.pb.h" - -#include "dataplane/proto/sai/dash_vnet.pb.h" - -#include "dataplane/proto/sai/dash_outbound_routing.pb.h" - -#include "dataplane/proto/sai/dash_inbound_routing.pb.h" - -#include "dataplane/proto/sai/mpls.pb.h" - -#include "dataplane/proto/sai/dash_pa_validation.pb.h" - -#include "dataplane/proto/sai/policer.pb.h" - #include "dataplane/proto/sai/tam.pb.h" - -#include "dataplane/proto/sai/wred.pb.h" - -#include "dataplane/proto/sai/my_mac.pb.h" - -#include "dataplane/proto/sai/nat.pb.h" - -#include "dataplane/proto/sai/switch.pb.h" - +#include "dataplane/proto/sai/tunnel.pb.h" +#include "dataplane/proto/sai/twamp.pb.h" +#include "dataplane/proto/sai/udf.pb.h" #include "dataplane/proto/sai/virtual_router.pb.h" - #include "dataplane/proto/sai/vlan.pb.h" - -#include "dataplane/proto/sai/ipsec.pb.h" - -#include "dataplane/proto/sai/neighbor.pb.h" - -#include "dataplane/proto/sai/next_hop.pb.h" - -#include "dataplane/proto/sai/l2mc.pb.h" - -#include "dataplane/proto/sai/ars_profile.pb.h" - -#include "dataplane/proto/sai/samplepacket.pb.h" - -#include "dataplane/proto/sai/generic_programmable.pb.h" - -#include "dataplane/proto/sai/acl.pb.h" - -#include "dataplane/proto/sai/qos_map.pb.h" - +#include "dataplane/proto/sai/wred.pb.h" extern "C" { #include "inc/sai.h" @@ -151,1546 +93,3426 @@ extern "C" { #include "experimental/saiextensions.h" } - -lemming::dataplane::sai::AclActionType convert_sai_acl_action_type_t_to_proto(const sai_int32_t val); -sai_acl_action_type_t convert_sai_acl_action_type_t_to_sai(lemming::dataplane::sai::AclActionType val); -google::protobuf::RepeatedField convert_list_sai_acl_action_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_action_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclBindPointType convert_sai_acl_bind_point_type_t_to_proto(const sai_int32_t val); -sai_acl_bind_point_type_t convert_sai_acl_bind_point_type_t_to_sai(lemming::dataplane::sai::AclBindPointType val); -google::protobuf::RepeatedField convert_list_sai_acl_bind_point_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_bind_point_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclCounterAttr convert_sai_acl_counter_attr_t_to_proto(const sai_int32_t val); -sai_acl_counter_attr_t convert_sai_acl_counter_attr_t_to_sai(lemming::dataplane::sai::AclCounterAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_counter_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclDtelFlowOp convert_sai_acl_dtel_flow_op_t_to_proto(const sai_int32_t val); -sai_acl_dtel_flow_op_t convert_sai_acl_dtel_flow_op_t_to_sai(lemming::dataplane::sai::AclDtelFlowOp val); -google::protobuf::RepeatedField convert_list_sai_acl_dtel_flow_op_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_dtel_flow_op_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclEntryAttr convert_sai_acl_entry_attr_t_to_proto(const sai_int32_t val); -sai_acl_entry_attr_t convert_sai_acl_entry_attr_t_to_sai(lemming::dataplane::sai::AclEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclIpFrag convert_sai_acl_ip_frag_t_to_proto(const sai_int32_t val); -sai_acl_ip_frag_t convert_sai_acl_ip_frag_t_to_sai(lemming::dataplane::sai::AclIpFrag val); -google::protobuf::RepeatedField convert_list_sai_acl_ip_frag_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_ip_frag_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclIpType convert_sai_acl_ip_type_t_to_proto(const sai_int32_t val); -sai_acl_ip_type_t convert_sai_acl_ip_type_t_to_sai(lemming::dataplane::sai::AclIpType val); -google::protobuf::RepeatedField convert_list_sai_acl_ip_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_ip_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclRangeAttr convert_sai_acl_range_attr_t_to_proto(const sai_int32_t val); -sai_acl_range_attr_t convert_sai_acl_range_attr_t_to_sai(lemming::dataplane::sai::AclRangeAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_range_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_range_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclRangeType convert_sai_acl_range_type_t_to_proto(const sai_int32_t val); -sai_acl_range_type_t convert_sai_acl_range_type_t_to_sai(lemming::dataplane::sai::AclRangeType val); -google::protobuf::RepeatedField convert_list_sai_acl_range_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_range_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclStage convert_sai_acl_stage_t_to_proto(const sai_int32_t val); -sai_acl_stage_t convert_sai_acl_stage_t_to_sai(lemming::dataplane::sai::AclStage val); -google::protobuf::RepeatedField convert_list_sai_acl_stage_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableAttr convert_sai_acl_table_attr_t_to_proto(const sai_int32_t val); -sai_acl_table_attr_t convert_sai_acl_table_attr_t_to_sai(lemming::dataplane::sai::AclTableAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_table_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableChainGroupAttr convert_sai_acl_table_chain_group_attr_t_to_proto(const sai_int32_t val); -sai_acl_table_chain_group_attr_t convert_sai_acl_table_chain_group_attr_t_to_sai(lemming::dataplane::sai::AclTableChainGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_chain_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableChainGroupStage convert_sai_acl_table_chain_group_stage_t_to_proto(const sai_int32_t val); -sai_acl_table_chain_group_stage_t convert_sai_acl_table_chain_group_stage_t_to_sai(lemming::dataplane::sai::AclTableChainGroupStage val); -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_stage_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_chain_group_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableChainGroupType convert_sai_acl_table_chain_group_type_t_to_proto(const sai_int32_t val); -sai_acl_table_chain_group_type_t convert_sai_acl_table_chain_group_type_t_to_sai(lemming::dataplane::sai::AclTableChainGroupType val); -google::protobuf::RepeatedField convert_list_sai_acl_table_chain_group_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_chain_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableGroupAttr convert_sai_acl_table_group_attr_t_to_proto(const sai_int32_t val); -sai_acl_table_group_attr_t convert_sai_acl_table_group_attr_t_to_sai(lemming::dataplane::sai::AclTableGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_table_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableGroupMemberAttr convert_sai_acl_table_group_member_attr_t_to_proto(const sai_int32_t val); -sai_acl_table_group_member_attr_t convert_sai_acl_table_group_member_attr_t_to_sai(lemming::dataplane::sai::AclTableGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_acl_table_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableGroupType convert_sai_acl_table_group_type_t_to_proto(const sai_int32_t val); -sai_acl_table_group_type_t convert_sai_acl_table_group_type_t_to_sai(lemming::dataplane::sai::AclTableGroupType val); -google::protobuf::RepeatedField convert_list_sai_acl_table_group_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableMatchType convert_sai_acl_table_match_type_t_to_proto(const sai_int32_t val); -sai_acl_table_match_type_t convert_sai_acl_table_match_type_t_to_sai(lemming::dataplane::sai::AclTableMatchType val); -google::protobuf::RepeatedField convert_list_sai_acl_table_match_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_match_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::AclTableSupportedMatchType convert_sai_acl_table_supported_match_type_t_to_proto(const sai_int32_t val); -sai_acl_table_supported_match_type_t convert_sai_acl_table_supported_match_type_t_to_sai(lemming::dataplane::sai::AclTableSupportedMatchType val); -google::protobuf::RepeatedField convert_list_sai_acl_table_supported_match_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_acl_table_supported_match_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::ApiExtensions convert_sai_api_extensions_t_to_proto(const sai_int32_t val); -sai_api_extensions_t convert_sai_api_extensions_t_to_sai(lemming::dataplane::sai::ApiExtensions val); -google::protobuf::RepeatedField convert_list_sai_api_extensions_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_api_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); +lemming::dataplane::sai::AclActionType convert_sai_acl_action_type_t_to_proto( + const sai_int32_t val); +sai_acl_action_type_t convert_sai_acl_action_type_t_to_sai( + lemming::dataplane::sai::AclActionType val); +google::protobuf::RepeatedField +convert_list_sai_acl_action_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_action_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclBindPointType +convert_sai_acl_bind_point_type_t_to_proto(const sai_int32_t val); +sai_acl_bind_point_type_t convert_sai_acl_bind_point_type_t_to_sai( + lemming::dataplane::sai::AclBindPointType val); +google::protobuf::RepeatedField +convert_list_sai_acl_bind_point_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_bind_point_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclCounterAttr convert_sai_acl_counter_attr_t_to_proto( + const sai_int32_t val); +sai_acl_counter_attr_t convert_sai_acl_counter_attr_t_to_sai( + lemming::dataplane::sai::AclCounterAttr val); +google::protobuf::RepeatedField +convert_list_sai_acl_counter_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclDtelFlowOp convert_sai_acl_dtel_flow_op_t_to_proto( + const sai_int32_t val); +sai_acl_dtel_flow_op_t convert_sai_acl_dtel_flow_op_t_to_sai( + lemming::dataplane::sai::AclDtelFlowOp val); +google::protobuf::RepeatedField +convert_list_sai_acl_dtel_flow_op_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_dtel_flow_op_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclEntryAttr convert_sai_acl_entry_attr_t_to_proto( + const sai_int32_t val); +sai_acl_entry_attr_t convert_sai_acl_entry_attr_t_to_sai( + lemming::dataplane::sai::AclEntryAttr val); +google::protobuf::RepeatedField convert_list_sai_acl_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclIpFrag convert_sai_acl_ip_frag_t_to_proto( + const sai_int32_t val); +sai_acl_ip_frag_t convert_sai_acl_ip_frag_t_to_sai( + lemming::dataplane::sai::AclIpFrag val); +google::protobuf::RepeatedField convert_list_sai_acl_ip_frag_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_ip_frag_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclIpType convert_sai_acl_ip_type_t_to_proto( + const sai_int32_t val); +sai_acl_ip_type_t convert_sai_acl_ip_type_t_to_sai( + lemming::dataplane::sai::AclIpType val); +google::protobuf::RepeatedField convert_list_sai_acl_ip_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_ip_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclRangeAttr convert_sai_acl_range_attr_t_to_proto( + const sai_int32_t val); +sai_acl_range_attr_t convert_sai_acl_range_attr_t_to_sai( + lemming::dataplane::sai::AclRangeAttr val); +google::protobuf::RepeatedField convert_list_sai_acl_range_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_range_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclRangeType convert_sai_acl_range_type_t_to_proto( + const sai_int32_t val); +sai_acl_range_type_t convert_sai_acl_range_type_t_to_sai( + lemming::dataplane::sai::AclRangeType val); +google::protobuf::RepeatedField convert_list_sai_acl_range_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_range_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclStage convert_sai_acl_stage_t_to_proto( + const sai_int32_t val); +sai_acl_stage_t convert_sai_acl_stage_t_to_sai( + lemming::dataplane::sai::AclStage val); +google::protobuf::RepeatedField convert_list_sai_acl_stage_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableAttr convert_sai_acl_table_attr_t_to_proto( + const sai_int32_t val); +sai_acl_table_attr_t convert_sai_acl_table_attr_t_to_sai( + lemming::dataplane::sai::AclTableAttr val); +google::protobuf::RepeatedField convert_list_sai_acl_table_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableChainGroupAttr +convert_sai_acl_table_chain_group_attr_t_to_proto(const sai_int32_t val); +sai_acl_table_chain_group_attr_t +convert_sai_acl_table_chain_group_attr_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_chain_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableChainGroupStage +convert_sai_acl_table_chain_group_stage_t_to_proto(const sai_int32_t val); +sai_acl_table_chain_group_stage_t +convert_sai_acl_table_chain_group_stage_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupStage val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_stage_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_chain_group_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableChainGroupType +convert_sai_acl_table_chain_group_type_t_to_proto(const sai_int32_t val); +sai_acl_table_chain_group_type_t +convert_sai_acl_table_chain_group_type_t_to_sai( + lemming::dataplane::sai::AclTableChainGroupType val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_chain_group_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_chain_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableGroupAttr +convert_sai_acl_table_group_attr_t_to_proto(const sai_int32_t val); +sai_acl_table_group_attr_t convert_sai_acl_table_group_attr_t_to_sai( + lemming::dataplane::sai::AclTableGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_table_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableGroupMemberAttr +convert_sai_acl_table_group_member_attr_t_to_proto(const sai_int32_t val); +sai_acl_table_group_member_attr_t +convert_sai_acl_table_group_member_attr_t_to_sai( + lemming::dataplane::sai::AclTableGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_member_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableGroupType +convert_sai_acl_table_group_type_t_to_proto(const sai_int32_t val); +sai_acl_table_group_type_t convert_sai_acl_table_group_type_t_to_sai( + lemming::dataplane::sai::AclTableGroupType val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_group_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_table_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableMatchType +convert_sai_acl_table_match_type_t_to_proto(const sai_int32_t val); +sai_acl_table_match_type_t convert_sai_acl_table_match_type_t_to_sai( + lemming::dataplane::sai::AclTableMatchType val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_match_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_acl_table_match_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::AclTableSupportedMatchType +convert_sai_acl_table_supported_match_type_t_to_proto(const sai_int32_t val); +sai_acl_table_supported_match_type_t +convert_sai_acl_table_supported_match_type_t_to_sai( + lemming::dataplane::sai::AclTableSupportedMatchType val); +google::protobuf::RepeatedField +convert_list_sai_acl_table_supported_match_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_acl_table_supported_match_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::ApiExtensions convert_sai_api_extensions_t_to_proto( + const sai_int32_t val); +sai_api_extensions_t convert_sai_api_extensions_t_to_sai( + lemming::dataplane::sai::ApiExtensions val); +google::protobuf::RepeatedField convert_list_sai_api_extensions_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_api_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); lemming::dataplane::sai::Api convert_sai_api_t_to_proto(const sai_int32_t val); sai_api_t convert_sai_api_t_to_sai(lemming::dataplane::sai::Api val); -google::protobuf::RepeatedField convert_list_sai_api_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_api_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdEncapsulationType convert_sai_bfd_encapsulation_type_t_to_proto(const sai_int32_t val); -sai_bfd_encapsulation_type_t convert_sai_bfd_encapsulation_type_t_to_sai(lemming::dataplane::sai::BfdEncapsulationType val); -google::protobuf::RepeatedField convert_list_sai_bfd_encapsulation_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_encapsulation_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdSessionAttr convert_sai_bfd_session_attr_t_to_proto(const sai_int32_t val); -sai_bfd_session_attr_t convert_sai_bfd_session_attr_t_to_sai(lemming::dataplane::sai::BfdSessionAttr val); -google::protobuf::RepeatedField convert_list_sai_bfd_session_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdSessionOffloadType convert_sai_bfd_session_offload_type_t_to_proto(const sai_int32_t val); -sai_bfd_session_offload_type_t convert_sai_bfd_session_offload_type_t_to_sai(lemming::dataplane::sai::BfdSessionOffloadType val); -google::protobuf::RepeatedField convert_list_sai_bfd_session_offload_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_session_offload_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdSessionStat convert_sai_bfd_session_stat_t_to_proto(const sai_int32_t val); -sai_bfd_session_stat_t convert_sai_bfd_session_stat_t_to_sai(lemming::dataplane::sai::BfdSessionStat val); -google::protobuf::RepeatedField convert_list_sai_bfd_session_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_session_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdSessionState convert_sai_bfd_session_state_t_to_proto(const sai_int32_t val); -sai_bfd_session_state_t convert_sai_bfd_session_state_t_to_sai(lemming::dataplane::sai::BfdSessionState val); -google::protobuf::RepeatedField convert_list_sai_bfd_session_state_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_session_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BfdSessionType convert_sai_bfd_session_type_t_to_proto(const sai_int32_t val); -sai_bfd_session_type_t convert_sai_bfd_session_type_t_to_sai(lemming::dataplane::sai::BfdSessionType val); -google::protobuf::RepeatedField convert_list_sai_bfd_session_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bfd_session_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgeAttr convert_sai_bridge_attr_t_to_proto(const sai_int32_t val); -sai_bridge_attr_t convert_sai_bridge_attr_t_to_sai(lemming::dataplane::sai::BridgeAttr val); -google::protobuf::RepeatedField convert_list_sai_bridge_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgeFloodControlType convert_sai_bridge_flood_control_type_t_to_proto(const sai_int32_t val); -sai_bridge_flood_control_type_t convert_sai_bridge_flood_control_type_t_to_sai(lemming::dataplane::sai::BridgeFloodControlType val); -google::protobuf::RepeatedField convert_list_sai_bridge_flood_control_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_flood_control_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgePortAttr convert_sai_bridge_port_attr_t_to_proto(const sai_int32_t val); -sai_bridge_port_attr_t convert_sai_bridge_port_attr_t_to_sai(lemming::dataplane::sai::BridgePortAttr val); -google::protobuf::RepeatedField convert_list_sai_bridge_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgePortFdbLearningMode convert_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_int32_t val); -sai_bridge_port_fdb_learning_mode_t convert_sai_bridge_port_fdb_learning_mode_t_to_sai(lemming::dataplane::sai::BridgePortFdbLearningMode val); -google::protobuf::RepeatedField convert_list_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_port_fdb_learning_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgePortStat convert_sai_bridge_port_stat_t_to_proto(const sai_int32_t val); -sai_bridge_port_stat_t convert_sai_bridge_port_stat_t_to_sai(lemming::dataplane::sai::BridgePortStat val); -google::protobuf::RepeatedField convert_list_sai_bridge_port_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgePortTaggingMode convert_sai_bridge_port_tagging_mode_t_to_proto(const sai_int32_t val); -sai_bridge_port_tagging_mode_t convert_sai_bridge_port_tagging_mode_t_to_sai(lemming::dataplane::sai::BridgePortTaggingMode val); -google::protobuf::RepeatedField convert_list_sai_bridge_port_tagging_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_port_tagging_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgePortType convert_sai_bridge_port_type_t_to_proto(const sai_int32_t val); -sai_bridge_port_type_t convert_sai_bridge_port_type_t_to_sai(lemming::dataplane::sai::BridgePortType val); -google::protobuf::RepeatedField convert_list_sai_bridge_port_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgeStat convert_sai_bridge_stat_t_to_proto(const sai_int32_t val); -sai_bridge_stat_t convert_sai_bridge_stat_t_to_sai(lemming::dataplane::sai::BridgeStat val); -google::protobuf::RepeatedField convert_list_sai_bridge_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BridgeType convert_sai_bridge_type_t_to_proto(const sai_int32_t val); -sai_bridge_type_t convert_sai_bridge_type_t_to_sai(lemming::dataplane::sai::BridgeType val); -google::protobuf::RepeatedField convert_list_sai_bridge_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bridge_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferPoolAttr convert_sai_buffer_pool_attr_t_to_proto(const sai_int32_t val); -sai_buffer_pool_attr_t convert_sai_buffer_pool_attr_t_to_sai(lemming::dataplane::sai::BufferPoolAttr val); -google::protobuf::RepeatedField convert_list_sai_buffer_pool_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_pool_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferPoolStat convert_sai_buffer_pool_stat_t_to_proto(const sai_int32_t val); -sai_buffer_pool_stat_t convert_sai_buffer_pool_stat_t_to_sai(lemming::dataplane::sai::BufferPoolStat val); -google::protobuf::RepeatedField convert_list_sai_buffer_pool_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_pool_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferPoolThresholdMode convert_sai_buffer_pool_threshold_mode_t_to_proto(const sai_int32_t val); -sai_buffer_pool_threshold_mode_t convert_sai_buffer_pool_threshold_mode_t_to_sai(lemming::dataplane::sai::BufferPoolThresholdMode val); -google::protobuf::RepeatedField convert_list_sai_buffer_pool_threshold_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_pool_threshold_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferPoolType convert_sai_buffer_pool_type_t_to_proto(const sai_int32_t val); -sai_buffer_pool_type_t convert_sai_buffer_pool_type_t_to_sai(lemming::dataplane::sai::BufferPoolType val); -google::protobuf::RepeatedField convert_list_sai_buffer_pool_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_pool_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferProfileAttr convert_sai_buffer_profile_attr_t_to_proto(const sai_int32_t val); -sai_buffer_profile_attr_t convert_sai_buffer_profile_attr_t_to_sai(lemming::dataplane::sai::BufferProfileAttr val); -google::protobuf::RepeatedField convert_list_sai_buffer_profile_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_profile_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BufferProfileThresholdMode convert_sai_buffer_profile_threshold_mode_t_to_proto(const sai_int32_t val); -sai_buffer_profile_threshold_mode_t convert_sai_buffer_profile_threshold_mode_t_to_sai(lemming::dataplane::sai::BufferProfileThresholdMode val); -google::protobuf::RepeatedField convert_list_sai_buffer_profile_threshold_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_buffer_profile_threshold_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::BulkOpErrorMode convert_sai_bulk_op_error_mode_t_to_proto(const sai_int32_t val); -sai_bulk_op_error_mode_t convert_sai_bulk_op_error_mode_t_to_sai(lemming::dataplane::sai::BulkOpErrorMode val); -google::protobuf::RepeatedField convert_list_sai_bulk_op_error_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_bulk_op_error_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::CommonApi convert_sai_common_api_t_to_proto(const sai_int32_t val); -sai_common_api_t convert_sai_common_api_t_to_sai(lemming::dataplane::sai::CommonApi val); -google::protobuf::RepeatedField convert_list_sai_common_api_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_common_api_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::CounterAttr convert_sai_counter_attr_t_to_proto(const sai_int32_t val); -sai_counter_attr_t convert_sai_counter_attr_t_to_sai(lemming::dataplane::sai::CounterAttr val); -google::protobuf::RepeatedField convert_list_sai_counter_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::CounterStat convert_sai_counter_stat_t_to_proto(const sai_int32_t val); -sai_counter_stat_t convert_sai_counter_stat_t_to_sai(lemming::dataplane::sai::CounterStat val); -google::protobuf::RepeatedField convert_list_sai_counter_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_counter_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::CounterType convert_sai_counter_type_t_to_proto(const sai_int32_t val); -sai_counter_type_t convert_sai_counter_type_t_to_sai(lemming::dataplane::sai::CounterType val); -google::protobuf::RepeatedField convert_list_sai_counter_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_counter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DashDirection convert_sai_dash_direction_t_to_proto(const sai_int32_t val); -sai_dash_direction_t convert_sai_dash_direction_t_to_sai(lemming::dataplane::sai::DashDirection val); -google::protobuf::RepeatedField convert_list_sai_dash_direction_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dash_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DashEncapsulation convert_sai_dash_encapsulation_t_to_proto(const sai_int32_t val); -sai_dash_encapsulation_t convert_sai_dash_encapsulation_t_to_sai(lemming::dataplane::sai::DashEncapsulation val); -google::protobuf::RepeatedField convert_list_sai_dash_encapsulation_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dash_encapsulation_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DashTunnelDscpMode convert_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_int32_t val); -sai_dash_tunnel_dscp_mode_t convert_sai_dash_tunnel_dscp_mode_t_to_sai(lemming::dataplane::sai::DashTunnelDscpMode val); -google::protobuf::RepeatedField convert_list_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dash_tunnel_dscp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DebugCounterAttr convert_sai_debug_counter_attr_t_to_proto(const sai_int32_t val); -sai_debug_counter_attr_t convert_sai_debug_counter_attr_t_to_sai(lemming::dataplane::sai::DebugCounterAttr val); -google::protobuf::RepeatedField convert_list_sai_debug_counter_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_debug_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DebugCounterBindMethod convert_sai_debug_counter_bind_method_t_to_proto(const sai_int32_t val); -sai_debug_counter_bind_method_t convert_sai_debug_counter_bind_method_t_to_sai(lemming::dataplane::sai::DebugCounterBindMethod val); -google::protobuf::RepeatedField convert_list_sai_debug_counter_bind_method_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_debug_counter_bind_method_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DebugCounterType convert_sai_debug_counter_type_t_to_proto(const sai_int32_t val); -sai_debug_counter_type_t convert_sai_debug_counter_type_t_to_sai(lemming::dataplane::sai::DebugCounterType val); -google::protobuf::RepeatedField convert_list_sai_debug_counter_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_debug_counter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelAttr convert_sai_dtel_attr_t_to_proto(const sai_int32_t val); -sai_dtel_attr_t convert_sai_dtel_attr_t_to_sai(lemming::dataplane::sai::DtelAttr val); -google::protobuf::RepeatedField convert_list_sai_dtel_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelEventAttr convert_sai_dtel_event_attr_t_to_proto(const sai_int32_t val); -sai_dtel_event_attr_t convert_sai_dtel_event_attr_t_to_sai(lemming::dataplane::sai::DtelEventAttr val); -google::protobuf::RepeatedField convert_list_sai_dtel_event_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_event_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelEventType convert_sai_dtel_event_type_t_to_proto(const sai_int32_t val); -sai_dtel_event_type_t convert_sai_dtel_event_type_t_to_sai(lemming::dataplane::sai::DtelEventType val); -google::protobuf::RepeatedField convert_list_sai_dtel_event_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelIntSessionAttr convert_sai_dtel_int_session_attr_t_to_proto(const sai_int32_t val); -sai_dtel_int_session_attr_t convert_sai_dtel_int_session_attr_t_to_sai(lemming::dataplane::sai::DtelIntSessionAttr val); -google::protobuf::RepeatedField convert_list_sai_dtel_int_session_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_int_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelQueueReportAttr convert_sai_dtel_queue_report_attr_t_to_proto(const sai_int32_t val); -sai_dtel_queue_report_attr_t convert_sai_dtel_queue_report_attr_t_to_sai(lemming::dataplane::sai::DtelQueueReportAttr val); -google::protobuf::RepeatedField convert_list_sai_dtel_queue_report_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_queue_report_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::DtelReportSessionAttr convert_sai_dtel_report_session_attr_t_to_proto(const sai_int32_t val); -sai_dtel_report_session_attr_t convert_sai_dtel_report_session_attr_t_to_sai(lemming::dataplane::sai::DtelReportSessionAttr val); -google::protobuf::RepeatedField convert_list_sai_dtel_report_session_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_dtel_report_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::EcnMarkMode convert_sai_ecn_mark_mode_t_to_proto(const sai_int32_t val); -sai_ecn_mark_mode_t convert_sai_ecn_mark_mode_t_to_sai(lemming::dataplane::sai::EcnMarkMode val); -google::protobuf::RepeatedField convert_list_sai_ecn_mark_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ecn_mark_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::ErspanEncapsulationType convert_sai_erspan_encapsulation_type_t_to_proto(const sai_int32_t val); -sai_erspan_encapsulation_type_t convert_sai_erspan_encapsulation_type_t_to_sai(lemming::dataplane::sai::ErspanEncapsulationType val); -google::protobuf::RepeatedField convert_list_sai_erspan_encapsulation_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_erspan_encapsulation_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FdbEntryAttr convert_sai_fdb_entry_attr_t_to_proto(const sai_int32_t val); -sai_fdb_entry_attr_t convert_sai_fdb_entry_attr_t_to_sai(lemming::dataplane::sai::FdbEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_fdb_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fdb_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FdbEntryType convert_sai_fdb_entry_type_t_to_proto(const sai_int32_t val); -sai_fdb_entry_type_t convert_sai_fdb_entry_type_t_to_sai(lemming::dataplane::sai::FdbEntryType val); -google::protobuf::RepeatedField convert_list_sai_fdb_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fdb_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FdbEvent convert_sai_fdb_event_t_to_proto(const sai_int32_t val); -sai_fdb_event_t convert_sai_fdb_event_t_to_sai(lemming::dataplane::sai::FdbEvent val); -google::protobuf::RepeatedField convert_list_sai_fdb_event_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fdb_event_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FdbFlushAttr convert_sai_fdb_flush_attr_t_to_proto(const sai_int32_t val); -sai_fdb_flush_attr_t convert_sai_fdb_flush_attr_t_to_sai(lemming::dataplane::sai::FdbFlushAttr val); -google::protobuf::RepeatedField convert_list_sai_fdb_flush_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fdb_flush_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FdbFlushEntryType convert_sai_fdb_flush_entry_type_t_to_proto(const sai_int32_t val); -sai_fdb_flush_entry_type_t convert_sai_fdb_flush_entry_type_t_to_sai(lemming::dataplane::sai::FdbFlushEntryType val); -google::protobuf::RepeatedField convert_list_sai_fdb_flush_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fdb_flush_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::FineGrainedHashFieldAttr convert_sai_fine_grained_hash_field_attr_t_to_proto(const sai_int32_t val); -sai_fine_grained_hash_field_attr_t convert_sai_fine_grained_hash_field_attr_t_to_sai(lemming::dataplane::sai::FineGrainedHashFieldAttr val); -google::protobuf::RepeatedField convert_list_sai_fine_grained_hash_field_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_fine_grained_hash_field_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::GenericProgrammableAttr convert_sai_generic_programmable_attr_t_to_proto(const sai_int32_t val); -sai_generic_programmable_attr_t convert_sai_generic_programmable_attr_t_to_sai(lemming::dataplane::sai::GenericProgrammableAttr val); -google::protobuf::RepeatedField convert_list_sai_generic_programmable_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_generic_programmable_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HashAlgorithm convert_sai_hash_algorithm_t_to_proto(const sai_int32_t val); -sai_hash_algorithm_t convert_sai_hash_algorithm_t_to_sai(lemming::dataplane::sai::HashAlgorithm val); -google::protobuf::RepeatedField convert_list_sai_hash_algorithm_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hash_algorithm_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HashAttr convert_sai_hash_attr_t_to_proto(const sai_int32_t val); -sai_hash_attr_t convert_sai_hash_attr_t_to_sai(lemming::dataplane::sai::HashAttr val); -google::protobuf::RepeatedField convert_list_sai_hash_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hash_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HealthDataType convert_sai_health_data_type_t_to_proto(const sai_int32_t val); -sai_health_data_type_t convert_sai_health_data_type_t_to_sai(lemming::dataplane::sai::HealthDataType val); -google::protobuf::RepeatedField convert_list_sai_health_data_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_health_data_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifAttr convert_sai_hostif_attr_t_to_proto(const sai_int32_t val); -sai_hostif_attr_t convert_sai_hostif_attr_t_to_sai(lemming::dataplane::sai::HostifAttr val); -google::protobuf::RepeatedField convert_list_sai_hostif_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTableEntryAttr convert_sai_hostif_table_entry_attr_t_to_proto(const sai_int32_t val); -sai_hostif_table_entry_attr_t convert_sai_hostif_table_entry_attr_t_to_sai(lemming::dataplane::sai::HostifTableEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_table_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTableEntryChannelType convert_sai_hostif_table_entry_channel_type_t_to_proto(const sai_int32_t val); -sai_hostif_table_entry_channel_type_t convert_sai_hostif_table_entry_channel_type_t_to_sai(lemming::dataplane::sai::HostifTableEntryChannelType val); -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_channel_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_table_entry_channel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTableEntryType convert_sai_hostif_table_entry_type_t_to_proto(const sai_int32_t val); -sai_hostif_table_entry_type_t convert_sai_hostif_table_entry_type_t_to_sai(lemming::dataplane::sai::HostifTableEntryType val); -google::protobuf::RepeatedField convert_list_sai_hostif_table_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_table_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTrapAttr convert_sai_hostif_trap_attr_t_to_proto(const sai_int32_t val); -sai_hostif_trap_attr_t convert_sai_hostif_trap_attr_t_to_sai(lemming::dataplane::sai::HostifTrapAttr val); -google::protobuf::RepeatedField convert_list_sai_hostif_trap_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_trap_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTrapGroupAttr convert_sai_hostif_trap_group_attr_t_to_proto(const sai_int32_t val); -sai_hostif_trap_group_attr_t convert_sai_hostif_trap_group_attr_t_to_sai(lemming::dataplane::sai::HostifTrapGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_hostif_trap_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_trap_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTrapType convert_sai_hostif_trap_type_t_to_proto(const sai_int32_t val); -sai_hostif_trap_type_t convert_sai_hostif_trap_type_t_to_sai(lemming::dataplane::sai::HostifTrapType val); -google::protobuf::RepeatedField convert_list_sai_hostif_trap_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_trap_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifTxType convert_sai_hostif_tx_type_t_to_proto(const sai_int32_t val); -sai_hostif_tx_type_t convert_sai_hostif_tx_type_t_to_sai(lemming::dataplane::sai::HostifTxType val); -google::protobuf::RepeatedField convert_list_sai_hostif_tx_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_tx_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifType convert_sai_hostif_type_t_to_proto(const sai_int32_t val); -sai_hostif_type_t convert_sai_hostif_type_t_to_sai(lemming::dataplane::sai::HostifType val); -google::protobuf::RepeatedField convert_list_sai_hostif_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifUserDefinedTrapAttr convert_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_int32_t val); -sai_hostif_user_defined_trap_attr_t convert_sai_hostif_user_defined_trap_attr_t_to_sai(lemming::dataplane::sai::HostifUserDefinedTrapAttr val); -google::protobuf::RepeatedField convert_list_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_user_defined_trap_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifUserDefinedTrapType convert_sai_hostif_user_defined_trap_type_t_to_proto(const sai_int32_t val); -sai_hostif_user_defined_trap_type_t convert_sai_hostif_user_defined_trap_type_t_to_sai(lemming::dataplane::sai::HostifUserDefinedTrapType val); -google::protobuf::RepeatedField convert_list_sai_hostif_user_defined_trap_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_user_defined_trap_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::HostifVlanTag convert_sai_hostif_vlan_tag_t_to_proto(const sai_int32_t val); -sai_hostif_vlan_tag_t convert_sai_hostif_vlan_tag_t_to_sai(lemming::dataplane::sai::HostifVlanTag val); -google::protobuf::RepeatedField convert_list_sai_hostif_vlan_tag_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_hostif_vlan_tag_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::InDropReason convert_sai_in_drop_reason_t_to_proto(const sai_int32_t val); -sai_in_drop_reason_t convert_sai_in_drop_reason_t_to_sai(lemming::dataplane::sai::InDropReason val); -google::protobuf::RepeatedField convert_list_sai_in_drop_reason_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_in_drop_reason_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IngressPriorityGroupAttr convert_sai_ingress_priority_group_attr_t_to_proto(const sai_int32_t val); -sai_ingress_priority_group_attr_t convert_sai_ingress_priority_group_attr_t_to_sai(lemming::dataplane::sai::IngressPriorityGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_ingress_priority_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ingress_priority_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IngressPriorityGroupStat convert_sai_ingress_priority_group_stat_t_to_proto(const sai_int32_t val); -sai_ingress_priority_group_stat_t convert_sai_ingress_priority_group_stat_t_to_sai(lemming::dataplane::sai::IngressPriorityGroupStat val); -google::protobuf::RepeatedField convert_list_sai_ingress_priority_group_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ingress_priority_group_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::InsegEntryAttr convert_sai_inseg_entry_attr_t_to_proto(const sai_int32_t val); -sai_inseg_entry_attr_t convert_sai_inseg_entry_attr_t_to_sai(lemming::dataplane::sai::InsegEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_inseg_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_inseg_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::InsegEntryPopQosMode convert_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_int32_t val); -sai_inseg_entry_pop_qos_mode_t convert_sai_inseg_entry_pop_qos_mode_t_to_sai(lemming::dataplane::sai::InsegEntryPopQosMode val); -google::protobuf::RepeatedField convert_list_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_inseg_entry_pop_qos_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::InsegEntryPopTtlMode convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_int32_t val); -sai_inseg_entry_pop_ttl_mode_t convert_sai_inseg_entry_pop_ttl_mode_t_to_sai(lemming::dataplane::sai::InsegEntryPopTtlMode val); -google::protobuf::RepeatedField convert_list_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_inseg_entry_pop_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::InsegEntryPscType convert_sai_inseg_entry_psc_type_t_to_proto(const sai_int32_t val); -sai_inseg_entry_psc_type_t convert_sai_inseg_entry_psc_type_t_to_sai(lemming::dataplane::sai::InsegEntryPscType val); -google::protobuf::RepeatedField convert_list_sai_inseg_entry_psc_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_inseg_entry_psc_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpAddrFamily convert_sai_ip_addr_family_t_to_proto(const sai_int32_t val); -sai_ip_addr_family_t convert_sai_ip_addr_family_t_to_sai(lemming::dataplane::sai::IpAddrFamily val); -google::protobuf::RepeatedField convert_list_sai_ip_addr_family_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ip_addr_family_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpmcEntryAttr convert_sai_ipmc_entry_attr_t_to_proto(const sai_int32_t val); -sai_ipmc_entry_attr_t convert_sai_ipmc_entry_attr_t_to_sai(lemming::dataplane::sai::IpmcEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_ipmc_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipmc_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpmcEntryType convert_sai_ipmc_entry_type_t_to_proto(const sai_int32_t val); -sai_ipmc_entry_type_t convert_sai_ipmc_entry_type_t_to_sai(lemming::dataplane::sai::IpmcEntryType val); -google::protobuf::RepeatedField convert_list_sai_ipmc_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipmc_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpmcGroupAttr convert_sai_ipmc_group_attr_t_to_proto(const sai_int32_t val); -sai_ipmc_group_attr_t convert_sai_ipmc_group_attr_t_to_sai(lemming::dataplane::sai::IpmcGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_ipmc_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipmc_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpmcGroupMemberAttr convert_sai_ipmc_group_member_attr_t_to_proto(const sai_int32_t val); -sai_ipmc_group_member_attr_t convert_sai_ipmc_group_member_attr_t_to_sai(lemming::dataplane::sai::IpmcGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_ipmc_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipmc_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecAttr convert_sai_ipsec_attr_t_to_proto(const sai_int32_t val); -sai_ipsec_attr_t convert_sai_ipsec_attr_t_to_sai(lemming::dataplane::sai::IpsecAttr val); -google::protobuf::RepeatedField convert_list_sai_ipsec_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecCipher convert_sai_ipsec_cipher_t_to_proto(const sai_int32_t val); -sai_ipsec_cipher_t convert_sai_ipsec_cipher_t_to_sai(lemming::dataplane::sai::IpsecCipher val); -google::protobuf::RepeatedField convert_list_sai_ipsec_cipher_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_cipher_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecDirection convert_sai_ipsec_direction_t_to_proto(const sai_int32_t val); -sai_ipsec_direction_t convert_sai_ipsec_direction_t_to_sai(lemming::dataplane::sai::IpsecDirection val); -google::protobuf::RepeatedField convert_list_sai_ipsec_direction_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecPortAttr convert_sai_ipsec_port_attr_t_to_proto(const sai_int32_t val); -sai_ipsec_port_attr_t convert_sai_ipsec_port_attr_t_to_sai(lemming::dataplane::sai::IpsecPortAttr val); -google::protobuf::RepeatedField convert_list_sai_ipsec_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecPortStat convert_sai_ipsec_port_stat_t_to_proto(const sai_int32_t val); -sai_ipsec_port_stat_t convert_sai_ipsec_port_stat_t_to_sai(lemming::dataplane::sai::IpsecPortStat val); -google::protobuf::RepeatedField convert_list_sai_ipsec_port_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecSaAttr convert_sai_ipsec_sa_attr_t_to_proto(const sai_int32_t val); -sai_ipsec_sa_attr_t convert_sai_ipsec_sa_attr_t_to_sai(lemming::dataplane::sai::IpsecSaAttr val); -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_sa_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecSaOctetCountStatus convert_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_int32_t val); -sai_ipsec_sa_octet_count_status_t convert_sai_ipsec_sa_octet_count_status_t_to_sai(lemming::dataplane::sai::IpsecSaOctetCountStatus val); -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_sa_octet_count_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IpsecSaStat convert_sai_ipsec_sa_stat_t_to_proto(const sai_int32_t val); -sai_ipsec_sa_stat_t convert_sai_ipsec_sa_stat_t_to_sai(lemming::dataplane::sai::IpsecSaStat val); -google::protobuf::RepeatedField convert_list_sai_ipsec_sa_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_ipsec_sa_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IsolationGroupAttr convert_sai_isolation_group_attr_t_to_proto(const sai_int32_t val); -sai_isolation_group_attr_t convert_sai_isolation_group_attr_t_to_sai(lemming::dataplane::sai::IsolationGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_isolation_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_isolation_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IsolationGroupMemberAttr convert_sai_isolation_group_member_attr_t_to_proto(const sai_int32_t val); -sai_isolation_group_member_attr_t convert_sai_isolation_group_member_attr_t_to_sai(lemming::dataplane::sai::IsolationGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_isolation_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_isolation_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::IsolationGroupType convert_sai_isolation_group_type_t_to_proto(const sai_int32_t val); -sai_isolation_group_type_t convert_sai_isolation_group_type_t_to_sai(lemming::dataplane::sai::IsolationGroupType val); -google::protobuf::RepeatedField convert_list_sai_isolation_group_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_isolation_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::L2mcEntryAttr convert_sai_l2mc_entry_attr_t_to_proto(const sai_int32_t val); -sai_l2mc_entry_attr_t convert_sai_l2mc_entry_attr_t_to_sai(lemming::dataplane::sai::L2mcEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_l2mc_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_l2mc_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::L2mcEntryType convert_sai_l2mc_entry_type_t_to_proto(const sai_int32_t val); -sai_l2mc_entry_type_t convert_sai_l2mc_entry_type_t_to_sai(lemming::dataplane::sai::L2mcEntryType val); -google::protobuf::RepeatedField convert_list_sai_l2mc_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_l2mc_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::L2mcGroupAttr convert_sai_l2mc_group_attr_t_to_proto(const sai_int32_t val); -sai_l2mc_group_attr_t convert_sai_l2mc_group_attr_t_to_sai(lemming::dataplane::sai::L2mcGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_l2mc_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_l2mc_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::L2mcGroupMemberAttr convert_sai_l2mc_group_member_attr_t_to_proto(const sai_int32_t val); -sai_l2mc_group_member_attr_t convert_sai_l2mc_group_member_attr_t_to_sai(lemming::dataplane::sai::L2mcGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_l2mc_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_l2mc_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::LagAttr convert_sai_lag_attr_t_to_proto(const sai_int32_t val); -sai_lag_attr_t convert_sai_lag_attr_t_to_sai(lemming::dataplane::sai::LagAttr val); -google::protobuf::RepeatedField convert_list_sai_lag_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_lag_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::LagMemberAttr convert_sai_lag_member_attr_t_to_proto(const sai_int32_t val); -sai_lag_member_attr_t convert_sai_lag_member_attr_t_to_sai(lemming::dataplane::sai::LagMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_lag_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_lag_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::LogLevel convert_sai_log_level_t_to_proto(const sai_int32_t val); -sai_log_level_t convert_sai_log_level_t_to_sai(lemming::dataplane::sai::LogLevel val); -google::protobuf::RepeatedField convert_list_sai_log_level_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_log_level_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecAttr convert_sai_macsec_attr_t_to_proto(const sai_int32_t val); -sai_macsec_attr_t convert_sai_macsec_attr_t_to_sai(lemming::dataplane::sai::MacsecAttr val); -google::protobuf::RepeatedField convert_list_sai_macsec_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecCipherSuite convert_sai_macsec_cipher_suite_t_to_proto(const sai_int32_t val); -sai_macsec_cipher_suite_t convert_sai_macsec_cipher_suite_t_to_sai(lemming::dataplane::sai::MacsecCipherSuite val); -google::protobuf::RepeatedField convert_list_sai_macsec_cipher_suite_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_cipher_suite_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecDirection convert_sai_macsec_direction_t_to_proto(const sai_int32_t val); -sai_macsec_direction_t convert_sai_macsec_direction_t_to_sai(lemming::dataplane::sai::MacsecDirection val); -google::protobuf::RepeatedField convert_list_sai_macsec_direction_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_direction_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecFlowAttr convert_sai_macsec_flow_attr_t_to_proto(const sai_int32_t val); -sai_macsec_flow_attr_t convert_sai_macsec_flow_attr_t_to_sai(lemming::dataplane::sai::MacsecFlowAttr val); -google::protobuf::RepeatedField convert_list_sai_macsec_flow_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_flow_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecFlowStat convert_sai_macsec_flow_stat_t_to_proto(const sai_int32_t val); -sai_macsec_flow_stat_t convert_sai_macsec_flow_stat_t_to_sai(lemming::dataplane::sai::MacsecFlowStat val); -google::protobuf::RepeatedField convert_list_sai_macsec_flow_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_flow_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc convert_sai_macsec_max_secure_associations_per_sc_t_to_proto(const sai_int32_t val); -sai_macsec_max_secure_associations_per_sc_t convert_sai_macsec_max_secure_associations_per_sc_t_to_sai(lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc val); -google::protobuf::RepeatedField convert_list_sai_macsec_max_secure_associations_per_sc_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_max_secure_associations_per_sc_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecPortAttr convert_sai_macsec_port_attr_t_to_proto(const sai_int32_t val); -sai_macsec_port_attr_t convert_sai_macsec_port_attr_t_to_sai(lemming::dataplane::sai::MacsecPortAttr val); -google::protobuf::RepeatedField convert_list_sai_macsec_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecPortStat convert_sai_macsec_port_stat_t_to_proto(const sai_int32_t val); -sai_macsec_port_stat_t convert_sai_macsec_port_stat_t_to_sai(lemming::dataplane::sai::MacsecPortStat val); -google::protobuf::RepeatedField convert_list_sai_macsec_port_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecSaAttr convert_sai_macsec_sa_attr_t_to_proto(const sai_int32_t val); -sai_macsec_sa_attr_t convert_sai_macsec_sa_attr_t_to_sai(lemming::dataplane::sai::MacsecSaAttr val); -google::protobuf::RepeatedField convert_list_sai_macsec_sa_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_sa_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecSaStat convert_sai_macsec_sa_stat_t_to_proto(const sai_int32_t val); -sai_macsec_sa_stat_t convert_sai_macsec_sa_stat_t_to_sai(lemming::dataplane::sai::MacsecSaStat val); -google::protobuf::RepeatedField convert_list_sai_macsec_sa_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_sa_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecScAttr convert_sai_macsec_sc_attr_t_to_proto(const sai_int32_t val); -sai_macsec_sc_attr_t convert_sai_macsec_sc_attr_t_to_sai(lemming::dataplane::sai::MacsecScAttr val); -google::protobuf::RepeatedField convert_list_sai_macsec_sc_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_sc_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MacsecScStat convert_sai_macsec_sc_stat_t_to_proto(const sai_int32_t val); -sai_macsec_sc_stat_t convert_sai_macsec_sc_stat_t_to_sai(lemming::dataplane::sai::MacsecScStat val); -google::protobuf::RepeatedField convert_list_sai_macsec_sc_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_macsec_sc_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::McastFdbEntryAttr convert_sai_mcast_fdb_entry_attr_t_to_proto(const sai_int32_t val); -sai_mcast_fdb_entry_attr_t convert_sai_mcast_fdb_entry_attr_t_to_sai(lemming::dataplane::sai::McastFdbEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_mcast_fdb_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_mcast_fdb_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MeterType convert_sai_meter_type_t_to_proto(const sai_int32_t val); -sai_meter_type_t convert_sai_meter_type_t_to_sai(lemming::dataplane::sai::MeterType val); -google::protobuf::RepeatedField convert_list_sai_meter_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_meter_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MirrorSessionAttr convert_sai_mirror_session_attr_t_to_proto(const sai_int32_t val); -sai_mirror_session_attr_t convert_sai_mirror_session_attr_t_to_sai(lemming::dataplane::sai::MirrorSessionAttr val); -google::protobuf::RepeatedField convert_list_sai_mirror_session_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_mirror_session_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MirrorSessionCongestionMode convert_sai_mirror_session_congestion_mode_t_to_proto(const sai_int32_t val); -sai_mirror_session_congestion_mode_t convert_sai_mirror_session_congestion_mode_t_to_sai(lemming::dataplane::sai::MirrorSessionCongestionMode val); -google::protobuf::RepeatedField convert_list_sai_mirror_session_congestion_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_mirror_session_congestion_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MirrorSessionType convert_sai_mirror_session_type_t_to_proto(const sai_int32_t val); -sai_mirror_session_type_t convert_sai_mirror_session_type_t_to_sai(lemming::dataplane::sai::MirrorSessionType val); -google::protobuf::RepeatedField convert_list_sai_mirror_session_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_mirror_session_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MyMacAttr convert_sai_my_mac_attr_t_to_proto(const sai_int32_t val); -sai_my_mac_attr_t convert_sai_my_mac_attr_t_to_sai(lemming::dataplane::sai::MyMacAttr val); -google::protobuf::RepeatedField convert_list_sai_my_mac_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_my_mac_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MySidEntryAttr convert_sai_my_sid_entry_attr_t_to_proto(const sai_int32_t val); -sai_my_sid_entry_attr_t convert_sai_my_sid_entry_attr_t_to_sai(lemming::dataplane::sai::MySidEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_my_sid_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(const sai_int32_t val); -sai_my_sid_entry_endpoint_behavior_flavor_t convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor val); -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::MySidEntryEndpointBehavior convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_int32_t val); -sai_my_sid_entry_endpoint_behavior_t convert_sai_my_sid_entry_endpoint_behavior_t_to_sai(lemming::dataplane::sai::MySidEntryEndpointBehavior val); -google::protobuf::RepeatedField convert_list_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_my_sid_entry_endpoint_behavior_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NatEntryAttr convert_sai_nat_entry_attr_t_to_proto(const sai_int32_t val); -sai_nat_entry_attr_t convert_sai_nat_entry_attr_t_to_sai(lemming::dataplane::sai::NatEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_nat_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_nat_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NatEvent convert_sai_nat_event_t_to_proto(const sai_int32_t val); -sai_nat_event_t convert_sai_nat_event_t_to_sai(lemming::dataplane::sai::NatEvent val); -google::protobuf::RepeatedField convert_list_sai_nat_event_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_nat_event_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NatType convert_sai_nat_type_t_to_proto(const sai_int32_t val); -sai_nat_type_t convert_sai_nat_type_t_to_sai(lemming::dataplane::sai::NatType val); -google::protobuf::RepeatedField convert_list_sai_nat_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_nat_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NatZoneCounterAttr convert_sai_nat_zone_counter_attr_t_to_proto(const sai_int32_t val); -sai_nat_zone_counter_attr_t convert_sai_nat_zone_counter_attr_t_to_sai(lemming::dataplane::sai::NatZoneCounterAttr val); -google::protobuf::RepeatedField convert_list_sai_nat_zone_counter_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_nat_zone_counter_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NativeHashField convert_sai_native_hash_field_t_to_proto(const sai_int32_t val); -sai_native_hash_field_t convert_sai_native_hash_field_t_to_sai(lemming::dataplane::sai::NativeHashField val); -google::protobuf::RepeatedField convert_list_sai_native_hash_field_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_native_hash_field_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NeighborEntryAttr convert_sai_neighbor_entry_attr_t_to_proto(const sai_int32_t val); -sai_neighbor_entry_attr_t convert_sai_neighbor_entry_attr_t_to_sai(lemming::dataplane::sai::NeighborEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_neighbor_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_neighbor_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopAttr convert_sai_next_hop_attr_t_to_proto(const sai_int32_t val); -sai_next_hop_attr_t convert_sai_next_hop_attr_t_to_sai(lemming::dataplane::sai::NextHopAttr val); -google::protobuf::RepeatedField convert_list_sai_next_hop_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupAttr convert_sai_next_hop_group_attr_t_to_proto(const sai_int32_t val); -sai_next_hop_group_attr_t convert_sai_next_hop_group_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupMapAttr convert_sai_next_hop_group_map_attr_t_to_proto(const sai_int32_t val); -sai_next_hop_group_map_attr_t convert_sai_next_hop_group_map_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupMapAttr val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_map_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupMapType convert_sai_next_hop_group_map_type_t_to_proto(const sai_int32_t val); -sai_next_hop_group_map_type_t convert_sai_next_hop_group_map_type_t_to_sai(lemming::dataplane::sai::NextHopGroupMapType val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_map_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupMemberAttr convert_sai_next_hop_group_member_attr_t_to_proto(const sai_int32_t val); -sai_next_hop_group_member_attr_t convert_sai_next_hop_group_member_attr_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupMemberConfiguredRole convert_sai_next_hop_group_member_configured_role_t_to_proto(const sai_int32_t val); -sai_next_hop_group_member_configured_role_t convert_sai_next_hop_group_member_configured_role_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberConfiguredRole val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_configured_role_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_member_configured_role_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupMemberObservedRole convert_sai_next_hop_group_member_observed_role_t_to_proto(const sai_int32_t val); -sai_next_hop_group_member_observed_role_t convert_sai_next_hop_group_member_observed_role_t_to_sai(lemming::dataplane::sai::NextHopGroupMemberObservedRole val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_member_observed_role_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_member_observed_role_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopGroupType convert_sai_next_hop_group_type_t_to_proto(const sai_int32_t val); -sai_next_hop_group_type_t convert_sai_next_hop_group_type_t_to_sai(lemming::dataplane::sai::NextHopGroupType val); -google::protobuf::RepeatedField convert_list_sai_next_hop_group_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::NextHopType convert_sai_next_hop_type_t_to_proto(const sai_int32_t val); -sai_next_hop_type_t convert_sai_next_hop_type_t_to_sai(lemming::dataplane::sai::NextHopType val); -google::protobuf::RepeatedField convert_list_sai_next_hop_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_next_hop_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::ObjectStage convert_sai_object_stage_t_to_proto(const sai_int32_t val); -sai_object_stage_t convert_sai_object_stage_t_to_sai(lemming::dataplane::sai::ObjectStage val); -google::protobuf::RepeatedField convert_list_sai_object_stage_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_object_stage_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::ObjectTypeExtensions convert_sai_object_type_extensions_t_to_proto(const sai_int32_t val); -sai_object_type_extensions_t convert_sai_object_type_extensions_t_to_sai(lemming::dataplane::sai::ObjectTypeExtensions val); -google::protobuf::RepeatedField convert_list_sai_object_type_extensions_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_object_type_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::ObjectType convert_sai_object_type_t_to_proto(const sai_int32_t val); -sai_object_type_t convert_sai_object_type_t_to_sai(lemming::dataplane::sai::ObjectType val); -google::protobuf::RepeatedField convert_list_sai_object_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_object_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::OutDropReason convert_sai_out_drop_reason_t_to_proto(const sai_int32_t val); -sai_out_drop_reason_t convert_sai_out_drop_reason_t_to_sai(lemming::dataplane::sai::OutDropReason val); -google::protobuf::RepeatedField convert_list_sai_out_drop_reason_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_out_drop_reason_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::OutsegExpMode convert_sai_outseg_exp_mode_t_to_proto(const sai_int32_t val); -sai_outseg_exp_mode_t convert_sai_outseg_exp_mode_t_to_sai(lemming::dataplane::sai::OutsegExpMode val); -google::protobuf::RepeatedField convert_list_sai_outseg_exp_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_outseg_exp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::OutsegTtlMode convert_sai_outseg_ttl_mode_t_to_proto(const sai_int32_t val); -sai_outseg_ttl_mode_t convert_sai_outseg_ttl_mode_t_to_sai(lemming::dataplane::sai::OutsegTtlMode val); -google::protobuf::RepeatedField convert_list_sai_outseg_ttl_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_outseg_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::OutsegType convert_sai_outseg_type_t_to_proto(const sai_int32_t val); -sai_outseg_type_t convert_sai_outseg_type_t_to_sai(lemming::dataplane::sai::OutsegType val); -google::protobuf::RepeatedField convert_list_sai_outseg_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_outseg_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PacketAction convert_sai_packet_action_t_to_proto(const sai_int32_t val); -sai_packet_action_t convert_sai_packet_action_t_to_sai(lemming::dataplane::sai::PacketAction val); -google::protobuf::RepeatedField convert_list_sai_packet_action_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_packet_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PacketColor convert_sai_packet_color_t_to_proto(const sai_int32_t val); -sai_packet_color_t convert_sai_packet_color_t_to_sai(lemming::dataplane::sai::PacketColor val); -google::protobuf::RepeatedField convert_list_sai_packet_color_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_packet_color_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PacketVlan convert_sai_packet_vlan_t_to_proto(const sai_int32_t val); -sai_packet_vlan_t convert_sai_packet_vlan_t_to_sai(lemming::dataplane::sai::PacketVlan val); -google::protobuf::RepeatedField convert_list_sai_packet_vlan_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_packet_vlan_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PoePortActiveChannelType convert_sai_poe_port_active_channel_type_t_to_proto(const sai_int32_t val); -sai_poe_port_active_channel_type_t convert_sai_poe_port_active_channel_type_t_to_sai(lemming::dataplane::sai::PoePortActiveChannelType val); -google::protobuf::RepeatedField convert_list_sai_poe_port_active_channel_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_poe_port_active_channel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PoePortClassMethodType convert_sai_poe_port_class_method_type_t_to_proto(const sai_int32_t val); -sai_poe_port_class_method_type_t convert_sai_poe_port_class_method_type_t_to_sai(lemming::dataplane::sai::PoePortClassMethodType val); -google::protobuf::RepeatedField convert_list_sai_poe_port_class_method_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_poe_port_class_method_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PoePortSignatureType convert_sai_poe_port_signature_type_t_to_proto(const sai_int32_t val); -sai_poe_port_signature_type_t convert_sai_poe_port_signature_type_t_to_sai(lemming::dataplane::sai::PoePortSignatureType val); -google::protobuf::RepeatedField convert_list_sai_poe_port_signature_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_poe_port_signature_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PolicerAttr convert_sai_policer_attr_t_to_proto(const sai_int32_t val); -sai_policer_attr_t convert_sai_policer_attr_t_to_sai(lemming::dataplane::sai::PolicerAttr val); -google::protobuf::RepeatedField convert_list_sai_policer_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_policer_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PolicerColorSource convert_sai_policer_color_source_t_to_proto(const sai_int32_t val); -sai_policer_color_source_t convert_sai_policer_color_source_t_to_sai(lemming::dataplane::sai::PolicerColorSource val); -google::protobuf::RepeatedField convert_list_sai_policer_color_source_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_policer_color_source_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PolicerMode convert_sai_policer_mode_t_to_proto(const sai_int32_t val); -sai_policer_mode_t convert_sai_policer_mode_t_to_sai(lemming::dataplane::sai::PolicerMode val); -google::protobuf::RepeatedField convert_list_sai_policer_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_policer_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PolicerStat convert_sai_policer_stat_t_to_proto(const sai_int32_t val); -sai_policer_stat_t convert_sai_policer_stat_t_to_sai(lemming::dataplane::sai::PolicerStat val); -google::protobuf::RepeatedField convert_list_sai_policer_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_policer_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortAttrExtensions convert_sai_port_attr_extensions_t_to_proto(const sai_int32_t val); -sai_port_attr_extensions_t convert_sai_port_attr_extensions_t_to_sai(lemming::dataplane::sai::PortAttrExtensions val); -google::protobuf::RepeatedField convert_list_sai_port_attr_extensions_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_attr_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortAttr convert_sai_port_attr_t_to_proto(const sai_int32_t val); -sai_port_attr_t convert_sai_port_attr_t_to_sai(lemming::dataplane::sai::PortAttr val); -google::protobuf::RepeatedField convert_list_sai_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortAutoNegConfigMode convert_sai_port_auto_neg_config_mode_t_to_proto(const sai_int32_t val); -sai_port_auto_neg_config_mode_t convert_sai_port_auto_neg_config_mode_t_to_sai(lemming::dataplane::sai::PortAutoNegConfigMode val); -google::protobuf::RepeatedField convert_list_sai_port_auto_neg_config_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_auto_neg_config_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortBreakoutModeType convert_sai_port_breakout_mode_type_t_to_proto(const sai_int32_t val); -sai_port_breakout_mode_type_t convert_sai_port_breakout_mode_type_t_to_sai(lemming::dataplane::sai::PortBreakoutModeType val); -google::protobuf::RepeatedField convert_list_sai_port_breakout_mode_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_breakout_mode_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortCablePairState convert_sai_port_cable_pair_state_t_to_proto(const sai_int32_t val); -sai_port_cable_pair_state_t convert_sai_port_cable_pair_state_t_to_sai(lemming::dataplane::sai::PortCablePairState val); -google::protobuf::RepeatedField convert_list_sai_port_cable_pair_state_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_cable_pair_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortCableType convert_sai_port_cable_type_t_to_proto(const sai_int32_t val); -sai_port_cable_type_t convert_sai_port_cable_type_t_to_sai(lemming::dataplane::sai::PortCableType val); -google::protobuf::RepeatedField convert_list_sai_port_cable_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_cable_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortConnectorAttr convert_sai_port_connector_attr_t_to_proto(const sai_int32_t val); -sai_port_connector_attr_t convert_sai_port_connector_attr_t_to_sai(lemming::dataplane::sai::PortConnectorAttr val); -google::protobuf::RepeatedField convert_list_sai_port_connector_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_connector_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortConnectorFailoverMode convert_sai_port_connector_failover_mode_t_to_proto(const sai_int32_t val); -sai_port_connector_failover_mode_t convert_sai_port_connector_failover_mode_t_to_sai(lemming::dataplane::sai::PortConnectorFailoverMode val); -google::protobuf::RepeatedField convert_list_sai_port_connector_failover_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_connector_failover_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortDatapathEnable convert_sai_port_datapath_enable_t_to_proto(const sai_int32_t val); -sai_port_datapath_enable_t convert_sai_port_datapath_enable_t_to_sai(lemming::dataplane::sai::PortDatapathEnable val); -google::protobuf::RepeatedField convert_list_sai_port_datapath_enable_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_datapath_enable_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortDualMedia convert_sai_port_dual_media_t_to_proto(const sai_int32_t val); -sai_port_dual_media_t convert_sai_port_dual_media_t_to_sai(lemming::dataplane::sai::PortDualMedia val); -google::protobuf::RepeatedField convert_list_sai_port_dual_media_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_dual_media_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortErrStatus convert_sai_port_err_status_t_to_proto(const sai_int32_t val); -sai_port_err_status_t convert_sai_port_err_status_t_to_sai(lemming::dataplane::sai::PortErrStatus val); -google::protobuf::RepeatedField convert_list_sai_port_err_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_err_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortFecModeExtended convert_sai_port_fec_mode_extended_t_to_proto(const sai_int32_t val); -sai_port_fec_mode_extended_t convert_sai_port_fec_mode_extended_t_to_sai(lemming::dataplane::sai::PortFecModeExtended val); -google::protobuf::RepeatedField convert_list_sai_port_fec_mode_extended_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_fec_mode_extended_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortFecMode convert_sai_port_fec_mode_t_to_proto(const sai_int32_t val); -sai_port_fec_mode_t convert_sai_port_fec_mode_t_to_sai(lemming::dataplane::sai::PortFecMode val); -google::protobuf::RepeatedField convert_list_sai_port_fec_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_fec_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortFlowControlMode convert_sai_port_flow_control_mode_t_to_proto(const sai_int32_t val); -sai_port_flow_control_mode_t convert_sai_port_flow_control_mode_t_to_sai(lemming::dataplane::sai::PortFlowControlMode val); -google::protobuf::RepeatedField convert_list_sai_port_flow_control_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_flow_control_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortHostTxReadyStatus convert_sai_port_host_tx_ready_status_t_to_proto(const sai_int32_t val); -sai_port_host_tx_ready_status_t convert_sai_port_host_tx_ready_status_t_to_sai(lemming::dataplane::sai::PortHostTxReadyStatus val); -google::protobuf::RepeatedField convert_list_sai_port_host_tx_ready_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_host_tx_ready_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortInterfaceType convert_sai_port_interface_type_t_to_proto(const sai_int32_t val); -sai_port_interface_type_t convert_sai_port_interface_type_t_to_sai(lemming::dataplane::sai::PortInterfaceType val); -google::protobuf::RepeatedField convert_list_sai_port_interface_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_interface_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortInternalLoopbackMode convert_sai_port_internal_loopback_mode_t_to_proto(const sai_int32_t val); -sai_port_internal_loopback_mode_t convert_sai_port_internal_loopback_mode_t_to_sai(lemming::dataplane::sai::PortInternalLoopbackMode val); -google::protobuf::RepeatedField convert_list_sai_port_internal_loopback_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_internal_loopback_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortLinkTrainingFailureStatus convert_sai_port_link_training_failure_status_t_to_proto(const sai_int32_t val); -sai_port_link_training_failure_status_t convert_sai_port_link_training_failure_status_t_to_sai(lemming::dataplane::sai::PortLinkTrainingFailureStatus val); -google::protobuf::RepeatedField convert_list_sai_port_link_training_failure_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_link_training_failure_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortLinkTrainingRxStatus convert_sai_port_link_training_rx_status_t_to_proto(const sai_int32_t val); -sai_port_link_training_rx_status_t convert_sai_port_link_training_rx_status_t_to_sai(lemming::dataplane::sai::PortLinkTrainingRxStatus val); -google::protobuf::RepeatedField convert_list_sai_port_link_training_rx_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_link_training_rx_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortLoopbackMode convert_sai_port_loopback_mode_t_to_proto(const sai_int32_t val); -sai_port_loopback_mode_t convert_sai_port_loopback_mode_t_to_sai(lemming::dataplane::sai::PortLoopbackMode val); -google::protobuf::RepeatedField convert_list_sai_port_loopback_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_loopback_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortMdixModeConfig convert_sai_port_mdix_mode_config_t_to_proto(const sai_int32_t val); -sai_port_mdix_mode_config_t convert_sai_port_mdix_mode_config_t_to_sai(lemming::dataplane::sai::PortMdixModeConfig val); -google::protobuf::RepeatedField convert_list_sai_port_mdix_mode_config_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_mdix_mode_config_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortMdixModeStatus convert_sai_port_mdix_mode_status_t_to_proto(const sai_int32_t val); -sai_port_mdix_mode_status_t convert_sai_port_mdix_mode_status_t_to_sai(lemming::dataplane::sai::PortMdixModeStatus val); -google::protobuf::RepeatedField convert_list_sai_port_mdix_mode_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_mdix_mode_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortMediaType convert_sai_port_media_type_t_to_proto(const sai_int32_t val); -sai_port_media_type_t convert_sai_port_media_type_t_to_sai(lemming::dataplane::sai::PortMediaType val); -google::protobuf::RepeatedField convert_list_sai_port_media_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_media_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortModuleType convert_sai_port_module_type_t_to_proto(const sai_int32_t val); -sai_port_module_type_t convert_sai_port_module_type_t_to_sai(lemming::dataplane::sai::PortModuleType val); -google::protobuf::RepeatedField convert_list_sai_port_module_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_module_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortOperStatus convert_sai_port_oper_status_t_to_proto(const sai_int32_t val); -sai_port_oper_status_t convert_sai_port_oper_status_t_to_sai(lemming::dataplane::sai::PortOperStatus val); -google::protobuf::RepeatedField convert_list_sai_port_oper_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_oper_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPathTracingTimestampType convert_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_int32_t val); -sai_port_path_tracing_timestamp_type_t convert_sai_port_path_tracing_timestamp_type_t_to_sai(lemming::dataplane::sai::PortPathTracingTimestampType val); -google::protobuf::RepeatedField convert_list_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_path_tracing_timestamp_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPoolAttr convert_sai_port_pool_attr_t_to_proto(const sai_int32_t val); -sai_port_pool_attr_t convert_sai_port_pool_attr_t_to_sai(lemming::dataplane::sai::PortPoolAttr val); -google::protobuf::RepeatedField convert_list_sai_port_pool_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_pool_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPoolStat convert_sai_port_pool_stat_t_to_proto(const sai_int32_t val); -sai_port_pool_stat_t convert_sai_port_pool_stat_t_to_sai(lemming::dataplane::sai::PortPoolStat val); -google::protobuf::RepeatedField convert_list_sai_port_pool_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_pool_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPrbsConfig convert_sai_port_prbs_config_t_to_proto(const sai_int32_t val); -sai_port_prbs_config_t convert_sai_port_prbs_config_t_to_sai(lemming::dataplane::sai::PortPrbsConfig val); -google::protobuf::RepeatedField convert_list_sai_port_prbs_config_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_prbs_config_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPrbsRxStatus convert_sai_port_prbs_rx_status_t_to_proto(const sai_int32_t val); -sai_port_prbs_rx_status_t convert_sai_port_prbs_rx_status_t_to_sai(lemming::dataplane::sai::PortPrbsRxStatus val); -google::protobuf::RepeatedField convert_list_sai_port_prbs_rx_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_prbs_rx_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPriorityFlowControlMode convert_sai_port_priority_flow_control_mode_t_to_proto(const sai_int32_t val); -sai_port_priority_flow_control_mode_t convert_sai_port_priority_flow_control_mode_t_to_sai(lemming::dataplane::sai::PortPriorityFlowControlMode val); -google::protobuf::RepeatedField convert_list_sai_port_priority_flow_control_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_priority_flow_control_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortPtpMode convert_sai_port_ptp_mode_t_to_proto(const sai_int32_t val); -sai_port_ptp_mode_t convert_sai_port_ptp_mode_t_to_sai(lemming::dataplane::sai::PortPtpMode val); -google::protobuf::RepeatedField convert_list_sai_port_ptp_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_ptp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortSerdesAttr convert_sai_port_serdes_attr_t_to_proto(const sai_int32_t val); -sai_port_serdes_attr_t convert_sai_port_serdes_attr_t_to_sai(lemming::dataplane::sai::PortSerdesAttr val); -google::protobuf::RepeatedField convert_list_sai_port_serdes_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_serdes_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortStatExtensions convert_sai_port_stat_extensions_t_to_proto(const sai_int32_t val); -sai_port_stat_extensions_t convert_sai_port_stat_extensions_t_to_sai(lemming::dataplane::sai::PortStatExtensions val); -google::protobuf::RepeatedField convert_list_sai_port_stat_extensions_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_stat_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortStat convert_sai_port_stat_t_to_proto(const sai_int32_t val); -sai_port_stat_t convert_sai_port_stat_t_to_sai(lemming::dataplane::sai::PortStat val); -google::protobuf::RepeatedField convert_list_sai_port_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::PortType convert_sai_port_type_t_to_proto(const sai_int32_t val); -sai_port_type_t convert_sai_port_type_t_to_sai(lemming::dataplane::sai::PortType val); -google::protobuf::RepeatedField convert_list_sai_port_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QosMapAttr convert_sai_qos_map_attr_t_to_proto(const sai_int32_t val); -sai_qos_map_attr_t convert_sai_qos_map_attr_t_to_sai(lemming::dataplane::sai::QosMapAttr val); -google::protobuf::RepeatedField convert_list_sai_qos_map_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_qos_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QosMapType convert_sai_qos_map_type_t_to_proto(const sai_int32_t val); -sai_qos_map_type_t convert_sai_qos_map_type_t_to_sai(lemming::dataplane::sai::QosMapType val); -google::protobuf::RepeatedField convert_list_sai_qos_map_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_qos_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QueueAttr convert_sai_queue_attr_t_to_proto(const sai_int32_t val); -sai_queue_attr_t convert_sai_queue_attr_t_to_sai(lemming::dataplane::sai::QueueAttr val); -google::protobuf::RepeatedField convert_list_sai_queue_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_queue_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QueuePfcContinuousDeadlockState convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto(const sai_int32_t val); -sai_queue_pfc_continuous_deadlock_state_t convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai(lemming::dataplane::sai::QueuePfcContinuousDeadlockState val); -google::protobuf::RepeatedField convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QueuePfcDeadlockEventType convert_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_int32_t val); -sai_queue_pfc_deadlock_event_type_t convert_sai_queue_pfc_deadlock_event_type_t_to_sai(lemming::dataplane::sai::QueuePfcDeadlockEventType val); -google::protobuf::RepeatedField convert_list_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_queue_pfc_deadlock_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QueueStat convert_sai_queue_stat_t_to_proto(const sai_int32_t val); -sai_queue_stat_t convert_sai_queue_stat_t_to_sai(lemming::dataplane::sai::QueueStat val); -google::protobuf::RepeatedField convert_list_sai_queue_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_queue_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::QueueType convert_sai_queue_type_t_to_proto(const sai_int32_t val); -sai_queue_type_t convert_sai_queue_type_t_to_sai(lemming::dataplane::sai::QueueType val); -google::protobuf::RepeatedField convert_list_sai_queue_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_queue_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RouteEntryAttr convert_sai_route_entry_attr_t_to_proto(const sai_int32_t val); -sai_route_entry_attr_t convert_sai_route_entry_attr_t_to_sai(lemming::dataplane::sai::RouteEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_route_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_route_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RouterInterfaceAttr convert_sai_router_interface_attr_t_to_proto(const sai_int32_t val); -sai_router_interface_attr_t convert_sai_router_interface_attr_t_to_sai(lemming::dataplane::sai::RouterInterfaceAttr val); -google::protobuf::RepeatedField convert_list_sai_router_interface_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_router_interface_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RouterInterfaceStat convert_sai_router_interface_stat_t_to_proto(const sai_int32_t val); -sai_router_interface_stat_t convert_sai_router_interface_stat_t_to_sai(lemming::dataplane::sai::RouterInterfaceStat val); -google::protobuf::RepeatedField convert_list_sai_router_interface_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_router_interface_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RouterInterfaceType convert_sai_router_interface_type_t_to_proto(const sai_int32_t val); -sai_router_interface_type_t convert_sai_router_interface_type_t_to_sai(lemming::dataplane::sai::RouterInterfaceType val); -google::protobuf::RepeatedField convert_list_sai_router_interface_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_router_interface_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RpfGroupAttr convert_sai_rpf_group_attr_t_to_proto(const sai_int32_t val); -sai_rpf_group_attr_t convert_sai_rpf_group_attr_t_to_sai(lemming::dataplane::sai::RpfGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_rpf_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_rpf_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::RpfGroupMemberAttr convert_sai_rpf_group_member_attr_t_to_proto(const sai_int32_t val); -sai_rpf_group_member_attr_t convert_sai_rpf_group_member_attr_t_to_sai(lemming::dataplane::sai::RpfGroupMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_rpf_group_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_rpf_group_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SamplepacketAttr convert_sai_samplepacket_attr_t_to_proto(const sai_int32_t val); -sai_samplepacket_attr_t convert_sai_samplepacket_attr_t_to_sai(lemming::dataplane::sai::SamplepacketAttr val); -google::protobuf::RepeatedField convert_list_sai_samplepacket_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_samplepacket_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SamplepacketMode convert_sai_samplepacket_mode_t_to_proto(const sai_int32_t val); -sai_samplepacket_mode_t convert_sai_samplepacket_mode_t_to_sai(lemming::dataplane::sai::SamplepacketMode val); -google::protobuf::RepeatedField convert_list_sai_samplepacket_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_samplepacket_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SamplepacketType convert_sai_samplepacket_type_t_to_proto(const sai_int32_t val); -sai_samplepacket_type_t convert_sai_samplepacket_type_t_to_sai(lemming::dataplane::sai::SamplepacketType val); -google::protobuf::RepeatedField convert_list_sai_samplepacket_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_samplepacket_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SchedulerAttr convert_sai_scheduler_attr_t_to_proto(const sai_int32_t val); -sai_scheduler_attr_t convert_sai_scheduler_attr_t_to_sai(lemming::dataplane::sai::SchedulerAttr val); -google::protobuf::RepeatedField convert_list_sai_scheduler_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_scheduler_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SchedulerGroupAttr convert_sai_scheduler_group_attr_t_to_proto(const sai_int32_t val); -sai_scheduler_group_attr_t convert_sai_scheduler_group_attr_t_to_sai(lemming::dataplane::sai::SchedulerGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_scheduler_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_scheduler_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SchedulingType convert_sai_scheduling_type_t_to_proto(const sai_int32_t val); -sai_scheduling_type_t convert_sai_scheduling_type_t_to_sai(lemming::dataplane::sai::SchedulingType val); -google::protobuf::RepeatedField convert_list_sai_scheduling_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_scheduling_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::Srv6SidlistAttr convert_sai_srv6_sidlist_attr_t_to_proto(const sai_int32_t val); -sai_srv6_sidlist_attr_t convert_sai_srv6_sidlist_attr_t_to_sai(lemming::dataplane::sai::Srv6SidlistAttr val); -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_srv6_sidlist_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::Srv6SidlistStat convert_sai_srv6_sidlist_stat_t_to_proto(const sai_int32_t val); -sai_srv6_sidlist_stat_t convert_sai_srv6_sidlist_stat_t_to_sai(lemming::dataplane::sai::Srv6SidlistStat val); -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_srv6_sidlist_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::Srv6SidlistType convert_sai_srv6_sidlist_type_t_to_proto(const sai_int32_t val); -sai_srv6_sidlist_type_t convert_sai_srv6_sidlist_type_t_to_sai(lemming::dataplane::sai::Srv6SidlistType val); -google::protobuf::RepeatedField convert_list_sai_srv6_sidlist_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_srv6_sidlist_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::StatsMode convert_sai_stats_mode_t_to_proto(const sai_int32_t val); -sai_stats_mode_t convert_sai_stats_mode_t_to_sai(lemming::dataplane::sai::StatsMode val); -google::protobuf::RepeatedField convert_list_sai_stats_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_stats_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::StpAttr convert_sai_stp_attr_t_to_proto(const sai_int32_t val); -sai_stp_attr_t convert_sai_stp_attr_t_to_sai(lemming::dataplane::sai::StpAttr val); -google::protobuf::RepeatedField convert_list_sai_stp_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_stp_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::StpPortAttr convert_sai_stp_port_attr_t_to_proto(const sai_int32_t val); -sai_stp_port_attr_t convert_sai_stp_port_attr_t_to_sai(lemming::dataplane::sai::StpPortAttr val); -google::protobuf::RepeatedField convert_list_sai_stp_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_stp_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::StpPortState convert_sai_stp_port_state_t_to_proto(const sai_int32_t val); -sai_stp_port_state_t convert_sai_stp_port_state_t_to_sai(lemming::dataplane::sai::StpPortState val); -google::protobuf::RepeatedField convert_list_sai_stp_port_state_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_stp_port_state_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchAsicSdkHealthCategory convert_sai_switch_asic_sdk_health_category_t_to_proto(const sai_int32_t val); -sai_switch_asic_sdk_health_category_t convert_sai_switch_asic_sdk_health_category_t_to_sai(lemming::dataplane::sai::SwitchAsicSdkHealthCategory val); -google::protobuf::RepeatedField convert_list_sai_switch_asic_sdk_health_category_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_asic_sdk_health_category_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchAsicSdkHealthSeverity convert_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_int32_t val); -sai_switch_asic_sdk_health_severity_t convert_sai_switch_asic_sdk_health_severity_t_to_sai(lemming::dataplane::sai::SwitchAsicSdkHealthSeverity val); -google::protobuf::RepeatedField convert_list_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_asic_sdk_health_severity_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchAttrExtensions convert_sai_switch_attr_extensions_t_to_proto(const sai_int32_t val); -sai_switch_attr_extensions_t convert_sai_switch_attr_extensions_t_to_sai(lemming::dataplane::sai::SwitchAttrExtensions val); -google::protobuf::RepeatedField convert_list_sai_switch_attr_extensions_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_attr_extensions_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchAttr convert_sai_switch_attr_t_to_proto(const sai_int32_t val); -sai_switch_attr_t convert_sai_switch_attr_t_to_sai(lemming::dataplane::sai::SwitchAttr val); -google::protobuf::RepeatedField convert_list_sai_switch_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchFailoverConfigMode convert_sai_switch_failover_config_mode_t_to_proto(const sai_int32_t val); -sai_switch_failover_config_mode_t convert_sai_switch_failover_config_mode_t_to_sai(lemming::dataplane::sai::SwitchFailoverConfigMode val); -google::protobuf::RepeatedField convert_list_sai_switch_failover_config_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_failover_config_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchFirmwareLoadMethod convert_sai_switch_firmware_load_method_t_to_proto(const sai_int32_t val); -sai_switch_firmware_load_method_t convert_sai_switch_firmware_load_method_t_to_sai(lemming::dataplane::sai::SwitchFirmwareLoadMethod val); -google::protobuf::RepeatedField convert_list_sai_switch_firmware_load_method_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_firmware_load_method_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchFirmwareLoadType convert_sai_switch_firmware_load_type_t_to_proto(const sai_int32_t val); -sai_switch_firmware_load_type_t convert_sai_switch_firmware_load_type_t_to_sai(lemming::dataplane::sai::SwitchFirmwareLoadType val); -google::protobuf::RepeatedField convert_list_sai_switch_firmware_load_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_firmware_load_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchHardwareAccessBus convert_sai_switch_hardware_access_bus_t_to_proto(const sai_int32_t val); -sai_switch_hardware_access_bus_t convert_sai_switch_hardware_access_bus_t_to_sai(lemming::dataplane::sai::SwitchHardwareAccessBus val); -google::protobuf::RepeatedField convert_list_sai_switch_hardware_access_bus_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_hardware_access_bus_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode convert_sai_switch_hostif_oper_status_update_mode_t_to_proto(const sai_int32_t val); -sai_switch_hostif_oper_status_update_mode_t convert_sai_switch_hostif_oper_status_update_mode_t_to_sai(lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode val); -google::protobuf::RepeatedField convert_list_sai_switch_hostif_oper_status_update_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_hostif_oper_status_update_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchMcastSnoopingCapability convert_sai_switch_mcast_snooping_capability_t_to_proto(const sai_int32_t val); -sai_switch_mcast_snooping_capability_t convert_sai_switch_mcast_snooping_capability_t_to_sai(lemming::dataplane::sai::SwitchMcastSnoopingCapability val); -google::protobuf::RepeatedField convert_list_sai_switch_mcast_snooping_capability_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_mcast_snooping_capability_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchOperStatus convert_sai_switch_oper_status_t_to_proto(const sai_int32_t val); -sai_switch_oper_status_t convert_sai_switch_oper_status_t_to_sai(lemming::dataplane::sai::SwitchOperStatus val); -google::protobuf::RepeatedField convert_list_sai_switch_oper_status_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_oper_status_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchRestartType convert_sai_switch_restart_type_t_to_proto(const sai_int32_t val); -sai_switch_restart_type_t convert_sai_switch_restart_type_t_to_sai(lemming::dataplane::sai::SwitchRestartType val); -google::protobuf::RepeatedField convert_list_sai_switch_restart_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_restart_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchStat convert_sai_switch_stat_t_to_proto(const sai_int32_t val); -sai_switch_stat_t convert_sai_switch_stat_t_to_sai(lemming::dataplane::sai::SwitchStat val); -google::protobuf::RepeatedField convert_list_sai_switch_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchSwitchingMode convert_sai_switch_switching_mode_t_to_proto(const sai_int32_t val); -sai_switch_switching_mode_t convert_sai_switch_switching_mode_t_to_sai(lemming::dataplane::sai::SwitchSwitchingMode val); -google::protobuf::RepeatedField convert_list_sai_switch_switching_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_switching_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchTunnelAttr convert_sai_switch_tunnel_attr_t_to_proto(const sai_int32_t val); -sai_switch_tunnel_attr_t convert_sai_switch_tunnel_attr_t_to_sai(lemming::dataplane::sai::SwitchTunnelAttr val); -google::protobuf::RepeatedField convert_list_sai_switch_tunnel_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_tunnel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SwitchType convert_sai_switch_type_t_to_proto(const sai_int32_t val); -sai_switch_type_t convert_sai_switch_type_t_to_sai(lemming::dataplane::sai::SwitchType val); -google::protobuf::RepeatedField convert_list_sai_switch_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_switch_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SystemPortAttr convert_sai_system_port_attr_t_to_proto(const sai_int32_t val); -sai_system_port_attr_t convert_sai_system_port_attr_t_to_sai(lemming::dataplane::sai::SystemPortAttr val); -google::protobuf::RepeatedField convert_list_sai_system_port_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_system_port_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::SystemPortType convert_sai_system_port_type_t_to_proto(const sai_int32_t val); -sai_system_port_type_t convert_sai_system_port_type_t_to_sai(lemming::dataplane::sai::SystemPortType val); -google::protobuf::RepeatedField convert_list_sai_system_port_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_system_port_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapClassificationEntryAction convert_sai_table_bitmap_classification_entry_action_t_to_proto(const sai_int32_t val); -sai_table_bitmap_classification_entry_action_t convert_sai_table_bitmap_classification_entry_action_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryAction val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_action_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_classification_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapClassificationEntryAttr convert_sai_table_bitmap_classification_entry_attr_t_to_proto(const sai_int32_t val); -sai_table_bitmap_classification_entry_attr_t convert_sai_table_bitmap_classification_entry_attr_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_classification_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapClassificationEntryStat convert_sai_table_bitmap_classification_entry_stat_t_to_proto(const sai_int32_t val); -sai_table_bitmap_classification_entry_stat_t convert_sai_table_bitmap_classification_entry_stat_t_to_sai(lemming::dataplane::sai::TableBitmapClassificationEntryStat val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_classification_entry_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_classification_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapRouterEntryAction convert_sai_table_bitmap_router_entry_action_t_to_proto(const sai_int32_t val); -sai_table_bitmap_router_entry_action_t convert_sai_table_bitmap_router_entry_action_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryAction val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_action_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_router_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapRouterEntryAttr convert_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_int32_t val); -sai_table_bitmap_router_entry_attr_t convert_sai_table_bitmap_router_entry_attr_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_router_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableBitmapRouterEntryStat convert_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_int32_t val); -sai_table_bitmap_router_entry_stat_t convert_sai_table_bitmap_router_entry_stat_t_to_sai(lemming::dataplane::sai::TableBitmapRouterEntryStat val); -google::protobuf::RepeatedField convert_list_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_bitmap_router_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableMetaTunnelEntryAction convert_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_int32_t val); -sai_table_meta_tunnel_entry_action_t convert_sai_table_meta_tunnel_entry_action_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryAction val); -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_meta_tunnel_entry_action_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableMetaTunnelEntryAttr convert_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_int32_t val); -sai_table_meta_tunnel_entry_attr_t convert_sai_table_meta_tunnel_entry_attr_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_meta_tunnel_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TableMetaTunnelEntryStat convert_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_int32_t val); -sai_table_meta_tunnel_entry_stat_t convert_sai_table_meta_tunnel_entry_stat_t_to_sai(lemming::dataplane::sai::TableMetaTunnelEntryStat val); -google::protobuf::RepeatedField convert_list_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_table_meta_tunnel_entry_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamAttr convert_sai_tam_attr_t_to_proto(const sai_int32_t val); -sai_tam_attr_t convert_sai_tam_attr_t_to_sai(lemming::dataplane::sai::TamAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamBindPointType convert_sai_tam_bind_point_type_t_to_proto(const sai_int32_t val); -sai_tam_bind_point_type_t convert_sai_tam_bind_point_type_t_to_sai(lemming::dataplane::sai::TamBindPointType val); -google::protobuf::RepeatedField convert_list_sai_tam_bind_point_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_bind_point_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamCollectorAttr convert_sai_tam_collector_attr_t_to_proto(const sai_int32_t val); -sai_tam_collector_attr_t convert_sai_tam_collector_attr_t_to_sai(lemming::dataplane::sai::TamCollectorAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_collector_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_collector_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamCounterSubscriptionAttr convert_sai_tam_counter_subscription_attr_t_to_proto(const sai_int32_t val); -sai_tam_counter_subscription_attr_t convert_sai_tam_counter_subscription_attr_t_to_sai(lemming::dataplane::sai::TamCounterSubscriptionAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_counter_subscription_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_counter_subscription_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamEventActionAttr convert_sai_tam_event_action_attr_t_to_proto(const sai_int32_t val); -sai_tam_event_action_attr_t convert_sai_tam_event_action_attr_t_to_sai(lemming::dataplane::sai::TamEventActionAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_event_action_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_event_action_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamEventAttr convert_sai_tam_event_attr_t_to_proto(const sai_int32_t val); -sai_tam_event_attr_t convert_sai_tam_event_attr_t_to_sai(lemming::dataplane::sai::TamEventAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_event_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_event_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamEventThresholdAttr convert_sai_tam_event_threshold_attr_t_to_proto(const sai_int32_t val); -sai_tam_event_threshold_attr_t convert_sai_tam_event_threshold_attr_t_to_sai(lemming::dataplane::sai::TamEventThresholdAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_event_threshold_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_event_threshold_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamEventThresholdUnit convert_sai_tam_event_threshold_unit_t_to_proto(const sai_int32_t val); -sai_tam_event_threshold_unit_t convert_sai_tam_event_threshold_unit_t_to_sai(lemming::dataplane::sai::TamEventThresholdUnit val); -google::protobuf::RepeatedField convert_list_sai_tam_event_threshold_unit_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_event_threshold_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamEventType convert_sai_tam_event_type_t_to_proto(const sai_int32_t val); -sai_tam_event_type_t convert_sai_tam_event_type_t_to_sai(lemming::dataplane::sai::TamEventType val); -google::protobuf::RepeatedField convert_list_sai_tam_event_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_event_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamIntAttr convert_sai_tam_int_attr_t_to_proto(const sai_int32_t val); -sai_tam_int_attr_t convert_sai_tam_int_attr_t_to_sai(lemming::dataplane::sai::TamIntAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_int_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_int_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamIntPresenceType convert_sai_tam_int_presence_type_t_to_proto(const sai_int32_t val); -sai_tam_int_presence_type_t convert_sai_tam_int_presence_type_t_to_sai(lemming::dataplane::sai::TamIntPresenceType val); -google::protobuf::RepeatedField convert_list_sai_tam_int_presence_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_int_presence_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamIntType convert_sai_tam_int_type_t_to_proto(const sai_int32_t val); -sai_tam_int_type_t convert_sai_tam_int_type_t_to_sai(lemming::dataplane::sai::TamIntType val); -google::protobuf::RepeatedField convert_list_sai_tam_int_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_int_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamMathFuncAttr convert_sai_tam_math_func_attr_t_to_proto(const sai_int32_t val); -sai_tam_math_func_attr_t convert_sai_tam_math_func_attr_t_to_sai(lemming::dataplane::sai::TamMathFuncAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_math_func_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_math_func_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamReportAttr convert_sai_tam_report_attr_t_to_proto(const sai_int32_t val); -sai_tam_report_attr_t convert_sai_tam_report_attr_t_to_sai(lemming::dataplane::sai::TamReportAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_report_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_report_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamReportIntervalUnit convert_sai_tam_report_interval_unit_t_to_proto(const sai_int32_t val); -sai_tam_report_interval_unit_t convert_sai_tam_report_interval_unit_t_to_sai(lemming::dataplane::sai::TamReportIntervalUnit val); -google::protobuf::RepeatedField convert_list_sai_tam_report_interval_unit_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_report_interval_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamReportMode convert_sai_tam_report_mode_t_to_proto(const sai_int32_t val); -sai_tam_report_mode_t convert_sai_tam_report_mode_t_to_sai(lemming::dataplane::sai::TamReportMode val); -google::protobuf::RepeatedField convert_list_sai_tam_report_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_report_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamReportType convert_sai_tam_report_type_t_to_proto(const sai_int32_t val); -sai_tam_report_type_t convert_sai_tam_report_type_t_to_sai(lemming::dataplane::sai::TamReportType val); -google::protobuf::RepeatedField convert_list_sai_tam_report_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_report_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamReportingUnit convert_sai_tam_reporting_unit_t_to_proto(const sai_int32_t val); -sai_tam_reporting_unit_t convert_sai_tam_reporting_unit_t_to_sai(lemming::dataplane::sai::TamReportingUnit val); -google::protobuf::RepeatedField convert_list_sai_tam_reporting_unit_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_reporting_unit_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTelMathFuncType convert_sai_tam_tel_math_func_type_t_to_proto(const sai_int32_t val); -sai_tam_tel_math_func_type_t convert_sai_tam_tel_math_func_type_t_to_sai(lemming::dataplane::sai::TamTelMathFuncType val); -google::protobuf::RepeatedField convert_list_sai_tam_tel_math_func_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_tel_math_func_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTelTypeAttr convert_sai_tam_tel_type_attr_t_to_proto(const sai_int32_t val); -sai_tam_tel_type_attr_t convert_sai_tam_tel_type_attr_t_to_sai(lemming::dataplane::sai::TamTelTypeAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_tel_type_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_tel_type_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTelemetryAttr convert_sai_tam_telemetry_attr_t_to_proto(const sai_int32_t val); -sai_tam_telemetry_attr_t convert_sai_tam_telemetry_attr_t_to_sai(lemming::dataplane::sai::TamTelemetryAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_telemetry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_telemetry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTelemetryType convert_sai_tam_telemetry_type_t_to_proto(const sai_int32_t val); -sai_tam_telemetry_type_t convert_sai_tam_telemetry_type_t_to_sai(lemming::dataplane::sai::TamTelemetryType val); -google::protobuf::RepeatedField convert_list_sai_tam_telemetry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_telemetry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTransportAttr convert_sai_tam_transport_attr_t_to_proto(const sai_int32_t val); -sai_tam_transport_attr_t convert_sai_tam_transport_attr_t_to_sai(lemming::dataplane::sai::TamTransportAttr val); -google::protobuf::RepeatedField convert_list_sai_tam_transport_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_transport_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTransportAuthType convert_sai_tam_transport_auth_type_t_to_proto(const sai_int32_t val); -sai_tam_transport_auth_type_t convert_sai_tam_transport_auth_type_t_to_sai(lemming::dataplane::sai::TamTransportAuthType val); -google::protobuf::RepeatedField convert_list_sai_tam_transport_auth_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_transport_auth_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TamTransportType convert_sai_tam_transport_type_t_to_proto(const sai_int32_t val); -sai_tam_transport_type_t convert_sai_tam_transport_type_t_to_sai(lemming::dataplane::sai::TamTransportType val); -google::protobuf::RepeatedField convert_list_sai_tam_transport_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tam_transport_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TlvType convert_sai_tlv_type_t_to_proto(const sai_int32_t val); -sai_tlv_type_t convert_sai_tlv_type_t_to_sai(lemming::dataplane::sai::TlvType val); -google::protobuf::RepeatedField convert_list_sai_tlv_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tlv_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelAttr convert_sai_tunnel_attr_t_to_proto(const sai_int32_t val); -sai_tunnel_attr_t convert_sai_tunnel_attr_t_to_sai(lemming::dataplane::sai::TunnelAttr val); -google::protobuf::RepeatedField convert_list_sai_tunnel_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelDecapEcnMode convert_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_decap_ecn_mode_t convert_sai_tunnel_decap_ecn_mode_t_to_sai(lemming::dataplane::sai::TunnelDecapEcnMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_decap_ecn_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelDscpMode convert_sai_tunnel_dscp_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_dscp_mode_t convert_sai_tunnel_dscp_mode_t_to_sai(lemming::dataplane::sai::TunnelDscpMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_dscp_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelEncapEcnMode convert_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_encap_ecn_mode_t convert_sai_tunnel_encap_ecn_mode_t_to_sai(lemming::dataplane::sai::TunnelEncapEcnMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_encap_ecn_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelMapAttr convert_sai_tunnel_map_attr_t_to_proto(const sai_int32_t val); -sai_tunnel_map_attr_t convert_sai_tunnel_map_attr_t_to_sai(lemming::dataplane::sai::TunnelMapAttr val); -google::protobuf::RepeatedField convert_list_sai_tunnel_map_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_map_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelMapEntryAttr convert_sai_tunnel_map_entry_attr_t_to_proto(const sai_int32_t val); -sai_tunnel_map_entry_attr_t convert_sai_tunnel_map_entry_attr_t_to_sai(lemming::dataplane::sai::TunnelMapEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_tunnel_map_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_map_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelMapType convert_sai_tunnel_map_type_t_to_proto(const sai_int32_t val); -sai_tunnel_map_type_t convert_sai_tunnel_map_type_t_to_sai(lemming::dataplane::sai::TunnelMapType val); -google::protobuf::RepeatedField convert_list_sai_tunnel_map_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_map_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelPeerMode convert_sai_tunnel_peer_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_peer_mode_t convert_sai_tunnel_peer_mode_t_to_sai(lemming::dataplane::sai::TunnelPeerMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_peer_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_peer_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelStat convert_sai_tunnel_stat_t_to_proto(const sai_int32_t val); -sai_tunnel_stat_t convert_sai_tunnel_stat_t_to_sai(lemming::dataplane::sai::TunnelStat val); -google::protobuf::RepeatedField convert_list_sai_tunnel_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelTermTableEntryAttr convert_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_int32_t val); -sai_tunnel_term_table_entry_attr_t convert_sai_tunnel_term_table_entry_attr_t_to_sai(lemming::dataplane::sai::TunnelTermTableEntryAttr val); -google::protobuf::RepeatedField convert_list_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_term_table_entry_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelTermTableEntryType convert_sai_tunnel_term_table_entry_type_t_to_proto(const sai_int32_t val); -sai_tunnel_term_table_entry_type_t convert_sai_tunnel_term_table_entry_type_t_to_sai(lemming::dataplane::sai::TunnelTermTableEntryType val); -google::protobuf::RepeatedField convert_list_sai_tunnel_term_table_entry_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_term_table_entry_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelTtlMode convert_sai_tunnel_ttl_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_ttl_mode_t convert_sai_tunnel_ttl_mode_t_to_sai(lemming::dataplane::sai::TunnelTtlMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_ttl_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_ttl_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelType convert_sai_tunnel_type_t_to_proto(const sai_int32_t val); -sai_tunnel_type_t convert_sai_tunnel_type_t_to_sai(lemming::dataplane::sai::TunnelType val); -google::protobuf::RepeatedField convert_list_sai_tunnel_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::TunnelVxlanUdpSportMode convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_int32_t val); -sai_tunnel_vxlan_udp_sport_mode_t convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(lemming::dataplane::sai::TunnelVxlanUdpSportMode val); -google::protobuf::RepeatedField convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::UdfAttr convert_sai_udf_attr_t_to_proto(const sai_int32_t val); -sai_udf_attr_t convert_sai_udf_attr_t_to_sai(lemming::dataplane::sai::UdfAttr val); -google::protobuf::RepeatedField convert_list_sai_udf_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_udf_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::UdfBase convert_sai_udf_base_t_to_proto(const sai_int32_t val); -sai_udf_base_t convert_sai_udf_base_t_to_sai(lemming::dataplane::sai::UdfBase val); -google::protobuf::RepeatedField convert_list_sai_udf_base_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_udf_base_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::UdfGroupAttr convert_sai_udf_group_attr_t_to_proto(const sai_int32_t val); -sai_udf_group_attr_t convert_sai_udf_group_attr_t_to_sai(lemming::dataplane::sai::UdfGroupAttr val); -google::protobuf::RepeatedField convert_list_sai_udf_group_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_udf_group_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::UdfGroupType convert_sai_udf_group_type_t_to_proto(const sai_int32_t val); -sai_udf_group_type_t convert_sai_udf_group_type_t_to_sai(lemming::dataplane::sai::UdfGroupType val); -google::protobuf::RepeatedField convert_list_sai_udf_group_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_udf_group_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::UdfMatchAttr convert_sai_udf_match_attr_t_to_proto(const sai_int32_t val); -sai_udf_match_attr_t convert_sai_udf_match_attr_t_to_sai(lemming::dataplane::sai::UdfMatchAttr val); -google::protobuf::RepeatedField convert_list_sai_udf_match_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_udf_match_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VirtualRouterAttr convert_sai_virtual_router_attr_t_to_proto(const sai_int32_t val); -sai_virtual_router_attr_t convert_sai_virtual_router_attr_t_to_sai(lemming::dataplane::sai::VirtualRouterAttr val); -google::protobuf::RepeatedField convert_list_sai_virtual_router_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_virtual_router_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanAttr convert_sai_vlan_attr_t_to_proto(const sai_int32_t val); -sai_vlan_attr_t convert_sai_vlan_attr_t_to_sai(lemming::dataplane::sai::VlanAttr val); -google::protobuf::RepeatedField convert_list_sai_vlan_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanFloodControlType convert_sai_vlan_flood_control_type_t_to_proto(const sai_int32_t val); -sai_vlan_flood_control_type_t convert_sai_vlan_flood_control_type_t_to_sai(lemming::dataplane::sai::VlanFloodControlType val); -google::protobuf::RepeatedField convert_list_sai_vlan_flood_control_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_flood_control_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanMcastLookupKeyType convert_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_int32_t val); -sai_vlan_mcast_lookup_key_type_t convert_sai_vlan_mcast_lookup_key_type_t_to_sai(lemming::dataplane::sai::VlanMcastLookupKeyType val); -google::protobuf::RepeatedField convert_list_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_mcast_lookup_key_type_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanMemberAttr convert_sai_vlan_member_attr_t_to_proto(const sai_int32_t val); -sai_vlan_member_attr_t convert_sai_vlan_member_attr_t_to_sai(lemming::dataplane::sai::VlanMemberAttr val); -google::protobuf::RepeatedField convert_list_sai_vlan_member_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_member_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanStat convert_sai_vlan_stat_t_to_proto(const sai_int32_t val); -sai_vlan_stat_t convert_sai_vlan_stat_t_to_sai(lemming::dataplane::sai::VlanStat val); -google::protobuf::RepeatedField convert_list_sai_vlan_stat_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_stat_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::VlanTaggingMode convert_sai_vlan_tagging_mode_t_to_proto(const sai_int32_t val); -sai_vlan_tagging_mode_t convert_sai_vlan_tagging_mode_t_to_sai(lemming::dataplane::sai::VlanTaggingMode val); -google::protobuf::RepeatedField convert_list_sai_vlan_tagging_mode_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_vlan_tagging_mode_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - -lemming::dataplane::sai::WredAttr convert_sai_wred_attr_t_to_proto(const sai_int32_t val); -sai_wred_attr_t convert_sai_wred_attr_t_to_sai(lemming::dataplane::sai::WredAttr val); -google::protobuf::RepeatedField convert_list_sai_wred_attr_t_to_proto(const sai_s32_list_t &list); -void convert_list_sai_wred_attr_t_to_sai(int32_t *list, const google::protobuf::RepeatedField &proto_list, uint32_t *count); - +google::protobuf::RepeatedField convert_list_sai_api_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_api_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdEncapsulationType +convert_sai_bfd_encapsulation_type_t_to_proto(const sai_int32_t val); +sai_bfd_encapsulation_type_t convert_sai_bfd_encapsulation_type_t_to_sai( + lemming::dataplane::sai::BfdEncapsulationType val); +google::protobuf::RepeatedField +convert_list_sai_bfd_encapsulation_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bfd_encapsulation_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdSessionAttr convert_sai_bfd_session_attr_t_to_proto( + const sai_int32_t val); +sai_bfd_session_attr_t convert_sai_bfd_session_attr_t_to_sai( + lemming::dataplane::sai::BfdSessionAttr val); +google::protobuf::RepeatedField +convert_list_sai_bfd_session_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bfd_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdSessionOffloadType +convert_sai_bfd_session_offload_type_t_to_proto(const sai_int32_t val); +sai_bfd_session_offload_type_t convert_sai_bfd_session_offload_type_t_to_sai( + lemming::dataplane::sai::BfdSessionOffloadType val); +google::protobuf::RepeatedField +convert_list_sai_bfd_session_offload_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bfd_session_offload_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdSessionStat convert_sai_bfd_session_stat_t_to_proto( + const sai_int32_t val); +sai_bfd_session_stat_t convert_sai_bfd_session_stat_t_to_sai( + lemming::dataplane::sai::BfdSessionStat val); +google::protobuf::RepeatedField +convert_list_sai_bfd_session_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bfd_session_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdSessionState +convert_sai_bfd_session_state_t_to_proto(const sai_int32_t val); +sai_bfd_session_state_t convert_sai_bfd_session_state_t_to_sai( + lemming::dataplane::sai::BfdSessionState val); +google::protobuf::RepeatedField +convert_list_sai_bfd_session_state_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bfd_session_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BfdSessionType convert_sai_bfd_session_type_t_to_proto( + const sai_int32_t val); +sai_bfd_session_type_t convert_sai_bfd_session_type_t_to_sai( + lemming::dataplane::sai::BfdSessionType val); +google::protobuf::RepeatedField +convert_list_sai_bfd_session_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bfd_session_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgeAttr convert_sai_bridge_attr_t_to_proto( + const sai_int32_t val); +sai_bridge_attr_t convert_sai_bridge_attr_t_to_sai( + lemming::dataplane::sai::BridgeAttr val); +google::protobuf::RepeatedField convert_list_sai_bridge_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgeFloodControlType +convert_sai_bridge_flood_control_type_t_to_proto(const sai_int32_t val); +sai_bridge_flood_control_type_t convert_sai_bridge_flood_control_type_t_to_sai( + lemming::dataplane::sai::BridgeFloodControlType val); +google::protobuf::RepeatedField +convert_list_sai_bridge_flood_control_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_flood_control_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgePortAttr convert_sai_bridge_port_attr_t_to_proto( + const sai_int32_t val); +sai_bridge_port_attr_t convert_sai_bridge_port_attr_t_to_sai( + lemming::dataplane::sai::BridgePortAttr val); +google::protobuf::RepeatedField +convert_list_sai_bridge_port_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bridge_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgePortFdbLearningMode +convert_sai_bridge_port_fdb_learning_mode_t_to_proto(const sai_int32_t val); +sai_bridge_port_fdb_learning_mode_t +convert_sai_bridge_port_fdb_learning_mode_t_to_sai( + lemming::dataplane::sai::BridgePortFdbLearningMode val); +google::protobuf::RepeatedField +convert_list_sai_bridge_port_fdb_learning_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_port_fdb_learning_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgePortStat convert_sai_bridge_port_stat_t_to_proto( + const sai_int32_t val); +sai_bridge_port_stat_t convert_sai_bridge_port_stat_t_to_sai( + lemming::dataplane::sai::BridgePortStat val); +google::protobuf::RepeatedField +convert_list_sai_bridge_port_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bridge_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgePortTaggingMode +convert_sai_bridge_port_tagging_mode_t_to_proto(const sai_int32_t val); +sai_bridge_port_tagging_mode_t convert_sai_bridge_port_tagging_mode_t_to_sai( + lemming::dataplane::sai::BridgePortTaggingMode val); +google::protobuf::RepeatedField +convert_list_sai_bridge_port_tagging_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_port_tagging_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgePortType convert_sai_bridge_port_type_t_to_proto( + const sai_int32_t val); +sai_bridge_port_type_t convert_sai_bridge_port_type_t_to_sai( + lemming::dataplane::sai::BridgePortType val); +google::protobuf::RepeatedField +convert_list_sai_bridge_port_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bridge_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgeStat convert_sai_bridge_stat_t_to_proto( + const sai_int32_t val); +sai_bridge_stat_t convert_sai_bridge_stat_t_to_sai( + lemming::dataplane::sai::BridgeStat val); +google::protobuf::RepeatedField convert_list_sai_bridge_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BridgeType convert_sai_bridge_type_t_to_proto( + const sai_int32_t val); +sai_bridge_type_t convert_sai_bridge_type_t_to_sai( + lemming::dataplane::sai::BridgeType val); +google::protobuf::RepeatedField convert_list_sai_bridge_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_bridge_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferPoolAttr convert_sai_buffer_pool_attr_t_to_proto( + const sai_int32_t val); +sai_buffer_pool_attr_t convert_sai_buffer_pool_attr_t_to_sai( + lemming::dataplane::sai::BufferPoolAttr val); +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_buffer_pool_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferPoolStat convert_sai_buffer_pool_stat_t_to_proto( + const sai_int32_t val); +sai_buffer_pool_stat_t convert_sai_buffer_pool_stat_t_to_sai( + lemming::dataplane::sai::BufferPoolStat val); +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_buffer_pool_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferPoolThresholdMode +convert_sai_buffer_pool_threshold_mode_t_to_proto(const sai_int32_t val); +sai_buffer_pool_threshold_mode_t +convert_sai_buffer_pool_threshold_mode_t_to_sai( + lemming::dataplane::sai::BufferPoolThresholdMode val); +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_threshold_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_buffer_pool_threshold_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferPoolType convert_sai_buffer_pool_type_t_to_proto( + const sai_int32_t val); +sai_buffer_pool_type_t convert_sai_buffer_pool_type_t_to_sai( + lemming::dataplane::sai::BufferPoolType val); +google::protobuf::RepeatedField +convert_list_sai_buffer_pool_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_buffer_pool_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferProfileAttr +convert_sai_buffer_profile_attr_t_to_proto(const sai_int32_t val); +sai_buffer_profile_attr_t convert_sai_buffer_profile_attr_t_to_sai( + lemming::dataplane::sai::BufferProfileAttr val); +google::protobuf::RepeatedField +convert_list_sai_buffer_profile_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_buffer_profile_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BufferProfileThresholdMode +convert_sai_buffer_profile_threshold_mode_t_to_proto(const sai_int32_t val); +sai_buffer_profile_threshold_mode_t +convert_sai_buffer_profile_threshold_mode_t_to_sai( + lemming::dataplane::sai::BufferProfileThresholdMode val); +google::protobuf::RepeatedField +convert_list_sai_buffer_profile_threshold_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_buffer_profile_threshold_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::BulkOpErrorMode +convert_sai_bulk_op_error_mode_t_to_proto(const sai_int32_t val); +sai_bulk_op_error_mode_t convert_sai_bulk_op_error_mode_t_to_sai( + lemming::dataplane::sai::BulkOpErrorMode val); +google::protobuf::RepeatedField +convert_list_sai_bulk_op_error_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_bulk_op_error_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::CommonApi convert_sai_common_api_t_to_proto( + const sai_int32_t val); +sai_common_api_t convert_sai_common_api_t_to_sai( + lemming::dataplane::sai::CommonApi val); +google::protobuf::RepeatedField convert_list_sai_common_api_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_common_api_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::CounterAttr convert_sai_counter_attr_t_to_proto( + const sai_int32_t val); +sai_counter_attr_t convert_sai_counter_attr_t_to_sai( + lemming::dataplane::sai::CounterAttr val); +google::protobuf::RepeatedField convert_list_sai_counter_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::CounterStat convert_sai_counter_stat_t_to_proto( + const sai_int32_t val); +sai_counter_stat_t convert_sai_counter_stat_t_to_sai( + lemming::dataplane::sai::CounterStat val); +google::protobuf::RepeatedField convert_list_sai_counter_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_counter_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::CounterType convert_sai_counter_type_t_to_proto( + const sai_int32_t val); +sai_counter_type_t convert_sai_counter_type_t_to_sai( + lemming::dataplane::sai::CounterType val); +google::protobuf::RepeatedField convert_list_sai_counter_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_counter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashCapsHaScopeLevel +convert_sai_dash_caps_ha_scope_level_t_to_proto(const sai_int32_t val); +sai_dash_caps_ha_scope_level_t convert_sai_dash_caps_ha_scope_level_t_to_sai( + lemming::dataplane::sai::DashCapsHaScopeLevel val); +google::protobuf::RepeatedField +convert_list_sai_dash_caps_ha_scope_level_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_caps_ha_scope_level_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashDirection convert_sai_dash_direction_t_to_proto( + const sai_int32_t val); +sai_dash_direction_t convert_sai_dash_direction_t_to_sai( + lemming::dataplane::sai::DashDirection val); +google::protobuf::RepeatedField convert_list_sai_dash_direction_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashEncapsulation +convert_sai_dash_encapsulation_t_to_proto(const sai_int32_t val); +sai_dash_encapsulation_t convert_sai_dash_encapsulation_t_to_sai( + lemming::dataplane::sai::DashEncapsulation val); +google::protobuf::RepeatedField +convert_list_sai_dash_encapsulation_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dash_encapsulation_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashEniMacOverrideType +convert_sai_dash_eni_mac_override_type_t_to_proto(const sai_int32_t val); +sai_dash_eni_mac_override_type_t +convert_sai_dash_eni_mac_override_type_t_to_sai( + lemming::dataplane::sai::DashEniMacOverrideType val); +google::protobuf::RepeatedField +convert_list_sai_dash_eni_mac_override_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_eni_mac_override_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashFlowAction convert_sai_dash_flow_action_t_to_proto( + const sai_int32_t val); +sai_dash_flow_action_t convert_sai_dash_flow_action_t_to_sai( + lemming::dataplane::sai::DashFlowAction val); +google::protobuf::RepeatedField +convert_list_sai_dash_flow_action_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dash_flow_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashFlowEnabledKey +convert_sai_dash_flow_enabled_key_t_to_proto(const sai_int32_t val); +sai_dash_flow_enabled_key_t convert_sai_dash_flow_enabled_key_t_to_sai( + lemming::dataplane::sai::DashFlowEnabledKey val); +google::protobuf::RepeatedField +convert_list_sai_dash_flow_enabled_key_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dash_flow_enabled_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionFilterKey +convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_proto( + const sai_int32_t val); +sai_dash_flow_entry_bulk_get_session_filter_key_t +convert_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionFilterKey val); +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_flow_entry_bulk_get_session_filter_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionMode +convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_proto( + const sai_int32_t val); +sai_dash_flow_entry_bulk_get_session_mode_t +convert_sai_dash_flow_entry_bulk_get_session_mode_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionMode val); +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_flow_entry_bulk_get_session_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashFlowEntryBulkGetSessionOpKey +convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_proto( + const sai_int32_t val); +sai_dash_flow_entry_bulk_get_session_op_key_t +convert_sai_dash_flow_entry_bulk_get_session_op_key_t_to_sai( + lemming::dataplane::sai::DashFlowEntryBulkGetSessionOpKey val); +google::protobuf::RepeatedField +convert_list_sai_dash_flow_entry_bulk_get_session_op_key_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_flow_entry_bulk_get_session_op_key_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashHaRole convert_sai_dash_ha_role_t_to_proto( + const sai_int32_t val); +sai_dash_ha_role_t convert_sai_dash_ha_role_t_to_sai( + lemming::dataplane::sai::DashHaRole val); +google::protobuf::RepeatedField convert_list_sai_dash_ha_role_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_ha_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashHaState convert_sai_dash_ha_state_t_to_proto( + const sai_int32_t val); +sai_dash_ha_state_t convert_sai_dash_ha_state_t_to_sai( + lemming::dataplane::sai::DashHaState val); +google::protobuf::RepeatedField convert_list_sai_dash_ha_state_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dash_ha_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashRoutingActions +convert_sai_dash_routing_actions_t_to_proto(const sai_int32_t val); +sai_dash_routing_actions_t convert_sai_dash_routing_actions_t_to_sai( + lemming::dataplane::sai::DashRoutingActions val); +google::protobuf::RepeatedField +convert_list_sai_dash_routing_actions_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dash_routing_actions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DashTunnelDscpMode +convert_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_int32_t val); +sai_dash_tunnel_dscp_mode_t convert_sai_dash_tunnel_dscp_mode_t_to_sai( + lemming::dataplane::sai::DashTunnelDscpMode val); +google::protobuf::RepeatedField +convert_list_sai_dash_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dash_tunnel_dscp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DebugCounterAttr +convert_sai_debug_counter_attr_t_to_proto(const sai_int32_t val); +sai_debug_counter_attr_t convert_sai_debug_counter_attr_t_to_sai( + lemming::dataplane::sai::DebugCounterAttr val); +google::protobuf::RepeatedField +convert_list_sai_debug_counter_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_debug_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DebugCounterBindMethod +convert_sai_debug_counter_bind_method_t_to_proto(const sai_int32_t val); +sai_debug_counter_bind_method_t convert_sai_debug_counter_bind_method_t_to_sai( + lemming::dataplane::sai::DebugCounterBindMethod val); +google::protobuf::RepeatedField +convert_list_sai_debug_counter_bind_method_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_debug_counter_bind_method_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DebugCounterType +convert_sai_debug_counter_type_t_to_proto(const sai_int32_t val); +sai_debug_counter_type_t convert_sai_debug_counter_type_t_to_sai( + lemming::dataplane::sai::DebugCounterType val); +google::protobuf::RepeatedField +convert_list_sai_debug_counter_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_debug_counter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelAttr convert_sai_dtel_attr_t_to_proto( + const sai_int32_t val); +sai_dtel_attr_t convert_sai_dtel_attr_t_to_sai( + lemming::dataplane::sai::DtelAttr val); +google::protobuf::RepeatedField convert_list_sai_dtel_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dtel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelEventAttr convert_sai_dtel_event_attr_t_to_proto( + const sai_int32_t val); +sai_dtel_event_attr_t convert_sai_dtel_event_attr_t_to_sai( + lemming::dataplane::sai::DtelEventAttr val); +google::protobuf::RepeatedField +convert_list_sai_dtel_event_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dtel_event_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelEventType convert_sai_dtel_event_type_t_to_proto( + const sai_int32_t val); +sai_dtel_event_type_t convert_sai_dtel_event_type_t_to_sai( + lemming::dataplane::sai::DtelEventType val); +google::protobuf::RepeatedField +convert_list_sai_dtel_event_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dtel_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelIntSessionAttr +convert_sai_dtel_int_session_attr_t_to_proto(const sai_int32_t val); +sai_dtel_int_session_attr_t convert_sai_dtel_int_session_attr_t_to_sai( + lemming::dataplane::sai::DtelIntSessionAttr val); +google::protobuf::RepeatedField +convert_list_sai_dtel_int_session_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dtel_int_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelQueueReportAttr +convert_sai_dtel_queue_report_attr_t_to_proto(const sai_int32_t val); +sai_dtel_queue_report_attr_t convert_sai_dtel_queue_report_attr_t_to_sai( + lemming::dataplane::sai::DtelQueueReportAttr val); +google::protobuf::RepeatedField +convert_list_sai_dtel_queue_report_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_dtel_queue_report_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::DtelReportSessionAttr +convert_sai_dtel_report_session_attr_t_to_proto(const sai_int32_t val); +sai_dtel_report_session_attr_t convert_sai_dtel_report_session_attr_t_to_sai( + lemming::dataplane::sai::DtelReportSessionAttr val); +google::protobuf::RepeatedField +convert_list_sai_dtel_report_session_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_dtel_report_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::EcnMarkMode convert_sai_ecn_mark_mode_t_to_proto( + const sai_int32_t val); +sai_ecn_mark_mode_t convert_sai_ecn_mark_mode_t_to_sai( + lemming::dataplane::sai::EcnMarkMode val); +google::protobuf::RepeatedField convert_list_sai_ecn_mark_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ecn_mark_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::ErspanEncapsulationType +convert_sai_erspan_encapsulation_type_t_to_proto(const sai_int32_t val); +sai_erspan_encapsulation_type_t convert_sai_erspan_encapsulation_type_t_to_sai( + lemming::dataplane::sai::ErspanEncapsulationType val); +google::protobuf::RepeatedField +convert_list_sai_erspan_encapsulation_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_erspan_encapsulation_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FdbEntryAttr convert_sai_fdb_entry_attr_t_to_proto( + const sai_int32_t val); +sai_fdb_entry_attr_t convert_sai_fdb_entry_attr_t_to_sai( + lemming::dataplane::sai::FdbEntryAttr val); +google::protobuf::RepeatedField convert_list_sai_fdb_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_fdb_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FdbEntryType convert_sai_fdb_entry_type_t_to_proto( + const sai_int32_t val); +sai_fdb_entry_type_t convert_sai_fdb_entry_type_t_to_sai( + lemming::dataplane::sai::FdbEntryType val); +google::protobuf::RepeatedField convert_list_sai_fdb_entry_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_fdb_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FdbEvent convert_sai_fdb_event_t_to_proto( + const sai_int32_t val); +sai_fdb_event_t convert_sai_fdb_event_t_to_sai( + lemming::dataplane::sai::FdbEvent val); +google::protobuf::RepeatedField convert_list_sai_fdb_event_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_fdb_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FdbFlushAttr convert_sai_fdb_flush_attr_t_to_proto( + const sai_int32_t val); +sai_fdb_flush_attr_t convert_sai_fdb_flush_attr_t_to_sai( + lemming::dataplane::sai::FdbFlushAttr val); +google::protobuf::RepeatedField convert_list_sai_fdb_flush_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_fdb_flush_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FdbFlushEntryType +convert_sai_fdb_flush_entry_type_t_to_proto(const sai_int32_t val); +sai_fdb_flush_entry_type_t convert_sai_fdb_flush_entry_type_t_to_sai( + lemming::dataplane::sai::FdbFlushEntryType val); +google::protobuf::RepeatedField +convert_list_sai_fdb_flush_entry_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_fdb_flush_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::FineGrainedHashFieldAttr +convert_sai_fine_grained_hash_field_attr_t_to_proto(const sai_int32_t val); +sai_fine_grained_hash_field_attr_t +convert_sai_fine_grained_hash_field_attr_t_to_sai( + lemming::dataplane::sai::FineGrainedHashFieldAttr val); +google::protobuf::RepeatedField +convert_list_sai_fine_grained_hash_field_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_fine_grained_hash_field_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::GenericProgrammableAttr +convert_sai_generic_programmable_attr_t_to_proto(const sai_int32_t val); +sai_generic_programmable_attr_t convert_sai_generic_programmable_attr_t_to_sai( + lemming::dataplane::sai::GenericProgrammableAttr val); +google::protobuf::RepeatedField +convert_list_sai_generic_programmable_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_generic_programmable_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HaScopeEvent convert_sai_ha_scope_event_t_to_proto( + const sai_int32_t val); +sai_ha_scope_event_t convert_sai_ha_scope_event_t_to_sai( + lemming::dataplane::sai::HaScopeEvent val); +google::protobuf::RepeatedField convert_list_sai_ha_scope_event_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ha_scope_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HaSetEvent convert_sai_ha_set_event_t_to_proto( + const sai_int32_t val); +sai_ha_set_event_t convert_sai_ha_set_event_t_to_sai( + lemming::dataplane::sai::HaSetEvent val); +google::protobuf::RepeatedField convert_list_sai_ha_set_event_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ha_set_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HashAlgorithm convert_sai_hash_algorithm_t_to_proto( + const sai_int32_t val); +sai_hash_algorithm_t convert_sai_hash_algorithm_t_to_sai( + lemming::dataplane::sai::HashAlgorithm val); +google::protobuf::RepeatedField convert_list_sai_hash_algorithm_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hash_algorithm_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HashAttr convert_sai_hash_attr_t_to_proto( + const sai_int32_t val); +sai_hash_attr_t convert_sai_hash_attr_t_to_sai( + lemming::dataplane::sai::HashAttr val); +google::protobuf::RepeatedField convert_list_sai_hash_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hash_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HealthDataType convert_sai_health_data_type_t_to_proto( + const sai_int32_t val); +sai_health_data_type_t convert_sai_health_data_type_t_to_sai( + lemming::dataplane::sai::HealthDataType val); +google::protobuf::RepeatedField +convert_list_sai_health_data_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_health_data_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifAttr convert_sai_hostif_attr_t_to_proto( + const sai_int32_t val); +sai_hostif_attr_t convert_sai_hostif_attr_t_to_sai( + lemming::dataplane::sai::HostifAttr val); +google::protobuf::RepeatedField convert_list_sai_hostif_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTableEntryAttr +convert_sai_hostif_table_entry_attr_t_to_proto(const sai_int32_t val); +sai_hostif_table_entry_attr_t convert_sai_hostif_table_entry_attr_t_to_sai( + lemming::dataplane::sai::HostifTableEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_table_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTableEntryChannelType +convert_sai_hostif_table_entry_channel_type_t_to_proto(const sai_int32_t val); +sai_hostif_table_entry_channel_type_t +convert_sai_hostif_table_entry_channel_type_t_to_sai( + lemming::dataplane::sai::HostifTableEntryChannelType val); +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_channel_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_table_entry_channel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTableEntryType +convert_sai_hostif_table_entry_type_t_to_proto(const sai_int32_t val); +sai_hostif_table_entry_type_t convert_sai_hostif_table_entry_type_t_to_sai( + lemming::dataplane::sai::HostifTableEntryType val); +google::protobuf::RepeatedField +convert_list_sai_hostif_table_entry_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_table_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTrapAttr convert_sai_hostif_trap_attr_t_to_proto( + const sai_int32_t val); +sai_hostif_trap_attr_t convert_sai_hostif_trap_attr_t_to_sai( + lemming::dataplane::sai::HostifTrapAttr val); +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_trap_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTrapGroupAttr +convert_sai_hostif_trap_group_attr_t_to_proto(const sai_int32_t val); +sai_hostif_trap_group_attr_t convert_sai_hostif_trap_group_attr_t_to_sai( + lemming::dataplane::sai::HostifTrapGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_trap_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTrapType convert_sai_hostif_trap_type_t_to_proto( + const sai_int32_t val); +sai_hostif_trap_type_t convert_sai_hostif_trap_type_t_to_sai( + lemming::dataplane::sai::HostifTrapType val); +google::protobuf::RepeatedField +convert_list_sai_hostif_trap_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_trap_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifTxType convert_sai_hostif_tx_type_t_to_proto( + const sai_int32_t val); +sai_hostif_tx_type_t convert_sai_hostif_tx_type_t_to_sai( + lemming::dataplane::sai::HostifTxType val); +google::protobuf::RepeatedField convert_list_sai_hostif_tx_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_tx_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifType convert_sai_hostif_type_t_to_proto( + const sai_int32_t val); +sai_hostif_type_t convert_sai_hostif_type_t_to_sai( + lemming::dataplane::sai::HostifType val); +google::protobuf::RepeatedField convert_list_sai_hostif_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifUserDefinedTrapAttr +convert_sai_hostif_user_defined_trap_attr_t_to_proto(const sai_int32_t val); +sai_hostif_user_defined_trap_attr_t +convert_sai_hostif_user_defined_trap_attr_t_to_sai( + lemming::dataplane::sai::HostifUserDefinedTrapAttr val); +google::protobuf::RepeatedField +convert_list_sai_hostif_user_defined_trap_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_user_defined_trap_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifUserDefinedTrapType +convert_sai_hostif_user_defined_trap_type_t_to_proto(const sai_int32_t val); +sai_hostif_user_defined_trap_type_t +convert_sai_hostif_user_defined_trap_type_t_to_sai( + lemming::dataplane::sai::HostifUserDefinedTrapType val); +google::protobuf::RepeatedField +convert_list_sai_hostif_user_defined_trap_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_hostif_user_defined_trap_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::HostifVlanTag convert_sai_hostif_vlan_tag_t_to_proto( + const sai_int32_t val); +sai_hostif_vlan_tag_t convert_sai_hostif_vlan_tag_t_to_sai( + lemming::dataplane::sai::HostifVlanTag val); +google::protobuf::RepeatedField +convert_list_sai_hostif_vlan_tag_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_hostif_vlan_tag_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IcmpEchoSessionAttr +convert_sai_icmp_echo_session_attr_t_to_proto(const sai_int32_t val); +sai_icmp_echo_session_attr_t convert_sai_icmp_echo_session_attr_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionAttr val); +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_icmp_echo_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IcmpEchoSessionStat +convert_sai_icmp_echo_session_stat_t_to_proto(const sai_int32_t val); +sai_icmp_echo_session_stat_t convert_sai_icmp_echo_session_stat_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionStat val); +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_icmp_echo_session_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IcmpEchoSessionState +convert_sai_icmp_echo_session_state_t_to_proto(const sai_int32_t val); +sai_icmp_echo_session_state_t convert_sai_icmp_echo_session_state_t_to_sai( + lemming::dataplane::sai::IcmpEchoSessionState val); +google::protobuf::RepeatedField +convert_list_sai_icmp_echo_session_state_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_icmp_echo_session_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::InDropReason convert_sai_in_drop_reason_t_to_proto( + const sai_int32_t val); +sai_in_drop_reason_t convert_sai_in_drop_reason_t_to_sai( + lemming::dataplane::sai::InDropReason val); +google::protobuf::RepeatedField convert_list_sai_in_drop_reason_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_in_drop_reason_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IngressPriorityGroupAttr +convert_sai_ingress_priority_group_attr_t_to_proto(const sai_int32_t val); +sai_ingress_priority_group_attr_t +convert_sai_ingress_priority_group_attr_t_to_sai( + lemming::dataplane::sai::IngressPriorityGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_ingress_priority_group_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ingress_priority_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IngressPriorityGroupStat +convert_sai_ingress_priority_group_stat_t_to_proto(const sai_int32_t val); +sai_ingress_priority_group_stat_t +convert_sai_ingress_priority_group_stat_t_to_sai( + lemming::dataplane::sai::IngressPriorityGroupStat val); +google::protobuf::RepeatedField +convert_list_sai_ingress_priority_group_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ingress_priority_group_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::InsegEntryAttr convert_sai_inseg_entry_attr_t_to_proto( + const sai_int32_t val); +sai_inseg_entry_attr_t convert_sai_inseg_entry_attr_t_to_sai( + lemming::dataplane::sai::InsegEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_inseg_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::InsegEntryPopQosMode +convert_sai_inseg_entry_pop_qos_mode_t_to_proto(const sai_int32_t val); +sai_inseg_entry_pop_qos_mode_t convert_sai_inseg_entry_pop_qos_mode_t_to_sai( + lemming::dataplane::sai::InsegEntryPopQosMode val); +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_pop_qos_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_inseg_entry_pop_qos_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::InsegEntryPopTtlMode +convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(const sai_int32_t val); +sai_inseg_entry_pop_ttl_mode_t convert_sai_inseg_entry_pop_ttl_mode_t_to_sai( + lemming::dataplane::sai::InsegEntryPopTtlMode val); +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_pop_ttl_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_inseg_entry_pop_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::InsegEntryPscType +convert_sai_inseg_entry_psc_type_t_to_proto(const sai_int32_t val); +sai_inseg_entry_psc_type_t convert_sai_inseg_entry_psc_type_t_to_sai( + lemming::dataplane::sai::InsegEntryPscType val); +google::protobuf::RepeatedField +convert_list_sai_inseg_entry_psc_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_inseg_entry_psc_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpAddrFamily convert_sai_ip_addr_family_t_to_proto( + const sai_int32_t val); +sai_ip_addr_family_t convert_sai_ip_addr_family_t_to_sai( + lemming::dataplane::sai::IpAddrFamily val); +google::protobuf::RepeatedField convert_list_sai_ip_addr_family_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ip_addr_family_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpmcEntryAttr convert_sai_ipmc_entry_attr_t_to_proto( + const sai_int32_t val); +sai_ipmc_entry_attr_t convert_sai_ipmc_entry_attr_t_to_sai( + lemming::dataplane::sai::IpmcEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_ipmc_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipmc_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpmcEntryType convert_sai_ipmc_entry_type_t_to_proto( + const sai_int32_t val); +sai_ipmc_entry_type_t convert_sai_ipmc_entry_type_t_to_sai( + lemming::dataplane::sai::IpmcEntryType val); +google::protobuf::RepeatedField +convert_list_sai_ipmc_entry_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipmc_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpmcGroupAttr convert_sai_ipmc_group_attr_t_to_proto( + const sai_int32_t val); +sai_ipmc_group_attr_t convert_sai_ipmc_group_attr_t_to_sai( + lemming::dataplane::sai::IpmcGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_ipmc_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipmc_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpmcGroupMemberAttr +convert_sai_ipmc_group_member_attr_t_to_proto(const sai_int32_t val); +sai_ipmc_group_member_attr_t convert_sai_ipmc_group_member_attr_t_to_sai( + lemming::dataplane::sai::IpmcGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_ipmc_group_member_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipmc_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecAttr convert_sai_ipsec_attr_t_to_proto( + const sai_int32_t val); +sai_ipsec_attr_t convert_sai_ipsec_attr_t_to_sai( + lemming::dataplane::sai::IpsecAttr val); +google::protobuf::RepeatedField convert_list_sai_ipsec_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ipsec_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecCipher convert_sai_ipsec_cipher_t_to_proto( + const sai_int32_t val); +sai_ipsec_cipher_t convert_sai_ipsec_cipher_t_to_sai( + lemming::dataplane::sai::IpsecCipher val); +google::protobuf::RepeatedField convert_list_sai_ipsec_cipher_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ipsec_cipher_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecDirection convert_sai_ipsec_direction_t_to_proto( + const sai_int32_t val); +sai_ipsec_direction_t convert_sai_ipsec_direction_t_to_sai( + lemming::dataplane::sai::IpsecDirection val); +google::protobuf::RepeatedField +convert_list_sai_ipsec_direction_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipsec_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecPortAttr convert_sai_ipsec_port_attr_t_to_proto( + const sai_int32_t val); +sai_ipsec_port_attr_t convert_sai_ipsec_port_attr_t_to_sai( + lemming::dataplane::sai::IpsecPortAttr val); +google::protobuf::RepeatedField +convert_list_sai_ipsec_port_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipsec_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecPortStat convert_sai_ipsec_port_stat_t_to_proto( + const sai_int32_t val); +sai_ipsec_port_stat_t convert_sai_ipsec_port_stat_t_to_sai( + lemming::dataplane::sai::IpsecPortStat val); +google::protobuf::RepeatedField +convert_list_sai_ipsec_port_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ipsec_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecSaAttr convert_sai_ipsec_sa_attr_t_to_proto( + const sai_int32_t val); +sai_ipsec_sa_attr_t convert_sai_ipsec_sa_attr_t_to_sai( + lemming::dataplane::sai::IpsecSaAttr val); +google::protobuf::RepeatedField convert_list_sai_ipsec_sa_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ipsec_sa_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecSaOctetCountStatus +convert_sai_ipsec_sa_octet_count_status_t_to_proto(const sai_int32_t val); +sai_ipsec_sa_octet_count_status_t +convert_sai_ipsec_sa_octet_count_status_t_to_sai( + lemming::dataplane::sai::IpsecSaOctetCountStatus val); +google::protobuf::RepeatedField +convert_list_sai_ipsec_sa_octet_count_status_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ipsec_sa_octet_count_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IpsecSaStat convert_sai_ipsec_sa_stat_t_to_proto( + const sai_int32_t val); +sai_ipsec_sa_stat_t convert_sai_ipsec_sa_stat_t_to_sai( + lemming::dataplane::sai::IpsecSaStat val); +google::protobuf::RepeatedField convert_list_sai_ipsec_sa_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ipsec_sa_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IsolationGroupAttr +convert_sai_isolation_group_attr_t_to_proto(const sai_int32_t val); +sai_isolation_group_attr_t convert_sai_isolation_group_attr_t_to_sai( + lemming::dataplane::sai::IsolationGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_isolation_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_isolation_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IsolationGroupMemberAttr +convert_sai_isolation_group_member_attr_t_to_proto(const sai_int32_t val); +sai_isolation_group_member_attr_t +convert_sai_isolation_group_member_attr_t_to_sai( + lemming::dataplane::sai::IsolationGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_isolation_group_member_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_isolation_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::IsolationGroupType +convert_sai_isolation_group_type_t_to_proto(const sai_int32_t val); +sai_isolation_group_type_t convert_sai_isolation_group_type_t_to_sai( + lemming::dataplane::sai::IsolationGroupType val); +google::protobuf::RepeatedField +convert_list_sai_isolation_group_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_isolation_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::L2mcEntryAttr convert_sai_l2mc_entry_attr_t_to_proto( + const sai_int32_t val); +sai_l2mc_entry_attr_t convert_sai_l2mc_entry_attr_t_to_sai( + lemming::dataplane::sai::L2mcEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_l2mc_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_l2mc_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::L2mcEntryType convert_sai_l2mc_entry_type_t_to_proto( + const sai_int32_t val); +sai_l2mc_entry_type_t convert_sai_l2mc_entry_type_t_to_sai( + lemming::dataplane::sai::L2mcEntryType val); +google::protobuf::RepeatedField +convert_list_sai_l2mc_entry_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_l2mc_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::L2mcGroupAttr convert_sai_l2mc_group_attr_t_to_proto( + const sai_int32_t val); +sai_l2mc_group_attr_t convert_sai_l2mc_group_attr_t_to_sai( + lemming::dataplane::sai::L2mcGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_l2mc_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_l2mc_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::L2mcGroupMemberAttr +convert_sai_l2mc_group_member_attr_t_to_proto(const sai_int32_t val); +sai_l2mc_group_member_attr_t convert_sai_l2mc_group_member_attr_t_to_sai( + lemming::dataplane::sai::L2mcGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_l2mc_group_member_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_l2mc_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::LagAttr convert_sai_lag_attr_t_to_proto( + const sai_int32_t val); +sai_lag_attr_t convert_sai_lag_attr_t_to_sai( + lemming::dataplane::sai::LagAttr val); +google::protobuf::RepeatedField convert_list_sai_lag_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_lag_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::LagMemberAttr convert_sai_lag_member_attr_t_to_proto( + const sai_int32_t val); +sai_lag_member_attr_t convert_sai_lag_member_attr_t_to_sai( + lemming::dataplane::sai::LagMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_lag_member_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_lag_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::LogLevel convert_sai_log_level_t_to_proto( + const sai_int32_t val); +sai_log_level_t convert_sai_log_level_t_to_sai( + lemming::dataplane::sai::LogLevel val); +google::protobuf::RepeatedField convert_list_sai_log_level_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_log_level_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecAttr convert_sai_macsec_attr_t_to_proto( + const sai_int32_t val); +sai_macsec_attr_t convert_sai_macsec_attr_t_to_sai( + lemming::dataplane::sai::MacsecAttr val); +google::protobuf::RepeatedField convert_list_sai_macsec_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecCipherSuite +convert_sai_macsec_cipher_suite_t_to_proto(const sai_int32_t val); +sai_macsec_cipher_suite_t convert_sai_macsec_cipher_suite_t_to_sai( + lemming::dataplane::sai::MacsecCipherSuite val); +google::protobuf::RepeatedField +convert_list_sai_macsec_cipher_suite_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_cipher_suite_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecDirection +convert_sai_macsec_direction_t_to_proto(const sai_int32_t val); +sai_macsec_direction_t convert_sai_macsec_direction_t_to_sai( + lemming::dataplane::sai::MacsecDirection val); +google::protobuf::RepeatedField +convert_list_sai_macsec_direction_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_direction_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecFlowAttr convert_sai_macsec_flow_attr_t_to_proto( + const sai_int32_t val); +sai_macsec_flow_attr_t convert_sai_macsec_flow_attr_t_to_sai( + lemming::dataplane::sai::MacsecFlowAttr val); +google::protobuf::RepeatedField +convert_list_sai_macsec_flow_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_flow_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecFlowStat convert_sai_macsec_flow_stat_t_to_proto( + const sai_int32_t val); +sai_macsec_flow_stat_t convert_sai_macsec_flow_stat_t_to_sai( + lemming::dataplane::sai::MacsecFlowStat val); +google::protobuf::RepeatedField +convert_list_sai_macsec_flow_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_flow_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc +convert_sai_macsec_max_secure_associations_per_sc_t_to_proto( + const sai_int32_t val); +sai_macsec_max_secure_associations_per_sc_t +convert_sai_macsec_max_secure_associations_per_sc_t_to_sai( + lemming::dataplane::sai::MacsecMaxSecureAssociationsPerSc val); +google::protobuf::RepeatedField +convert_list_sai_macsec_max_secure_associations_per_sc_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_max_secure_associations_per_sc_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecPortAttr convert_sai_macsec_port_attr_t_to_proto( + const sai_int32_t val); +sai_macsec_port_attr_t convert_sai_macsec_port_attr_t_to_sai( + lemming::dataplane::sai::MacsecPortAttr val); +google::protobuf::RepeatedField +convert_list_sai_macsec_port_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecPortStat convert_sai_macsec_port_stat_t_to_proto( + const sai_int32_t val); +sai_macsec_port_stat_t convert_sai_macsec_port_stat_t_to_sai( + lemming::dataplane::sai::MacsecPortStat val); +google::protobuf::RepeatedField +convert_list_sai_macsec_port_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_macsec_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecSaAttr convert_sai_macsec_sa_attr_t_to_proto( + const sai_int32_t val); +sai_macsec_sa_attr_t convert_sai_macsec_sa_attr_t_to_sai( + lemming::dataplane::sai::MacsecSaAttr val); +google::protobuf::RepeatedField convert_list_sai_macsec_sa_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_sa_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecSaStat convert_sai_macsec_sa_stat_t_to_proto( + const sai_int32_t val); +sai_macsec_sa_stat_t convert_sai_macsec_sa_stat_t_to_sai( + lemming::dataplane::sai::MacsecSaStat val); +google::protobuf::RepeatedField convert_list_sai_macsec_sa_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_sa_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecScAttr convert_sai_macsec_sc_attr_t_to_proto( + const sai_int32_t val); +sai_macsec_sc_attr_t convert_sai_macsec_sc_attr_t_to_sai( + lemming::dataplane::sai::MacsecScAttr val); +google::protobuf::RepeatedField convert_list_sai_macsec_sc_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_sc_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MacsecScStat convert_sai_macsec_sc_stat_t_to_proto( + const sai_int32_t val); +sai_macsec_sc_stat_t convert_sai_macsec_sc_stat_t_to_sai( + lemming::dataplane::sai::MacsecScStat val); +google::protobuf::RepeatedField convert_list_sai_macsec_sc_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_macsec_sc_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::McastFdbEntryAttr +convert_sai_mcast_fdb_entry_attr_t_to_proto(const sai_int32_t val); +sai_mcast_fdb_entry_attr_t convert_sai_mcast_fdb_entry_attr_t_to_sai( + lemming::dataplane::sai::McastFdbEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_mcast_fdb_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_mcast_fdb_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MeterType convert_sai_meter_type_t_to_proto( + const sai_int32_t val); +sai_meter_type_t convert_sai_meter_type_t_to_sai( + lemming::dataplane::sai::MeterType val); +google::protobuf::RepeatedField convert_list_sai_meter_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_meter_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MirrorSessionAttr +convert_sai_mirror_session_attr_t_to_proto(const sai_int32_t val); +sai_mirror_session_attr_t convert_sai_mirror_session_attr_t_to_sai( + lemming::dataplane::sai::MirrorSessionAttr val); +google::protobuf::RepeatedField +convert_list_sai_mirror_session_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_mirror_session_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MirrorSessionCongestionMode +convert_sai_mirror_session_congestion_mode_t_to_proto(const sai_int32_t val); +sai_mirror_session_congestion_mode_t +convert_sai_mirror_session_congestion_mode_t_to_sai( + lemming::dataplane::sai::MirrorSessionCongestionMode val); +google::protobuf::RepeatedField +convert_list_sai_mirror_session_congestion_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_mirror_session_congestion_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MirrorSessionType +convert_sai_mirror_session_type_t_to_proto(const sai_int32_t val); +sai_mirror_session_type_t convert_sai_mirror_session_type_t_to_sai( + lemming::dataplane::sai::MirrorSessionType val); +google::protobuf::RepeatedField +convert_list_sai_mirror_session_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_mirror_session_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MyMacAttr convert_sai_my_mac_attr_t_to_proto( + const sai_int32_t val); +sai_my_mac_attr_t convert_sai_my_mac_attr_t_to_sai( + lemming::dataplane::sai::MyMacAttr val); +google::protobuf::RepeatedField convert_list_sai_my_mac_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_my_mac_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MySidEntryAttr +convert_sai_my_sid_entry_attr_t_to_proto(const sai_int32_t val); +sai_my_sid_entry_attr_t convert_sai_my_sid_entry_attr_t_to_sai( + lemming::dataplane::sai::MySidEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_my_sid_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor +convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + const sai_int32_t val); +sai_my_sid_entry_endpoint_behavior_flavor_t +convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + lemming::dataplane::sai::MySidEntryEndpointBehaviorFlavor val); +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::MySidEntryEndpointBehavior +convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(const sai_int32_t val); +sai_my_sid_entry_endpoint_behavior_t +convert_sai_my_sid_entry_endpoint_behavior_t_to_sai( + lemming::dataplane::sai::MySidEntryEndpointBehavior val); +google::protobuf::RepeatedField +convert_list_sai_my_sid_entry_endpoint_behavior_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_my_sid_entry_endpoint_behavior_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NatEntryAttr convert_sai_nat_entry_attr_t_to_proto( + const sai_int32_t val); +sai_nat_entry_attr_t convert_sai_nat_entry_attr_t_to_sai( + lemming::dataplane::sai::NatEntryAttr val); +google::protobuf::RepeatedField convert_list_sai_nat_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_nat_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NatEvent convert_sai_nat_event_t_to_proto( + const sai_int32_t val); +sai_nat_event_t convert_sai_nat_event_t_to_sai( + lemming::dataplane::sai::NatEvent val); +google::protobuf::RepeatedField convert_list_sai_nat_event_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_nat_event_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NatType convert_sai_nat_type_t_to_proto( + const sai_int32_t val); +sai_nat_type_t convert_sai_nat_type_t_to_sai( + lemming::dataplane::sai::NatType val); +google::protobuf::RepeatedField convert_list_sai_nat_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_nat_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NatZoneCounterAttr +convert_sai_nat_zone_counter_attr_t_to_proto(const sai_int32_t val); +sai_nat_zone_counter_attr_t convert_sai_nat_zone_counter_attr_t_to_sai( + lemming::dataplane::sai::NatZoneCounterAttr val); +google::protobuf::RepeatedField +convert_list_sai_nat_zone_counter_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_nat_zone_counter_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NativeHashField +convert_sai_native_hash_field_t_to_proto(const sai_int32_t val); +sai_native_hash_field_t convert_sai_native_hash_field_t_to_sai( + lemming::dataplane::sai::NativeHashField val); +google::protobuf::RepeatedField +convert_list_sai_native_hash_field_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_native_hash_field_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NeighborEntryAttr +convert_sai_neighbor_entry_attr_t_to_proto(const sai_int32_t val); +sai_neighbor_entry_attr_t convert_sai_neighbor_entry_attr_t_to_sai( + lemming::dataplane::sai::NeighborEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_neighbor_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_neighbor_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopAttr convert_sai_next_hop_attr_t_to_proto( + const sai_int32_t val); +sai_next_hop_attr_t convert_sai_next_hop_attr_t_to_sai( + lemming::dataplane::sai::NextHopAttr val); +google::protobuf::RepeatedField convert_list_sai_next_hop_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_next_hop_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupAttr +convert_sai_next_hop_group_attr_t_to_proto(const sai_int32_t val); +sai_next_hop_group_attr_t convert_sai_next_hop_group_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupMapAttr +convert_sai_next_hop_group_map_attr_t_to_proto(const sai_int32_t val); +sai_next_hop_group_map_attr_t convert_sai_next_hop_group_map_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupMapAttr val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_map_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupMapType +convert_sai_next_hop_group_map_type_t_to_proto(const sai_int32_t val); +sai_next_hop_group_map_type_t convert_sai_next_hop_group_map_type_t_to_sai( + lemming::dataplane::sai::NextHopGroupMapType val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_map_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupMemberAttr +convert_sai_next_hop_group_member_attr_t_to_proto(const sai_int32_t val); +sai_next_hop_group_member_attr_t +convert_sai_next_hop_group_member_attr_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupMemberConfiguredRole +convert_sai_next_hop_group_member_configured_role_t_to_proto( + const sai_int32_t val); +sai_next_hop_group_member_configured_role_t +convert_sai_next_hop_group_member_configured_role_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberConfiguredRole val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_configured_role_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_member_configured_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupMemberObservedRole +convert_sai_next_hop_group_member_observed_role_t_to_proto( + const sai_int32_t val); +sai_next_hop_group_member_observed_role_t +convert_sai_next_hop_group_member_observed_role_t_to_sai( + lemming::dataplane::sai::NextHopGroupMemberObservedRole val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_member_observed_role_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_member_observed_role_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopGroupType +convert_sai_next_hop_group_type_t_to_proto(const sai_int32_t val); +sai_next_hop_group_type_t convert_sai_next_hop_group_type_t_to_sai( + lemming::dataplane::sai::NextHopGroupType val); +google::protobuf::RepeatedField +convert_list_sai_next_hop_group_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_next_hop_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::NextHopType convert_sai_next_hop_type_t_to_proto( + const sai_int32_t val); +sai_next_hop_type_t convert_sai_next_hop_type_t_to_sai( + lemming::dataplane::sai::NextHopType val); +google::protobuf::RepeatedField convert_list_sai_next_hop_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_next_hop_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::ObjectStage convert_sai_object_stage_t_to_proto( + const sai_int32_t val); +sai_object_stage_t convert_sai_object_stage_t_to_sai( + lemming::dataplane::sai::ObjectStage val); +google::protobuf::RepeatedField convert_list_sai_object_stage_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_object_stage_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::ObjectTypeExtensions +convert_sai_object_type_extensions_t_to_proto(const sai_int32_t val); +sai_object_type_extensions_t convert_sai_object_type_extensions_t_to_sai( + lemming::dataplane::sai::ObjectTypeExtensions val); +google::protobuf::RepeatedField +convert_list_sai_object_type_extensions_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_object_type_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::ObjectType convert_sai_object_type_t_to_proto( + const sai_int32_t val); +sai_object_type_t convert_sai_object_type_t_to_sai( + lemming::dataplane::sai::ObjectType val); +google::protobuf::RepeatedField convert_list_sai_object_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_object_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::OutDropReason convert_sai_out_drop_reason_t_to_proto( + const sai_int32_t val); +sai_out_drop_reason_t convert_sai_out_drop_reason_t_to_sai( + lemming::dataplane::sai::OutDropReason val); +google::protobuf::RepeatedField +convert_list_sai_out_drop_reason_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_out_drop_reason_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::OutsegExpMode convert_sai_outseg_exp_mode_t_to_proto( + const sai_int32_t val); +sai_outseg_exp_mode_t convert_sai_outseg_exp_mode_t_to_sai( + lemming::dataplane::sai::OutsegExpMode val); +google::protobuf::RepeatedField +convert_list_sai_outseg_exp_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_outseg_exp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::OutsegTtlMode convert_sai_outseg_ttl_mode_t_to_proto( + const sai_int32_t val); +sai_outseg_ttl_mode_t convert_sai_outseg_ttl_mode_t_to_sai( + lemming::dataplane::sai::OutsegTtlMode val); +google::protobuf::RepeatedField +convert_list_sai_outseg_ttl_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_outseg_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::OutsegType convert_sai_outseg_type_t_to_proto( + const sai_int32_t val); +sai_outseg_type_t convert_sai_outseg_type_t_to_sai( + lemming::dataplane::sai::OutsegType val); +google::protobuf::RepeatedField convert_list_sai_outseg_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_outseg_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PacketAction convert_sai_packet_action_t_to_proto( + const sai_int32_t val); +sai_packet_action_t convert_sai_packet_action_t_to_sai( + lemming::dataplane::sai::PacketAction val); +google::protobuf::RepeatedField convert_list_sai_packet_action_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_packet_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PacketColor convert_sai_packet_color_t_to_proto( + const sai_int32_t val); +sai_packet_color_t convert_sai_packet_color_t_to_sai( + lemming::dataplane::sai::PacketColor val); +google::protobuf::RepeatedField convert_list_sai_packet_color_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_packet_color_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PacketVlan convert_sai_packet_vlan_t_to_proto( + const sai_int32_t val); +sai_packet_vlan_t convert_sai_packet_vlan_t_to_sai( + lemming::dataplane::sai::PacketVlan val); +google::protobuf::RepeatedField convert_list_sai_packet_vlan_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_packet_vlan_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PoePortActiveChannelType +convert_sai_poe_port_active_channel_type_t_to_proto(const sai_int32_t val); +sai_poe_port_active_channel_type_t +convert_sai_poe_port_active_channel_type_t_to_sai( + lemming::dataplane::sai::PoePortActiveChannelType val); +google::protobuf::RepeatedField +convert_list_sai_poe_port_active_channel_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_poe_port_active_channel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PoePortClassMethodType +convert_sai_poe_port_class_method_type_t_to_proto(const sai_int32_t val); +sai_poe_port_class_method_type_t +convert_sai_poe_port_class_method_type_t_to_sai( + lemming::dataplane::sai::PoePortClassMethodType val); +google::protobuf::RepeatedField +convert_list_sai_poe_port_class_method_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_poe_port_class_method_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PoePortSignatureType +convert_sai_poe_port_signature_type_t_to_proto(const sai_int32_t val); +sai_poe_port_signature_type_t convert_sai_poe_port_signature_type_t_to_sai( + lemming::dataplane::sai::PoePortSignatureType val); +google::protobuf::RepeatedField +convert_list_sai_poe_port_signature_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_poe_port_signature_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PolicerAttr convert_sai_policer_attr_t_to_proto( + const sai_int32_t val); +sai_policer_attr_t convert_sai_policer_attr_t_to_sai( + lemming::dataplane::sai::PolicerAttr val); +google::protobuf::RepeatedField convert_list_sai_policer_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_policer_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PolicerColorSource +convert_sai_policer_color_source_t_to_proto(const sai_int32_t val); +sai_policer_color_source_t convert_sai_policer_color_source_t_to_sai( + lemming::dataplane::sai::PolicerColorSource val); +google::protobuf::RepeatedField +convert_list_sai_policer_color_source_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_policer_color_source_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PolicerMode convert_sai_policer_mode_t_to_proto( + const sai_int32_t val); +sai_policer_mode_t convert_sai_policer_mode_t_to_sai( + lemming::dataplane::sai::PolicerMode val); +google::protobuf::RepeatedField convert_list_sai_policer_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_policer_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PolicerStat convert_sai_policer_stat_t_to_proto( + const sai_int32_t val); +sai_policer_stat_t convert_sai_policer_stat_t_to_sai( + lemming::dataplane::sai::PolicerStat val); +google::protobuf::RepeatedField convert_list_sai_policer_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_policer_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortAttrExtensions +convert_sai_port_attr_extensions_t_to_proto(const sai_int32_t val); +sai_port_attr_extensions_t convert_sai_port_attr_extensions_t_to_sai( + lemming::dataplane::sai::PortAttrExtensions val); +google::protobuf::RepeatedField +convert_list_sai_port_attr_extensions_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_attr_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortAttr convert_sai_port_attr_t_to_proto( + const sai_int32_t val); +sai_port_attr_t convert_sai_port_attr_t_to_sai( + lemming::dataplane::sai::PortAttr val); +google::protobuf::RepeatedField convert_list_sai_port_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortAutoNegConfigMode +convert_sai_port_auto_neg_config_mode_t_to_proto(const sai_int32_t val); +sai_port_auto_neg_config_mode_t convert_sai_port_auto_neg_config_mode_t_to_sai( + lemming::dataplane::sai::PortAutoNegConfigMode val); +google::protobuf::RepeatedField +convert_list_sai_port_auto_neg_config_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_auto_neg_config_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortBreakoutModeType +convert_sai_port_breakout_mode_type_t_to_proto(const sai_int32_t val); +sai_port_breakout_mode_type_t convert_sai_port_breakout_mode_type_t_to_sai( + lemming::dataplane::sai::PortBreakoutModeType val); +google::protobuf::RepeatedField +convert_list_sai_port_breakout_mode_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_breakout_mode_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortCablePairState +convert_sai_port_cable_pair_state_t_to_proto(const sai_int32_t val); +sai_port_cable_pair_state_t convert_sai_port_cable_pair_state_t_to_sai( + lemming::dataplane::sai::PortCablePairState val); +google::protobuf::RepeatedField +convert_list_sai_port_cable_pair_state_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_cable_pair_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortCableType convert_sai_port_cable_type_t_to_proto( + const sai_int32_t val); +sai_port_cable_type_t convert_sai_port_cable_type_t_to_sai( + lemming::dataplane::sai::PortCableType val); +google::protobuf::RepeatedField +convert_list_sai_port_cable_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_cable_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortConnectorAttr +convert_sai_port_connector_attr_t_to_proto(const sai_int32_t val); +sai_port_connector_attr_t convert_sai_port_connector_attr_t_to_sai( + lemming::dataplane::sai::PortConnectorAttr val); +google::protobuf::RepeatedField +convert_list_sai_port_connector_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_connector_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortConnectorFailoverMode +convert_sai_port_connector_failover_mode_t_to_proto(const sai_int32_t val); +sai_port_connector_failover_mode_t +convert_sai_port_connector_failover_mode_t_to_sai( + lemming::dataplane::sai::PortConnectorFailoverMode val); +google::protobuf::RepeatedField +convert_list_sai_port_connector_failover_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_connector_failover_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortDatapathEnable +convert_sai_port_datapath_enable_t_to_proto(const sai_int32_t val); +sai_port_datapath_enable_t convert_sai_port_datapath_enable_t_to_sai( + lemming::dataplane::sai::PortDatapathEnable val); +google::protobuf::RepeatedField +convert_list_sai_port_datapath_enable_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_datapath_enable_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortDualMedia convert_sai_port_dual_media_t_to_proto( + const sai_int32_t val); +sai_port_dual_media_t convert_sai_port_dual_media_t_to_sai( + lemming::dataplane::sai::PortDualMedia val); +google::protobuf::RepeatedField +convert_list_sai_port_dual_media_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_dual_media_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortErrStatus convert_sai_port_err_status_t_to_proto( + const sai_int32_t val); +sai_port_err_status_t convert_sai_port_err_status_t_to_sai( + lemming::dataplane::sai::PortErrStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_err_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_err_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortErrorStatus +convert_sai_port_error_status_t_to_proto(const sai_int32_t val); +sai_port_error_status_t convert_sai_port_error_status_t_to_sai( + lemming::dataplane::sai::PortErrorStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_error_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_error_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortFecModeExtended +convert_sai_port_fec_mode_extended_t_to_proto(const sai_int32_t val); +sai_port_fec_mode_extended_t convert_sai_port_fec_mode_extended_t_to_sai( + lemming::dataplane::sai::PortFecModeExtended val); +google::protobuf::RepeatedField +convert_list_sai_port_fec_mode_extended_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_fec_mode_extended_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortFecMode convert_sai_port_fec_mode_t_to_proto( + const sai_int32_t val); +sai_port_fec_mode_t convert_sai_port_fec_mode_t_to_sai( + lemming::dataplane::sai::PortFecMode val); +google::protobuf::RepeatedField convert_list_sai_port_fec_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_fec_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortFlowControlMode +convert_sai_port_flow_control_mode_t_to_proto(const sai_int32_t val); +sai_port_flow_control_mode_t convert_sai_port_flow_control_mode_t_to_sai( + lemming::dataplane::sai::PortFlowControlMode val); +google::protobuf::RepeatedField +convert_list_sai_port_flow_control_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_flow_control_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortHostTxReadyStatus +convert_sai_port_host_tx_ready_status_t_to_proto(const sai_int32_t val); +sai_port_host_tx_ready_status_t convert_sai_port_host_tx_ready_status_t_to_sai( + lemming::dataplane::sai::PortHostTxReadyStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_host_tx_ready_status_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_host_tx_ready_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortInterfaceType +convert_sai_port_interface_type_t_to_proto(const sai_int32_t val); +sai_port_interface_type_t convert_sai_port_interface_type_t_to_sai( + lemming::dataplane::sai::PortInterfaceType val); +google::protobuf::RepeatedField +convert_list_sai_port_interface_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_interface_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortInternalLoopbackMode +convert_sai_port_internal_loopback_mode_t_to_proto(const sai_int32_t val); +sai_port_internal_loopback_mode_t +convert_sai_port_internal_loopback_mode_t_to_sai( + lemming::dataplane::sai::PortInternalLoopbackMode val); +google::protobuf::RepeatedField +convert_list_sai_port_internal_loopback_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_internal_loopback_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortLinkTrainingFailureStatus +convert_sai_port_link_training_failure_status_t_to_proto(const sai_int32_t val); +sai_port_link_training_failure_status_t +convert_sai_port_link_training_failure_status_t_to_sai( + lemming::dataplane::sai::PortLinkTrainingFailureStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_link_training_failure_status_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_link_training_failure_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortLinkTrainingRxStatus +convert_sai_port_link_training_rx_status_t_to_proto(const sai_int32_t val); +sai_port_link_training_rx_status_t +convert_sai_port_link_training_rx_status_t_to_sai( + lemming::dataplane::sai::PortLinkTrainingRxStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_link_training_rx_status_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_link_training_rx_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortLoopbackMode +convert_sai_port_loopback_mode_t_to_proto(const sai_int32_t val); +sai_port_loopback_mode_t convert_sai_port_loopback_mode_t_to_sai( + lemming::dataplane::sai::PortLoopbackMode val); +google::protobuf::RepeatedField +convert_list_sai_port_loopback_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_loopback_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortMdixModeConfig +convert_sai_port_mdix_mode_config_t_to_proto(const sai_int32_t val); +sai_port_mdix_mode_config_t convert_sai_port_mdix_mode_config_t_to_sai( + lemming::dataplane::sai::PortMdixModeConfig val); +google::protobuf::RepeatedField +convert_list_sai_port_mdix_mode_config_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_mdix_mode_config_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortMdixModeStatus +convert_sai_port_mdix_mode_status_t_to_proto(const sai_int32_t val); +sai_port_mdix_mode_status_t convert_sai_port_mdix_mode_status_t_to_sai( + lemming::dataplane::sai::PortMdixModeStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_mdix_mode_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_mdix_mode_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortMediaType convert_sai_port_media_type_t_to_proto( + const sai_int32_t val); +sai_port_media_type_t convert_sai_port_media_type_t_to_sai( + lemming::dataplane::sai::PortMediaType val); +google::protobuf::RepeatedField +convert_list_sai_port_media_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_media_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortModuleType convert_sai_port_module_type_t_to_proto( + const sai_int32_t val); +sai_port_module_type_t convert_sai_port_module_type_t_to_sai( + lemming::dataplane::sai::PortModuleType val); +google::protobuf::RepeatedField +convert_list_sai_port_module_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_module_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortOperStatus convert_sai_port_oper_status_t_to_proto( + const sai_int32_t val); +sai_port_oper_status_t convert_sai_port_oper_status_t_to_sai( + lemming::dataplane::sai::PortOperStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_oper_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_oper_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPathTracingTimestampType +convert_sai_port_path_tracing_timestamp_type_t_to_proto(const sai_int32_t val); +sai_port_path_tracing_timestamp_type_t +convert_sai_port_path_tracing_timestamp_type_t_to_sai( + lemming::dataplane::sai::PortPathTracingTimestampType val); +google::protobuf::RepeatedField +convert_list_sai_port_path_tracing_timestamp_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_path_tracing_timestamp_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPoolAttr convert_sai_port_pool_attr_t_to_proto( + const sai_int32_t val); +sai_port_pool_attr_t convert_sai_port_pool_attr_t_to_sai( + lemming::dataplane::sai::PortPoolAttr val); +google::protobuf::RepeatedField convert_list_sai_port_pool_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_pool_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPoolStat convert_sai_port_pool_stat_t_to_proto( + const sai_int32_t val); +sai_port_pool_stat_t convert_sai_port_pool_stat_t_to_sai( + lemming::dataplane::sai::PortPoolStat val); +google::protobuf::RepeatedField convert_list_sai_port_pool_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_pool_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPrbsConfig convert_sai_port_prbs_config_t_to_proto( + const sai_int32_t val); +sai_port_prbs_config_t convert_sai_port_prbs_config_t_to_sai( + lemming::dataplane::sai::PortPrbsConfig val); +google::protobuf::RepeatedField +convert_list_sai_port_prbs_config_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_prbs_config_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPrbsRxStatus +convert_sai_port_prbs_rx_status_t_to_proto(const sai_int32_t val); +sai_port_prbs_rx_status_t convert_sai_port_prbs_rx_status_t_to_sai( + lemming::dataplane::sai::PortPrbsRxStatus val); +google::protobuf::RepeatedField +convert_list_sai_port_prbs_rx_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_prbs_rx_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPriorityFlowControlMode +convert_sai_port_priority_flow_control_mode_t_to_proto(const sai_int32_t val); +sai_port_priority_flow_control_mode_t +convert_sai_port_priority_flow_control_mode_t_to_sai( + lemming::dataplane::sai::PortPriorityFlowControlMode val); +google::protobuf::RepeatedField +convert_list_sai_port_priority_flow_control_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_priority_flow_control_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortPtpMode convert_sai_port_ptp_mode_t_to_proto( + const sai_int32_t val); +sai_port_ptp_mode_t convert_sai_port_ptp_mode_t_to_sai( + lemming::dataplane::sai::PortPtpMode val); +google::protobuf::RepeatedField convert_list_sai_port_ptp_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_ptp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortSerdesAttr convert_sai_port_serdes_attr_t_to_proto( + const sai_int32_t val); +sai_port_serdes_attr_t convert_sai_port_serdes_attr_t_to_sai( + lemming::dataplane::sai::PortSerdesAttr val); +google::protobuf::RepeatedField +convert_list_sai_port_serdes_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_serdes_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortStatExtensions +convert_sai_port_stat_extensions_t_to_proto(const sai_int32_t val); +sai_port_stat_extensions_t convert_sai_port_stat_extensions_t_to_sai( + lemming::dataplane::sai::PortStatExtensions val); +google::protobuf::RepeatedField +convert_list_sai_port_stat_extensions_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_port_stat_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortStat convert_sai_port_stat_t_to_proto( + const sai_int32_t val); +sai_port_stat_t convert_sai_port_stat_t_to_sai( + lemming::dataplane::sai::PortStat val); +google::protobuf::RepeatedField convert_list_sai_port_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::PortType convert_sai_port_type_t_to_proto( + const sai_int32_t val); +sai_port_type_t convert_sai_port_type_t_to_sai( + lemming::dataplane::sai::PortType val); +google::protobuf::RepeatedField convert_list_sai_port_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QosMapAttr convert_sai_qos_map_attr_t_to_proto( + const sai_int32_t val); +sai_qos_map_attr_t convert_sai_qos_map_attr_t_to_sai( + lemming::dataplane::sai::QosMapAttr val); +google::protobuf::RepeatedField convert_list_sai_qos_map_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_qos_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QosMapType convert_sai_qos_map_type_t_to_proto( + const sai_int32_t val); +sai_qos_map_type_t convert_sai_qos_map_type_t_to_sai( + lemming::dataplane::sai::QosMapType val); +google::protobuf::RepeatedField convert_list_sai_qos_map_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_qos_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QueueAttr convert_sai_queue_attr_t_to_proto( + const sai_int32_t val); +sai_queue_attr_t convert_sai_queue_attr_t_to_sai( + lemming::dataplane::sai::QueueAttr val); +google::protobuf::RepeatedField convert_list_sai_queue_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_queue_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QueuePfcContinuousDeadlockState +convert_sai_queue_pfc_continuous_deadlock_state_t_to_proto( + const sai_int32_t val); +sai_queue_pfc_continuous_deadlock_state_t +convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + lemming::dataplane::sai::QueuePfcContinuousDeadlockState val); +google::protobuf::RepeatedField +convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QueuePfcDeadlockEventType +convert_sai_queue_pfc_deadlock_event_type_t_to_proto(const sai_int32_t val); +sai_queue_pfc_deadlock_event_type_t +convert_sai_queue_pfc_deadlock_event_type_t_to_sai( + lemming::dataplane::sai::QueuePfcDeadlockEventType val); +google::protobuf::RepeatedField +convert_list_sai_queue_pfc_deadlock_event_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_queue_pfc_deadlock_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QueueStat convert_sai_queue_stat_t_to_proto( + const sai_int32_t val); +sai_queue_stat_t convert_sai_queue_stat_t_to_sai( + lemming::dataplane::sai::QueueStat val); +google::protobuf::RepeatedField convert_list_sai_queue_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_queue_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::QueueType convert_sai_queue_type_t_to_proto( + const sai_int32_t val); +sai_queue_type_t convert_sai_queue_type_t_to_sai( + lemming::dataplane::sai::QueueType val); +google::protobuf::RepeatedField convert_list_sai_queue_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_queue_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RouteEntryAttr convert_sai_route_entry_attr_t_to_proto( + const sai_int32_t val); +sai_route_entry_attr_t convert_sai_route_entry_attr_t_to_sai( + lemming::dataplane::sai::RouteEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_route_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_route_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RouterInterfaceAttr +convert_sai_router_interface_attr_t_to_proto(const sai_int32_t val); +sai_router_interface_attr_t convert_sai_router_interface_attr_t_to_sai( + lemming::dataplane::sai::RouterInterfaceAttr val); +google::protobuf::RepeatedField +convert_list_sai_router_interface_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_router_interface_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RouterInterfaceStat +convert_sai_router_interface_stat_t_to_proto(const sai_int32_t val); +sai_router_interface_stat_t convert_sai_router_interface_stat_t_to_sai( + lemming::dataplane::sai::RouterInterfaceStat val); +google::protobuf::RepeatedField +convert_list_sai_router_interface_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_router_interface_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RouterInterfaceType +convert_sai_router_interface_type_t_to_proto(const sai_int32_t val); +sai_router_interface_type_t convert_sai_router_interface_type_t_to_sai( + lemming::dataplane::sai::RouterInterfaceType val); +google::protobuf::RepeatedField +convert_list_sai_router_interface_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_router_interface_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RpfGroupAttr convert_sai_rpf_group_attr_t_to_proto( + const sai_int32_t val); +sai_rpf_group_attr_t convert_sai_rpf_group_attr_t_to_sai( + lemming::dataplane::sai::RpfGroupAttr val); +google::protobuf::RepeatedField convert_list_sai_rpf_group_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_rpf_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::RpfGroupMemberAttr +convert_sai_rpf_group_member_attr_t_to_proto(const sai_int32_t val); +sai_rpf_group_member_attr_t convert_sai_rpf_group_member_attr_t_to_sai( + lemming::dataplane::sai::RpfGroupMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_rpf_group_member_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_rpf_group_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SamplepacketAttr +convert_sai_samplepacket_attr_t_to_proto(const sai_int32_t val); +sai_samplepacket_attr_t convert_sai_samplepacket_attr_t_to_sai( + lemming::dataplane::sai::SamplepacketAttr val); +google::protobuf::RepeatedField +convert_list_sai_samplepacket_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_samplepacket_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SamplepacketMode +convert_sai_samplepacket_mode_t_to_proto(const sai_int32_t val); +sai_samplepacket_mode_t convert_sai_samplepacket_mode_t_to_sai( + lemming::dataplane::sai::SamplepacketMode val); +google::protobuf::RepeatedField +convert_list_sai_samplepacket_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_samplepacket_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SamplepacketType +convert_sai_samplepacket_type_t_to_proto(const sai_int32_t val); +sai_samplepacket_type_t convert_sai_samplepacket_type_t_to_sai( + lemming::dataplane::sai::SamplepacketType val); +google::protobuf::RepeatedField +convert_list_sai_samplepacket_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_samplepacket_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SchedulerAttr convert_sai_scheduler_attr_t_to_proto( + const sai_int32_t val); +sai_scheduler_attr_t convert_sai_scheduler_attr_t_to_sai( + lemming::dataplane::sai::SchedulerAttr val); +google::protobuf::RepeatedField convert_list_sai_scheduler_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_scheduler_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SchedulerGroupAttr +convert_sai_scheduler_group_attr_t_to_proto(const sai_int32_t val); +sai_scheduler_group_attr_t convert_sai_scheduler_group_attr_t_to_sai( + lemming::dataplane::sai::SchedulerGroupAttr val); +google::protobuf::RepeatedField +convert_list_sai_scheduler_group_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_scheduler_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SchedulingType convert_sai_scheduling_type_t_to_proto( + const sai_int32_t val); +sai_scheduling_type_t convert_sai_scheduling_type_t_to_sai( + lemming::dataplane::sai::SchedulingType val); +google::protobuf::RepeatedField +convert_list_sai_scheduling_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_scheduling_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SerCorrectionType +convert_sai_ser_correction_type_t_to_proto(const sai_int32_t val); +sai_ser_correction_type_t convert_sai_ser_correction_type_t_to_sai( + lemming::dataplane::sai::SerCorrectionType val); +google::protobuf::RepeatedField +convert_list_sai_ser_correction_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_ser_correction_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SerLogType convert_sai_ser_log_type_t_to_proto( + const sai_int32_t val); +sai_ser_log_type_t convert_sai_ser_log_type_t_to_sai( + lemming::dataplane::sai::SerLogType val); +google::protobuf::RepeatedField convert_list_sai_ser_log_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ser_log_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SerType convert_sai_ser_type_t_to_proto( + const sai_int32_t val); +sai_ser_type_t convert_sai_ser_type_t_to_sai( + lemming::dataplane::sai::SerType val); +google::protobuf::RepeatedField convert_list_sai_ser_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_ser_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::Srv6SidlistAttr +convert_sai_srv6_sidlist_attr_t_to_proto(const sai_int32_t val); +sai_srv6_sidlist_attr_t convert_sai_srv6_sidlist_attr_t_to_sai( + lemming::dataplane::sai::Srv6SidlistAttr val); +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_srv6_sidlist_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::Srv6SidlistStat +convert_sai_srv6_sidlist_stat_t_to_proto(const sai_int32_t val); +sai_srv6_sidlist_stat_t convert_sai_srv6_sidlist_stat_t_to_sai( + lemming::dataplane::sai::Srv6SidlistStat val); +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_stat_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_srv6_sidlist_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::Srv6SidlistType +convert_sai_srv6_sidlist_type_t_to_proto(const sai_int32_t val); +sai_srv6_sidlist_type_t convert_sai_srv6_sidlist_type_t_to_sai( + lemming::dataplane::sai::Srv6SidlistType val); +google::protobuf::RepeatedField +convert_list_sai_srv6_sidlist_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_srv6_sidlist_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::StatsCountMode convert_sai_stats_count_mode_t_to_proto( + const sai_int32_t val); +sai_stats_count_mode_t convert_sai_stats_count_mode_t_to_sai( + lemming::dataplane::sai::StatsCountMode val); +google::protobuf::RepeatedField +convert_list_sai_stats_count_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_stats_count_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::StatsMode convert_sai_stats_mode_t_to_proto( + const sai_int32_t val); +sai_stats_mode_t convert_sai_stats_mode_t_to_sai( + lemming::dataplane::sai::StatsMode val); +google::protobuf::RepeatedField convert_list_sai_stats_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_stats_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::StpAttr convert_sai_stp_attr_t_to_proto( + const sai_int32_t val); +sai_stp_attr_t convert_sai_stp_attr_t_to_sai( + lemming::dataplane::sai::StpAttr val); +google::protobuf::RepeatedField convert_list_sai_stp_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_stp_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::StpPortAttr convert_sai_stp_port_attr_t_to_proto( + const sai_int32_t val); +sai_stp_port_attr_t convert_sai_stp_port_attr_t_to_sai( + lemming::dataplane::sai::StpPortAttr val); +google::protobuf::RepeatedField convert_list_sai_stp_port_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_stp_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::StpPortState convert_sai_stp_port_state_t_to_proto( + const sai_int32_t val); +sai_stp_port_state_t convert_sai_stp_port_state_t_to_sai( + lemming::dataplane::sai::StpPortState val); +google::protobuf::RepeatedField convert_list_sai_stp_port_state_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_stp_port_state_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchAsicSdkHealthCategory +convert_sai_switch_asic_sdk_health_category_t_to_proto(const sai_int32_t val); +sai_switch_asic_sdk_health_category_t +convert_sai_switch_asic_sdk_health_category_t_to_sai( + lemming::dataplane::sai::SwitchAsicSdkHealthCategory val); +google::protobuf::RepeatedField +convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_asic_sdk_health_category_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchAsicSdkHealthSeverity +convert_sai_switch_asic_sdk_health_severity_t_to_proto(const sai_int32_t val); +sai_switch_asic_sdk_health_severity_t +convert_sai_switch_asic_sdk_health_severity_t_to_sai( + lemming::dataplane::sai::SwitchAsicSdkHealthSeverity val); +google::protobuf::RepeatedField +convert_list_sai_switch_asic_sdk_health_severity_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_asic_sdk_health_severity_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchAttrExtensions +convert_sai_switch_attr_extensions_t_to_proto(const sai_int32_t val); +sai_switch_attr_extensions_t convert_sai_switch_attr_extensions_t_to_sai( + lemming::dataplane::sai::SwitchAttrExtensions val); +google::protobuf::RepeatedField +convert_list_sai_switch_attr_extensions_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_switch_attr_extensions_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchAttr convert_sai_switch_attr_t_to_proto( + const sai_int32_t val); +sai_switch_attr_t convert_sai_switch_attr_t_to_sai( + lemming::dataplane::sai::SwitchAttr val); +google::protobuf::RepeatedField convert_list_sai_switch_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchFailoverConfigMode +convert_sai_switch_failover_config_mode_t_to_proto(const sai_int32_t val); +sai_switch_failover_config_mode_t +convert_sai_switch_failover_config_mode_t_to_sai( + lemming::dataplane::sai::SwitchFailoverConfigMode val); +google::protobuf::RepeatedField +convert_list_sai_switch_failover_config_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_failover_config_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchFirmwareLoadMethod +convert_sai_switch_firmware_load_method_t_to_proto(const sai_int32_t val); +sai_switch_firmware_load_method_t +convert_sai_switch_firmware_load_method_t_to_sai( + lemming::dataplane::sai::SwitchFirmwareLoadMethod val); +google::protobuf::RepeatedField +convert_list_sai_switch_firmware_load_method_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_firmware_load_method_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchFirmwareLoadType +convert_sai_switch_firmware_load_type_t_to_proto(const sai_int32_t val); +sai_switch_firmware_load_type_t convert_sai_switch_firmware_load_type_t_to_sai( + lemming::dataplane::sai::SwitchFirmwareLoadType val); +google::protobuf::RepeatedField +convert_list_sai_switch_firmware_load_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_firmware_load_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchHardwareAccessBus +convert_sai_switch_hardware_access_bus_t_to_proto(const sai_int32_t val); +sai_switch_hardware_access_bus_t +convert_sai_switch_hardware_access_bus_t_to_sai( + lemming::dataplane::sai::SwitchHardwareAccessBus val); +google::protobuf::RepeatedField +convert_list_sai_switch_hardware_access_bus_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_hardware_access_bus_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode +convert_sai_switch_hostif_oper_status_update_mode_t_to_proto( + const sai_int32_t val); +sai_switch_hostif_oper_status_update_mode_t +convert_sai_switch_hostif_oper_status_update_mode_t_to_sai( + lemming::dataplane::sai::SwitchHostifOperStatusUpdateMode val); +google::protobuf::RepeatedField +convert_list_sai_switch_hostif_oper_status_update_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_hostif_oper_status_update_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchMcastSnoopingCapability +convert_sai_switch_mcast_snooping_capability_t_to_proto(const sai_int32_t val); +sai_switch_mcast_snooping_capability_t +convert_sai_switch_mcast_snooping_capability_t_to_sai( + lemming::dataplane::sai::SwitchMcastSnoopingCapability val); +google::protobuf::RepeatedField +convert_list_sai_switch_mcast_snooping_capability_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_mcast_snooping_capability_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchOperStatus +convert_sai_switch_oper_status_t_to_proto(const sai_int32_t val); +sai_switch_oper_status_t convert_sai_switch_oper_status_t_to_sai( + lemming::dataplane::sai::SwitchOperStatus val); +google::protobuf::RepeatedField +convert_list_sai_switch_oper_status_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_switch_oper_status_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchRestartType +convert_sai_switch_restart_type_t_to_proto(const sai_int32_t val); +sai_switch_restart_type_t convert_sai_switch_restart_type_t_to_sai( + lemming::dataplane::sai::SwitchRestartType val); +google::protobuf::RepeatedField +convert_list_sai_switch_restart_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_switch_restart_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchStat convert_sai_switch_stat_t_to_proto( + const sai_int32_t val); +sai_switch_stat_t convert_sai_switch_stat_t_to_sai( + lemming::dataplane::sai::SwitchStat val); +google::protobuf::RepeatedField convert_list_sai_switch_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchSwitchingMode +convert_sai_switch_switching_mode_t_to_proto(const sai_int32_t val); +sai_switch_switching_mode_t convert_sai_switch_switching_mode_t_to_sai( + lemming::dataplane::sai::SwitchSwitchingMode val); +google::protobuf::RepeatedField +convert_list_sai_switch_switching_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_switch_switching_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchTunnelAttr +convert_sai_switch_tunnel_attr_t_to_proto(const sai_int32_t val); +sai_switch_tunnel_attr_t convert_sai_switch_tunnel_attr_t_to_sai( + lemming::dataplane::sai::SwitchTunnelAttr val); +google::protobuf::RepeatedField +convert_list_sai_switch_tunnel_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_switch_tunnel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SwitchType convert_sai_switch_type_t_to_proto( + const sai_int32_t val); +sai_switch_type_t convert_sai_switch_type_t_to_sai( + lemming::dataplane::sai::SwitchType val); +google::protobuf::RepeatedField convert_list_sai_switch_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_switch_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SystemPortAttr convert_sai_system_port_attr_t_to_proto( + const sai_int32_t val); +sai_system_port_attr_t convert_sai_system_port_attr_t_to_sai( + lemming::dataplane::sai::SystemPortAttr val); +google::protobuf::RepeatedField +convert_list_sai_system_port_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_system_port_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::SystemPortType convert_sai_system_port_type_t_to_proto( + const sai_int32_t val); +sai_system_port_type_t convert_sai_system_port_type_t_to_sai( + lemming::dataplane::sai::SystemPortType val); +google::protobuf::RepeatedField +convert_list_sai_system_port_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_system_port_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapClassificationEntryAction +convert_sai_table_bitmap_classification_entry_action_t_to_proto( + const sai_int32_t val); +sai_table_bitmap_classification_entry_action_t +convert_sai_table_bitmap_classification_entry_action_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryAction val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_action_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_classification_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapClassificationEntryAttr +convert_sai_table_bitmap_classification_entry_attr_t_to_proto( + const sai_int32_t val); +sai_table_bitmap_classification_entry_attr_t +convert_sai_table_bitmap_classification_entry_attr_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_classification_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapClassificationEntryStat +convert_sai_table_bitmap_classification_entry_stat_t_to_proto( + const sai_int32_t val); +sai_table_bitmap_classification_entry_stat_t +convert_sai_table_bitmap_classification_entry_stat_t_to_sai( + lemming::dataplane::sai::TableBitmapClassificationEntryStat val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_classification_entry_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_classification_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapRouterEntryAction +convert_sai_table_bitmap_router_entry_action_t_to_proto(const sai_int32_t val); +sai_table_bitmap_router_entry_action_t +convert_sai_table_bitmap_router_entry_action_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryAction val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_action_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_router_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapRouterEntryAttr +convert_sai_table_bitmap_router_entry_attr_t_to_proto(const sai_int32_t val); +sai_table_bitmap_router_entry_attr_t +convert_sai_table_bitmap_router_entry_attr_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_router_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableBitmapRouterEntryStat +convert_sai_table_bitmap_router_entry_stat_t_to_proto(const sai_int32_t val); +sai_table_bitmap_router_entry_stat_t +convert_sai_table_bitmap_router_entry_stat_t_to_sai( + lemming::dataplane::sai::TableBitmapRouterEntryStat val); +google::protobuf::RepeatedField +convert_list_sai_table_bitmap_router_entry_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_bitmap_router_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableMetaTunnelEntryAction +convert_sai_table_meta_tunnel_entry_action_t_to_proto(const sai_int32_t val); +sai_table_meta_tunnel_entry_action_t +convert_sai_table_meta_tunnel_entry_action_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryAction val); +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_action_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_meta_tunnel_entry_action_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableMetaTunnelEntryAttr +convert_sai_table_meta_tunnel_entry_attr_t_to_proto(const sai_int32_t val); +sai_table_meta_tunnel_entry_attr_t +convert_sai_table_meta_tunnel_entry_attr_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_meta_tunnel_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TableMetaTunnelEntryStat +convert_sai_table_meta_tunnel_entry_stat_t_to_proto(const sai_int32_t val); +sai_table_meta_tunnel_entry_stat_t +convert_sai_table_meta_tunnel_entry_stat_t_to_sai( + lemming::dataplane::sai::TableMetaTunnelEntryStat val); +google::protobuf::RepeatedField +convert_list_sai_table_meta_tunnel_entry_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_table_meta_tunnel_entry_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamAttr convert_sai_tam_attr_t_to_proto( + const sai_int32_t val); +sai_tam_attr_t convert_sai_tam_attr_t_to_sai( + lemming::dataplane::sai::TamAttr val); +google::protobuf::RepeatedField convert_list_sai_tam_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamBindPointType +convert_sai_tam_bind_point_type_t_to_proto(const sai_int32_t val); +sai_tam_bind_point_type_t convert_sai_tam_bind_point_type_t_to_sai( + lemming::dataplane::sai::TamBindPointType val); +google::protobuf::RepeatedField +convert_list_sai_tam_bind_point_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_bind_point_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamCollectorAttr +convert_sai_tam_collector_attr_t_to_proto(const sai_int32_t val); +sai_tam_collector_attr_t convert_sai_tam_collector_attr_t_to_sai( + lemming::dataplane::sai::TamCollectorAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_collector_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_collector_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamCounterSubscriptionAttr +convert_sai_tam_counter_subscription_attr_t_to_proto(const sai_int32_t val); +sai_tam_counter_subscription_attr_t +convert_sai_tam_counter_subscription_attr_t_to_sai( + lemming::dataplane::sai::TamCounterSubscriptionAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_counter_subscription_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_counter_subscription_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamEventActionAttr +convert_sai_tam_event_action_attr_t_to_proto(const sai_int32_t val); +sai_tam_event_action_attr_t convert_sai_tam_event_action_attr_t_to_sai( + lemming::dataplane::sai::TamEventActionAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_event_action_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_event_action_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamEventAttr convert_sai_tam_event_attr_t_to_proto( + const sai_int32_t val); +sai_tam_event_attr_t convert_sai_tam_event_attr_t_to_sai( + lemming::dataplane::sai::TamEventAttr val); +google::protobuf::RepeatedField convert_list_sai_tam_event_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_event_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamEventThresholdAttr +convert_sai_tam_event_threshold_attr_t_to_proto(const sai_int32_t val); +sai_tam_event_threshold_attr_t convert_sai_tam_event_threshold_attr_t_to_sai( + lemming::dataplane::sai::TamEventThresholdAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_event_threshold_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_event_threshold_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamEventThresholdUnit +convert_sai_tam_event_threshold_unit_t_to_proto(const sai_int32_t val); +sai_tam_event_threshold_unit_t convert_sai_tam_event_threshold_unit_t_to_sai( + lemming::dataplane::sai::TamEventThresholdUnit val); +google::protobuf::RepeatedField +convert_list_sai_tam_event_threshold_unit_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_event_threshold_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamEventType convert_sai_tam_event_type_t_to_proto( + const sai_int32_t val); +sai_tam_event_type_t convert_sai_tam_event_type_t_to_sai( + lemming::dataplane::sai::TamEventType val); +google::protobuf::RepeatedField convert_list_sai_tam_event_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_event_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamIntAttr convert_sai_tam_int_attr_t_to_proto( + const sai_int32_t val); +sai_tam_int_attr_t convert_sai_tam_int_attr_t_to_sai( + lemming::dataplane::sai::TamIntAttr val); +google::protobuf::RepeatedField convert_list_sai_tam_int_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_int_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamIntPresenceType +convert_sai_tam_int_presence_type_t_to_proto(const sai_int32_t val); +sai_tam_int_presence_type_t convert_sai_tam_int_presence_type_t_to_sai( + lemming::dataplane::sai::TamIntPresenceType val); +google::protobuf::RepeatedField +convert_list_sai_tam_int_presence_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_int_presence_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamIntType convert_sai_tam_int_type_t_to_proto( + const sai_int32_t val); +sai_tam_int_type_t convert_sai_tam_int_type_t_to_sai( + lemming::dataplane::sai::TamIntType val); +google::protobuf::RepeatedField convert_list_sai_tam_int_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_int_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamMathFuncAttr +convert_sai_tam_math_func_attr_t_to_proto(const sai_int32_t val); +sai_tam_math_func_attr_t convert_sai_tam_math_func_attr_t_to_sai( + lemming::dataplane::sai::TamMathFuncAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_math_func_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_math_func_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamReportAttr convert_sai_tam_report_attr_t_to_proto( + const sai_int32_t val); +sai_tam_report_attr_t convert_sai_tam_report_attr_t_to_sai( + lemming::dataplane::sai::TamReportAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_report_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_report_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamReportIntervalUnit +convert_sai_tam_report_interval_unit_t_to_proto(const sai_int32_t val); +sai_tam_report_interval_unit_t convert_sai_tam_report_interval_unit_t_to_sai( + lemming::dataplane::sai::TamReportIntervalUnit val); +google::protobuf::RepeatedField +convert_list_sai_tam_report_interval_unit_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tam_report_interval_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamReportMode convert_sai_tam_report_mode_t_to_proto( + const sai_int32_t val); +sai_tam_report_mode_t convert_sai_tam_report_mode_t_to_sai( + lemming::dataplane::sai::TamReportMode val); +google::protobuf::RepeatedField +convert_list_sai_tam_report_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_report_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamReportType convert_sai_tam_report_type_t_to_proto( + const sai_int32_t val); +sai_tam_report_type_t convert_sai_tam_report_type_t_to_sai( + lemming::dataplane::sai::TamReportType val); +google::protobuf::RepeatedField +convert_list_sai_tam_report_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_report_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamReportingUnit +convert_sai_tam_reporting_unit_t_to_proto(const sai_int32_t val); +sai_tam_reporting_unit_t convert_sai_tam_reporting_unit_t_to_sai( + lemming::dataplane::sai::TamReportingUnit val); +google::protobuf::RepeatedField +convert_list_sai_tam_reporting_unit_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_reporting_unit_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTelMathFuncType +convert_sai_tam_tel_math_func_type_t_to_proto(const sai_int32_t val); +sai_tam_tel_math_func_type_t convert_sai_tam_tel_math_func_type_t_to_sai( + lemming::dataplane::sai::TamTelMathFuncType val); +google::protobuf::RepeatedField +convert_list_sai_tam_tel_math_func_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_tel_math_func_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTelTypeAttr +convert_sai_tam_tel_type_attr_t_to_proto(const sai_int32_t val); +sai_tam_tel_type_attr_t convert_sai_tam_tel_type_attr_t_to_sai( + lemming::dataplane::sai::TamTelTypeAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_tel_type_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_tel_type_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTelemetryAttr +convert_sai_tam_telemetry_attr_t_to_proto(const sai_int32_t val); +sai_tam_telemetry_attr_t convert_sai_tam_telemetry_attr_t_to_sai( + lemming::dataplane::sai::TamTelemetryAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_telemetry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_telemetry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTelemetryType +convert_sai_tam_telemetry_type_t_to_proto(const sai_int32_t val); +sai_tam_telemetry_type_t convert_sai_tam_telemetry_type_t_to_sai( + lemming::dataplane::sai::TamTelemetryType val); +google::protobuf::RepeatedField +convert_list_sai_tam_telemetry_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_telemetry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTransportAttr +convert_sai_tam_transport_attr_t_to_proto(const sai_int32_t val); +sai_tam_transport_attr_t convert_sai_tam_transport_attr_t_to_sai( + lemming::dataplane::sai::TamTransportAttr val); +google::protobuf::RepeatedField +convert_list_sai_tam_transport_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_transport_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTransportAuthType +convert_sai_tam_transport_auth_type_t_to_proto(const sai_int32_t val); +sai_tam_transport_auth_type_t convert_sai_tam_transport_auth_type_t_to_sai( + lemming::dataplane::sai::TamTransportAuthType val); +google::protobuf::RepeatedField +convert_list_sai_tam_transport_auth_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_transport_auth_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TamTransportType +convert_sai_tam_transport_type_t_to_proto(const sai_int32_t val); +sai_tam_transport_type_t convert_sai_tam_transport_type_t_to_sai( + lemming::dataplane::sai::TamTransportType val); +google::protobuf::RepeatedField +convert_list_sai_tam_transport_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tam_transport_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TlvType convert_sai_tlv_type_t_to_proto( + const sai_int32_t val); +sai_tlv_type_t convert_sai_tlv_type_t_to_sai( + lemming::dataplane::sai::TlvType val); +google::protobuf::RepeatedField convert_list_sai_tlv_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tlv_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelAttr convert_sai_tunnel_attr_t_to_proto( + const sai_int32_t val); +sai_tunnel_attr_t convert_sai_tunnel_attr_t_to_sai( + lemming::dataplane::sai::TunnelAttr val); +google::protobuf::RepeatedField convert_list_sai_tunnel_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelDecapEcnMode +convert_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_int32_t val); +sai_tunnel_decap_ecn_mode_t convert_sai_tunnel_decap_ecn_mode_t_to_sai( + lemming::dataplane::sai::TunnelDecapEcnMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_decap_ecn_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_decap_ecn_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelDscpMode convert_sai_tunnel_dscp_mode_t_to_proto( + const sai_int32_t val); +sai_tunnel_dscp_mode_t convert_sai_tunnel_dscp_mode_t_to_sai( + lemming::dataplane::sai::TunnelDscpMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_dscp_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_dscp_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelEncapEcnMode +convert_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_int32_t val); +sai_tunnel_encap_ecn_mode_t convert_sai_tunnel_encap_ecn_mode_t_to_sai( + lemming::dataplane::sai::TunnelEncapEcnMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_encap_ecn_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_encap_ecn_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelMapAttr convert_sai_tunnel_map_attr_t_to_proto( + const sai_int32_t val); +sai_tunnel_map_attr_t convert_sai_tunnel_map_attr_t_to_sai( + lemming::dataplane::sai::TunnelMapAttr val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_map_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelMapEntryAttr +convert_sai_tunnel_map_entry_attr_t_to_proto(const sai_int32_t val); +sai_tunnel_map_entry_attr_t convert_sai_tunnel_map_entry_attr_t_to_sai( + lemming::dataplane::sai::TunnelMapEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_entry_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_map_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelMapType convert_sai_tunnel_map_type_t_to_proto( + const sai_int32_t val); +sai_tunnel_map_type_t convert_sai_tunnel_map_type_t_to_sai( + lemming::dataplane::sai::TunnelMapType val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_map_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_map_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelPeerMode convert_sai_tunnel_peer_mode_t_to_proto( + const sai_int32_t val); +sai_tunnel_peer_mode_t convert_sai_tunnel_peer_mode_t_to_sai( + lemming::dataplane::sai::TunnelPeerMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_peer_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_peer_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelStat convert_sai_tunnel_stat_t_to_proto( + const sai_int32_t val); +sai_tunnel_stat_t convert_sai_tunnel_stat_t_to_sai( + lemming::dataplane::sai::TunnelStat val); +google::protobuf::RepeatedField convert_list_sai_tunnel_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelTermTableEntryAttr +convert_sai_tunnel_term_table_entry_attr_t_to_proto(const sai_int32_t val); +sai_tunnel_term_table_entry_attr_t +convert_sai_tunnel_term_table_entry_attr_t_to_sai( + lemming::dataplane::sai::TunnelTermTableEntryAttr val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_term_table_entry_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_term_table_entry_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelTermTableEntryType +convert_sai_tunnel_term_table_entry_type_t_to_proto(const sai_int32_t val); +sai_tunnel_term_table_entry_type_t +convert_sai_tunnel_term_table_entry_type_t_to_sai( + lemming::dataplane::sai::TunnelTermTableEntryType val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_term_table_entry_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_term_table_entry_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelTtlMode convert_sai_tunnel_ttl_mode_t_to_proto( + const sai_int32_t val); +sai_tunnel_ttl_mode_t convert_sai_tunnel_ttl_mode_t_to_sai( + lemming::dataplane::sai::TunnelTtlMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_ttl_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_tunnel_ttl_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelType convert_sai_tunnel_type_t_to_proto( + const sai_int32_t val); +sai_tunnel_type_t convert_sai_tunnel_type_t_to_sai( + lemming::dataplane::sai::TunnelType val); +google::protobuf::RepeatedField convert_list_sai_tunnel_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::TunnelVxlanUdpSportMode +convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(const sai_int32_t val); +sai_tunnel_vxlan_udp_sport_mode_t +convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + lemming::dataplane::sai::TunnelVxlanUdpSportMode val); +google::protobuf::RepeatedField +convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::UdfAttr convert_sai_udf_attr_t_to_proto( + const sai_int32_t val); +sai_udf_attr_t convert_sai_udf_attr_t_to_sai( + lemming::dataplane::sai::UdfAttr val); +google::protobuf::RepeatedField convert_list_sai_udf_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_udf_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::UdfBase convert_sai_udf_base_t_to_proto( + const sai_int32_t val); +sai_udf_base_t convert_sai_udf_base_t_to_sai( + lemming::dataplane::sai::UdfBase val); +google::protobuf::RepeatedField convert_list_sai_udf_base_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_udf_base_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::UdfGroupAttr convert_sai_udf_group_attr_t_to_proto( + const sai_int32_t val); +sai_udf_group_attr_t convert_sai_udf_group_attr_t_to_sai( + lemming::dataplane::sai::UdfGroupAttr val); +google::protobuf::RepeatedField convert_list_sai_udf_group_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_udf_group_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::UdfGroupType convert_sai_udf_group_type_t_to_proto( + const sai_int32_t val); +sai_udf_group_type_t convert_sai_udf_group_type_t_to_sai( + lemming::dataplane::sai::UdfGroupType val); +google::protobuf::RepeatedField convert_list_sai_udf_group_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_udf_group_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::UdfMatchAttr convert_sai_udf_match_attr_t_to_proto( + const sai_int32_t val); +sai_udf_match_attr_t convert_sai_udf_match_attr_t_to_sai( + lemming::dataplane::sai::UdfMatchAttr val); +google::protobuf::RepeatedField convert_list_sai_udf_match_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_udf_match_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VirtualRouterAttr +convert_sai_virtual_router_attr_t_to_proto(const sai_int32_t val); +sai_virtual_router_attr_t convert_sai_virtual_router_attr_t_to_sai( + lemming::dataplane::sai::VirtualRouterAttr val); +google::protobuf::RepeatedField +convert_list_sai_virtual_router_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_virtual_router_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanAttr convert_sai_vlan_attr_t_to_proto( + const sai_int32_t val); +sai_vlan_attr_t convert_sai_vlan_attr_t_to_sai( + lemming::dataplane::sai::VlanAttr val); +google::protobuf::RepeatedField convert_list_sai_vlan_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_vlan_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanFloodControlType +convert_sai_vlan_flood_control_type_t_to_proto(const sai_int32_t val); +sai_vlan_flood_control_type_t convert_sai_vlan_flood_control_type_t_to_sai( + lemming::dataplane::sai::VlanFloodControlType val); +google::protobuf::RepeatedField +convert_list_sai_vlan_flood_control_type_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_vlan_flood_control_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanMcastLookupKeyType +convert_sai_vlan_mcast_lookup_key_type_t_to_proto(const sai_int32_t val); +sai_vlan_mcast_lookup_key_type_t +convert_sai_vlan_mcast_lookup_key_type_t_to_sai( + lemming::dataplane::sai::VlanMcastLookupKeyType val); +google::protobuf::RepeatedField +convert_list_sai_vlan_mcast_lookup_key_type_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_vlan_mcast_lookup_key_type_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanMemberAttr convert_sai_vlan_member_attr_t_to_proto( + const sai_int32_t val); +sai_vlan_member_attr_t convert_sai_vlan_member_attr_t_to_sai( + lemming::dataplane::sai::VlanMemberAttr val); +google::protobuf::RepeatedField +convert_list_sai_vlan_member_attr_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_vlan_member_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanStat convert_sai_vlan_stat_t_to_proto( + const sai_int32_t val); +sai_vlan_stat_t convert_sai_vlan_stat_t_to_sai( + lemming::dataplane::sai::VlanStat val); +google::protobuf::RepeatedField convert_list_sai_vlan_stat_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_vlan_stat_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::VlanTaggingMode +convert_sai_vlan_tagging_mode_t_to_proto(const sai_int32_t val); +sai_vlan_tagging_mode_t convert_sai_vlan_tagging_mode_t_to_sai( + lemming::dataplane::sai::VlanTaggingMode val); +google::protobuf::RepeatedField +convert_list_sai_vlan_tagging_mode_t_to_proto(const sai_s32_list_t& list); +void convert_list_sai_vlan_tagging_mode_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); + +lemming::dataplane::sai::WredAttr convert_sai_wred_attr_t_to_proto( + const sai_int32_t val); +sai_wred_attr_t convert_sai_wred_attr_t_to_sai( + lemming::dataplane::sai::WredAttr val); +google::protobuf::RepeatedField convert_list_sai_wred_attr_t_to_proto( + const sai_s32_list_t& list); +void convert_list_sai_wred_attr_t_to_sai( + int32_t* list, const google::protobuf::RepeatedField& proto_list, + uint32_t* count); #endif // DATAPLANE_STANDALONE_SAI_ENUM_H_ diff --git a/dataplane/standalone/sai/fdb.cc b/dataplane/standalone/sai/fdb.cc index ed06c29c2..a993686ad 100644 --- a/dataplane/standalone/sai/fdb.cc +++ b/dataplane/standalone/sai/fdb.cc @@ -13,340 +13,350 @@ // limitations under the License. #include "dataplane/standalone/sai/fdb.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/fdb.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_fdb_api_t l_fdb = { - .create_fdb_entry = l_create_fdb_entry, - .remove_fdb_entry = l_remove_fdb_entry, - .set_fdb_entry_attribute = l_set_fdb_entry_attribute, - .get_fdb_entry_attribute = l_get_fdb_entry_attribute, - .flush_fdb_entries = l_flush_fdb_entries, - .create_fdb_entries = l_create_fdb_entries, - .remove_fdb_entries = l_remove_fdb_entries, - .set_fdb_entries_attribute = l_set_fdb_entries_attribute, - .get_fdb_entries_attribute = l_get_fdb_entries_attribute, + .create_fdb_entry = l_create_fdb_entry, + .remove_fdb_entry = l_remove_fdb_entry, + .set_fdb_entry_attribute = l_set_fdb_entry_attribute, + .get_fdb_entry_attribute = l_get_fdb_entry_attribute, + .flush_fdb_entries = l_flush_fdb_entries, + .create_fdb_entries = l_create_fdb_entries, + .remove_fdb_entries = l_remove_fdb_entries, + .set_fdb_entries_attribute = l_set_fdb_entries_attribute, + .get_fdb_entries_attribute = l_get_fdb_entries_attribute, }; - -lemming::dataplane::sai::CreateFdbEntryRequest convert_create_fdb_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateFdbEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_FDB_ENTRY_ATTR_TYPE: - msg.set_type(convert_sai_fdb_entry_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: - msg.set_user_trap_id(attr_list[i].value.oid); - break; - case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: - msg.set_bridge_port_id(attr_list[i].value.oid); - break; - case SAI_FDB_ENTRY_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; - case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: - msg.set_endpoint_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_FDB_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: - msg.set_allow_mac_move(attr_list[i].value.booldata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::FlushFdbEntriesRequest convert_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::FlushFdbEntriesRequest msg; -msg.set_switch_(switch_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID: - msg.set_bridge_port_id(attr_list[i].value.oid); - break; - case SAI_FDB_FLUSH_ATTR_BV_ID: - msg.set_bv_id(attr_list[i].value.oid); - break; - case SAI_FDB_FLUSH_ATTR_ENTRY_TYPE: - msg.set_entry_type(convert_sai_fdb_flush_entry_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateFdbEntryRequest convert_create_fdb_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateFdbEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_FDB_ENTRY_ATTR_TYPE: + msg.set_type( + convert_sai_fdb_entry_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: + msg.set_user_trap_id(attr_list[i].value.oid); + break; + case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: + msg.set_bridge_port_id(attr_list[i].value.oid); + break; + case SAI_FDB_ENTRY_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: + msg.set_endpoint_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_FDB_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: + msg.set_allow_mac_move(attr_list[i].value.booldata); + break; + } + } + return msg; } -sai_status_t l_create_fdb_entry(const sai_fdb_entry_t *fdb_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateFdbEntryRequest req = convert_create_fdb_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateFdbEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = fdb->CreateFdbEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::FlushFdbEntriesRequest convert_flush_fdb_entries( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::FlushFdbEntriesRequest msg; + msg.set_switch_(switch_id); + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_FDB_FLUSH_ATTR_BRIDGE_PORT_ID: + msg.set_bridge_port_id(attr_list[i].value.oid); + break; + case SAI_FDB_FLUSH_ATTR_BV_ID: + msg.set_bv_id(attr_list[i].value.oid); + break; + case SAI_FDB_FLUSH_ATTR_ENTRY_TYPE: + msg.set_entry_type(convert_sai_fdb_flush_entry_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; } -sai_status_t l_remove_fdb_entry(const sai_fdb_entry_t *fdb_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveFdbEntryRequest req; - lemming::dataplane::sai::RemoveFdbEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = fdb->RemoveFdbEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_fdb_entry(const sai_fdb_entry_t* fdb_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateFdbEntryRequest req = + convert_create_fdb_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateFdbEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = fdb->CreateFdbEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_fdb_entry_attribute(const sai_fdb_entry_t *fdb_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetFdbEntryAttributeRequest req; - lemming::dataplane::sai::SetFdbEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_FDB_ENTRY_ATTR_TYPE: - req.set_type(convert_sai_fdb_entry_type_t_to_proto(attr->value.s32)); - break; - case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: - req.set_user_trap_id(attr->value.oid); - break; - case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: - req.set_bridge_port_id(attr->value.oid); - break; - case SAI_FDB_ENTRY_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; - case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: - req.set_endpoint_ip(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_FDB_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: - req.set_allow_mac_move(attr->value.booldata); - break; +sai_status_t l_remove_fdb_entry(const sai_fdb_entry_t* fdb_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveFdbEntryRequest req; + lemming::dataplane::sai::RemoveFdbEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = fdb->RemoveFdbEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = fdb->SetFdbEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_fdb_entry_attribute(const sai_fdb_entry_t* fdb_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetFdbEntryAttributeRequest req; + lemming::dataplane::sai::SetFdbEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_FDB_ENTRY_ATTR_TYPE: + req.set_type(convert_sai_fdb_entry_type_t_to_proto(attr->value.s32)); + break; + case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: + req.set_user_trap_id(attr->value.oid); + break; + case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: + req.set_bridge_port_id(attr->value.oid); + break; + case SAI_FDB_ENTRY_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: + req.set_endpoint_ip(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_FDB_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: + req.set_allow_mac_move(attr->value.booldata); + break; + } + + grpc::Status status = fdb->SetFdbEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_fdb_entry_attribute(const sai_fdb_entry_t *fdb_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetFdbEntryAttributeRequest req; - lemming::dataplane::sai::GetFdbEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_fdb_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = fdb->GetFdbEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_FDB_ENTRY_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_fdb_entry_type_t_to_sai(resp.attr().type()); - break; - case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: - attr_list[i].value.oid = resp.attr().user_trap_id(); - break; - case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: - attr_list[i].value.oid = resp.attr().bridge_port_id(); - break; - case SAI_FDB_ENTRY_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; - case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().endpoint_ip()); - break; - case SAI_FDB_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: - attr_list[i].value.booldata = resp.attr().allow_mac_move(); - break; +sai_status_t l_get_fdb_entry_attribute(const sai_fdb_entry_t* fdb_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetFdbEntryAttributeRequest req; + lemming::dataplane::sai::GetFdbEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_fdb_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = fdb->GetFdbEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_FDB_ENTRY_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_fdb_entry_type_t_to_sai(resp.attr().type()); + break; + case SAI_FDB_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_FDB_ENTRY_ATTR_USER_TRAP_ID: + attr_list[i].value.oid = resp.attr().user_trap_id(); + break; + case SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID: + attr_list[i].value.oid = resp.attr().bridge_port_id(); + break; + case SAI_FDB_ENTRY_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + case SAI_FDB_ENTRY_ATTR_ENDPOINT_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().endpoint_ip()); + break; + case SAI_FDB_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE: + attr_list[i].value.booldata = resp.attr().allow_mac_move(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::FlushFdbEntriesRequest req = + convert_flush_fdb_entries(switch_id, attr_count, attr_list); + lemming::dataplane::sai::FlushFdbEntriesResponse resp; + grpc::ClientContext context; + + grpc::Status status = fdb->FlushFdbEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + return SAI_STATUS_SUCCESS; } -sai_status_t l_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - lemming::dataplane::sai::FlushFdbEntriesRequest req = convert_flush_fdb_entries(switch_id, attr_count, attr_list); - lemming::dataplane::sai::FlushFdbEntriesResponse resp; - grpc::ClientContext context; - - grpc::Status status = fdb->FlushFdbEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - return SAI_STATUS_SUCCESS; +sai_status_t l_create_fdb_entries(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateFdbEntriesRequest req; + lemming::dataplane::sai::CreateFdbEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_fdb_entry(attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = fdb->CreateFdbEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_fdb_entries(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateFdbEntriesRequest req; - lemming::dataplane::sai::CreateFdbEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_fdb_entry(attr_count[i], attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = fdb->CreateFdbEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_fdb_entries(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveFdbEntriesRequest req; + lemming::dataplane::sai::RemoveFdbEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + } + + grpc::Status status = fdb->RemoveFdbEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_fdb_entries(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveFdbEntriesRequest req; - lemming::dataplane::sai::RemoveFdbEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - - } - - grpc::Status status = fdb->RemoveFdbEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_fdb_entries_attribute(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_set_fdb_entries_attribute(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_get_fdb_entries_attribute(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - -sai_status_t l_get_fdb_entries_attribute(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - diff --git a/dataplane/standalone/sai/fdb.h b/dataplane/standalone/sai/fdb.h index 10a58bf38..37d6afd0d 100644 --- a/dataplane/standalone/sai/fdb.h +++ b/dataplane/standalone/sai/fdb.h @@ -25,24 +25,45 @@ extern "C" { extern const sai_fdb_api_t l_fdb; - -sai_status_t l_create_fdb_entry(const sai_fdb_entry_t *fdb_entry, uint32_t attr_count, const sai_attribute_t *attr_list); - -sai_status_t l_remove_fdb_entry(const sai_fdb_entry_t *fdb_entry); - -sai_status_t l_set_fdb_entry_attribute(const sai_fdb_entry_t *fdb_entry, const sai_attribute_t *attr); - -sai_status_t l_get_fdb_entry_attribute(const sai_fdb_entry_t *fdb_entry, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); - -sai_status_t l_create_fdb_entries(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_remove_fdb_entries(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_fdb_entries_attribute(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_fdb_entries_attribute(uint32_t object_count, const sai_fdb_entry_t *fdb_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_create_fdb_entry(const sai_fdb_entry_t* fdb_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_remove_fdb_entry(const sai_fdb_entry_t* fdb_entry); + +sai_status_t l_set_fdb_entry_attribute(const sai_fdb_entry_t* fdb_entry, + const sai_attribute_t* attr); + +sai_status_t l_get_fdb_entry_attribute(const sai_fdb_entry_t* fdb_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_flush_fdb_entries(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_create_fdb_entries(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_remove_fdb_entries(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_fdb_entries_attribute(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_fdb_entries_attribute(uint32_t object_count, + const sai_fdb_entry_t* fdb_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_FDB_H_ diff --git a/dataplane/standalone/sai/generic_programmable.cc b/dataplane/standalone/sai/generic_programmable.cc index c84f72475..f18df243a 100644 --- a/dataplane/standalone/sai/generic_programmable.cc +++ b/dataplane/standalone/sai/generic_programmable.cc @@ -13,161 +13,166 @@ // limitations under the License. #include "dataplane/standalone/sai/generic_programmable.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/generic_programmable.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_generic_programmable_api_t l_generic_programmable = { - .create_generic_programmable = l_create_generic_programmable, - .remove_generic_programmable = l_remove_generic_programmable, - .set_generic_programmable_attribute = l_set_generic_programmable_attribute, - .get_generic_programmable_attribute = l_get_generic_programmable_attribute, + .create_generic_programmable = l_create_generic_programmable, + .remove_generic_programmable = l_remove_generic_programmable, + .set_generic_programmable_attribute = l_set_generic_programmable_attribute, + .get_generic_programmable_attribute = l_get_generic_programmable_attribute, }; - -lemming::dataplane::sai::CreateGenericProgrammableRequest convert_create_generic_programmable(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateGenericProgrammableRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: - msg.mutable_object_name()->Add(attr_list[i].value.s8list.list, attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); - break; - case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateGenericProgrammableRequest +convert_create_generic_programmable(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateGenericProgrammableRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: + msg.mutable_object_name()->Add( + attr_list[i].value.s8list.list, + attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); + break; + case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; } -sai_status_t l_create_generic_programmable(sai_object_id_t *generic_programmable_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateGenericProgrammableRequest req = convert_create_generic_programmable(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateGenericProgrammableResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = generic_programmable->CreateGenericProgrammable(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (generic_programmable_id) { - *generic_programmable_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_generic_programmable( + sai_object_id_t* generic_programmable_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateGenericProgrammableRequest req = + convert_create_generic_programmable(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateGenericProgrammableResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + generic_programmable->CreateGenericProgrammable(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (generic_programmable_id) { + *generic_programmable_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_generic_programmable(sai_object_id_t generic_programmable_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveGenericProgrammableRequest req; - lemming::dataplane::sai::RemoveGenericProgrammableResponse resp; - grpc::ClientContext context; - req.set_oid(generic_programmable_id); - - grpc::Status status = generic_programmable->RemoveGenericProgrammable(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_generic_programmable( + sai_object_id_t generic_programmable_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveGenericProgrammableRequest req; + lemming::dataplane::sai::RemoveGenericProgrammableResponse resp; + grpc::ClientContext context; + req.set_oid(generic_programmable_id); + + grpc::Status status = + generic_programmable->RemoveGenericProgrammable(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_generic_programmable_attribute(sai_object_id_t generic_programmable_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetGenericProgrammableAttributeRequest req; - lemming::dataplane::sai::SetGenericProgrammableAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(generic_programmable_id); - - - - -switch (attr->id) { - - case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; +sai_status_t l_set_generic_programmable_attribute( + sai_object_id_t generic_programmable_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetGenericProgrammableAttributeRequest req; + lemming::dataplane::sai::SetGenericProgrammableAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(generic_programmable_id); + + switch (attr->id) { + case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = generic_programmable->SetGenericProgrammableAttribute( + &context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = generic_programmable->SetGenericProgrammableAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_generic_programmable_attribute( + sai_object_id_t generic_programmable_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetGenericProgrammableAttributeRequest req; + lemming::dataplane::sai::GetGenericProgrammableAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(generic_programmable_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_generic_programmable_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = generic_programmable->GetGenericProgrammableAttribute( + &context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: + copy_list(attr_list[i].value.s8list.list, resp.attr().object_name(), + &attr_list[i].value.s8list.count); + break; + case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_generic_programmable_attribute(sai_object_id_t generic_programmable_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetGenericProgrammableAttributeRequest req; - lemming::dataplane::sai::GetGenericProgrammableAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(generic_programmable_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_generic_programmable_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = generic_programmable->GetGenericProgrammableAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_GENERIC_PROGRAMMABLE_ATTR_OBJECT_NAME: - copy_list(attr_list[i].value.s8list.list, resp.attr().object_name(), &attr_list[i].value.s8list.count); - break; - case SAI_GENERIC_PROGRAMMABLE_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/generic_programmable.h b/dataplane/standalone/sai/generic_programmable.h index edd97282c..2a4e46d71 100644 --- a/dataplane/standalone/sai/generic_programmable.h +++ b/dataplane/standalone/sai/generic_programmable.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_generic_programmable_api_t l_generic_programmable; +sai_status_t l_create_generic_programmable( + sai_object_id_t* generic_programmable_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_create_generic_programmable(sai_object_id_t *generic_programmable_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_generic_programmable( + sai_object_id_t generic_programmable_id); -sai_status_t l_remove_generic_programmable(sai_object_id_t generic_programmable_id); - -sai_status_t l_set_generic_programmable_attribute(sai_object_id_t generic_programmable_id, const sai_attribute_t *attr); - -sai_status_t l_get_generic_programmable_attribute(sai_object_id_t generic_programmable_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_generic_programmable_attribute( + sai_object_id_t generic_programmable_id, const sai_attribute_t* attr); +sai_status_t l_get_generic_programmable_attribute( + sai_object_id_t generic_programmable_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_GENERIC_PROGRAMMABLE_H_ diff --git a/dataplane/standalone/sai/hash.cc b/dataplane/standalone/sai/hash.cc index 940ac28cc..23645d530 100644 --- a/dataplane/standalone/sai/hash.cc +++ b/dataplane/standalone/sai/hash.cc @@ -13,307 +13,328 @@ // limitations under the License. #include "dataplane/standalone/sai/hash.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/hash.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_hash_api_t l_hash = { - .create_hash = l_create_hash, - .remove_hash = l_remove_hash, - .set_hash_attribute = l_set_hash_attribute, - .get_hash_attribute = l_get_hash_attribute, - .create_fine_grained_hash_field = l_create_fine_grained_hash_field, - .remove_fine_grained_hash_field = l_remove_fine_grained_hash_field, - .set_fine_grained_hash_field_attribute = l_set_fine_grained_hash_field_attribute, - .get_fine_grained_hash_field_attribute = l_get_fine_grained_hash_field_attribute, + .create_hash = l_create_hash, + .remove_hash = l_remove_hash, + .set_hash_attribute = l_set_hash_attribute, + .get_hash_attribute = l_get_hash_attribute, + .create_fine_grained_hash_field = l_create_fine_grained_hash_field, + .remove_fine_grained_hash_field = l_remove_fine_grained_hash_field, + .set_fine_grained_hash_field_attribute = + l_set_fine_grained_hash_field_attribute, + .get_fine_grained_hash_field_attribute = + l_get_fine_grained_hash_field_attribute, }; - -lemming::dataplane::sai::CreateHashRequest convert_create_hash(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHashRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: - msg.mutable_native_hash_field_list()->CopyFrom(convert_list_sai_native_hash_field_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_HASH_ATTR_UDF_GROUP_LIST: - msg.mutable_udf_group_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: - msg.mutable_fine_grained_hash_field_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; +lemming::dataplane::sai::CreateHashRequest convert_create_hash( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHashRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: + msg.mutable_native_hash_field_list()->CopyFrom( + convert_list_sai_native_hash_field_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_HASH_ATTR_UDF_GROUP_LIST: + msg.mutable_udf_group_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: + msg.mutable_fine_grained_hash_field_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; -} - -lemming::dataplane::sai::CreateFineGrainedHashFieldRequest convert_create_fine_grained_hash_field(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateFineGrainedHashFieldRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: - msg.set_native_hash_field(convert_sai_native_hash_field_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: - msg.set_ipv4_mask(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: - msg.set_ipv6_mask(attr_list[i].value.ip6, sizeof(attr_list[i].value.ip6)); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: - msg.set_sequence_id(attr_list[i].value.u32); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateFineGrainedHashFieldRequest +convert_create_fine_grained_hash_field(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateFineGrainedHashFieldRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: + msg.set_native_hash_field( + convert_sai_native_hash_field_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: + msg.set_ipv4_mask(&attr_list[i].value.ip4, + sizeof(attr_list[i].value.ip4)); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: + msg.set_ipv6_mask(attr_list[i].value.ip6, + sizeof(attr_list[i].value.ip6)); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: + msg.set_sequence_id(attr_list[i].value.u32); + break; + } + } + return msg; } -sai_status_t l_create_hash(sai_object_id_t *hash_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHashRequest req = convert_create_hash(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHashResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hash->CreateHash(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hash_id) { - *hash_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_hash(sai_object_id_t* hash_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHashRequest req = + convert_create_hash(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHashResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hash->CreateHash(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hash_id) { + *hash_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_hash(sai_object_id_t hash_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHashRequest req; - lemming::dataplane::sai::RemoveHashResponse resp; - grpc::ClientContext context; - req.set_oid(hash_id); - - grpc::Status status = hash->RemoveHash(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHashRequest req; + lemming::dataplane::sai::RemoveHashResponse resp; + grpc::ClientContext context; + req.set_oid(hash_id); + + grpc::Status status = hash->RemoveHash(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_hash_attribute(sai_object_id_t hash_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetHashAttributeRequest req; - lemming::dataplane::sai::SetHashAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(hash_id); - - - - -switch (attr->id) { - - case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: - req.mutable_native_hash_field_list()->CopyFrom(convert_list_sai_native_hash_field_t_to_proto(attr->value.s32list)); - break; - case SAI_HASH_ATTR_UDF_GROUP_LIST: - req.mutable_udf_group_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: - req.mutable_fine_grained_hash_field_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; +sai_status_t l_set_hash_attribute(sai_object_id_t hash_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetHashAttributeRequest req; + lemming::dataplane::sai::SetHashAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(hash_id); + + switch (attr->id) { + case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: + req.mutable_native_hash_field_list()->CopyFrom( + convert_list_sai_native_hash_field_t_to_proto(attr->value.s32list)); + break; + case SAI_HASH_ATTR_UDF_GROUP_LIST: + req.mutable_udf_group_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: + req.mutable_fine_grained_hash_field_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = hash->SetHashAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = hash->SetHashAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_hash_attribute(sai_object_id_t hash_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHashAttributeRequest req; + lemming::dataplane::sai::GetHashAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hash_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_hash_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = hash->GetHashAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: + convert_list_sai_native_hash_field_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().native_hash_field_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_HASH_ATTR_UDF_GROUP_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().udf_group_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().fine_grained_hash_field_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_hash_attribute(sai_object_id_t hash_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHashAttributeRequest req; - lemming::dataplane::sai::GetHashAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hash_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hash_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hash->GetHashAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HASH_ATTR_NATIVE_HASH_FIELD_LIST: - convert_list_sai_native_hash_field_t_to_sai(attr_list[i].value.s32list.list, resp.attr().native_hash_field_list(), &attr_list[i].value.s32list.count); - break; - case SAI_HASH_ATTR_UDF_GROUP_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().udf_group_list(), &attr_list[i].value.objlist.count); - break; - case SAI_HASH_ATTR_FINE_GRAINED_HASH_FIELD_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().fine_grained_hash_field_list(), &attr_list[i].value.objlist.count); - break; +sai_status_t l_create_fine_grained_hash_field( + sai_object_id_t* fine_grained_hash_field_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateFineGrainedHashFieldRequest req = + convert_create_fine_grained_hash_field(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateFineGrainedHashFieldResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hash->CreateFineGrainedHashField(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (fine_grained_hash_field_id) { + *fine_grained_hash_field_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_fine_grained_hash_field( + sai_object_id_t fine_grained_hash_field_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveFineGrainedHashFieldRequest req; + lemming::dataplane::sai::RemoveFineGrainedHashFieldResponse resp; + grpc::ClientContext context; + req.set_oid(fine_grained_hash_field_id); + + grpc::Status status = hash->RemoveFineGrainedHashField(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_fine_grained_hash_field(sai_object_id_t *fine_grained_hash_field_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateFineGrainedHashFieldRequest req = convert_create_fine_grained_hash_field(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateFineGrainedHashFieldResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hash->CreateFineGrainedHashField(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (fine_grained_hash_field_id) { - *fine_grained_hash_field_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_fine_grained_hash_field(sai_object_id_t fine_grained_hash_field_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveFineGrainedHashFieldRequest req; - lemming::dataplane::sai::RemoveFineGrainedHashFieldResponse resp; - grpc::ClientContext context; - req.set_oid(fine_grained_hash_field_id); - - grpc::Status status = hash->RemoveFineGrainedHashField(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_fine_grained_hash_field_attribute( + sai_object_id_t fine_grained_hash_field_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_fine_grained_hash_field_attribute(sai_object_id_t fine_grained_hash_field_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_fine_grained_hash_field_attribute(sai_object_id_t fine_grained_hash_field_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetFineGrainedHashFieldAttributeRequest req; - lemming::dataplane::sai::GetFineGrainedHashFieldAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(fine_grained_hash_field_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_fine_grained_hash_field_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hash->GetFineGrainedHashFieldAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: - attr_list[i].value.s32 = convert_sai_native_hash_field_t_to_sai(resp.attr().native_hash_field()); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: - memcpy(&attr_list[i].value.ip4, resp.attr().ipv4_mask().data(), sizeof(sai_ip4_t)); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: - memcpy(attr_list[i].value.ip6, resp.attr().ipv6_mask().data(), sizeof(sai_ip6_t)); - break; - case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: - attr_list[i].value.u32 = resp.attr().sequence_id(); - break; +sai_status_t l_get_fine_grained_hash_field_attribute( + sai_object_id_t fine_grained_hash_field_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetFineGrainedHashFieldAttributeRequest req; + lemming::dataplane::sai::GetFineGrainedHashFieldAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(fine_grained_hash_field_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_fine_grained_hash_field_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + hash->GetFineGrainedHashFieldAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_NATIVE_HASH_FIELD: + attr_list[i].value.s32 = convert_sai_native_hash_field_t_to_sai( + resp.attr().native_hash_field()); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV4_MASK: + memcpy(&attr_list[i].value.ip4, resp.attr().ipv4_mask().data(), + sizeof(sai_ip4_t)); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_IPV6_MASK: + memcpy(attr_list[i].value.ip6, resp.attr().ipv6_mask().data(), + sizeof(sai_ip6_t)); + break; + case SAI_FINE_GRAINED_HASH_FIELD_ATTR_SEQUENCE_ID: + attr_list[i].value.u32 = resp.attr().sequence_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/hash.h b/dataplane/standalone/sai/hash.h index 27ec7e52c..bb07e7433 100644 --- a/dataplane/standalone/sai/hash.h +++ b/dataplane/standalone/sai/hash.h @@ -25,22 +25,30 @@ extern "C" { extern const sai_hash_api_t l_hash; - -sai_status_t l_create_hash(sai_object_id_t *hash_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_hash(sai_object_id_t* hash_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_hash(sai_object_id_t hash_id); -sai_status_t l_set_hash_attribute(sai_object_id_t hash_id, const sai_attribute_t *attr); - -sai_status_t l_get_hash_attribute(sai_object_id_t hash_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_hash_attribute(sai_object_id_t hash_id, + const sai_attribute_t* attr); -sai_status_t l_create_fine_grained_hash_field(sai_object_id_t *fine_grained_hash_field_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_hash_attribute(sai_object_id_t hash_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_fine_grained_hash_field(sai_object_id_t fine_grained_hash_field_id); +sai_status_t l_create_fine_grained_hash_field( + sai_object_id_t* fine_grained_hash_field_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_fine_grained_hash_field_attribute(sai_object_id_t fine_grained_hash_field_id, const sai_attribute_t *attr); +sai_status_t l_remove_fine_grained_hash_field( + sai_object_id_t fine_grained_hash_field_id); -sai_status_t l_get_fine_grained_hash_field_attribute(sai_object_id_t fine_grained_hash_field_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_fine_grained_hash_field_attribute( + sai_object_id_t fine_grained_hash_field_id, const sai_attribute_t* attr); +sai_status_t l_get_fine_grained_hash_field_attribute( + sai_object_id_t fine_grained_hash_field_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_HASH_H_ diff --git a/dataplane/standalone/sai/hostif.cc b/dataplane/standalone/sai/hostif.cc index 49e9738b0..ffffb14fc 100644 --- a/dataplane/standalone/sai/hostif.cc +++ b/dataplane/standalone/sai/hostif.cc @@ -13,877 +13,915 @@ // limitations under the License. #include "dataplane/standalone/sai/hostif.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/hostif.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_hostif_api_t l_hostif = { - .create_hostif = l_create_hostif, - .remove_hostif = l_remove_hostif, - .set_hostif_attribute = l_set_hostif_attribute, - .get_hostif_attribute = l_get_hostif_attribute, - .create_hostif_table_entry = l_create_hostif_table_entry, - .remove_hostif_table_entry = l_remove_hostif_table_entry, - .set_hostif_table_entry_attribute = l_set_hostif_table_entry_attribute, - .get_hostif_table_entry_attribute = l_get_hostif_table_entry_attribute, - .create_hostif_trap_group = l_create_hostif_trap_group, - .remove_hostif_trap_group = l_remove_hostif_trap_group, - .set_hostif_trap_group_attribute = l_set_hostif_trap_group_attribute, - .get_hostif_trap_group_attribute = l_get_hostif_trap_group_attribute, - .create_hostif_trap = l_create_hostif_trap, - .remove_hostif_trap = l_remove_hostif_trap, - .set_hostif_trap_attribute = l_set_hostif_trap_attribute, - .get_hostif_trap_attribute = l_get_hostif_trap_attribute, - .create_hostif_user_defined_trap = l_create_hostif_user_defined_trap, - .remove_hostif_user_defined_trap = l_remove_hostif_user_defined_trap, - .set_hostif_user_defined_trap_attribute = l_set_hostif_user_defined_trap_attribute, - .get_hostif_user_defined_trap_attribute = l_get_hostif_user_defined_trap_attribute, - .recv_hostif_packet = l_recv_hostif_packet, - .send_hostif_packet = l_send_hostif_packet, - .allocate_hostif_packet = l_allocate_hostif_packet, - .free_hostif_packet = l_free_hostif_packet, + .create_hostif = l_create_hostif, + .remove_hostif = l_remove_hostif, + .set_hostif_attribute = l_set_hostif_attribute, + .get_hostif_attribute = l_get_hostif_attribute, + .create_hostif_table_entry = l_create_hostif_table_entry, + .remove_hostif_table_entry = l_remove_hostif_table_entry, + .set_hostif_table_entry_attribute = l_set_hostif_table_entry_attribute, + .get_hostif_table_entry_attribute = l_get_hostif_table_entry_attribute, + .create_hostif_trap_group = l_create_hostif_trap_group, + .remove_hostif_trap_group = l_remove_hostif_trap_group, + .set_hostif_trap_group_attribute = l_set_hostif_trap_group_attribute, + .get_hostif_trap_group_attribute = l_get_hostif_trap_group_attribute, + .create_hostif_trap = l_create_hostif_trap, + .remove_hostif_trap = l_remove_hostif_trap, + .set_hostif_trap_attribute = l_set_hostif_trap_attribute, + .get_hostif_trap_attribute = l_get_hostif_trap_attribute, + .create_hostif_user_defined_trap = l_create_hostif_user_defined_trap, + .remove_hostif_user_defined_trap = l_remove_hostif_user_defined_trap, + .set_hostif_user_defined_trap_attribute = + l_set_hostif_user_defined_trap_attribute, + .get_hostif_user_defined_trap_attribute = + l_get_hostif_user_defined_trap_attribute, + .recv_hostif_packet = l_recv_hostif_packet, + .send_hostif_packet = l_send_hostif_packet, + .allocate_hostif_packet = l_allocate_hostif_packet, + .free_hostif_packet = l_free_hostif_packet, }; - -lemming::dataplane::sai::CreateHostifRequest convert_create_hostif(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHostifRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_ATTR_TYPE: - msg.set_type(convert_sai_hostif_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_ATTR_OBJ_ID: - msg.set_obj_id(attr_list[i].value.oid); - break; - case SAI_HOSTIF_ATTR_NAME: - msg.set_name(attr_list[i].value.chardata); - break; - case SAI_HOSTIF_ATTR_OPER_STATUS: - msg.set_oper_status(attr_list[i].value.booldata); - break; - case SAI_HOSTIF_ATTR_QUEUE: - msg.set_queue(attr_list[i].value.u32); - break; - case SAI_HOSTIF_ATTR_VLAN_TAG: - msg.set_vlan_tag(convert_sai_hostif_vlan_tag_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: - msg.set_genetlink_mcgrp_name(attr_list[i].value.chardata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateHostifTableEntryRequest convert_create_hostif_table_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHostifTableEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: - msg.set_type(convert_sai_hostif_table_entry_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: - msg.set_obj_id(attr_list[i].value.oid); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: - msg.set_trap_id(attr_list[i].value.oid); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: - msg.set_channel_type(convert_sai_hostif_table_entry_channel_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: - msg.set_host_if(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateHostifTrapGroupRequest convert_create_hostif_trap_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHostifTrapGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: - msg.set_admin_state(attr_list[i].value.booldata); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: - msg.set_queue(attr_list[i].value.u32); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: - msg.set_policer(attr_list[i].value.oid); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: - msg.set_object_stage(convert_sai_object_stage_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateHostifTrapRequest convert_create_hostif_trap(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHostifTrapRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: - msg.set_trap_type(convert_sai_hostif_trap_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: - msg.set_trap_priority(attr_list[i].value.u32); - break; - case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: - msg.mutable_exclude_port_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: - msg.set_trap_group(attr_list[i].value.oid); - break; - case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: - msg.mutable_mirror_session()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest convert_create_hostif_user_defined_trap(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: - msg.set_type(convert_sai_hostif_user_defined_trap_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: - msg.set_trap_priority(attr_list[i].value.u32); - break; - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: - msg.set_trap_group(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -sai_status_t l_create_hostif(sai_object_id_t *hostif_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHostifRequest req = convert_create_hostif(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHostifResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hostif->CreateHostif(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hostif_id) { - *hostif_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateHostifRequest convert_create_hostif( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHostifRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_ATTR_TYPE: + msg.set_type( + convert_sai_hostif_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_HOSTIF_ATTR_OBJ_ID: + msg.set_obj_id(attr_list[i].value.oid); + break; + case SAI_HOSTIF_ATTR_NAME: + msg.set_name(attr_list[i].value.chardata); + break; + case SAI_HOSTIF_ATTR_OPER_STATUS: + msg.set_oper_status(attr_list[i].value.booldata); + break; + case SAI_HOSTIF_ATTR_QUEUE: + msg.set_queue(attr_list[i].value.u32); + break; + case SAI_HOSTIF_ATTR_VLAN_TAG: + msg.set_vlan_tag( + convert_sai_hostif_vlan_tag_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: + msg.set_genetlink_mcgrp_name(attr_list[i].value.chardata); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateHostifTableEntryRequest +convert_create_hostif_table_entry(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHostifTableEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: + msg.set_type(convert_sai_hostif_table_entry_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: + msg.set_obj_id(attr_list[i].value.oid); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: + msg.set_trap_id(attr_list[i].value.oid); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: + msg.set_channel_type( + convert_sai_hostif_table_entry_channel_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: + msg.set_host_if(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateHostifTrapGroupRequest +convert_create_hostif_trap_group(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHostifTrapGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: + msg.set_admin_state(attr_list[i].value.booldata); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: + msg.set_queue(attr_list[i].value.u32); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: + msg.set_policer(attr_list[i].value.oid); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: + msg.set_object_stage( + convert_sai_object_stage_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateHostifTrapRequest convert_create_hostif_trap( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHostifTrapRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: + msg.set_trap_type( + convert_sai_hostif_trap_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: + msg.set_trap_priority(attr_list[i].value.u32); + break; + case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: + msg.mutable_exclude_port_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: + msg.set_trap_group(attr_list[i].value.oid); + break; + case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: + msg.mutable_mirror_session()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest +convert_create_hostif_user_defined_trap(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: + msg.set_type(convert_sai_hostif_user_defined_trap_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: + msg.set_trap_priority(attr_list[i].value.u32); + break; + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: + msg.set_trap_group(attr_list[i].value.oid); + break; + } + } + return msg; +} + +sai_status_t l_create_hostif(sai_object_id_t* hostif_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHostifRequest req = + convert_create_hostif(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHostifResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hostif->CreateHostif(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hostif_id) { + *hostif_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_hostif(sai_object_id_t hostif_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHostifRequest req; - lemming::dataplane::sai::RemoveHostifResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_id); - - grpc::Status status = hostif->RemoveHostif(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_hostif_attribute(sai_object_id_t hostif_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetHostifAttributeRequest req; - lemming::dataplane::sai::SetHostifAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_id); - - - - -switch (attr->id) { - - case SAI_HOSTIF_ATTR_OPER_STATUS: - req.set_oper_status(attr->value.booldata); - break; - case SAI_HOSTIF_ATTR_QUEUE: - req.set_queue(attr->value.u32); - break; - case SAI_HOSTIF_ATTR_VLAN_TAG: - req.set_vlan_tag(convert_sai_hostif_vlan_tag_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = hostif->SetHostifAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_hostif_attribute(sai_object_id_t hostif_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHostifAttributeRequest req; - lemming::dataplane::sai::GetHostifAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hostif_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hostif_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hostif->GetHostifAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_hostif_type_t_to_sai(resp.attr().type()); - break; - case SAI_HOSTIF_ATTR_OBJ_ID: - attr_list[i].value.oid = resp.attr().obj_id(); - break; - case SAI_HOSTIF_ATTR_NAME: - strncpy(attr_list[i].value.chardata, resp.attr().name().data(), 32); - break; - case SAI_HOSTIF_ATTR_OPER_STATUS: - attr_list[i].value.booldata = resp.attr().oper_status(); - break; - case SAI_HOSTIF_ATTR_QUEUE: - attr_list[i].value.u32 = resp.attr().queue(); - break; - case SAI_HOSTIF_ATTR_VLAN_TAG: - attr_list[i].value.s32 = convert_sai_hostif_vlan_tag_t_to_sai(resp.attr().vlan_tag()); - break; - case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: - strncpy(attr_list[i].value.chardata, resp.attr().genetlink_mcgrp_name().data(), 32); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_hostif_table_entry(sai_object_id_t *hostif_table_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHostifTableEntryRequest req = convert_create_hostif_table_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHostifTableEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hostif->CreateHostifTableEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hostif_table_entry_id) { - *hostif_table_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_hostif_table_entry(sai_object_id_t hostif_table_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHostifTableEntryRequest req; - lemming::dataplane::sai::RemoveHostifTableEntryResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_table_entry_id); - - grpc::Status status = hostif->RemoveHostifTableEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_hostif_table_entry_attribute(sai_object_id_t hostif_table_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_hostif_table_entry_attribute(sai_object_id_t hostif_table_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHostifTableEntryAttributeRequest req; - lemming::dataplane::sai::GetHostifTableEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hostif_table_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hostif_table_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hostif->GetHostifTableEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_hostif_table_entry_type_t_to_sai(resp.attr().type()); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: - attr_list[i].value.oid = resp.attr().obj_id(); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: - attr_list[i].value.oid = resp.attr().trap_id(); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: - attr_list[i].value.s32 = convert_sai_hostif_table_entry_channel_type_t_to_sai(resp.attr().channel_type()); - break; - case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: - attr_list[i].value.oid = resp.attr().host_if(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_hostif_trap_group(sai_object_id_t *hostif_trap_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHostifTrapGroupRequest req = convert_create_hostif_trap_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHostifTrapGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hostif->CreateHostifTrapGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hostif_trap_group_id) { - *hostif_trap_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHostifRequest req; + lemming::dataplane::sai::RemoveHostifResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_id); + + grpc::Status status = hostif->RemoveHostif(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_hostif_attribute(sai_object_id_t hostif_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetHostifAttributeRequest req; + lemming::dataplane::sai::SetHostifAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_id); + + switch (attr->id) { + case SAI_HOSTIF_ATTR_OPER_STATUS: + req.set_oper_status(attr->value.booldata); + break; + case SAI_HOSTIF_ATTR_QUEUE: + req.set_queue(attr->value.u32); + break; + case SAI_HOSTIF_ATTR_VLAN_TAG: + req.set_vlan_tag(convert_sai_hostif_vlan_tag_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = hostif->SetHostifAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_hostif_attribute(sai_object_id_t hostif_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHostifAttributeRequest req; + lemming::dataplane::sai::GetHostifAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hostif_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_hostif_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = hostif->GetHostifAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_hostif_type_t_to_sai(resp.attr().type()); + break; + case SAI_HOSTIF_ATTR_OBJ_ID: + attr_list[i].value.oid = resp.attr().obj_id(); + break; + case SAI_HOSTIF_ATTR_NAME: + strncpy(attr_list[i].value.chardata, resp.attr().name().data(), 32); + break; + case SAI_HOSTIF_ATTR_OPER_STATUS: + attr_list[i].value.booldata = resp.attr().oper_status(); + break; + case SAI_HOSTIF_ATTR_QUEUE: + attr_list[i].value.u32 = resp.attr().queue(); + break; + case SAI_HOSTIF_ATTR_VLAN_TAG: + attr_list[i].value.s32 = + convert_sai_hostif_vlan_tag_t_to_sai(resp.attr().vlan_tag()); + break; + case SAI_HOSTIF_ATTR_GENETLINK_MCGRP_NAME: + strncpy(attr_list[i].value.chardata, + resp.attr().genetlink_mcgrp_name().data(), 32); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_hostif_table_entry(sai_object_id_t* hostif_table_entry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHostifTableEntryRequest req = + convert_create_hostif_table_entry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHostifTableEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hostif->CreateHostifTableEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hostif_table_entry_id) { + *hostif_table_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_hostif_table_entry( + sai_object_id_t hostif_table_entry_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHostifTableEntryRequest req; + lemming::dataplane::sai::RemoveHostifTableEntryResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_table_entry_id); + + grpc::Status status = hostif->RemoveHostifTableEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_hostif_table_entry_attribute( + sai_object_id_t hostif_table_entry_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_hostif_table_entry_attribute( + sai_object_id_t hostif_table_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHostifTableEntryAttributeRequest req; + lemming::dataplane::sai::GetHostifTableEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hostif_table_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_hostif_table_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + hostif->GetHostifTableEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_hostif_table_entry_type_t_to_sai(resp.attr().type()); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_OBJ_ID: + attr_list[i].value.oid = resp.attr().obj_id(); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_TRAP_ID: + attr_list[i].value.oid = resp.attr().trap_id(); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_CHANNEL_TYPE: + attr_list[i].value.s32 = + convert_sai_hostif_table_entry_channel_type_t_to_sai( + resp.attr().channel_type()); + break; + case SAI_HOSTIF_TABLE_ENTRY_ATTR_HOST_IF: + attr_list[i].value.oid = resp.attr().host_if(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_hostif_trap_group(sai_object_id_t* hostif_trap_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHostifTrapGroupRequest req = + convert_create_hostif_trap_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHostifTrapGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hostif->CreateHostifTrapGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hostif_trap_group_id) { + *hostif_trap_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_hostif_trap_group(sai_object_id_t hostif_trap_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHostifTrapGroupRequest req; - lemming::dataplane::sai::RemoveHostifTrapGroupResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_trap_group_id); - - grpc::Status status = hostif->RemoveHostifTrapGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_hostif_trap_group_attribute(sai_object_id_t hostif_trap_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetHostifTrapGroupAttributeRequest req; - lemming::dataplane::sai::SetHostifTrapGroupAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_trap_group_id); - - - - -switch (attr->id) { - - case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: - req.set_admin_state(attr->value.booldata); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: - req.set_queue(attr->value.u32); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: - req.set_policer(attr->value.oid); - break; -} - - grpc::Status status = hostif->SetHostifTrapGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_hostif_trap_group_attribute(sai_object_id_t hostif_trap_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHostifTrapGroupAttributeRequest req; - lemming::dataplane::sai::GetHostifTrapGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hostif_trap_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hostif_trap_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hostif->GetHostifTrapGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: - attr_list[i].value.booldata = resp.attr().admin_state(); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: - attr_list[i].value.u32 = resp.attr().queue(); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: - attr_list[i].value.oid = resp.attr().policer(); - break; - case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: - attr_list[i].value.s32 = convert_sai_object_stage_t_to_sai(resp.attr().object_stage()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_hostif_trap(sai_object_id_t *hostif_trap_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHostifTrapRequest req = convert_create_hostif_trap(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHostifTrapResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hostif->CreateHostifTrap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hostif_trap_id) { - *hostif_trap_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHostifTrapGroupRequest req; + lemming::dataplane::sai::RemoveHostifTrapGroupResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_trap_group_id); + + grpc::Status status = hostif->RemoveHostifTrapGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_hostif_trap_group_attribute( + sai_object_id_t hostif_trap_group_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetHostifTrapGroupAttributeRequest req; + lemming::dataplane::sai::SetHostifTrapGroupAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_trap_group_id); + + switch (attr->id) { + case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: + req.set_admin_state(attr->value.booldata); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: + req.set_queue(attr->value.u32); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: + req.set_policer(attr->value.oid); + break; + } + + grpc::Status status = + hostif->SetHostifTrapGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_hostif_trap_group_attribute( + sai_object_id_t hostif_trap_group_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHostifTrapGroupAttributeRequest req; + lemming::dataplane::sai::GetHostifTrapGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hostif_trap_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_hostif_trap_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + hostif->GetHostifTrapGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TRAP_GROUP_ATTR_ADMIN_STATE: + attr_list[i].value.booldata = resp.attr().admin_state(); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_QUEUE: + attr_list[i].value.u32 = resp.attr().queue(); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_POLICER: + attr_list[i].value.oid = resp.attr().policer(); + break; + case SAI_HOSTIF_TRAP_GROUP_ATTR_OBJECT_STAGE: + attr_list[i].value.s32 = + convert_sai_object_stage_t_to_sai(resp.attr().object_stage()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_hostif_trap(sai_object_id_t* hostif_trap_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHostifTrapRequest req = + convert_create_hostif_trap(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHostifTrapResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = hostif->CreateHostifTrap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hostif_trap_id) { + *hostif_trap_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_hostif_trap(sai_object_id_t hostif_trap_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHostifTrapRequest req; - lemming::dataplane::sai::RemoveHostifTrapResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_trap_id); - - grpc::Status status = hostif->RemoveHostifTrap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_hostif_trap_attribute(sai_object_id_t hostif_trap_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetHostifTrapAttributeRequest req; - lemming::dataplane::sai::SetHostifTrapAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_trap_id); - - - - -switch (attr->id) { - - case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: - req.set_trap_priority(attr->value.u32); - break; - case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: - req.mutable_exclude_port_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: - req.set_trap_group(attr->value.oid); - break; - case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: - req.mutable_mirror_session()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; -} - - grpc::Status status = hostif->SetHostifTrapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_hostif_trap_attribute(sai_object_id_t hostif_trap_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHostifTrapAttributeRequest req; - lemming::dataplane::sai::GetHostifTrapAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hostif_trap_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hostif_trap_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hostif->GetHostifTrapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: - attr_list[i].value.s32 = convert_sai_hostif_trap_type_t_to_sai(resp.attr().trap_type()); - break; - case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: - attr_list[i].value.u32 = resp.attr().trap_priority(); - break; - case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().exclude_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: - attr_list[i].value.oid = resp.attr().trap_group(); - break; - case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: - copy_list(attr_list[i].value.objlist.list, resp.attr().mirror_session(), &attr_list[i].value.objlist.count); - break; - case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_hostif_user_defined_trap(sai_object_id_t *hostif_user_defined_trap_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest req = convert_create_hostif_user_defined_trap(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateHostifUserDefinedTrapResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = hostif->CreateHostifUserDefinedTrap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (hostif_user_defined_trap_id) { - *hostif_user_defined_trap_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_hostif_user_defined_trap(sai_object_id_t hostif_user_defined_trap_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveHostifUserDefinedTrapRequest req; - lemming::dataplane::sai::RemoveHostifUserDefinedTrapResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_user_defined_trap_id); - - grpc::Status status = hostif->RemoveHostifUserDefinedTrap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_hostif_user_defined_trap_attribute(sai_object_id_t hostif_user_defined_trap_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetHostifUserDefinedTrapAttributeRequest req; - lemming::dataplane::sai::SetHostifUserDefinedTrapAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(hostif_user_defined_trap_id); - - - - -switch (attr->id) { - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: - req.set_trap_priority(attr->value.u32); - break; - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: - req.set_trap_group(attr->value.oid); - break; -} - - grpc::Status status = hostif->SetHostifUserDefinedTrapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_hostif_user_defined_trap_attribute(sai_object_id_t hostif_user_defined_trap_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetHostifUserDefinedTrapAttributeRequest req; - lemming::dataplane::sai::GetHostifUserDefinedTrapAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(hostif_user_defined_trap_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_hostif_user_defined_trap_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = hostif->GetHostifUserDefinedTrapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_hostif_user_defined_trap_type_t_to_sai(resp.attr().type()); - break; - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: - attr_list[i].value.u32 = resp.attr().trap_priority(); - break; - case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: - attr_list[i].value.oid = resp.attr().trap_group(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_recv_hostif_packet(sai_object_id_t hostif_id, sai_size_t *buffer_size, void *buffer, uint32_t *attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - -sai_status_t l_send_hostif_packet(sai_object_id_t hostif_id, sai_size_t buffer_size, const void *buffer, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - -sai_status_t l_allocate_hostif_packet(sai_object_id_t hostif_id, sai_size_t buffer_size, void **buffer, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHostifTrapRequest req; + lemming::dataplane::sai::RemoveHostifTrapResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_trap_id); + + grpc::Status status = hostif->RemoveHostifTrap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_hostif_trap_attribute(sai_object_id_t hostif_trap_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetHostifTrapAttributeRequest req; + lemming::dataplane::sai::SetHostifTrapAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_trap_id); + + switch (attr->id) { + case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: + req.set_trap_priority(attr->value.u32); + break; + case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: + req.mutable_exclude_port_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: + req.set_trap_group(attr->value.oid); + break; + case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: + req.mutable_mirror_session()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = hostif->SetHostifTrapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_hostif_trap_attribute(sai_object_id_t hostif_trap_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHostifTrapAttributeRequest req; + lemming::dataplane::sai::GetHostifTrapAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hostif_trap_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_hostif_trap_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = hostif->GetHostifTrapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_TRAP_ATTR_TRAP_TYPE: + attr_list[i].value.s32 = + convert_sai_hostif_trap_type_t_to_sai(resp.attr().trap_type()); + break; + case SAI_HOSTIF_TRAP_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_PRIORITY: + attr_list[i].value.u32 = resp.attr().trap_priority(); + break; + case SAI_HOSTIF_TRAP_ATTR_EXCLUDE_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().exclude_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_TRAP_GROUP: + attr_list[i].value.oid = resp.attr().trap_group(); + break; + case SAI_HOSTIF_TRAP_ATTR_MIRROR_SESSION: + copy_list(attr_list[i].value.objlist.list, resp.attr().mirror_session(), + &attr_list[i].value.objlist.count); + break; + case SAI_HOSTIF_TRAP_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_hostif_user_defined_trap( + sai_object_id_t* hostif_user_defined_trap_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateHostifUserDefinedTrapRequest req = + convert_create_hostif_user_defined_trap(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateHostifUserDefinedTrapResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + hostif->CreateHostifUserDefinedTrap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (hostif_user_defined_trap_id) { + *hostif_user_defined_trap_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_hostif_user_defined_trap( + sai_object_id_t hostif_user_defined_trap_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveHostifUserDefinedTrapRequest req; + lemming::dataplane::sai::RemoveHostifUserDefinedTrapResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_user_defined_trap_id); + + grpc::Status status = + hostif->RemoveHostifUserDefinedTrap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_hostif_user_defined_trap_attribute( + sai_object_id_t hostif_user_defined_trap_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetHostifUserDefinedTrapAttributeRequest req; + lemming::dataplane::sai::SetHostifUserDefinedTrapAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(hostif_user_defined_trap_id); + + switch (attr->id) { + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: + req.set_trap_priority(attr->value.u32); + break; + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: + req.set_trap_group(attr->value.oid); + break; + } + + grpc::Status status = + hostif->SetHostifUserDefinedTrapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_hostif_user_defined_trap_attribute( + sai_object_id_t hostif_user_defined_trap_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetHostifUserDefinedTrapAttributeRequest req; + lemming::dataplane::sai::GetHostifUserDefinedTrapAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(hostif_user_defined_trap_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_hostif_user_defined_trap_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + hostif->GetHostifUserDefinedTrapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_hostif_user_defined_trap_type_t_to_sai( + resp.attr().type()); + break; + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_PRIORITY: + attr_list[i].value.u32 = resp.attr().trap_priority(); + break; + case SAI_HOSTIF_USER_DEFINED_TRAP_ATTR_TRAP_GROUP: + attr_list[i].value.oid = resp.attr().trap_group(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_recv_hostif_packet(sai_object_id_t hostif_id, + sai_size_t* buffer_size, void* buffer, + uint32_t* attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_send_hostif_packet(sai_object_id_t hostif_id, + sai_size_t buffer_size, const void* buffer, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_allocate_hostif_packet(sai_object_id_t hostif_id, + sai_size_t buffer_size, void** buffer, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_free_hostif_packet(sai_object_id_t hostif_id, void* buffer) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - -sai_status_t l_free_hostif_packet(sai_object_id_t hostif_id, void *buffer) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - diff --git a/dataplane/standalone/sai/hostif.h b/dataplane/standalone/sai/hostif.h index 77b1a91cc..88352c521 100644 --- a/dataplane/standalone/sai/hostif.h +++ b/dataplane/standalone/sai/hostif.h @@ -25,54 +25,90 @@ extern "C" { extern const sai_hostif_api_t l_hostif; - -sai_status_t l_create_hostif(sai_object_id_t *hostif_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_hostif(sai_object_id_t* hostif_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_hostif(sai_object_id_t hostif_id); -sai_status_t l_set_hostif_attribute(sai_object_id_t hostif_id, const sai_attribute_t *attr); +sai_status_t l_set_hostif_attribute(sai_object_id_t hostif_id, + const sai_attribute_t* attr); -sai_status_t l_get_hostif_attribute(sai_object_id_t hostif_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_hostif_attribute(sai_object_id_t hostif_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_hostif_table_entry(sai_object_id_t *hostif_table_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_hostif_table_entry(sai_object_id_t* hostif_table_entry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_hostif_table_entry(sai_object_id_t hostif_table_entry_id); -sai_status_t l_set_hostif_table_entry_attribute(sai_object_id_t hostif_table_entry_id, const sai_attribute_t *attr); +sai_status_t l_set_hostif_table_entry_attribute( + sai_object_id_t hostif_table_entry_id, const sai_attribute_t* attr); -sai_status_t l_get_hostif_table_entry_attribute(sai_object_id_t hostif_table_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_hostif_table_entry_attribute( + sai_object_id_t hostif_table_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_hostif_trap_group(sai_object_id_t *hostif_trap_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_hostif_trap_group(sai_object_id_t* hostif_trap_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_hostif_trap_group(sai_object_id_t hostif_trap_group_id); -sai_status_t l_set_hostif_trap_group_attribute(sai_object_id_t hostif_trap_group_id, const sai_attribute_t *attr); +sai_status_t l_set_hostif_trap_group_attribute( + sai_object_id_t hostif_trap_group_id, const sai_attribute_t* attr); -sai_status_t l_get_hostif_trap_group_attribute(sai_object_id_t hostif_trap_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_hostif_trap_group_attribute( + sai_object_id_t hostif_trap_group_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_hostif_trap(sai_object_id_t *hostif_trap_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_hostif_trap(sai_object_id_t* hostif_trap_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_hostif_trap(sai_object_id_t hostif_trap_id); -sai_status_t l_set_hostif_trap_attribute(sai_object_id_t hostif_trap_id, const sai_attribute_t *attr); - -sai_status_t l_get_hostif_trap_attribute(sai_object_id_t hostif_trap_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_hostif_trap_attribute(sai_object_id_t hostif_trap_id, + const sai_attribute_t* attr); -sai_status_t l_create_hostif_user_defined_trap(sai_object_id_t *hostif_user_defined_trap_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_hostif_trap_attribute(sai_object_id_t hostif_trap_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_hostif_user_defined_trap(sai_object_id_t hostif_user_defined_trap_id); +sai_status_t l_create_hostif_user_defined_trap( + sai_object_id_t* hostif_user_defined_trap_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_hostif_user_defined_trap_attribute(sai_object_id_t hostif_user_defined_trap_id, const sai_attribute_t *attr); +sai_status_t l_remove_hostif_user_defined_trap( + sai_object_id_t hostif_user_defined_trap_id); -sai_status_t l_get_hostif_user_defined_trap_attribute(sai_object_id_t hostif_user_defined_trap_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_hostif_user_defined_trap_attribute( + sai_object_id_t hostif_user_defined_trap_id, const sai_attribute_t* attr); -sai_status_t l_recv_hostif_packet(sai_object_id_t hostif_id, sai_size_t *buffer_size, void *buffer, uint32_t *attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_hostif_user_defined_trap_attribute( + sai_object_id_t hostif_user_defined_trap_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_send_hostif_packet(sai_object_id_t hostif_id, sai_size_t buffer_size, const void *buffer, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_recv_hostif_packet(sai_object_id_t hostif_id, + sai_size_t* buffer_size, void* buffer, + uint32_t* attr_count, + sai_attribute_t* attr_list); -sai_status_t l_allocate_hostif_packet(sai_object_id_t hostif_id, sai_size_t buffer_size, void **buffer, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_send_hostif_packet(sai_object_id_t hostif_id, + sai_size_t buffer_size, const void* buffer, + uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_free_hostif_packet(sai_object_id_t hostif_id, void *buffer); +sai_status_t l_allocate_hostif_packet(sai_object_id_t hostif_id, + sai_size_t buffer_size, void** buffer, + uint32_t attr_count, + const sai_attribute_t* attr_list); +sai_status_t l_free_hostif_packet(sai_object_id_t hostif_id, void* buffer); #endif // DATAPLANE_STANDALONE_SAI_HOSTIF_H_ diff --git a/dataplane/standalone/sai/icmp_echo.cc b/dataplane/standalone/sai/icmp_echo.cc new file mode 100644 index 000000000..698402c7e --- /dev/null +++ b/dataplane/standalone/sai/icmp_echo.cc @@ -0,0 +1,381 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "dataplane/standalone/sai/icmp_echo.h" + +#include + +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/icmp_echo.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" + +const sai_icmp_echo_api_t l_icmp_echo = { + .create_icmp_echo_session = l_create_icmp_echo_session, + .remove_icmp_echo_session = l_remove_icmp_echo_session, + .set_icmp_echo_session_attribute = l_set_icmp_echo_session_attribute, + .get_icmp_echo_session_attribute = l_get_icmp_echo_session_attribute, + .get_icmp_echo_session_stats = l_get_icmp_echo_session_stats, + .get_icmp_echo_session_stats_ext = l_get_icmp_echo_session_stats_ext, + .clear_icmp_echo_session_stats = l_clear_icmp_echo_session_stats, +}; + +lemming::dataplane::sai::CreateIcmpEchoSessionRequest +convert_create_icmp_echo_session(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIcmpEchoSessionRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID: + msg.set_hw_lookup_valid(attr_list[i].value.booldata); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER: + msg.set_virtual_router(attr_list[i].value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_PORT: + msg.set_port(attr_list[i].value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_PORT: + msg.set_rx_port(attr_list[i].value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_GUID: + msg.set_guid(attr_list[i].value.u64); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_COOKIE: + msg.set_cookie(attr_list[i].value.u32); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION: + msg.set_iphdr_version(attr_list[i].value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TOS: + msg.set_tos(attr_list[i].value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TTL: + msg.set_ttl(attr_list[i].value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS: + msg.set_src_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS: + msg.set_dst_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS: + msg.set_dst_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL: + msg.set_tx_interval(attr_list[i].value.u32); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL: + msg.set_rx_interval(attr_list[i].value.u32); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER: + msg.set_set_next_hop_group_switchover(attr_list[i].value.booldata); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +sai_status_t l_create_icmp_echo_session(sai_object_id_t* icmp_echo_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIcmpEchoSessionRequest req = + convert_create_icmp_echo_session(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIcmpEchoSessionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = icmp_echo->CreateIcmpEchoSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (icmp_echo_session_id) { + *icmp_echo_session_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_icmp_echo_session(sai_object_id_t icmp_echo_session_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIcmpEchoSessionRequest req; + lemming::dataplane::sai::RemoveIcmpEchoSessionResponse resp; + grpc::ClientContext context; + req.set_oid(icmp_echo_session_id); + + grpc::Status status = icmp_echo->RemoveIcmpEchoSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_icmp_echo_session_attribute( + sai_object_id_t icmp_echo_session_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIcmpEchoSessionAttributeRequest req; + lemming::dataplane::sai::SetIcmpEchoSessionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(icmp_echo_session_id); + + switch (attr->id) { + case SAI_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER: + req.set_virtual_router(attr->value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_PORT: + req.set_port(attr->value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_PORT: + req.set_rx_port(attr->value.oid); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION: + req.set_iphdr_version(attr->value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TOS: + req.set_tos(attr->value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TTL: + req.set_ttl(attr->value.u8); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS: + req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL: + req.set_tx_interval(attr->value.u32); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL: + req.set_rx_interval(attr->value.u32); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER: + req.set_set_next_hop_group_switchover(attr->value.booldata); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = + icmp_echo->SetIcmpEchoSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_icmp_echo_session_attribute( + sai_object_id_t icmp_echo_session_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIcmpEchoSessionAttributeRequest req; + lemming::dataplane::sai::GetIcmpEchoSessionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(icmp_echo_session_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_icmp_echo_session_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + icmp_echo->GetIcmpEchoSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ICMP_ECHO_SESSION_ATTR_HW_LOOKUP_VALID: + attr_list[i].value.booldata = resp.attr().hw_lookup_valid(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_VIRTUAL_ROUTER: + attr_list[i].value.oid = resp.attr().virtual_router(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_PORT: + attr_list[i].value.oid = resp.attr().port(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_PORT: + attr_list[i].value.oid = resp.attr().rx_port(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_GUID: + attr_list[i].value.u64 = resp.attr().guid(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_COOKIE: + attr_list[i].value.u32 = resp.attr().cookie(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_IPHDR_VERSION: + attr_list[i].value.u8 = resp.attr().iphdr_version(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TOS: + attr_list[i].value.u8 = resp.attr().tos(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TTL: + attr_list[i].value.u8 = resp.attr().ttl(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().src_ip_address()); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_DST_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().dst_ip_address()); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_DST_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_TX_INTERVAL: + attr_list[i].value.u32 = resp.attr().tx_interval(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_RX_INTERVAL: + attr_list[i].value.u32 = resp.attr().rx_interval(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SET_NEXT_HOP_GROUP_SWITCHOVER: + attr_list[i].value.booldata = + resp.attr().set_next_hop_group_switchover(); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_STATE: + attr_list[i].value.s32 = + convert_sai_icmp_echo_session_state_t_to_sai(resp.attr().state()); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_ICMP_ECHO_SESSION_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_icmp_echo_session_stats(sai_object_id_t icmp_echo_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIcmpEchoSessionStatsRequest req; + lemming::dataplane::sai::GetIcmpEchoSessionStatsResponse resp; + grpc::ClientContext context; + req.set_oid(icmp_echo_session_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_icmp_echo_session_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = + icmp_echo->GetIcmpEchoSessionStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_icmp_echo_session_stats_ext( + sai_object_id_t icmp_echo_session_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_icmp_echo_session_stats( + sai_object_id_t icmp_echo_session_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/icmp_echo.h b/dataplane/standalone/sai/icmp_echo.h new file mode 100644 index 000000000..8490147d8 --- /dev/null +++ b/dataplane/standalone/sai/icmp_echo.h @@ -0,0 +1,56 @@ +// Copyright 2023 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef DATAPLANE_STANDALONE_SAI_ICMP_ECHO_H_ +#define DATAPLANE_STANDALONE_SAI_ICMP_ECHO_H_ + +extern "C" { +#include "inc/sai.h" +} + +extern "C" { +#include "experimental/saiextensions.h" +} + +extern const sai_icmp_echo_api_t l_icmp_echo; + +sai_status_t l_create_icmp_echo_session(sai_object_id_t* icmp_echo_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_remove_icmp_echo_session(sai_object_id_t icmp_echo_session_id); + +sai_status_t l_set_icmp_echo_session_attribute( + sai_object_id_t icmp_echo_session_id, const sai_attribute_t* attr); + +sai_status_t l_get_icmp_echo_session_attribute( + sai_object_id_t icmp_echo_session_id, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_get_icmp_echo_session_stats(sai_object_id_t icmp_echo_session_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); + +sai_status_t l_get_icmp_echo_session_stats_ext( + sai_object_id_t icmp_echo_session_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters); + +sai_status_t l_clear_icmp_echo_session_stats( + sai_object_id_t icmp_echo_session_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); + +#endif // DATAPLANE_STANDALONE_SAI_ICMP_ECHO_H_ diff --git a/dataplane/standalone/sai/ipmc.cc b/dataplane/standalone/sai/ipmc.cc index b75b5169f..bbde5fc61 100644 --- a/dataplane/standalone/sai/ipmc.cc +++ b/dataplane/standalone/sai/ipmc.cc @@ -13,179 +13,171 @@ // limitations under the License. #include "dataplane/standalone/sai/ipmc.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/ipmc.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_ipmc_api_t l_ipmc = { - .create_ipmc_entry = l_create_ipmc_entry, - .remove_ipmc_entry = l_remove_ipmc_entry, - .set_ipmc_entry_attribute = l_set_ipmc_entry_attribute, - .get_ipmc_entry_attribute = l_get_ipmc_entry_attribute, + .create_ipmc_entry = l_create_ipmc_entry, + .remove_ipmc_entry = l_remove_ipmc_entry, + .set_ipmc_entry_attribute = l_set_ipmc_entry_attribute, + .get_ipmc_entry_attribute = l_get_ipmc_entry_attribute, }; - -lemming::dataplane::sai::CreateIpmcEntryRequest convert_create_ipmc_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateIpmcEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: - msg.set_output_group_id(attr_list[i].value.oid); - break; - case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: - msg.set_rpf_group_id(attr_list[i].value.oid); - break; - case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateIpmcEntryRequest convert_create_ipmc_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpmcEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: + msg.set_output_group_id(attr_list[i].value.oid); + break; + case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: + msg.set_rpf_group_id(attr_list[i].value.oid); + break; + case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; } -sai_status_t l_create_ipmc_entry(const sai_ipmc_entry_t *ipmc_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpmcEntryRequest req = convert_create_ipmc_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateIpmcEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = ipmc->CreateIpmcEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_ipmc_entry(const sai_ipmc_entry_t* ipmc_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIpmcEntryRequest req = + convert_create_ipmc_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateIpmcEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = ipmc->CreateIpmcEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_ipmc_entry(const sai_ipmc_entry_t *ipmc_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpmcEntryRequest req; - lemming::dataplane::sai::RemoveIpmcEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = ipmc->RemoveIpmcEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_ipmc_entry(const sai_ipmc_entry_t* ipmc_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIpmcEntryRequest req; + lemming::dataplane::sai::RemoveIpmcEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = ipmc->RemoveIpmcEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_ipmc_entry_attribute(const sai_ipmc_entry_t *ipmc_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetIpmcEntryAttributeRequest req; - lemming::dataplane::sai::SetIpmcEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: - req.set_output_group_id(attr->value.oid); - break; - case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: - req.set_rpf_group_id(attr->value.oid); - break; - case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; +sai_status_t l_set_ipmc_entry_attribute(const sai_ipmc_entry_t* ipmc_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIpmcEntryAttributeRequest req; + lemming::dataplane::sai::SetIpmcEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: + req.set_output_group_id(attr->value.oid); + break; + case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: + req.set_rpf_group_id(attr->value.oid); + break; + case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = ipmc->SetIpmcEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = ipmc->SetIpmcEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_ipmc_entry_attribute(const sai_ipmc_entry_t* ipmc_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpmcEntryAttributeRequest req; + lemming::dataplane::sai::GetIpmcEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_ipmc_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = ipmc->GetIpmcEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: + attr_list[i].value.oid = resp.attr().output_group_id(); + break; + case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: + attr_list[i].value.oid = resp.attr().rpf_group_id(); + break; + case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_ipmc_entry_attribute(const sai_ipmc_entry_t *ipmc_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpmcEntryAttributeRequest req; - lemming::dataplane::sai::GetIpmcEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipmc_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipmc->GetIpmcEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPMC_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_IPMC_ENTRY_ATTR_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().output_group_id(); - break; - case SAI_IPMC_ENTRY_ATTR_RPF_GROUP_ID: - attr_list[i].value.oid = resp.attr().rpf_group_id(); - break; - case SAI_IPMC_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/ipmc.h b/dataplane/standalone/sai/ipmc.h index 9fec2048e..dcf5a9d56 100644 --- a/dataplane/standalone/sai/ipmc.h +++ b/dataplane/standalone/sai/ipmc.h @@ -25,14 +25,17 @@ extern "C" { extern const sai_ipmc_api_t l_ipmc; +sai_status_t l_create_ipmc_entry(const sai_ipmc_entry_t* ipmc_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_ipmc_entry(const sai_ipmc_entry_t *ipmc_entry, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_ipmc_entry(const sai_ipmc_entry_t* ipmc_entry); -sai_status_t l_remove_ipmc_entry(const sai_ipmc_entry_t *ipmc_entry); - -sai_status_t l_set_ipmc_entry_attribute(const sai_ipmc_entry_t *ipmc_entry, const sai_attribute_t *attr); - -sai_status_t l_get_ipmc_entry_attribute(const sai_ipmc_entry_t *ipmc_entry, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_ipmc_entry_attribute(const sai_ipmc_entry_t* ipmc_entry, + const sai_attribute_t* attr); +sai_status_t l_get_ipmc_entry_attribute(const sai_ipmc_entry_t* ipmc_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_IPMC_H_ diff --git a/dataplane/standalone/sai/ipmc_group.cc b/dataplane/standalone/sai/ipmc_group.cc index a0c3e810e..110a3652c 100644 --- a/dataplane/standalone/sai/ipmc_group.cc +++ b/dataplane/standalone/sai/ipmc_group.cc @@ -13,251 +13,251 @@ // limitations under the License. #include "dataplane/standalone/sai/ipmc_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/ipmc_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_ipmc_group_api_t l_ipmc_group = { - .create_ipmc_group = l_create_ipmc_group, - .remove_ipmc_group = l_remove_ipmc_group, - .set_ipmc_group_attribute = l_set_ipmc_group_attribute, - .get_ipmc_group_attribute = l_get_ipmc_group_attribute, - .create_ipmc_group_member = l_create_ipmc_group_member, - .remove_ipmc_group_member = l_remove_ipmc_group_member, - .set_ipmc_group_member_attribute = l_set_ipmc_group_member_attribute, - .get_ipmc_group_member_attribute = l_get_ipmc_group_member_attribute, + .create_ipmc_group = l_create_ipmc_group, + .remove_ipmc_group = l_remove_ipmc_group, + .set_ipmc_group_attribute = l_set_ipmc_group_attribute, + .get_ipmc_group_attribute = l_get_ipmc_group_attribute, + .create_ipmc_group_member = l_create_ipmc_group_member, + .remove_ipmc_group_member = l_remove_ipmc_group_member, + .set_ipmc_group_member_attribute = l_set_ipmc_group_member_attribute, + .get_ipmc_group_member_attribute = l_get_ipmc_group_member_attribute, }; +lemming::dataplane::sai::CreateIpmcGroupRequest convert_create_ipmc_group( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpmcGroupRequest msg; -lemming::dataplane::sai::CreateIpmcGroupRequest convert_create_ipmc_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) {} + } + return msg; +} -lemming::dataplane::sai::CreateIpmcGroupRequest msg; +lemming::dataplane::sai::CreateIpmcGroupMemberRequest +convert_create_ipmc_group_member(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpmcGroupMemberRequest msg; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: + msg.set_ipmc_group_id(attr_list[i].value.oid); + break; + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: + msg.set_ipmc_output_id(attr_list[i].value.oid); + break; + } + } + return msg; +} - for(uint32_t i = 0; i < attr_count; i++ ) { - - +sai_status_t l_create_ipmc_group(sai_object_id_t* ipmc_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr_list[i].id) { - -} + lemming::dataplane::sai::CreateIpmcGroupRequest req = + convert_create_ipmc_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIpmcGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); -} -return msg; -} + grpc::Status status = ipmc_group->CreateIpmcGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ipmc_group_id) { + *ipmc_group_id = resp.oid(); + } -lemming::dataplane::sai::CreateIpmcGroupMemberRequest convert_create_ipmc_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + return SAI_STATUS_SUCCESS; +} -lemming::dataplane::sai::CreateIpmcGroupMemberRequest msg; +sai_status_t l_remove_ipmc_group(sai_object_id_t ipmc_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::RemoveIpmcGroupRequest req; + lemming::dataplane::sai::RemoveIpmcGroupResponse resp; + grpc::ClientContext context; + req.set_oid(ipmc_group_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = ipmc_group->RemoveIpmcGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -switch (attr_list[i].id) { - - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: - msg.set_ipmc_group_id(attr_list[i].value.oid); - break; - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: - msg.set_ipmc_output_id(attr_list[i].value.oid); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_set_ipmc_group_attribute(sai_object_id_t ipmc_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_ipmc_group(sai_object_id_t *ipmc_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpmcGroupRequest req = convert_create_ipmc_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIpmcGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = ipmc_group->CreateIpmcGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ipmc_group_id) { - *ipmc_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_ipmc_group(sai_object_id_t ipmc_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpmcGroupRequest req; - lemming::dataplane::sai::RemoveIpmcGroupResponse resp; - grpc::ClientContext context; - req.set_oid(ipmc_group_id); - - grpc::Status status = ipmc_group->RemoveIpmcGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_ipmc_group_attribute(sai_object_id_t ipmc_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_ipmc_group_attribute(sai_object_id_t ipmc_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::GetIpmcGroupAttributeRequest req; + lemming::dataplane::sai::GetIpmcGroupAttributeResponse resp; + grpc::ClientContext context; -sai_status_t l_get_ipmc_group_attribute(sai_object_id_t ipmc_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpmcGroupAttributeRequest req; - lemming::dataplane::sai::GetIpmcGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ipmc_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipmc_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipmc_group->GetIpmcGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: - attr_list[i].value.u32 = resp.attr().ipmc_output_count(); - break; - case SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().ipmc_member_list(), &attr_list[i].value.objlist.count); - break; -} + req.set_oid(ipmc_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_ipmc_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = ipmc_group->GetIpmcGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPMC_GROUP_ATTR_IPMC_OUTPUT_COUNT: + attr_list[i].value.u32 = resp.attr().ipmc_output_count(); + break; + case SAI_IPMC_GROUP_ATTR_IPMC_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ipmc_member_list(), + &attr_list[i].value.objlist.count); + break; + } + } - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_ipmc_group_member(sai_object_id_t *ipmc_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpmcGroupMemberRequest req = convert_create_ipmc_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIpmcGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = ipmc_group->CreateIpmcGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ipmc_group_member_id) { - *ipmc_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_ipmc_group_member(sai_object_id_t* ipmc_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIpmcGroupMemberRequest req = + convert_create_ipmc_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIpmcGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = ipmc_group->CreateIpmcGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ipmc_group_member_id) { + *ipmc_group_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_ipmc_group_member(sai_object_id_t ipmc_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpmcGroupMemberRequest req; - lemming::dataplane::sai::RemoveIpmcGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(ipmc_group_member_id); - - grpc::Status status = ipmc_group->RemoveIpmcGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_ipmc_group_member_attribute(sai_object_id_t ipmc_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveIpmcGroupMemberRequest req; + lemming::dataplane::sai::RemoveIpmcGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(ipmc_group_member_id); + + grpc::Status status = ipmc_group->RemoveIpmcGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_ipmc_group_member_attribute(sai_object_id_t ipmc_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpmcGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetIpmcGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ipmc_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipmc_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipmc_group->GetIpmcGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: - attr_list[i].value.oid = resp.attr().ipmc_group_id(); - break; - case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: - attr_list[i].value.oid = resp.attr().ipmc_output_id(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_ipmc_group_member_attribute( + sai_object_id_t ipmc_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_get_ipmc_group_member_attribute( + sai_object_id_t ipmc_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpmcGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetIpmcGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(ipmc_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_ipmc_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + ipmc_group->GetIpmcGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_GROUP_ID: + attr_list[i].value.oid = resp.attr().ipmc_group_id(); + break; + case SAI_IPMC_GROUP_MEMBER_ATTR_IPMC_OUTPUT_ID: + attr_list[i].value.oid = resp.attr().ipmc_output_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/ipmc_group.h b/dataplane/standalone/sai/ipmc_group.h index 0ea2a85e8..1748ed94e 100644 --- a/dataplane/standalone/sai/ipmc_group.h +++ b/dataplane/standalone/sai/ipmc_group.h @@ -25,22 +25,31 @@ extern "C" { extern const sai_ipmc_group_api_t l_ipmc_group; - -sai_status_t l_create_ipmc_group(sai_object_id_t *ipmc_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ipmc_group(sai_object_id_t* ipmc_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_ipmc_group(sai_object_id_t ipmc_group_id); -sai_status_t l_set_ipmc_group_attribute(sai_object_id_t ipmc_group_id, const sai_attribute_t *attr); +sai_status_t l_set_ipmc_group_attribute(sai_object_id_t ipmc_group_id, + const sai_attribute_t* attr); -sai_status_t l_get_ipmc_group_attribute(sai_object_id_t ipmc_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_ipmc_group_attribute(sai_object_id_t ipmc_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_ipmc_group_member(sai_object_id_t *ipmc_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ipmc_group_member(sai_object_id_t* ipmc_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_ipmc_group_member(sai_object_id_t ipmc_group_member_id); -sai_status_t l_set_ipmc_group_member_attribute(sai_object_id_t ipmc_group_member_id, const sai_attribute_t *attr); - -sai_status_t l_get_ipmc_group_member_attribute(sai_object_id_t ipmc_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_ipmc_group_member_attribute( + sai_object_id_t ipmc_group_member_id, const sai_attribute_t* attr); +sai_status_t l_get_ipmc_group_member_attribute( + sai_object_id_t ipmc_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_IPMC_GROUP_H_ diff --git a/dataplane/standalone/sai/ipsec.cc b/dataplane/standalone/sai/ipsec.cc index e9aa01cce..45f6ba7a0 100644 --- a/dataplane/standalone/sai/ipsec.cc +++ b/dataplane/standalone/sai/ipsec.cc @@ -13,777 +13,867 @@ // limitations under the License. #include "dataplane/standalone/sai/ipsec.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/ipsec.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_ipsec_api_t l_ipsec = { - .create_ipsec = l_create_ipsec, - .remove_ipsec = l_remove_ipsec, - .set_ipsec_attribute = l_set_ipsec_attribute, - .get_ipsec_attribute = l_get_ipsec_attribute, - .create_ipsec_port = l_create_ipsec_port, - .remove_ipsec_port = l_remove_ipsec_port, - .set_ipsec_port_attribute = l_set_ipsec_port_attribute, - .get_ipsec_port_attribute = l_get_ipsec_port_attribute, - .get_ipsec_port_stats = l_get_ipsec_port_stats, - .get_ipsec_port_stats_ext = l_get_ipsec_port_stats_ext, - .clear_ipsec_port_stats = l_clear_ipsec_port_stats, - .create_ipsec_sa = l_create_ipsec_sa, - .remove_ipsec_sa = l_remove_ipsec_sa, - .set_ipsec_sa_attribute = l_set_ipsec_sa_attribute, - .get_ipsec_sa_attribute = l_get_ipsec_sa_attribute, - .get_ipsec_sa_stats = l_get_ipsec_sa_stats, - .get_ipsec_sa_stats_ext = l_get_ipsec_sa_stats_ext, - .clear_ipsec_sa_stats = l_clear_ipsec_sa_stats, + .create_ipsec = l_create_ipsec, + .remove_ipsec = l_remove_ipsec, + .set_ipsec_attribute = l_set_ipsec_attribute, + .get_ipsec_attribute = l_get_ipsec_attribute, + .create_ipsec_port = l_create_ipsec_port, + .remove_ipsec_port = l_remove_ipsec_port, + .set_ipsec_port_attribute = l_set_ipsec_port_attribute, + .get_ipsec_port_attribute = l_get_ipsec_port_attribute, + .get_ipsec_port_stats = l_get_ipsec_port_stats, + .get_ipsec_port_stats_ext = l_get_ipsec_port_stats_ext, + .clear_ipsec_port_stats = l_clear_ipsec_port_stats, + .create_ipsec_sa = l_create_ipsec_sa, + .remove_ipsec_sa = l_remove_ipsec_sa, + .set_ipsec_sa_attribute = l_set_ipsec_sa_attribute, + .get_ipsec_sa_attribute = l_get_ipsec_sa_attribute, + .get_ipsec_sa_stats = l_get_ipsec_sa_stats, + .get_ipsec_sa_stats_ext = l_get_ipsec_sa_stats_ext, + .clear_ipsec_sa_stats = l_clear_ipsec_sa_stats, }; - -lemming::dataplane::sai::CreateIpsecRequest convert_create_ipsec(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateIpsecRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: - msg.set_warm_boot_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: - msg.set_external_sa_index_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_ATTR_CTAG_TPID: - msg.set_ctag_tpid(attr_list[i].value.u16); - break; - case SAI_IPSEC_ATTR_STAG_TPID: - msg.set_stag_tpid(attr_list[i].value.u16); - break; - case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: - msg.set_max_vlan_tags_parsed(attr_list[i].value.u8); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: - msg.set_octet_count_high_watermark(attr_list[i].value.u64); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: - msg.set_octet_count_low_watermark(attr_list[i].value.u64); - break; - case SAI_IPSEC_ATTR_STATS_MODE: - msg.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateIpsecPortRequest convert_create_ipsec_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateIpsecPortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_PORT_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: - msg.set_ctag_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: - msg.set_stag_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: - msg.set_native_vlan_id(attr_list[i].value.u16); - break; - case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: - msg.set_vrf_from_packet_vlan_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - msg.set_switch_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateIpsecSaRequest convert_create_ipsec_sa(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateIpsecSaRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: - msg.set_ipsec_direction(convert_sai_ipsec_direction_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_ID: - msg.set_ipsec_id(attr_list[i].value.oid); - break; - case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: - msg.set_external_sa_index(attr_list[i].value.u32); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: - msg.mutable_ipsec_port_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_SPI: - msg.set_ipsec_spi(attr_list[i].value.u32); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: - msg.set_ipsec_esn_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: - msg.set_ipsec_cipher(convert_sai_ipsec_cipher_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_IPSEC_SA_ATTR_SALT: - msg.set_salt(attr_list[i].value.u32); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: - msg.set_ipsec_replay_protection_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: - msg.set_ipsec_replay_protection_window(attr_list[i].value.u32); - break; - case SAI_IPSEC_SA_ATTR_TERM_DST_IP: - msg.set_term_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: - msg.set_term_vlan_id_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: - msg.set_term_vlan_id(attr_list[i].value.u16); - break; - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: - msg.set_term_src_ip_enable(attr_list[i].value.booldata); - break; - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: - msg.set_term_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_IPSEC_SA_ATTR_EGRESS_ESN: - msg.set_egress_esn(attr_list[i].value.u64); - break; - case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: - msg.set_minimum_ingress_esn(attr_list[i].value.u64); - break; -} - -} -return msg; -} - -sai_status_t l_create_ipsec(sai_object_id_t *ipsec_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpsecRequest req = convert_create_ipsec(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIpsecResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = ipsec->CreateIpsec(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ipsec_id) { - *ipsec_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateIpsecRequest convert_create_ipsec( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpsecRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: + msg.set_warm_boot_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: + msg.set_external_sa_index_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_ATTR_CTAG_TPID: + msg.set_ctag_tpid(attr_list[i].value.u16); + break; + case SAI_IPSEC_ATTR_STAG_TPID: + msg.set_stag_tpid(attr_list[i].value.u16); + break; + case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: + msg.set_max_vlan_tags_parsed(attr_list[i].value.u8); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: + msg.set_octet_count_high_watermark(attr_list[i].value.u64); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: + msg.set_octet_count_low_watermark(attr_list[i].value.u64); + break; + case SAI_IPSEC_ATTR_STATS_MODE: + msg.set_stats_mode( + convert_sai_stats_mode_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateIpsecPortRequest convert_create_ipsec_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpsecPortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_PORT_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: + msg.set_ctag_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: + msg.set_stag_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: + msg.set_native_vlan_id(attr_list[i].value.u16); + break; + case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: + msg.set_vrf_from_packet_vlan_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + msg.set_switch_switching_mode( + convert_sai_switch_switching_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_IPSEC_PORT_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateIpsecSaRequest convert_create_ipsec_sa( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIpsecSaRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: + msg.set_ipsec_direction( + convert_sai_ipsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_ID: + msg.set_ipsec_id(attr_list[i].value.oid); + break; + case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: + msg.set_external_sa_index(attr_list[i].value.u32); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: + msg.mutable_ipsec_port_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_SPI: + msg.set_ipsec_spi(attr_list[i].value.u32); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: + msg.set_ipsec_esn_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: + msg.set_ipsec_cipher( + convert_sai_ipsec_cipher_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_IPSEC_SA_ATTR_SALT: + msg.set_salt(attr_list[i].value.u32); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: + msg.set_ipsec_replay_protection_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: + msg.set_ipsec_replay_protection_window(attr_list[i].value.u32); + break; + case SAI_IPSEC_SA_ATTR_TERM_DST_IP: + msg.set_term_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: + msg.set_term_vlan_id_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: + msg.set_term_vlan_id(attr_list[i].value.u16); + break; + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: + msg.set_term_src_ip_enable(attr_list[i].value.booldata); + break; + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: + msg.set_term_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_IPSEC_SA_ATTR_EGRESS_ESN: + msg.set_egress_esn(attr_list[i].value.u64); + break; + case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: + msg.set_minimum_ingress_esn(attr_list[i].value.u64); + break; + case SAI_IPSEC_SA_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +sai_status_t l_create_ipsec(sai_object_id_t* ipsec_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIpsecRequest req = + convert_create_ipsec(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIpsecResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = ipsec->CreateIpsec(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ipsec_id) { + *ipsec_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_ipsec(sai_object_id_t ipsec_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpsecRequest req; - lemming::dataplane::sai::RemoveIpsecResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_id); - - grpc::Status status = ipsec->RemoveIpsec(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_ipsec_attribute(sai_object_id_t ipsec_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetIpsecAttributeRequest req; - lemming::dataplane::sai::SetIpsecAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_id); - - - - -switch (attr->id) { - - case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: - req.set_warm_boot_enable(attr->value.booldata); - break; - case SAI_IPSEC_ATTR_CTAG_TPID: - req.set_ctag_tpid(attr->value.u16); - break; - case SAI_IPSEC_ATTR_STAG_TPID: - req.set_stag_tpid(attr->value.u16); - break; - case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: - req.set_max_vlan_tags_parsed(attr->value.u8); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: - req.set_octet_count_high_watermark(attr->value.u64); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: - req.set_octet_count_low_watermark(attr->value.u64); - break; - case SAI_IPSEC_ATTR_STATS_MODE: - req.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = ipsec->SetIpsecAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_attribute(sai_object_id_t ipsec_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpsecAttributeRequest req; - lemming::dataplane::sai::GetIpsecAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ipsec_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipsec_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipsec->GetIpsecAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: - attr_list[i].value.booldata = resp.attr().term_remote_ip_match_supported(); - break; - case SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: - attr_list[i].value.booldata = resp.attr().switching_mode_cut_through_supported(); - break; - case SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: - attr_list[i].value.booldata = resp.attr().switching_mode_store_and_forward_supported(); - break; - case SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: - attr_list[i].value.booldata = resp.attr().stats_mode_read_supported(); - break; - case SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: - attr_list[i].value.booldata = resp.attr().stats_mode_read_clear_supported(); - break; - case SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().sn_32bit_supported(); - break; - case SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().esn_64bit_supported(); - break; - case SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST: - convert_list_sai_ipsec_cipher_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_cipher_list(), &attr_list[i].value.s32list.count); - break; - case SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU: - attr_list[i].value.u16 = resp.attr().system_side_mtu(); - break; - case SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().warm_boot_supported(); - break; - case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: - attr_list[i].value.booldata = resp.attr().warm_boot_enable(); - break; - case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: - attr_list[i].value.booldata = resp.attr().external_sa_index_enable(); - break; - case SAI_IPSEC_ATTR_CTAG_TPID: - attr_list[i].value.u16 = resp.attr().ctag_tpid(); - break; - case SAI_IPSEC_ATTR_STAG_TPID: - attr_list[i].value.u16 = resp.attr().stag_tpid(); - break; - case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: - attr_list[i].value.u8 = resp.attr().max_vlan_tags_parsed(); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: - attr_list[i].value.u64 = resp.attr().octet_count_high_watermark(); - break; - case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: - attr_list[i].value.u64 = resp.attr().octet_count_low_watermark(); - break; - case SAI_IPSEC_ATTR_STATS_MODE: - attr_list[i].value.s32 = convert_sai_stats_mode_t_to_sai(resp.attr().stats_mode()); - break; - case SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA: - attr_list[i].value.u32 = resp.attr().available_ipsec_sa(); - break; - case SAI_IPSEC_ATTR_SA_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().sa_list(), &attr_list[i].value.objlist.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_ipsec_port(sai_object_id_t *ipsec_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpsecPortRequest req = convert_create_ipsec_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIpsecPortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = ipsec->CreateIpsecPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ipsec_port_id) { - *ipsec_port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIpsecRequest req; + lemming::dataplane::sai::RemoveIpsecResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_id); + + grpc::Status status = ipsec->RemoveIpsec(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_ipsec_attribute(sai_object_id_t ipsec_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIpsecAttributeRequest req; + lemming::dataplane::sai::SetIpsecAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_id); + + switch (attr->id) { + case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: + req.set_warm_boot_enable(attr->value.booldata); + break; + case SAI_IPSEC_ATTR_CTAG_TPID: + req.set_ctag_tpid(attr->value.u16); + break; + case SAI_IPSEC_ATTR_STAG_TPID: + req.set_stag_tpid(attr->value.u16); + break; + case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: + req.set_max_vlan_tags_parsed(attr->value.u8); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: + req.set_octet_count_high_watermark(attr->value.u64); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: + req.set_octet_count_low_watermark(attr->value.u64); + break; + case SAI_IPSEC_ATTR_STATS_MODE: + req.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = ipsec->SetIpsecAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_attribute(sai_object_id_t ipsec_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpsecAttributeRequest req; + lemming::dataplane::sai::GetIpsecAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(ipsec_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_ipsec_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = ipsec->GetIpsecAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_ATTR_TERM_REMOTE_IP_MATCH_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().term_remote_ip_match_supported(); + break; + case SAI_IPSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().switching_mode_cut_through_supported(); + break; + case SAI_IPSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().switching_mode_store_and_forward_supported(); + break; + case SAI_IPSEC_ATTR_STATS_MODE_READ_SUPPORTED: + attr_list[i].value.booldata = resp.attr().stats_mode_read_supported(); + break; + case SAI_IPSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().stats_mode_read_clear_supported(); + break; + case SAI_IPSEC_ATTR_SN_32BIT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().sn_32bit_supported(); + break; + case SAI_IPSEC_ATTR_ESN_64BIT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().esn_64bit_supported(); + break; + case SAI_IPSEC_ATTR_SUPPORTED_CIPHER_LIST: + convert_list_sai_ipsec_cipher_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_cipher_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_IPSEC_ATTR_SYSTEM_SIDE_MTU: + attr_list[i].value.u16 = resp.attr().system_side_mtu(); + break; + case SAI_IPSEC_ATTR_WARM_BOOT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().warm_boot_supported(); + break; + case SAI_IPSEC_ATTR_WARM_BOOT_ENABLE: + attr_list[i].value.booldata = resp.attr().warm_boot_enable(); + break; + case SAI_IPSEC_ATTR_EXTERNAL_SA_INDEX_ENABLE: + attr_list[i].value.booldata = resp.attr().external_sa_index_enable(); + break; + case SAI_IPSEC_ATTR_CTAG_TPID: + attr_list[i].value.u16 = resp.attr().ctag_tpid(); + break; + case SAI_IPSEC_ATTR_STAG_TPID: + attr_list[i].value.u16 = resp.attr().stag_tpid(); + break; + case SAI_IPSEC_ATTR_MAX_VLAN_TAGS_PARSED: + attr_list[i].value.u8 = resp.attr().max_vlan_tags_parsed(); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_HIGH_WATERMARK: + attr_list[i].value.u64 = resp.attr().octet_count_high_watermark(); + break; + case SAI_IPSEC_ATTR_OCTET_COUNT_LOW_WATERMARK: + attr_list[i].value.u64 = resp.attr().octet_count_low_watermark(); + break; + case SAI_IPSEC_ATTR_STATS_MODE: + attr_list[i].value.s32 = + convert_sai_stats_mode_t_to_sai(resp.attr().stats_mode()); + break; + case SAI_IPSEC_ATTR_AVAILABLE_IPSEC_SA: + attr_list[i].value.u32 = resp.attr().available_ipsec_sa(); + break; + case SAI_IPSEC_ATTR_SA_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().sa_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_ipsec_port(sai_object_id_t* ipsec_port_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIpsecPortRequest req = + convert_create_ipsec_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIpsecPortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = ipsec->CreateIpsecPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ipsec_port_id) { + *ipsec_port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_ipsec_port(sai_object_id_t ipsec_port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpsecPortRequest req; - lemming::dataplane::sai::RemoveIpsecPortResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_port_id); - - grpc::Status status = ipsec->RemoveIpsecPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_ipsec_port_attribute(sai_object_id_t ipsec_port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetIpsecPortAttributeRequest req; - lemming::dataplane::sai::SetIpsecPortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_port_id); - - - - -switch (attr->id) { - - case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: - req.set_ctag_enable(attr->value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: - req.set_stag_enable(attr->value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: - req.set_vrf_from_packet_vlan_enable(attr->value.booldata); - break; - case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - req.set_switch_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = ipsec->SetIpsecPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_port_attribute(sai_object_id_t ipsec_port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpsecPortAttributeRequest req; - lemming::dataplane::sai::GetIpsecPortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ipsec_port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipsec_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipsec->GetIpsecPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_PORT_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: - attr_list[i].value.booldata = resp.attr().ctag_enable(); - break; - case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: - attr_list[i].value.booldata = resp.attr().stag_enable(); - break; - case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: - attr_list[i].value.u16 = resp.attr().native_vlan_id(); - break; - case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: - attr_list[i].value.booldata = resp.attr().vrf_from_packet_vlan_enable(); - break; - case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai(resp.attr().switch_switching_mode()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_port_stats(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpsecPortStatsRequest req; - lemming::dataplane::sai::GetIpsecPortStatsResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_port_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_ipsec_port_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = ipsec->GetIpsecPortStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_port_stats_ext(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_ipsec_port_stats(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_ipsec_sa(sai_object_id_t *ipsec_sa_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIpsecSaRequest req = convert_create_ipsec_sa(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIpsecSaResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = ipsec->CreateIpsecSa(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (ipsec_sa_id) { - *ipsec_sa_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIpsecPortRequest req; + lemming::dataplane::sai::RemoveIpsecPortResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_port_id); + + grpc::Status status = ipsec->RemoveIpsecPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_ipsec_port_attribute(sai_object_id_t ipsec_port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIpsecPortAttributeRequest req; + lemming::dataplane::sai::SetIpsecPortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_port_id); + + switch (attr->id) { + case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: + req.set_ctag_enable(attr->value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: + req.set_stag_enable(attr->value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: + req.set_vrf_from_packet_vlan_enable(attr->value.booldata); + break; + case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + req.set_switch_switching_mode( + convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); + break; + case SAI_IPSEC_PORT_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = ipsec->SetIpsecPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_port_attribute(sai_object_id_t ipsec_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpsecPortAttributeRequest req; + lemming::dataplane::sai::GetIpsecPortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(ipsec_port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_ipsec_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = ipsec->GetIpsecPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_PORT_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_IPSEC_PORT_ATTR_CTAG_ENABLE: + attr_list[i].value.booldata = resp.attr().ctag_enable(); + break; + case SAI_IPSEC_PORT_ATTR_STAG_ENABLE: + attr_list[i].value.booldata = resp.attr().stag_enable(); + break; + case SAI_IPSEC_PORT_ATTR_NATIVE_VLAN_ID: + attr_list[i].value.u16 = resp.attr().native_vlan_id(); + break; + case SAI_IPSEC_PORT_ATTR_VRF_FROM_PACKET_VLAN_ENABLE: + attr_list[i].value.booldata = resp.attr().vrf_from_packet_vlan_enable(); + break; + case SAI_IPSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai( + resp.attr().switch_switching_mode()); + break; + case SAI_IPSEC_PORT_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_IPSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_port_stats(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpsecPortStatsRequest req; + lemming::dataplane::sai::GetIpsecPortStatsResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_port_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_ipsec_port_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = ipsec->GetIpsecPortStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_port_stats_ext(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_ipsec_port_stats(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_ipsec_sa(sai_object_id_t* ipsec_sa_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateIpsecSaRequest req = + convert_create_ipsec_sa(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIpsecSaResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = ipsec->CreateIpsecSa(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (ipsec_sa_id) { + *ipsec_sa_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_ipsec_sa(sai_object_id_t ipsec_sa_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIpsecSaRequest req; - lemming::dataplane::sai::RemoveIpsecSaResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_sa_id); - - grpc::Status status = ipsec->RemoveIpsecSa(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetIpsecSaAttributeRequest req; - lemming::dataplane::sai::SetIpsecSaAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_sa_id); - - - - -switch (attr->id) { - - case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: - req.set_external_sa_index(attr->value.u32); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: - req.mutable_ipsec_port_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: - req.set_ipsec_replay_protection_enable(attr->value.booldata); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: - req.set_ipsec_replay_protection_window(attr->value.u32); - break; - case SAI_IPSEC_SA_ATTR_EGRESS_ESN: - req.set_egress_esn(attr->value.u64); - break; - case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: - req.set_minimum_ingress_esn(attr->value.u64); - break; -} - - grpc::Status status = ipsec->SetIpsecSaAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpsecSaAttributeRequest req; - lemming::dataplane::sai::GetIpsecSaAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(ipsec_sa_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_ipsec_sa_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = ipsec->GetIpsecSaAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: - attr_list[i].value.s32 = convert_sai_ipsec_direction_t_to_sai(resp.attr().ipsec_direction()); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_ID: - attr_list[i].value.oid = resp.attr().ipsec_id(); - break; - case SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS: - attr_list[i].value.s32 = convert_sai_ipsec_sa_octet_count_status_t_to_sai(resp.attr().octet_count_status()); - break; - case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: - attr_list[i].value.u32 = resp.attr().external_sa_index(); - break; - case SAI_IPSEC_SA_ATTR_SA_INDEX: - attr_list[i].value.u32 = resp.attr().sa_index(); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().ipsec_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_SPI: - attr_list[i].value.u32 = resp.attr().ipsec_spi(); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: - attr_list[i].value.booldata = resp.attr().ipsec_esn_enable(); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: - attr_list[i].value.s32 = convert_sai_ipsec_cipher_t_to_sai(resp.attr().ipsec_cipher()); - break; - case SAI_IPSEC_SA_ATTR_SALT: - attr_list[i].value.u32 = resp.attr().salt(); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: - attr_list[i].value.booldata = resp.attr().ipsec_replay_protection_enable(); - break; - case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: - attr_list[i].value.u32 = resp.attr().ipsec_replay_protection_window(); - break; - case SAI_IPSEC_SA_ATTR_TERM_DST_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().term_dst_ip()); - break; - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: - attr_list[i].value.booldata = resp.attr().term_vlan_id_enable(); - break; - case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: - attr_list[i].value.u16 = resp.attr().term_vlan_id(); - break; - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: - attr_list[i].value.booldata = resp.attr().term_src_ip_enable(); - break; - case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().term_src_ip()); - break; - case SAI_IPSEC_SA_ATTR_EGRESS_ESN: - attr_list[i].value.u64 = resp.attr().egress_esn(); - break; - case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: - attr_list[i].value.u64 = resp.attr().minimum_ingress_esn(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIpsecSaStatsRequest req; - lemming::dataplane::sai::GetIpsecSaStatsResponse resp; - grpc::ClientContext context; - req.set_oid(ipsec_sa_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_ipsec_sa_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = ipsec->GetIpsecSaStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_ipsec_sa_stats_ext(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIpsecSaRequest req; + lemming::dataplane::sai::RemoveIpsecSaResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_sa_id); + + grpc::Status status = ipsec->RemoveIpsecSa(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetIpsecSaAttributeRequest req; + lemming::dataplane::sai::SetIpsecSaAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_sa_id); + + switch (attr->id) { + case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: + req.set_external_sa_index(attr->value.u32); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: + req.mutable_ipsec_port_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: + req.set_ipsec_replay_protection_enable(attr->value.booldata); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: + req.set_ipsec_replay_protection_window(attr->value.u32); + break; + case SAI_IPSEC_SA_ATTR_EGRESS_ESN: + req.set_egress_esn(attr->value.u64); + break; + case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: + req.set_minimum_ingress_esn(attr->value.u64); + break; + case SAI_IPSEC_SA_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = ipsec->SetIpsecSaAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpsecSaAttributeRequest req; + lemming::dataplane::sai::GetIpsecSaAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(ipsec_sa_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_ipsec_sa_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = ipsec->GetIpsecSaAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_IPSEC_SA_ATTR_IPSEC_DIRECTION: + attr_list[i].value.s32 = + convert_sai_ipsec_direction_t_to_sai(resp.attr().ipsec_direction()); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_ID: + attr_list[i].value.oid = resp.attr().ipsec_id(); + break; + case SAI_IPSEC_SA_ATTR_OCTET_COUNT_STATUS: + attr_list[i].value.s32 = + convert_sai_ipsec_sa_octet_count_status_t_to_sai( + resp.attr().octet_count_status()); + break; + case SAI_IPSEC_SA_ATTR_EXTERNAL_SA_INDEX: + attr_list[i].value.u32 = resp.attr().external_sa_index(); + break; + case SAI_IPSEC_SA_ATTR_SA_INDEX: + attr_list[i].value.u32 = resp.attr().sa_index(); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ipsec_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_SPI: + attr_list[i].value.u32 = resp.attr().ipsec_spi(); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_ESN_ENABLE: + attr_list[i].value.booldata = resp.attr().ipsec_esn_enable(); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_CIPHER: + attr_list[i].value.s32 = + convert_sai_ipsec_cipher_t_to_sai(resp.attr().ipsec_cipher()); + break; + case SAI_IPSEC_SA_ATTR_SALT: + attr_list[i].value.u32 = resp.attr().salt(); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_ENABLE: + attr_list[i].value.booldata = + resp.attr().ipsec_replay_protection_enable(); + break; + case SAI_IPSEC_SA_ATTR_IPSEC_REPLAY_PROTECTION_WINDOW: + attr_list[i].value.u32 = resp.attr().ipsec_replay_protection_window(); + break; + case SAI_IPSEC_SA_ATTR_TERM_DST_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().term_dst_ip()); + break; + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID_ENABLE: + attr_list[i].value.booldata = resp.attr().term_vlan_id_enable(); + break; + case SAI_IPSEC_SA_ATTR_TERM_VLAN_ID: + attr_list[i].value.u16 = resp.attr().term_vlan_id(); + break; + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP_ENABLE: + attr_list[i].value.booldata = resp.attr().term_src_ip_enable(); + break; + case SAI_IPSEC_SA_ATTR_TERM_SRC_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().term_src_ip()); + break; + case SAI_IPSEC_SA_ATTR_EGRESS_ESN: + attr_list[i].value.u64 = resp.attr().egress_esn(); + break; + case SAI_IPSEC_SA_ATTR_MINIMUM_INGRESS_ESN: + attr_list[i].value.u64 = resp.attr().minimum_ingress_esn(); + break; + case SAI_IPSEC_SA_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_IPSEC_SA_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetIpsecSaStatsRequest req; + lemming::dataplane::sai::GetIpsecSaStatsResponse resp; + grpc::ClientContext context; + req.set_oid(ipsec_sa_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_ipsec_sa_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = ipsec->GetIpsecSaStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_ipsec_sa_stats_ext(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_clear_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/ipsec.h b/dataplane/standalone/sai/ipsec.h index 664f83634..571fc2745 100644 --- a/dataplane/standalone/sai/ipsec.h +++ b/dataplane/standalone/sai/ipsec.h @@ -25,42 +25,73 @@ extern "C" { extern const sai_ipsec_api_t l_ipsec; - -sai_status_t l_create_ipsec(sai_object_id_t *ipsec_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ipsec(sai_object_id_t* ipsec_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_ipsec(sai_object_id_t ipsec_id); -sai_status_t l_set_ipsec_attribute(sai_object_id_t ipsec_id, const sai_attribute_t *attr); +sai_status_t l_set_ipsec_attribute(sai_object_id_t ipsec_id, + const sai_attribute_t* attr); -sai_status_t l_get_ipsec_attribute(sai_object_id_t ipsec_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_ipsec_attribute(sai_object_id_t ipsec_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_ipsec_port(sai_object_id_t *ipsec_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ipsec_port(sai_object_id_t* ipsec_port_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_ipsec_port(sai_object_id_t ipsec_port_id); -sai_status_t l_set_ipsec_port_attribute(sai_object_id_t ipsec_port_id, const sai_attribute_t *attr); +sai_status_t l_set_ipsec_port_attribute(sai_object_id_t ipsec_port_id, + const sai_attribute_t* attr); -sai_status_t l_get_ipsec_port_attribute(sai_object_id_t ipsec_port_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_ipsec_port_attribute(sai_object_id_t ipsec_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_ipsec_port_stats(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_ipsec_port_stats(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_ipsec_port_stats_ext(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_ipsec_port_stats_ext(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_ipsec_port_stats(sai_object_id_t ipsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_ipsec_port_stats(sai_object_id_t ipsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_ipsec_sa(sai_object_id_t *ipsec_sa_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_ipsec_sa(sai_object_id_t* ipsec_sa_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_ipsec_sa(sai_object_id_t ipsec_sa_id); -sai_status_t l_set_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, const sai_attribute_t *attr); - -sai_status_t l_get_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, + const sai_attribute_t* attr); -sai_status_t l_get_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_ipsec_sa_attribute(sai_object_id_t ipsec_sa_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_ipsec_sa_stats_ext(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_ipsec_sa_stats_ext(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); +sai_status_t l_clear_ipsec_sa_stats(sai_object_id_t ipsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_IPSEC_H_ diff --git a/dataplane/standalone/sai/isolation_group.cc b/dataplane/standalone/sai/isolation_group.cc index 6e721c9f1..d694d4846 100644 --- a/dataplane/standalone/sai/isolation_group.cc +++ b/dataplane/standalone/sai/isolation_group.cc @@ -13,254 +13,267 @@ // limitations under the License. #include "dataplane/standalone/sai/isolation_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/isolation_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_isolation_group_api_t l_isolation_group = { - .create_isolation_group = l_create_isolation_group, - .remove_isolation_group = l_remove_isolation_group, - .set_isolation_group_attribute = l_set_isolation_group_attribute, - .get_isolation_group_attribute = l_get_isolation_group_attribute, - .create_isolation_group_member = l_create_isolation_group_member, - .remove_isolation_group_member = l_remove_isolation_group_member, - .set_isolation_group_member_attribute = l_set_isolation_group_member_attribute, - .get_isolation_group_member_attribute = l_get_isolation_group_member_attribute, + .create_isolation_group = l_create_isolation_group, + .remove_isolation_group = l_remove_isolation_group, + .set_isolation_group_attribute = l_set_isolation_group_attribute, + .get_isolation_group_attribute = l_get_isolation_group_attribute, + .create_isolation_group_member = l_create_isolation_group_member, + .remove_isolation_group_member = l_remove_isolation_group_member, + .set_isolation_group_member_attribute = + l_set_isolation_group_member_attribute, + .get_isolation_group_member_attribute = + l_get_isolation_group_member_attribute, }; +lemming::dataplane::sai::CreateIsolationGroupRequest +convert_create_isolation_group(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIsolationGroupRequest msg; -lemming::dataplane::sai::CreateIsolationGroupRequest convert_create_isolation_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ISOLATION_GROUP_ATTR_TYPE: + msg.set_type(convert_sai_isolation_group_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateIsolationGroupMemberRequest +convert_create_isolation_group_member(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateIsolationGroupMemberRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: + msg.set_isolation_group_id(attr_list[i].value.oid); + break; + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: + msg.set_isolation_object(attr_list[i].value.oid); + break; + } + } + return msg; +} -lemming::dataplane::sai::CreateIsolationGroupRequest msg; +sai_status_t l_create_isolation_group(sai_object_id_t* isolation_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::CreateIsolationGroupRequest req = + convert_create_isolation_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIsolationGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = + isolation_group->CreateIsolationGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (isolation_group_id) { + *isolation_group_id = resp.oid(); + } -switch (attr_list[i].id) { - - case SAI_ISOLATION_GROUP_ATTR_TYPE: - msg.set_type(convert_sai_isolation_group_type_t_to_proto(attr_list[i].value.s32)); - break; + return SAI_STATUS_SUCCESS; } +sai_status_t l_remove_isolation_group(sai_object_id_t isolation_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveIsolationGroupRequest req; + lemming::dataplane::sai::RemoveIsolationGroupResponse resp; + grpc::ClientContext context; + req.set_oid(isolation_group_id); + + grpc::Status status = + isolation_group->RemoveIsolationGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -return msg; + +sai_status_t l_set_isolation_group_attribute(sai_object_id_t isolation_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } -lemming::dataplane::sai::CreateIsolationGroupMemberRequest convert_create_isolation_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { +sai_status_t l_get_isolation_group_attribute(sai_object_id_t isolation_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -lemming::dataplane::sai::CreateIsolationGroupMemberRequest msg; + lemming::dataplane::sai::GetIsolationGroupAttributeRequest req; + lemming::dataplane::sai::GetIsolationGroupAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(isolation_group_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_isolation_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + isolation_group->GetIsolationGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ISOLATION_GROUP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_isolation_group_type_t_to_sai(resp.attr().type()); + break; + case SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().isolation_member_list(), + &attr_list[i].value.objlist.count); + break; + } + } -switch (attr_list[i].id) { - - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: - msg.set_isolation_group_id(attr_list[i].value.oid); - break; - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: - msg.set_isolation_object(attr_list[i].value.oid); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_create_isolation_group_member( + sai_object_id_t* isolation_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_isolation_group(sai_object_id_t *isolation_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIsolationGroupRequest req = convert_create_isolation_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIsolationGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = isolation_group->CreateIsolationGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (isolation_group_id) { - *isolation_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::CreateIsolationGroupMemberRequest req = + convert_create_isolation_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateIsolationGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); -sai_status_t l_remove_isolation_group(sai_object_id_t isolation_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIsolationGroupRequest req; - lemming::dataplane::sai::RemoveIsolationGroupResponse resp; - grpc::ClientContext context; - req.set_oid(isolation_group_id); - - grpc::Status status = isolation_group->RemoveIsolationGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = + isolation_group->CreateIsolationGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (isolation_group_member_id) { + *isolation_group_member_id = resp.oid(); + } -sai_status_t l_set_isolation_group_attribute(sai_object_id_t isolation_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_isolation_group_attribute(sai_object_id_t isolation_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIsolationGroupAttributeRequest req; - lemming::dataplane::sai::GetIsolationGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(isolation_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_isolation_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = isolation_group->GetIsolationGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ISOLATION_GROUP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_isolation_group_type_t_to_sai(resp.attr().type()); - break; - case SAI_ISOLATION_GROUP_ATTR_ISOLATION_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().isolation_member_list(), &attr_list[i].value.objlist.count); - break; -} +sai_status_t l_remove_isolation_group_member( + sai_object_id_t isolation_group_member_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - } - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveIsolationGroupMemberRequest req; + lemming::dataplane::sai::RemoveIsolationGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(isolation_group_member_id); -sai_status_t l_create_isolation_group_member(sai_object_id_t *isolation_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateIsolationGroupMemberRequest req = convert_create_isolation_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateIsolationGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = isolation_group->CreateIsolationGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (isolation_group_member_id) { - *isolation_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = + isolation_group->RemoveIsolationGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_remove_isolation_group_member(sai_object_id_t isolation_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveIsolationGroupMemberRequest req; - lemming::dataplane::sai::RemoveIsolationGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(isolation_group_member_id); - - grpc::Status status = isolation_group->RemoveIsolationGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_isolation_group_member_attribute(sai_object_id_t isolation_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_isolation_group_member_attribute( + sai_object_id_t isolation_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_isolation_group_member_attribute(sai_object_id_t isolation_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetIsolationGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetIsolationGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(isolation_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_isolation_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = isolation_group->GetIsolationGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: - attr_list[i].value.oid = resp.attr().isolation_group_id(); - break; - case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: - attr_list[i].value.oid = resp.attr().isolation_object(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_isolation_group_member_attribute( + sai_object_id_t isolation_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::GetIsolationGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetIsolationGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(isolation_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_isolation_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + isolation_group->GetIsolationGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID: + attr_list[i].value.oid = resp.attr().isolation_group_id(); + break; + case SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT: + attr_list[i].value.oid = resp.attr().isolation_object(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/isolation_group.h b/dataplane/standalone/sai/isolation_group.h index f16c77dd2..b3feab279 100644 --- a/dataplane/standalone/sai/isolation_group.h +++ b/dataplane/standalone/sai/isolation_group.h @@ -25,22 +25,32 @@ extern "C" { extern const sai_isolation_group_api_t l_isolation_group; - -sai_status_t l_create_isolation_group(sai_object_id_t *isolation_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_isolation_group(sai_object_id_t* isolation_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_isolation_group(sai_object_id_t isolation_group_id); -sai_status_t l_set_isolation_group_attribute(sai_object_id_t isolation_group_id, const sai_attribute_t *attr); - -sai_status_t l_get_isolation_group_attribute(sai_object_id_t isolation_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_isolation_group_attribute(sai_object_id_t isolation_group_id, + const sai_attribute_t* attr); -sai_status_t l_create_isolation_group_member(sai_object_id_t *isolation_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_isolation_group_attribute(sai_object_id_t isolation_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_isolation_group_member(sai_object_id_t isolation_group_member_id); +sai_status_t l_create_isolation_group_member( + sai_object_id_t* isolation_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_isolation_group_member_attribute(sai_object_id_t isolation_group_member_id, const sai_attribute_t *attr); +sai_status_t l_remove_isolation_group_member( + sai_object_id_t isolation_group_member_id); -sai_status_t l_get_isolation_group_member_attribute(sai_object_id_t isolation_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_isolation_group_member_attribute( + sai_object_id_t isolation_group_member_id, const sai_attribute_t* attr); +sai_status_t l_get_isolation_group_member_attribute( + sai_object_id_t isolation_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_ISOLATION_GROUP_H_ diff --git a/dataplane/standalone/sai/l2mc.cc b/dataplane/standalone/sai/l2mc.cc index ecfedb441..dcdc6016b 100644 --- a/dataplane/standalone/sai/l2mc.cc +++ b/dataplane/standalone/sai/l2mc.cc @@ -13,161 +13,153 @@ // limitations under the License. #include "dataplane/standalone/sai/l2mc.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/l2mc.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_l2mc_api_t l_l2mc = { - .create_l2mc_entry = l_create_l2mc_entry, - .remove_l2mc_entry = l_remove_l2mc_entry, - .set_l2mc_entry_attribute = l_set_l2mc_entry_attribute, - .get_l2mc_entry_attribute = l_get_l2mc_entry_attribute, + .create_l2mc_entry = l_create_l2mc_entry, + .remove_l2mc_entry = l_remove_l2mc_entry, + .set_l2mc_entry_attribute = l_set_l2mc_entry_attribute, + .get_l2mc_entry_attribute = l_get_l2mc_entry_attribute, }; - -lemming::dataplane::sai::CreateL2mcEntryRequest convert_create_l2mc_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateL2mcEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: - msg.set_output_group_id(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateL2mcEntryRequest convert_create_l2mc_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateL2mcEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: + msg.set_output_group_id(attr_list[i].value.oid); + break; + } + } + return msg; } -sai_status_t l_create_l2mc_entry(const sai_l2mc_entry_t *l2mc_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateL2mcEntryRequest req = convert_create_l2mc_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateL2mcEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = l2mc->CreateL2mcEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_l2mc_entry(const sai_l2mc_entry_t* l2mc_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateL2mcEntryRequest req = + convert_create_l2mc_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateL2mcEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = l2mc->CreateL2mcEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_l2mc_entry(const sai_l2mc_entry_t *l2mc_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveL2mcEntryRequest req; - lemming::dataplane::sai::RemoveL2mcEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = l2mc->RemoveL2mcEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_l2mc_entry(const sai_l2mc_entry_t* l2mc_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveL2mcEntryRequest req; + lemming::dataplane::sai::RemoveL2mcEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = l2mc->RemoveL2mcEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_l2mc_entry_attribute(const sai_l2mc_entry_t *l2mc_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetL2mcEntryAttributeRequest req; - lemming::dataplane::sai::SetL2mcEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: - req.set_output_group_id(attr->value.oid); - break; +sai_status_t l_set_l2mc_entry_attribute(const sai_l2mc_entry_t* l2mc_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetL2mcEntryAttributeRequest req; + lemming::dataplane::sai::SetL2mcEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: + req.set_output_group_id(attr->value.oid); + break; + } + + grpc::Status status = l2mc->SetL2mcEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = l2mc->SetL2mcEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_l2mc_entry_attribute(const sai_l2mc_entry_t* l2mc_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetL2mcEntryAttributeRequest req; + lemming::dataplane::sai::GetL2mcEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_l2mc_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = l2mc->GetL2mcEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: + attr_list[i].value.oid = resp.attr().output_group_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_l2mc_entry_attribute(const sai_l2mc_entry_t *l2mc_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetL2mcEntryAttributeRequest req; - lemming::dataplane::sai::GetL2mcEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_l2mc_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = l2mc->GetL2mcEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_L2MC_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_L2MC_ENTRY_ATTR_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().output_group_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/l2mc.h b/dataplane/standalone/sai/l2mc.h index f740f3207..38f9186b7 100644 --- a/dataplane/standalone/sai/l2mc.h +++ b/dataplane/standalone/sai/l2mc.h @@ -25,14 +25,17 @@ extern "C" { extern const sai_l2mc_api_t l_l2mc; +sai_status_t l_create_l2mc_entry(const sai_l2mc_entry_t* l2mc_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_l2mc_entry(const sai_l2mc_entry_t *l2mc_entry, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_l2mc_entry(const sai_l2mc_entry_t* l2mc_entry); -sai_status_t l_remove_l2mc_entry(const sai_l2mc_entry_t *l2mc_entry); - -sai_status_t l_set_l2mc_entry_attribute(const sai_l2mc_entry_t *l2mc_entry, const sai_attribute_t *attr); - -sai_status_t l_get_l2mc_entry_attribute(const sai_l2mc_entry_t *l2mc_entry, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_l2mc_entry_attribute(const sai_l2mc_entry_t* l2mc_entry, + const sai_attribute_t* attr); +sai_status_t l_get_l2mc_entry_attribute(const sai_l2mc_entry_t* l2mc_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_L2MC_H_ diff --git a/dataplane/standalone/sai/l2mc_group.cc b/dataplane/standalone/sai/l2mc_group.cc index 2d32ff1ed..73ef43ceb 100644 --- a/dataplane/standalone/sai/l2mc_group.cc +++ b/dataplane/standalone/sai/l2mc_group.cc @@ -13,257 +13,259 @@ // limitations under the License. #include "dataplane/standalone/sai/l2mc_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/l2mc_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_l2mc_group_api_t l_l2mc_group = { - .create_l2mc_group = l_create_l2mc_group, - .remove_l2mc_group = l_remove_l2mc_group, - .set_l2mc_group_attribute = l_set_l2mc_group_attribute, - .get_l2mc_group_attribute = l_get_l2mc_group_attribute, - .create_l2mc_group_member = l_create_l2mc_group_member, - .remove_l2mc_group_member = l_remove_l2mc_group_member, - .set_l2mc_group_member_attribute = l_set_l2mc_group_member_attribute, - .get_l2mc_group_member_attribute = l_get_l2mc_group_member_attribute, + .create_l2mc_group = l_create_l2mc_group, + .remove_l2mc_group = l_remove_l2mc_group, + .set_l2mc_group_attribute = l_set_l2mc_group_attribute, + .get_l2mc_group_attribute = l_get_l2mc_group_attribute, + .create_l2mc_group_member = l_create_l2mc_group_member, + .remove_l2mc_group_member = l_remove_l2mc_group_member, + .set_l2mc_group_member_attribute = l_set_l2mc_group_member_attribute, + .get_l2mc_group_member_attribute = l_get_l2mc_group_member_attribute, }; +lemming::dataplane::sai::CreateL2mcGroupRequest convert_create_l2mc_group( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateL2mcGroupRequest msg; -lemming::dataplane::sai::CreateL2mcGroupRequest convert_create_l2mc_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) {} + } + return msg; +} -lemming::dataplane::sai::CreateL2mcGroupRequest msg; +lemming::dataplane::sai::CreateL2mcGroupMemberRequest +convert_create_l2mc_group_member(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateL2mcGroupMemberRequest msg; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: + msg.set_l2mc_group_id(attr_list[i].value.oid); + break; + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: + msg.set_l2mc_output_id(attr_list[i].value.oid); + break; + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: + msg.set_l2mc_endpoint_ip( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + } + } + return msg; +} - for(uint32_t i = 0; i < attr_count; i++ ) { - - +sai_status_t l_create_l2mc_group(sai_object_id_t* l2mc_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr_list[i].id) { - -} + lemming::dataplane::sai::CreateL2mcGroupRequest req = + convert_create_l2mc_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateL2mcGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); -} -return msg; -} + grpc::Status status = l2mc_group->CreateL2mcGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (l2mc_group_id) { + *l2mc_group_id = resp.oid(); + } -lemming::dataplane::sai::CreateL2mcGroupMemberRequest convert_create_l2mc_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + return SAI_STATUS_SUCCESS; +} -lemming::dataplane::sai::CreateL2mcGroupMemberRequest msg; +sai_status_t l_remove_l2mc_group(sai_object_id_t l2mc_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::RemoveL2mcGroupRequest req; + lemming::dataplane::sai::RemoveL2mcGroupResponse resp; + grpc::ClientContext context; + req.set_oid(l2mc_group_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = l2mc_group->RemoveL2mcGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -switch (attr_list[i].id) { - - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: - msg.set_l2mc_group_id(attr_list[i].value.oid); - break; - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: - msg.set_l2mc_output_id(attr_list[i].value.oid); - break; - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: - msg.set_l2mc_endpoint_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_set_l2mc_group_attribute(sai_object_id_t l2mc_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_l2mc_group(sai_object_id_t *l2mc_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateL2mcGroupRequest req = convert_create_l2mc_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateL2mcGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = l2mc_group->CreateL2mcGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (l2mc_group_id) { - *l2mc_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_l2mc_group(sai_object_id_t l2mc_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveL2mcGroupRequest req; - lemming::dataplane::sai::RemoveL2mcGroupResponse resp; - grpc::ClientContext context; - req.set_oid(l2mc_group_id); - - grpc::Status status = l2mc_group->RemoveL2mcGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_l2mc_group_attribute(sai_object_id_t l2mc_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_l2mc_group_attribute(sai_object_id_t l2mc_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::GetL2mcGroupAttributeRequest req; + lemming::dataplane::sai::GetL2mcGroupAttributeResponse resp; + grpc::ClientContext context; -sai_status_t l_get_l2mc_group_attribute(sai_object_id_t l2mc_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetL2mcGroupAttributeRequest req; - lemming::dataplane::sai::GetL2mcGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(l2mc_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_l2mc_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = l2mc_group->GetL2mcGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: - attr_list[i].value.u32 = resp.attr().l2mc_output_count(); - break; - case SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().l2mc_member_list(), &attr_list[i].value.objlist.count); - break; -} + req.set_oid(l2mc_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_l2mc_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = l2mc_group->GetL2mcGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_L2MC_GROUP_ATTR_L2MC_OUTPUT_COUNT: + attr_list[i].value.u32 = resp.attr().l2mc_output_count(); + break; + case SAI_L2MC_GROUP_ATTR_L2MC_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().l2mc_member_list(), + &attr_list[i].value.objlist.count); + break; + } + } - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_l2mc_group_member(sai_object_id_t *l2mc_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateL2mcGroupMemberRequest req = convert_create_l2mc_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateL2mcGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = l2mc_group->CreateL2mcGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (l2mc_group_member_id) { - *l2mc_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_l2mc_group_member(sai_object_id_t* l2mc_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateL2mcGroupMemberRequest req = + convert_create_l2mc_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateL2mcGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = l2mc_group->CreateL2mcGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (l2mc_group_member_id) { + *l2mc_group_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_l2mc_group_member(sai_object_id_t l2mc_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveL2mcGroupMemberRequest req; - lemming::dataplane::sai::RemoveL2mcGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(l2mc_group_member_id); - - grpc::Status status = l2mc_group->RemoveL2mcGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_l2mc_group_member_attribute(sai_object_id_t l2mc_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveL2mcGroupMemberRequest req; + lemming::dataplane::sai::RemoveL2mcGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(l2mc_group_member_id); + + grpc::Status status = l2mc_group->RemoveL2mcGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_l2mc_group_member_attribute(sai_object_id_t l2mc_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetL2mcGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetL2mcGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(l2mc_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_l2mc_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = l2mc_group->GetL2mcGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: - attr_list[i].value.oid = resp.attr().l2mc_group_id(); - break; - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: - attr_list[i].value.oid = resp.attr().l2mc_output_id(); - break; - case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().l2mc_endpoint_ip()); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_l2mc_group_member_attribute( + sai_object_id_t l2mc_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_get_l2mc_group_member_attribute( + sai_object_id_t l2mc_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetL2mcGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetL2mcGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(l2mc_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_l2mc_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + l2mc_group->GetL2mcGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_GROUP_ID: + attr_list[i].value.oid = resp.attr().l2mc_group_id(); + break; + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_OUTPUT_ID: + attr_list[i].value.oid = resp.attr().l2mc_output_id(); + break; + case SAI_L2MC_GROUP_MEMBER_ATTR_L2MC_ENDPOINT_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().l2mc_endpoint_ip()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/l2mc_group.h b/dataplane/standalone/sai/l2mc_group.h index d80864a71..a88971a69 100644 --- a/dataplane/standalone/sai/l2mc_group.h +++ b/dataplane/standalone/sai/l2mc_group.h @@ -25,22 +25,31 @@ extern "C" { extern const sai_l2mc_group_api_t l_l2mc_group; - -sai_status_t l_create_l2mc_group(sai_object_id_t *l2mc_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_l2mc_group(sai_object_id_t* l2mc_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_l2mc_group(sai_object_id_t l2mc_group_id); -sai_status_t l_set_l2mc_group_attribute(sai_object_id_t l2mc_group_id, const sai_attribute_t *attr); +sai_status_t l_set_l2mc_group_attribute(sai_object_id_t l2mc_group_id, + const sai_attribute_t* attr); -sai_status_t l_get_l2mc_group_attribute(sai_object_id_t l2mc_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_l2mc_group_attribute(sai_object_id_t l2mc_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_l2mc_group_member(sai_object_id_t *l2mc_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_l2mc_group_member(sai_object_id_t* l2mc_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_l2mc_group_member(sai_object_id_t l2mc_group_member_id); -sai_status_t l_set_l2mc_group_member_attribute(sai_object_id_t l2mc_group_member_id, const sai_attribute_t *attr); - -sai_status_t l_get_l2mc_group_member_attribute(sai_object_id_t l2mc_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_l2mc_group_member_attribute( + sai_object_id_t l2mc_group_member_id, const sai_attribute_t* attr); +sai_status_t l_get_l2mc_group_member_attribute( + sai_object_id_t l2mc_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_L2MC_GROUP_H_ diff --git a/dataplane/standalone/sai/lag.cc b/dataplane/standalone/sai/lag.cc index d4d25a6f9..bf18c10e8 100644 --- a/dataplane/standalone/sai/lag.cc +++ b/dataplane/standalone/sai/lag.cc @@ -13,473 +13,472 @@ // limitations under the License. #include "dataplane/standalone/sai/lag.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/lag.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_lag_api_t l_lag = { - .create_lag = l_create_lag, - .remove_lag = l_remove_lag, - .set_lag_attribute = l_set_lag_attribute, - .get_lag_attribute = l_get_lag_attribute, - .create_lag_member = l_create_lag_member, - .remove_lag_member = l_remove_lag_member, - .set_lag_member_attribute = l_set_lag_member_attribute, - .get_lag_member_attribute = l_get_lag_member_attribute, - .create_lag_members = l_create_lag_members, - .remove_lag_members = l_remove_lag_members, + .create_lag = l_create_lag, + .remove_lag = l_remove_lag, + .set_lag_attribute = l_set_lag_attribute, + .get_lag_attribute = l_get_lag_attribute, + .create_lag_member = l_create_lag_member, + .remove_lag_member = l_remove_lag_member, + .set_lag_member_attribute = l_set_lag_member_attribute, + .get_lag_member_attribute = l_get_lag_member_attribute, + .create_lag_members = l_create_lag_members, + .remove_lag_members = l_remove_lag_members, }; - -lemming::dataplane::sai::CreateLagRequest convert_create_lag(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateLagRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_LAG_ATTR_INGRESS_ACL: - msg.set_ingress_acl(attr_list[i].value.oid); - break; - case SAI_LAG_ATTR_EGRESS_ACL: - msg.set_egress_acl(attr_list[i].value.oid); - break; - case SAI_LAG_ATTR_PORT_VLAN_ID: - msg.set_port_vlan_id(attr_list[i].value.u16); - break; - case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: - msg.set_default_vlan_priority(attr_list[i].value.u8); - break; - case SAI_LAG_ATTR_DROP_UNTAGGED: - msg.set_drop_untagged(attr_list[i].value.booldata); - break; - case SAI_LAG_ATTR_DROP_TAGGED: - msg.set_drop_tagged(attr_list[i].value.booldata); - break; - case SAI_LAG_ATTR_TPID: - msg.set_tpid(attr_list[i].value.u16); - break; - case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: - msg.set_system_port_aggregate_id(attr_list[i].value.u32); - break; - case SAI_LAG_ATTR_LABEL: - msg.set_label(attr_list[i].value.chardata); - break; - case SAI_LAG_ATTR_ARS_OBJECT_ID: - msg.set_ars_object_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateLagMemberRequest convert_create_lag_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateLagMemberRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_LAG_MEMBER_ATTR_LAG_ID: - msg.set_lag_id(attr_list[i].value.oid); - break; - case SAI_LAG_MEMBER_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: - msg.set_egress_disable(attr_list[i].value.booldata); - break; - case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: - msg.set_ingress_disable(attr_list[i].value.booldata); - break; +lemming::dataplane::sai::CreateLagRequest convert_create_lag( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateLagRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_LAG_ATTR_INGRESS_ACL: + msg.set_ingress_acl(attr_list[i].value.oid); + break; + case SAI_LAG_ATTR_EGRESS_ACL: + msg.set_egress_acl(attr_list[i].value.oid); + break; + case SAI_LAG_ATTR_PORT_VLAN_ID: + msg.set_port_vlan_id(attr_list[i].value.u16); + break; + case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: + msg.set_default_vlan_priority(attr_list[i].value.u8); + break; + case SAI_LAG_ATTR_DROP_UNTAGGED: + msg.set_drop_untagged(attr_list[i].value.booldata); + break; + case SAI_LAG_ATTR_DROP_TAGGED: + msg.set_drop_tagged(attr_list[i].value.booldata); + break; + case SAI_LAG_ATTR_TPID: + msg.set_tpid(attr_list[i].value.u16); + break; + case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: + msg.set_system_port_aggregate_id(attr_list[i].value.u32); + break; + case SAI_LAG_ATTR_LABEL: + msg.set_label(attr_list[i].value.chardata); + break; + case SAI_LAG_ATTR_ARS_OBJECT_ID: + msg.set_ars_object_id(attr_list[i].value.oid); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateLagMemberRequest convert_create_lag_member( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateLagMemberRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_LAG_MEMBER_ATTR_LAG_ID: + msg.set_lag_id(attr_list[i].value.oid); + break; + case SAI_LAG_MEMBER_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: + msg.set_egress_disable(attr_list[i].value.booldata); + break; + case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: + msg.set_ingress_disable(attr_list[i].value.booldata); + break; + } + } + return msg; } -sai_status_t l_create_lag(sai_object_id_t *lag_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateLagRequest req = convert_create_lag(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateLagResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = lag->CreateLag(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (lag_id) { - *lag_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_lag(sai_object_id_t* lag_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateLagRequest req = + convert_create_lag(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateLagResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = lag->CreateLag(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (lag_id) { + *lag_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_lag(sai_object_id_t lag_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveLagRequest req; - lemming::dataplane::sai::RemoveLagResponse resp; - grpc::ClientContext context; - req.set_oid(lag_id); - - grpc::Status status = lag->RemoveLag(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_lag_attribute(sai_object_id_t lag_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetLagAttributeRequest req; - lemming::dataplane::sai::SetLagAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(lag_id); - - - - -switch (attr->id) { - - case SAI_LAG_ATTR_INGRESS_ACL: - req.set_ingress_acl(attr->value.oid); - break; - case SAI_LAG_ATTR_EGRESS_ACL: - req.set_egress_acl(attr->value.oid); - break; - case SAI_LAG_ATTR_PORT_VLAN_ID: - req.set_port_vlan_id(attr->value.u16); - break; - case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: - req.set_default_vlan_priority(attr->value.u8); - break; - case SAI_LAG_ATTR_DROP_UNTAGGED: - req.set_drop_untagged(attr->value.booldata); - break; - case SAI_LAG_ATTR_DROP_TAGGED: - req.set_drop_tagged(attr->value.booldata); - break; - case SAI_LAG_ATTR_TPID: - req.set_tpid(attr->value.u16); - break; - case SAI_LAG_ATTR_LABEL: - req.set_label(attr->value.chardata); - break; - case SAI_LAG_ATTR_ARS_OBJECT_ID: - req.set_ars_object_id(attr->value.oid); - break; -} - - grpc::Status status = lag->SetLagAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveLagRequest req; + lemming::dataplane::sai::RemoveLagResponse resp; + grpc::ClientContext context; + req.set_oid(lag_id); + + grpc::Status status = lag->RemoveLag(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_lag_attribute(sai_object_id_t lag_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetLagAttributeRequest req; - lemming::dataplane::sai::GetLagAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(lag_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_lag_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = lag->GetLagAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_LAG_ATTR_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_LAG_ATTR_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().ingress_acl(); - break; - case SAI_LAG_ATTR_EGRESS_ACL: - attr_list[i].value.oid = resp.attr().egress_acl(); - break; - case SAI_LAG_ATTR_PORT_VLAN_ID: - attr_list[i].value.u16 = resp.attr().port_vlan_id(); - break; - case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: - attr_list[i].value.u8 = resp.attr().default_vlan_priority(); - break; - case SAI_LAG_ATTR_DROP_UNTAGGED: - attr_list[i].value.booldata = resp.attr().drop_untagged(); - break; - case SAI_LAG_ATTR_DROP_TAGGED: - attr_list[i].value.booldata = resp.attr().drop_tagged(); - break; - case SAI_LAG_ATTR_TPID: - attr_list[i].value.u16 = resp.attr().tpid(); - break; - case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: - attr_list[i].value.u32 = resp.attr().system_port_aggregate_id(); - break; - case SAI_LAG_ATTR_LABEL: - strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); - break; - case SAI_LAG_ATTR_ARS_OBJECT_ID: - attr_list[i].value.oid = resp.attr().ars_object_id(); - break; - case SAI_LAG_ATTR_ARS_PACKET_DROPS: - attr_list[i].value.u32 = resp.attr().ars_packet_drops(); - break; - case SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS: - attr_list[i].value.u32 = resp.attr().ars_port_reassignments(); - break; +sai_status_t l_set_lag_attribute(sai_object_id_t lag_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetLagAttributeRequest req; + lemming::dataplane::sai::SetLagAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(lag_id); + + switch (attr->id) { + case SAI_LAG_ATTR_INGRESS_ACL: + req.set_ingress_acl(attr->value.oid); + break; + case SAI_LAG_ATTR_EGRESS_ACL: + req.set_egress_acl(attr->value.oid); + break; + case SAI_LAG_ATTR_PORT_VLAN_ID: + req.set_port_vlan_id(attr->value.u16); + break; + case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: + req.set_default_vlan_priority(attr->value.u8); + break; + case SAI_LAG_ATTR_DROP_UNTAGGED: + req.set_drop_untagged(attr->value.booldata); + break; + case SAI_LAG_ATTR_DROP_TAGGED: + req.set_drop_tagged(attr->value.booldata); + break; + case SAI_LAG_ATTR_TPID: + req.set_tpid(attr->value.u16); + break; + case SAI_LAG_ATTR_LABEL: + req.set_label(attr->value.chardata); + break; + case SAI_LAG_ATTR_ARS_OBJECT_ID: + req.set_ars_object_id(attr->value.oid); + break; + } + + grpc::Status status = lag->SetLagAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_lag_attribute(sai_object_id_t lag_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetLagAttributeRequest req; + lemming::dataplane::sai::GetLagAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(lag_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_lag_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = lag->GetLagAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_LAG_ATTR_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_LAG_ATTR_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().ingress_acl(); + break; + case SAI_LAG_ATTR_EGRESS_ACL: + attr_list[i].value.oid = resp.attr().egress_acl(); + break; + case SAI_LAG_ATTR_PORT_VLAN_ID: + attr_list[i].value.u16 = resp.attr().port_vlan_id(); + break; + case SAI_LAG_ATTR_DEFAULT_VLAN_PRIORITY: + attr_list[i].value.u8 = resp.attr().default_vlan_priority(); + break; + case SAI_LAG_ATTR_DROP_UNTAGGED: + attr_list[i].value.booldata = resp.attr().drop_untagged(); + break; + case SAI_LAG_ATTR_DROP_TAGGED: + attr_list[i].value.booldata = resp.attr().drop_tagged(); + break; + case SAI_LAG_ATTR_TPID: + attr_list[i].value.u16 = resp.attr().tpid(); + break; + case SAI_LAG_ATTR_SYSTEM_PORT_AGGREGATE_ID: + attr_list[i].value.u32 = resp.attr().system_port_aggregate_id(); + break; + case SAI_LAG_ATTR_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; + case SAI_LAG_ATTR_ARS_OBJECT_ID: + attr_list[i].value.oid = resp.attr().ars_object_id(); + break; + case SAI_LAG_ATTR_ARS_PACKET_DROPS: + attr_list[i].value.u32 = resp.attr().ars_packet_drops(); + break; + case SAI_LAG_ATTR_ARS_PORT_REASSIGNMENTS: + attr_list[i].value.u32 = resp.attr().ars_port_reassignments(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_lag_member(sai_object_id_t *lag_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateLagMemberRequest req = convert_create_lag_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateLagMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = lag->CreateLagMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (lag_member_id) { - *lag_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_lag_member(sai_object_id_t* lag_member_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateLagMemberRequest req = + convert_create_lag_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateLagMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = lag->CreateLagMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (lag_member_id) { + *lag_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_lag_member(sai_object_id_t lag_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveLagMemberRequest req; - lemming::dataplane::sai::RemoveLagMemberResponse resp; - grpc::ClientContext context; - req.set_oid(lag_member_id); - - grpc::Status status = lag->RemoveLagMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_lag_member_attribute(sai_object_id_t lag_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetLagMemberAttributeRequest req; - lemming::dataplane::sai::SetLagMemberAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(lag_member_id); - - - - -switch (attr->id) { - - case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: - req.set_egress_disable(attr->value.booldata); - break; - case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: - req.set_ingress_disable(attr->value.booldata); - break; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveLagMemberRequest req; + lemming::dataplane::sai::RemoveLagMemberResponse resp; + grpc::ClientContext context; + req.set_oid(lag_member_id); + + grpc::Status status = lag->RemoveLagMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = lag->SetLagMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_lag_member_attribute(sai_object_id_t lag_member_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetLagMemberAttributeRequest req; + lemming::dataplane::sai::SetLagMemberAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(lag_member_id); + + switch (attr->id) { + case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: + req.set_egress_disable(attr->value.booldata); + break; + case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: + req.set_ingress_disable(attr->value.booldata); + break; + } + + grpc::Status status = lag->SetLagMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_lag_member_attribute(sai_object_id_t lag_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetLagMemberAttributeRequest req; - lemming::dataplane::sai::GetLagMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(lag_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_lag_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = lag->GetLagMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_LAG_MEMBER_ATTR_LAG_ID: - attr_list[i].value.oid = resp.attr().lag_id(); - break; - case SAI_LAG_MEMBER_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: - attr_list[i].value.booldata = resp.attr().egress_disable(); - break; - case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: - attr_list[i].value.booldata = resp.attr().ingress_disable(); - break; +sai_status_t l_get_lag_member_attribute(sai_object_id_t lag_member_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetLagMemberAttributeRequest req; + lemming::dataplane::sai::GetLagMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(lag_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_lag_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = lag->GetLagMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_LAG_MEMBER_ATTR_LAG_ID: + attr_list[i].value.oid = resp.attr().lag_id(); + break; + case SAI_LAG_MEMBER_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_LAG_MEMBER_ATTR_EGRESS_DISABLE: + attr_list[i].value.booldata = resp.attr().egress_disable(); + break; + case SAI_LAG_MEMBER_ATTR_INGRESS_DISABLE: + attr_list[i].value.booldata = resp.attr().ingress_disable(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_lag_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateLagMembersRequest req; + lemming::dataplane::sai::CreateLagMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_lag_member(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = lag->CreateLagMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_lag_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateLagMembersRequest req; - lemming::dataplane::sai::CreateLagMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_lag_member(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = lag->CreateLagMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_lag_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveLagMembersRequest req; + lemming::dataplane::sai::RemoveLagMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = lag->RemoveLagMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_remove_lag_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveLagMembersRequest req; - lemming::dataplane::sai::RemoveLagMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = lag->RemoveLagMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/lag.h b/dataplane/standalone/sai/lag.h index 66772c3c4..b0463e8f1 100644 --- a/dataplane/standalone/sai/lag.h +++ b/dataplane/standalone/sai/lag.h @@ -25,26 +25,42 @@ extern "C" { extern const sai_lag_api_t l_lag; - -sai_status_t l_create_lag(sai_object_id_t *lag_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_lag(sai_object_id_t* lag_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_lag(sai_object_id_t lag_id); -sai_status_t l_set_lag_attribute(sai_object_id_t lag_id, const sai_attribute_t *attr); +sai_status_t l_set_lag_attribute(sai_object_id_t lag_id, + const sai_attribute_t* attr); -sai_status_t l_get_lag_attribute(sai_object_id_t lag_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_lag_attribute(sai_object_id_t lag_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_lag_member(sai_object_id_t *lag_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_lag_member(sai_object_id_t* lag_member_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_lag_member(sai_object_id_t lag_member_id); -sai_status_t l_set_lag_member_attribute(sai_object_id_t lag_member_id, const sai_attribute_t *attr); - -sai_status_t l_get_lag_member_attribute(sai_object_id_t lag_member_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_lag_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_lag_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_lag_member_attribute(sai_object_id_t lag_member_id, + const sai_attribute_t* attr); + +sai_status_t l_get_lag_member_attribute(sai_object_id_t lag_member_id, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_lag_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_lag_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_LAG_H_ diff --git a/dataplane/standalone/sai/macsec.cc b/dataplane/standalone/sai/macsec.cc index abb3bb25d..cc81f47ad 100644 --- a/dataplane/standalone/sai/macsec.cc +++ b/dataplane/standalone/sai/macsec.cc @@ -13,1118 +13,1254 @@ // limitations under the License. #include "dataplane/standalone/sai/macsec.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/macsec.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_macsec_api_t l_macsec = { - .create_macsec = l_create_macsec, - .remove_macsec = l_remove_macsec, - .set_macsec_attribute = l_set_macsec_attribute, - .get_macsec_attribute = l_get_macsec_attribute, - .create_macsec_port = l_create_macsec_port, - .remove_macsec_port = l_remove_macsec_port, - .set_macsec_port_attribute = l_set_macsec_port_attribute, - .get_macsec_port_attribute = l_get_macsec_port_attribute, - .get_macsec_port_stats = l_get_macsec_port_stats, - .get_macsec_port_stats_ext = l_get_macsec_port_stats_ext, - .clear_macsec_port_stats = l_clear_macsec_port_stats, - .create_macsec_flow = l_create_macsec_flow, - .remove_macsec_flow = l_remove_macsec_flow, - .set_macsec_flow_attribute = l_set_macsec_flow_attribute, - .get_macsec_flow_attribute = l_get_macsec_flow_attribute, - .get_macsec_flow_stats = l_get_macsec_flow_stats, - .get_macsec_flow_stats_ext = l_get_macsec_flow_stats_ext, - .clear_macsec_flow_stats = l_clear_macsec_flow_stats, - .create_macsec_sc = l_create_macsec_sc, - .remove_macsec_sc = l_remove_macsec_sc, - .set_macsec_sc_attribute = l_set_macsec_sc_attribute, - .get_macsec_sc_attribute = l_get_macsec_sc_attribute, - .get_macsec_sc_stats = l_get_macsec_sc_stats, - .get_macsec_sc_stats_ext = l_get_macsec_sc_stats_ext, - .clear_macsec_sc_stats = l_clear_macsec_sc_stats, - .create_macsec_sa = l_create_macsec_sa, - .remove_macsec_sa = l_remove_macsec_sa, - .set_macsec_sa_attribute = l_set_macsec_sa_attribute, - .get_macsec_sa_attribute = l_get_macsec_sa_attribute, - .get_macsec_sa_stats = l_get_macsec_sa_stats, - .get_macsec_sa_stats_ext = l_get_macsec_sa_stats_ext, - .clear_macsec_sa_stats = l_clear_macsec_sa_stats, + .create_macsec = l_create_macsec, + .remove_macsec = l_remove_macsec, + .set_macsec_attribute = l_set_macsec_attribute, + .get_macsec_attribute = l_get_macsec_attribute, + .create_macsec_port = l_create_macsec_port, + .remove_macsec_port = l_remove_macsec_port, + .set_macsec_port_attribute = l_set_macsec_port_attribute, + .get_macsec_port_attribute = l_get_macsec_port_attribute, + .get_macsec_port_stats = l_get_macsec_port_stats, + .get_macsec_port_stats_ext = l_get_macsec_port_stats_ext, + .clear_macsec_port_stats = l_clear_macsec_port_stats, + .create_macsec_flow = l_create_macsec_flow, + .remove_macsec_flow = l_remove_macsec_flow, + .set_macsec_flow_attribute = l_set_macsec_flow_attribute, + .get_macsec_flow_attribute = l_get_macsec_flow_attribute, + .get_macsec_flow_stats = l_get_macsec_flow_stats, + .get_macsec_flow_stats_ext = l_get_macsec_flow_stats_ext, + .clear_macsec_flow_stats = l_clear_macsec_flow_stats, + .create_macsec_sc = l_create_macsec_sc, + .remove_macsec_sc = l_remove_macsec_sc, + .set_macsec_sc_attribute = l_set_macsec_sc_attribute, + .get_macsec_sc_attribute = l_get_macsec_sc_attribute, + .get_macsec_sc_stats = l_get_macsec_sc_stats, + .get_macsec_sc_stats_ext = l_get_macsec_sc_stats_ext, + .clear_macsec_sc_stats = l_clear_macsec_sc_stats, + .create_macsec_sa = l_create_macsec_sa, + .remove_macsec_sa = l_remove_macsec_sa, + .set_macsec_sa_attribute = l_set_macsec_sa_attribute, + .get_macsec_sa_attribute = l_get_macsec_sa_attribute, + .get_macsec_sa_stats = l_get_macsec_sa_stats, + .get_macsec_sa_stats_ext = l_get_macsec_sa_stats_ext, + .clear_macsec_sa_stats = l_clear_macsec_sa_stats, }; - -lemming::dataplane::sai::CreateMacsecRequest convert_create_macsec(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMacsecRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_ATTR_DIRECTION: - msg.set_direction(convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: - msg.set_warm_boot_enable(attr_list[i].value.booldata); - break; - case SAI_MACSEC_ATTR_CTAG_TPID: - msg.set_ctag_tpid(attr_list[i].value.u16); - break; - case SAI_MACSEC_ATTR_STAG_TPID: - msg.set_stag_tpid(attr_list[i].value.u16); - break; - case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: - msg.set_max_vlan_tags_parsed(attr_list[i].value.u8); - break; - case SAI_MACSEC_ATTR_STATS_MODE: - msg.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: - msg.set_physical_bypass_enable(attr_list[i].value.booldata); - break; +lemming::dataplane::sai::CreateMacsecRequest convert_create_macsec( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMacsecRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_ATTR_DIRECTION: + msg.set_direction( + convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: + msg.set_warm_boot_enable(attr_list[i].value.booldata); + break; + case SAI_MACSEC_ATTR_CTAG_TPID: + msg.set_ctag_tpid(attr_list[i].value.u16); + break; + case SAI_MACSEC_ATTR_STAG_TPID: + msg.set_stag_tpid(attr_list[i].value.u16); + break; + case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: + msg.set_max_vlan_tags_parsed(attr_list[i].value.u8); + break; + case SAI_MACSEC_ATTR_STATS_MODE: + msg.set_stats_mode( + convert_sai_stats_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: + msg.set_physical_bypass_enable(attr_list[i].value.booldata); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateMacsecPortRequest convert_create_macsec_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMacsecPortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: + msg.set_macsec_direction( + convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_PORT_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: + msg.set_ctag_enable(attr_list[i].value.booldata); + break; + case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: + msg.set_stag_enable(attr_list[i].value.booldata); + break; + case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + msg.set_switch_switching_mode( + convert_sai_switch_switching_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_MACSEC_PORT_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateMacsecPortRequest convert_create_macsec_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMacsecPortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: - msg.set_macsec_direction(convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_PORT_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: - msg.set_ctag_enable(attr_list[i].value.booldata); - break; - case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: - msg.set_stag_enable(attr_list[i].value.booldata); - break; - case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - msg.set_switch_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr_list[i].value.s32)); - break; +lemming::dataplane::sai::CreateMacsecFlowRequest convert_create_macsec_flow( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMacsecFlowRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: + msg.set_macsec_direction( + convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_FLOW_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateMacsecScRequest convert_create_macsec_sc( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMacsecScRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: + msg.set_macsec_direction( + convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_SC_ATTR_FLOW_ID: + msg.set_flow_id(attr_list[i].value.oid); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_SCI: + msg.set_macsec_sci(attr_list[i].value.u64); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: + msg.set_macsec_explicit_sci_enable(attr_list[i].value.booldata); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: + msg.set_macsec_sectag_offset(attr_list[i].value.u8); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: + msg.set_macsec_replay_protection_enable(attr_list[i].value.booldata); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: + msg.set_macsec_replay_protection_window(attr_list[i].value.u32); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: + msg.set_macsec_cipher_suite( + convert_sai_macsec_cipher_suite_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: + msg.set_encryption_enable(attr_list[i].value.booldata); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateMacsecFlowRequest convert_create_macsec_flow(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMacsecFlowRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: - msg.set_macsec_direction(convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateMacsecSaRequest convert_create_macsec_sa( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMacsecSaRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: + msg.set_macsec_direction( + convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MACSEC_SA_ATTR_SC_ID: + msg.set_sc_id(attr_list[i].value.oid); + break; + case SAI_MACSEC_SA_ATTR_AN: + msg.set_an(attr_list[i].value.u8); + break; + case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: + msg.set_configured_egress_xpn(attr_list[i].value.u64); + break; + case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: + msg.set_minimum_ingress_xpn(attr_list[i].value.u64); + break; + case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: + msg.set_macsec_ssci(attr_list[i].value.u32); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateMacsecScRequest convert_create_macsec_sc(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMacsecScRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: - msg.set_macsec_direction(convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_SC_ATTR_FLOW_ID: - msg.set_flow_id(attr_list[i].value.oid); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_SCI: - msg.set_macsec_sci(attr_list[i].value.u64); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: - msg.set_macsec_explicit_sci_enable(attr_list[i].value.booldata); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: - msg.set_macsec_sectag_offset(attr_list[i].value.u8); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: - msg.set_macsec_replay_protection_enable(attr_list[i].value.booldata); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: - msg.set_macsec_replay_protection_window(attr_list[i].value.u32); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: - msg.set_macsec_cipher_suite(convert_sai_macsec_cipher_suite_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: - msg.set_encryption_enable(attr_list[i].value.booldata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateMacsecSaRequest convert_create_macsec_sa(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMacsecSaRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: - msg.set_macsec_direction(convert_sai_macsec_direction_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MACSEC_SA_ATTR_SC_ID: - msg.set_sc_id(attr_list[i].value.oid); - break; - case SAI_MACSEC_SA_ATTR_AN: - msg.set_an(attr_list[i].value.u8); - break; - case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: - msg.set_configured_egress_xpn(attr_list[i].value.u64); - break; - case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: - msg.set_minimum_ingress_xpn(attr_list[i].value.u64); - break; - case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: - msg.set_macsec_ssci(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -sai_status_t l_create_macsec(sai_object_id_t *macsec_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMacsecRequest req = convert_create_macsec(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMacsecResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = macsec->CreateMacsec(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (macsec_id) { - *macsec_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_macsec(sai_object_id_t* macsec_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMacsecRequest req = + convert_create_macsec(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMacsecResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = macsec->CreateMacsec(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (macsec_id) { + *macsec_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_macsec(sai_object_id_t macsec_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMacsecRequest req; - lemming::dataplane::sai::RemoveMacsecResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_id); - - grpc::Status status = macsec->RemoveMacsec(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_macsec_attribute(sai_object_id_t macsec_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMacsecAttributeRequest req; - lemming::dataplane::sai::SetMacsecAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_id); - - - - -switch (attr->id) { - - case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: - req.set_warm_boot_enable(attr->value.booldata); - break; - case SAI_MACSEC_ATTR_CTAG_TPID: - req.set_ctag_tpid(attr->value.u16); - break; - case SAI_MACSEC_ATTR_STAG_TPID: - req.set_stag_tpid(attr->value.u16); - break; - case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: - req.set_max_vlan_tags_parsed(attr->value.u8); - break; - case SAI_MACSEC_ATTR_STATS_MODE: - req.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr->value.s32)); - break; - case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: - req.set_physical_bypass_enable(attr->value.booldata); - break; -} - - grpc::Status status = macsec->SetMacsecAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMacsecRequest req; + lemming::dataplane::sai::RemoveMacsecResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_id); + + grpc::Status status = macsec->RemoveMacsec(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_attribute(sai_object_id_t macsec_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecAttributeRequest req; - lemming::dataplane::sai::GetMacsecAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(macsec_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_macsec_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = macsec->GetMacsecAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_ATTR_DIRECTION: - attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai(resp.attr().direction()); - break; - case SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: - attr_list[i].value.booldata = resp.attr().switching_mode_cut_through_supported(); - break; - case SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: - attr_list[i].value.booldata = resp.attr().switching_mode_store_and_forward_supported(); - break; - case SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: - attr_list[i].value.booldata = resp.attr().stats_mode_read_supported(); - break; - case SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: - attr_list[i].value.booldata = resp.attr().stats_mode_read_clear_supported(); - break; - case SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: - attr_list[i].value.booldata = resp.attr().sci_in_ingress_macsec_acl(); - break; - case SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: - convert_list_sai_macsec_cipher_suite_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_cipher_suite_list(), &attr_list[i].value.s32list.count); - break; - case SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().pn_32bit_supported(); - break; - case SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().xpn_64bit_supported(); - break; - case SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED: - attr_list[i].value.booldata = resp.attr().gcm_aes128_supported(); - break; - case SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED: - attr_list[i].value.booldata = resp.attr().gcm_aes256_supported(); - break; - case SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: - copy_list(attr_list[i].value.u8list.list, resp.attr().sectag_offsets_supported(), &attr_list[i].value.u8list.count); - break; - case SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU: - attr_list[i].value.u16 = resp.attr().system_side_mtu(); - break; - case SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED: - attr_list[i].value.booldata = resp.attr().warm_boot_supported(); - break; - case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: - attr_list[i].value.booldata = resp.attr().warm_boot_enable(); - break; - case SAI_MACSEC_ATTR_CTAG_TPID: - attr_list[i].value.u16 = resp.attr().ctag_tpid(); - break; - case SAI_MACSEC_ATTR_STAG_TPID: - attr_list[i].value.u16 = resp.attr().stag_tpid(); - break; - case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: - attr_list[i].value.u8 = resp.attr().max_vlan_tags_parsed(); - break; - case SAI_MACSEC_ATTR_STATS_MODE: - attr_list[i].value.s32 = convert_sai_stats_mode_t_to_sai(resp.attr().stats_mode()); - break; - case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: - attr_list[i].value.booldata = resp.attr().physical_bypass_enable(); - break; - case SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().supported_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: - attr_list[i].value.u32 = resp.attr().available_macsec_flow(); - break; - case SAI_MACSEC_ATTR_FLOW_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().flow_list(), &attr_list[i].value.objlist.count); - break; - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC: - attr_list[i].value.u32 = resp.attr().available_macsec_sc(); - break; - case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA: - attr_list[i].value.u32 = resp.attr().available_macsec_sa(); - break; - case SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: - attr_list[i].value.s32 = convert_sai_macsec_max_secure_associations_per_sc_t_to_sai(resp.attr().max_secure_associations_per_sc()); - break; +sai_status_t l_set_macsec_attribute(sai_object_id_t macsec_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMacsecAttributeRequest req; + lemming::dataplane::sai::SetMacsecAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_id); + + switch (attr->id) { + case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: + req.set_warm_boot_enable(attr->value.booldata); + break; + case SAI_MACSEC_ATTR_CTAG_TPID: + req.set_ctag_tpid(attr->value.u16); + break; + case SAI_MACSEC_ATTR_STAG_TPID: + req.set_stag_tpid(attr->value.u16); + break; + case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: + req.set_max_vlan_tags_parsed(attr->value.u8); + break; + case SAI_MACSEC_ATTR_STATS_MODE: + req.set_stats_mode(convert_sai_stats_mode_t_to_proto(attr->value.s32)); + break; + case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: + req.set_physical_bypass_enable(attr->value.booldata); + break; + } + + grpc::Status status = macsec->SetMacsecAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_macsec_attribute(sai_object_id_t macsec_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecAttributeRequest req; + lemming::dataplane::sai::GetMacsecAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(macsec_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_macsec_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = macsec->GetMacsecAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_ATTR_DIRECTION: + attr_list[i].value.s32 = + convert_sai_macsec_direction_t_to_sai(resp.attr().direction()); + break; + case SAI_MACSEC_ATTR_SWITCHING_MODE_CUT_THROUGH_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().switching_mode_cut_through_supported(); + break; + case SAI_MACSEC_ATTR_SWITCHING_MODE_STORE_AND_FORWARD_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().switching_mode_store_and_forward_supported(); + break; + case SAI_MACSEC_ATTR_STATS_MODE_READ_SUPPORTED: + attr_list[i].value.booldata = resp.attr().stats_mode_read_supported(); + break; + case SAI_MACSEC_ATTR_STATS_MODE_READ_CLEAR_SUPPORTED: + attr_list[i].value.booldata = + resp.attr().stats_mode_read_clear_supported(); + break; + case SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL: + attr_list[i].value.booldata = resp.attr().sci_in_ingress_macsec_acl(); + break; + case SAI_MACSEC_ATTR_SUPPORTED_CIPHER_SUITE_LIST: + convert_list_sai_macsec_cipher_suite_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_cipher_suite_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_MACSEC_ATTR_PN_32BIT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().pn_32bit_supported(); + break; + case SAI_MACSEC_ATTR_XPN_64BIT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().xpn_64bit_supported(); + break; + case SAI_MACSEC_ATTR_GCM_AES128_SUPPORTED: + attr_list[i].value.booldata = resp.attr().gcm_aes128_supported(); + break; + case SAI_MACSEC_ATTR_GCM_AES256_SUPPORTED: + attr_list[i].value.booldata = resp.attr().gcm_aes256_supported(); + break; + case SAI_MACSEC_ATTR_SECTAG_OFFSETS_SUPPORTED: + copy_list(attr_list[i].value.u8list.list, + resp.attr().sectag_offsets_supported(), + &attr_list[i].value.u8list.count); + break; + case SAI_MACSEC_ATTR_SYSTEM_SIDE_MTU: + attr_list[i].value.u16 = resp.attr().system_side_mtu(); + break; + case SAI_MACSEC_ATTR_WARM_BOOT_SUPPORTED: + attr_list[i].value.booldata = resp.attr().warm_boot_supported(); + break; + case SAI_MACSEC_ATTR_WARM_BOOT_ENABLE: + attr_list[i].value.booldata = resp.attr().warm_boot_enable(); + break; + case SAI_MACSEC_ATTR_CTAG_TPID: + attr_list[i].value.u16 = resp.attr().ctag_tpid(); + break; + case SAI_MACSEC_ATTR_STAG_TPID: + attr_list[i].value.u16 = resp.attr().stag_tpid(); + break; + case SAI_MACSEC_ATTR_MAX_VLAN_TAGS_PARSED: + attr_list[i].value.u8 = resp.attr().max_vlan_tags_parsed(); + break; + case SAI_MACSEC_ATTR_STATS_MODE: + attr_list[i].value.s32 = + convert_sai_stats_mode_t_to_sai(resp.attr().stats_mode()); + break; + case SAI_MACSEC_ATTR_PHYSICAL_BYPASS_ENABLE: + attr_list[i].value.booldata = resp.attr().physical_bypass_enable(); + break; + case SAI_MACSEC_ATTR_SUPPORTED_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().supported_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_FLOW: + attr_list[i].value.u32 = resp.attr().available_macsec_flow(); + break; + case SAI_MACSEC_ATTR_FLOW_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().flow_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SC: + attr_list[i].value.u32 = resp.attr().available_macsec_sc(); + break; + case SAI_MACSEC_ATTR_AVAILABLE_MACSEC_SA: + attr_list[i].value.u32 = resp.attr().available_macsec_sa(); + break; + case SAI_MACSEC_ATTR_MAX_SECURE_ASSOCIATIONS_PER_SC: + attr_list[i].value.s32 = + convert_sai_macsec_max_secure_associations_per_sc_t_to_sai( + resp.attr().max_secure_associations_per_sc()); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_macsec_port(sai_object_id_t *macsec_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMacsecPortRequest req = convert_create_macsec_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMacsecPortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = macsec->CreateMacsecPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (macsec_port_id) { - *macsec_port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_macsec_port(sai_object_id_t* macsec_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMacsecPortRequest req = + convert_create_macsec_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMacsecPortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = macsec->CreateMacsecPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (macsec_port_id) { + *macsec_port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_macsec_port(sai_object_id_t macsec_port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMacsecPortRequest req; - lemming::dataplane::sai::RemoveMacsecPortResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_port_id); - - grpc::Status status = macsec->RemoveMacsecPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMacsecPortRequest req; + lemming::dataplane::sai::RemoveMacsecPortResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_port_id); + + grpc::Status status = macsec->RemoveMacsecPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_macsec_port_attribute(sai_object_id_t macsec_port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMacsecPortAttributeRequest req; - lemming::dataplane::sai::SetMacsecPortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_port_id); - - - - -switch (attr->id) { - - case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: - req.set_ctag_enable(attr->value.booldata); - break; - case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: - req.set_stag_enable(attr->value.booldata); - break; - case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - req.set_switch_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); - break; +sai_status_t l_set_macsec_port_attribute(sai_object_id_t macsec_port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMacsecPortAttributeRequest req; + lemming::dataplane::sai::SetMacsecPortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_port_id); + + switch (attr->id) { + case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: + req.set_ctag_enable(attr->value.booldata); + break; + case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: + req.set_stag_enable(attr->value.booldata); + break; + case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + req.set_switch_switching_mode( + convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); + break; + case SAI_MACSEC_PORT_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = macsec->SetMacsecPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = macsec->SetMacsecPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_macsec_port_attribute(sai_object_id_t macsec_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecPortAttributeRequest req; + lemming::dataplane::sai::GetMacsecPortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(macsec_port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_macsec_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = macsec->GetMacsecPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: + attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai( + resp.attr().macsec_direction()); + break; + case SAI_MACSEC_PORT_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: + attr_list[i].value.booldata = resp.attr().ctag_enable(); + break; + case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: + attr_list[i].value.booldata = resp.attr().stag_enable(); + break; + case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: + attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai( + resp.attr().switch_switching_mode()); + break; + case SAI_MACSEC_PORT_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_MACSEC_PORT_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_port_attribute(sai_object_id_t macsec_port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecPortAttributeRequest req; - lemming::dataplane::sai::GetMacsecPortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(macsec_port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_macsec_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = macsec->GetMacsecPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_PORT_ATTR_MACSEC_DIRECTION: - attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai(resp.attr().macsec_direction()); - break; - case SAI_MACSEC_PORT_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_MACSEC_PORT_ATTR_CTAG_ENABLE: - attr_list[i].value.booldata = resp.attr().ctag_enable(); - break; - case SAI_MACSEC_PORT_ATTR_STAG_ENABLE: - attr_list[i].value.booldata = resp.attr().stag_enable(); - break; - case SAI_MACSEC_PORT_ATTR_SWITCH_SWITCHING_MODE: - attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai(resp.attr().switch_switching_mode()); - break; +sai_status_t l_get_macsec_port_stats(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecPortStatsRequest req; + lemming::dataplane::sai::GetMacsecPortStatsResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_port_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_macsec_port_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = macsec->GetMacsecPortStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_macsec_port_stats_ext(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_macsec_port_stats(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecPortStatsRequest req; - lemming::dataplane::sai::GetMacsecPortStatsResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_port_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_macsec_port_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = macsec->GetMacsecPortStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_port_stats_ext(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_macsec_port_stats(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_macsec_port_stats(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_macsec_flow(sai_object_id_t *macsec_flow_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMacsecFlowRequest req = convert_create_macsec_flow(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMacsecFlowResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = macsec->CreateMacsecFlow(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (macsec_flow_id) { - *macsec_flow_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_macsec_flow(sai_object_id_t* macsec_flow_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMacsecFlowRequest req = + convert_create_macsec_flow(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMacsecFlowResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = macsec->CreateMacsecFlow(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (macsec_flow_id) { + *macsec_flow_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_macsec_flow(sai_object_id_t macsec_flow_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMacsecFlowRequest req; - lemming::dataplane::sai::RemoveMacsecFlowResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_flow_id); - - grpc::Status status = macsec->RemoveMacsecFlow(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMacsecFlowRequest req; + lemming::dataplane::sai::RemoveMacsecFlowResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_flow_id); + + grpc::Status status = macsec->RemoveMacsecFlow(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_macsec_flow_attribute(sai_object_id_t macsec_flow_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_macsec_flow_attribute(sai_object_id_t macsec_flow_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMacsecFlowAttributeRequest req; + lemming::dataplane::sai::SetMacsecFlowAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_flow_id); + + switch (attr->id) { + case SAI_MACSEC_FLOW_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = macsec->SetMacsecFlowAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_flow_attribute(sai_object_id_t macsec_flow_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecFlowAttributeRequest req; - lemming::dataplane::sai::GetMacsecFlowAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(macsec_flow_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_macsec_flow_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = macsec->GetMacsecFlowAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: - attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai(resp.attr().macsec_direction()); - break; - case SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().acl_entry_list(), &attr_list[i].value.objlist.count); - break; - case SAI_MACSEC_FLOW_ATTR_SC_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().sc_list(), &attr_list[i].value.objlist.count); - break; +sai_status_t l_get_macsec_flow_attribute(sai_object_id_t macsec_flow_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecFlowAttributeRequest req; + lemming::dataplane::sai::GetMacsecFlowAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(macsec_flow_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_macsec_flow_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = macsec->GetMacsecFlowAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_FLOW_ATTR_MACSEC_DIRECTION: + attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai( + resp.attr().macsec_direction()); + break; + case SAI_MACSEC_FLOW_ATTR_ACL_ENTRY_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().acl_entry_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_MACSEC_FLOW_ATTR_SC_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().sc_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_MACSEC_FLOW_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_MACSEC_FLOW_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_macsec_flow_stats(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecFlowStatsRequest req; + lemming::dataplane::sai::GetMacsecFlowStatsResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_flow_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_macsec_flow_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = macsec->GetMacsecFlowStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_flow_stats(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecFlowStatsRequest req; - lemming::dataplane::sai::GetMacsecFlowStatsResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_flow_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_macsec_flow_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = macsec->GetMacsecFlowStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_macsec_flow_stats_ext(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_macsec_flow_stats_ext(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_macsec_flow_stats(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_clear_macsec_flow_stats(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_macsec_sc(sai_object_id_t *macsec_sc_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMacsecScRequest req = convert_create_macsec_sc(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMacsecScResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = macsec->CreateMacsecSc(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (macsec_sc_id) { - *macsec_sc_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_macsec_sc(sai_object_id_t* macsec_sc_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMacsecScRequest req = + convert_create_macsec_sc(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMacsecScResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = macsec->CreateMacsecSc(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (macsec_sc_id) { + *macsec_sc_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_macsec_sc(sai_object_id_t macsec_sc_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMacsecScRequest req; - lemming::dataplane::sai::RemoveMacsecScResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sc_id); - - grpc::Status status = macsec->RemoveMacsecSc(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMacsecScRequest req; + lemming::dataplane::sai::RemoveMacsecScResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sc_id); + + grpc::Status status = macsec->RemoveMacsecSc(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_macsec_sc_attribute(sai_object_id_t macsec_sc_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMacsecScAttributeRequest req; - lemming::dataplane::sai::SetMacsecScAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sc_id); - - - - -switch (attr->id) { - - case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: - req.set_macsec_explicit_sci_enable(attr->value.booldata); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: - req.set_macsec_sectag_offset(attr->value.u8); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: - req.set_macsec_replay_protection_enable(attr->value.booldata); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: - req.set_macsec_replay_protection_window(attr->value.u32); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: - req.set_macsec_cipher_suite(convert_sai_macsec_cipher_suite_t_to_proto(attr->value.s32)); - break; - case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: - req.set_encryption_enable(attr->value.booldata); - break; +sai_status_t l_set_macsec_sc_attribute(sai_object_id_t macsec_sc_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMacsecScAttributeRequest req; + lemming::dataplane::sai::SetMacsecScAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sc_id); + + switch (attr->id) { + case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: + req.set_macsec_explicit_sci_enable(attr->value.booldata); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: + req.set_macsec_sectag_offset(attr->value.u8); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: + req.set_macsec_replay_protection_enable(attr->value.booldata); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: + req.set_macsec_replay_protection_window(attr->value.u32); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: + req.set_macsec_cipher_suite( + convert_sai_macsec_cipher_suite_t_to_proto(attr->value.s32)); + break; + case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: + req.set_encryption_enable(attr->value.booldata); + break; + } + + grpc::Status status = macsec->SetMacsecScAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = macsec->SetMacsecScAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_macsec_sc_attribute(sai_object_id_t macsec_sc_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecScAttributeRequest req; + lemming::dataplane::sai::GetMacsecScAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(macsec_sc_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_macsec_sc_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = macsec->GetMacsecScAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: + attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai( + resp.attr().macsec_direction()); + break; + case SAI_MACSEC_SC_ATTR_FLOW_ID: + attr_list[i].value.oid = resp.attr().flow_id(); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_SCI: + attr_list[i].value.u64 = resp.attr().macsec_sci(); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: + attr_list[i].value.booldata = resp.attr().macsec_explicit_sci_enable(); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: + attr_list[i].value.u8 = resp.attr().macsec_sectag_offset(); + break; + case SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: + attr_list[i].value.oid = resp.attr().active_egress_sa_id(); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: + attr_list[i].value.booldata = + resp.attr().macsec_replay_protection_enable(); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: + attr_list[i].value.u32 = resp.attr().macsec_replay_protection_window(); + break; + case SAI_MACSEC_SC_ATTR_SA_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().sa_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: + attr_list[i].value.s32 = convert_sai_macsec_cipher_suite_t_to_sai( + resp.attr().macsec_cipher_suite()); + break; + case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: + attr_list[i].value.booldata = resp.attr().encryption_enable(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_sc_attribute(sai_object_id_t macsec_sc_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecScAttributeRequest req; - lemming::dataplane::sai::GetMacsecScAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(macsec_sc_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_macsec_sc_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = macsec->GetMacsecScAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_SC_ATTR_MACSEC_DIRECTION: - attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai(resp.attr().macsec_direction()); - break; - case SAI_MACSEC_SC_ATTR_FLOW_ID: - attr_list[i].value.oid = resp.attr().flow_id(); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_SCI: - attr_list[i].value.u64 = resp.attr().macsec_sci(); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_EXPLICIT_SCI_ENABLE: - attr_list[i].value.booldata = resp.attr().macsec_explicit_sci_enable(); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_SECTAG_OFFSET: - attr_list[i].value.u8 = resp.attr().macsec_sectag_offset(); - break; - case SAI_MACSEC_SC_ATTR_ACTIVE_EGRESS_SA_ID: - attr_list[i].value.oid = resp.attr().active_egress_sa_id(); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_ENABLE: - attr_list[i].value.booldata = resp.attr().macsec_replay_protection_enable(); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_REPLAY_PROTECTION_WINDOW: - attr_list[i].value.u32 = resp.attr().macsec_replay_protection_window(); - break; - case SAI_MACSEC_SC_ATTR_SA_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().sa_list(), &attr_list[i].value.objlist.count); - break; - case SAI_MACSEC_SC_ATTR_MACSEC_CIPHER_SUITE: - attr_list[i].value.s32 = convert_sai_macsec_cipher_suite_t_to_sai(resp.attr().macsec_cipher_suite()); - break; - case SAI_MACSEC_SC_ATTR_ENCRYPTION_ENABLE: - attr_list[i].value.booldata = resp.attr().encryption_enable(); - break; +sai_status_t l_get_macsec_sc_stats(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecScStatsRequest req; + lemming::dataplane::sai::GetMacsecScStatsResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sc_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_macsec_sc_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = macsec->GetMacsecScStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_macsec_sc_stats_ext(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_macsec_sc_stats(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecScStatsRequest req; - lemming::dataplane::sai::GetMacsecScStatsResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sc_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_macsec_sc_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = macsec->GetMacsecScStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_sc_stats_ext(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_macsec_sc_stats(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_macsec_sc_stats(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_macsec_sa(sai_object_id_t *macsec_sa_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMacsecSaRequest req = convert_create_macsec_sa(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMacsecSaResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = macsec->CreateMacsecSa(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (macsec_sa_id) { - *macsec_sa_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_macsec_sa(sai_object_id_t* macsec_sa_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMacsecSaRequest req = + convert_create_macsec_sa(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMacsecSaResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = macsec->CreateMacsecSa(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (macsec_sa_id) { + *macsec_sa_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_macsec_sa(sai_object_id_t macsec_sa_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMacsecSaRequest req; - lemming::dataplane::sai::RemoveMacsecSaResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sa_id); - - grpc::Status status = macsec->RemoveMacsecSa(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMacsecSaRequest req; + lemming::dataplane::sai::RemoveMacsecSaResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sa_id); + + grpc::Status status = macsec->RemoveMacsecSa(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_macsec_sa_attribute(sai_object_id_t macsec_sa_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMacsecSaAttributeRequest req; - lemming::dataplane::sai::SetMacsecSaAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sa_id); - - - - -switch (attr->id) { - - case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: - req.set_configured_egress_xpn(attr->value.u64); - break; - case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: - req.set_minimum_ingress_xpn(attr->value.u64); - break; +sai_status_t l_set_macsec_sa_attribute(sai_object_id_t macsec_sa_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMacsecSaAttributeRequest req; + lemming::dataplane::sai::SetMacsecSaAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sa_id); + + switch (attr->id) { + case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: + req.set_configured_egress_xpn(attr->value.u64); + break; + case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: + req.set_minimum_ingress_xpn(attr->value.u64); + break; + } + + grpc::Status status = macsec->SetMacsecSaAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = macsec->SetMacsecSaAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_macsec_sa_attribute(sai_object_id_t macsec_sa_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecSaAttributeRequest req; + lemming::dataplane::sai::GetMacsecSaAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(macsec_sa_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_macsec_sa_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = macsec->GetMacsecSaAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: + attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai( + resp.attr().macsec_direction()); + break; + case SAI_MACSEC_SA_ATTR_SC_ID: + attr_list[i].value.oid = resp.attr().sc_id(); + break; + case SAI_MACSEC_SA_ATTR_AN: + attr_list[i].value.u8 = resp.attr().an(); + break; + case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: + attr_list[i].value.u64 = resp.attr().configured_egress_xpn(); + break; + case SAI_MACSEC_SA_ATTR_CURRENT_XPN: + attr_list[i].value.u64 = resp.attr().current_xpn(); + break; + case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: + attr_list[i].value.u64 = resp.attr().minimum_ingress_xpn(); + break; + case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: + attr_list[i].value.u32 = resp.attr().macsec_ssci(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_sa_attribute(sai_object_id_t macsec_sa_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecSaAttributeRequest req; - lemming::dataplane::sai::GetMacsecSaAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(macsec_sa_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_macsec_sa_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = macsec->GetMacsecSaAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MACSEC_SA_ATTR_MACSEC_DIRECTION: - attr_list[i].value.s32 = convert_sai_macsec_direction_t_to_sai(resp.attr().macsec_direction()); - break; - case SAI_MACSEC_SA_ATTR_SC_ID: - attr_list[i].value.oid = resp.attr().sc_id(); - break; - case SAI_MACSEC_SA_ATTR_AN: - attr_list[i].value.u8 = resp.attr().an(); - break; - case SAI_MACSEC_SA_ATTR_CONFIGURED_EGRESS_XPN: - attr_list[i].value.u64 = resp.attr().configured_egress_xpn(); - break; - case SAI_MACSEC_SA_ATTR_CURRENT_XPN: - attr_list[i].value.u64 = resp.attr().current_xpn(); - break; - case SAI_MACSEC_SA_ATTR_MINIMUM_INGRESS_XPN: - attr_list[i].value.u64 = resp.attr().minimum_ingress_xpn(); - break; - case SAI_MACSEC_SA_ATTR_MACSEC_SSCI: - attr_list[i].value.u32 = resp.attr().macsec_ssci(); - break; +sai_status_t l_get_macsec_sa_stats(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMacsecSaStatsRequest req; + lemming::dataplane::sai::GetMacsecSaStatsResponse resp; + grpc::ClientContext context; + req.set_oid(macsec_sa_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_macsec_sa_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = macsec->GetMacsecSaStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_macsec_sa_stats_ext(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_macsec_sa_stats(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMacsecSaStatsRequest req; - lemming::dataplane::sai::GetMacsecSaStatsResponse resp; - grpc::ClientContext context; - req.set_oid(macsec_sa_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_macsec_sa_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = macsec->GetMacsecSaStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_macsec_sa_stats_ext(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_macsec_sa_stats(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_macsec_sa_stats(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/macsec.h b/dataplane/standalone/sai/macsec.h index a320bd0e1..12ab56d9b 100644 --- a/dataplane/standalone/sai/macsec.h +++ b/dataplane/standalone/sai/macsec.h @@ -25,70 +25,131 @@ extern "C" { extern const sai_macsec_api_t l_macsec; - -sai_status_t l_create_macsec(sai_object_id_t *macsec_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_macsec(sai_object_id_t* macsec_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_macsec(sai_object_id_t macsec_id); -sai_status_t l_set_macsec_attribute(sai_object_id_t macsec_id, const sai_attribute_t *attr); +sai_status_t l_set_macsec_attribute(sai_object_id_t macsec_id, + const sai_attribute_t* attr); -sai_status_t l_get_macsec_attribute(sai_object_id_t macsec_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_macsec_attribute(sai_object_id_t macsec_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_macsec_port(sai_object_id_t *macsec_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_macsec_port(sai_object_id_t* macsec_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_macsec_port(sai_object_id_t macsec_port_id); -sai_status_t l_set_macsec_port_attribute(sai_object_id_t macsec_port_id, const sai_attribute_t *attr); +sai_status_t l_set_macsec_port_attribute(sai_object_id_t macsec_port_id, + const sai_attribute_t* attr); -sai_status_t l_get_macsec_port_attribute(sai_object_id_t macsec_port_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_macsec_port_attribute(sai_object_id_t macsec_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_macsec_port_stats(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_macsec_port_stats(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_macsec_port_stats_ext(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_macsec_port_stats_ext(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_macsec_port_stats(sai_object_id_t macsec_port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_macsec_port_stats(sai_object_id_t macsec_port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_macsec_flow(sai_object_id_t *macsec_flow_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_macsec_flow(sai_object_id_t* macsec_flow_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_macsec_flow(sai_object_id_t macsec_flow_id); -sai_status_t l_set_macsec_flow_attribute(sai_object_id_t macsec_flow_id, const sai_attribute_t *attr); +sai_status_t l_set_macsec_flow_attribute(sai_object_id_t macsec_flow_id, + const sai_attribute_t* attr); -sai_status_t l_get_macsec_flow_attribute(sai_object_id_t macsec_flow_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_macsec_flow_attribute(sai_object_id_t macsec_flow_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_macsec_flow_stats(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_macsec_flow_stats(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_macsec_flow_stats_ext(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_macsec_flow_stats_ext(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_macsec_flow_stats(sai_object_id_t macsec_flow_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_macsec_flow_stats(sai_object_id_t macsec_flow_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_macsec_sc(sai_object_id_t *macsec_sc_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_macsec_sc(sai_object_id_t* macsec_sc_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_macsec_sc(sai_object_id_t macsec_sc_id); -sai_status_t l_set_macsec_sc_attribute(sai_object_id_t macsec_sc_id, const sai_attribute_t *attr); +sai_status_t l_set_macsec_sc_attribute(sai_object_id_t macsec_sc_id, + const sai_attribute_t* attr); -sai_status_t l_get_macsec_sc_attribute(sai_object_id_t macsec_sc_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_macsec_sc_attribute(sai_object_id_t macsec_sc_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_macsec_sc_stats(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_macsec_sc_stats(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_macsec_sc_stats_ext(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_macsec_sc_stats_ext(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_macsec_sc_stats(sai_object_id_t macsec_sc_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_macsec_sc_stats(sai_object_id_t macsec_sc_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_macsec_sa(sai_object_id_t *macsec_sa_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_macsec_sa(sai_object_id_t* macsec_sa_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_macsec_sa(sai_object_id_t macsec_sa_id); -sai_status_t l_set_macsec_sa_attribute(sai_object_id_t macsec_sa_id, const sai_attribute_t *attr); - -sai_status_t l_get_macsec_sa_attribute(sai_object_id_t macsec_sa_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_macsec_sa_attribute(sai_object_id_t macsec_sa_id, + const sai_attribute_t* attr); -sai_status_t l_get_macsec_sa_stats(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_macsec_sa_attribute(sai_object_id_t macsec_sa_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_macsec_sa_stats_ext(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_macsec_sa_stats(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_macsec_sa_stats(sai_object_id_t macsec_sa_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_macsec_sa_stats_ext(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); +sai_status_t l_clear_macsec_sa_stats(sai_object_id_t macsec_sa_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_MACSEC_H_ diff --git a/dataplane/standalone/sai/mcast_fdb.cc b/dataplane/standalone/sai/mcast_fdb.cc index 10756085a..ca268adce 100644 --- a/dataplane/standalone/sai/mcast_fdb.cc +++ b/dataplane/standalone/sai/mcast_fdb.cc @@ -13,170 +13,167 @@ // limitations under the License. #include "dataplane/standalone/sai/mcast_fdb.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/mcast_fdb.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_mcast_fdb_api_t l_mcast_fdb = { - .create_mcast_fdb_entry = l_create_mcast_fdb_entry, - .remove_mcast_fdb_entry = l_remove_mcast_fdb_entry, - .set_mcast_fdb_entry_attribute = l_set_mcast_fdb_entry_attribute, - .get_mcast_fdb_entry_attribute = l_get_mcast_fdb_entry_attribute, + .create_mcast_fdb_entry = l_create_mcast_fdb_entry, + .remove_mcast_fdb_entry = l_remove_mcast_fdb_entry, + .set_mcast_fdb_entry_attribute = l_set_mcast_fdb_entry_attribute, + .get_mcast_fdb_entry_attribute = l_get_mcast_fdb_entry_attribute, }; - -lemming::dataplane::sai::CreateMcastFdbEntryRequest convert_create_mcast_fdb_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMcastFdbEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: - msg.set_group_id(attr_list[i].value.oid); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateMcastFdbEntryRequest +convert_create_mcast_fdb_entry(uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMcastFdbEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: + msg.set_group_id(attr_list[i].value.oid); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + } + } + return msg; } -sai_status_t l_create_mcast_fdb_entry(const sai_mcast_fdb_entry_t *mcast_fdb_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMcastFdbEntryRequest req = convert_create_mcast_fdb_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateMcastFdbEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = mcast_fdb->CreateMcastFdbEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_mcast_fdb_entry( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMcastFdbEntryRequest req = + convert_create_mcast_fdb_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateMcastFdbEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = mcast_fdb->CreateMcastFdbEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_mcast_fdb_entry(const sai_mcast_fdb_entry_t *mcast_fdb_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMcastFdbEntryRequest req; - lemming::dataplane::sai::RemoveMcastFdbEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = mcast_fdb->RemoveMcastFdbEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_mcast_fdb_entry( + const sai_mcast_fdb_entry_t* mcast_fdb_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMcastFdbEntryRequest req; + lemming::dataplane::sai::RemoveMcastFdbEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = mcast_fdb->RemoveMcastFdbEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_mcast_fdb_entry_attribute(const sai_mcast_fdb_entry_t *mcast_fdb_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMcastFdbEntryAttributeRequest req; - lemming::dataplane::sai::SetMcastFdbEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: - req.set_group_id(attr->value.oid); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; +sai_status_t l_set_mcast_fdb_entry_attribute( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMcastFdbEntryAttributeRequest req; + lemming::dataplane::sai::SetMcastFdbEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: + req.set_group_id(attr->value.oid); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + } + + grpc::Status status = + mcast_fdb->SetMcastFdbEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = mcast_fdb->SetMcastFdbEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_mcast_fdb_entry_attribute( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMcastFdbEntryAttributeRequest req; + lemming::dataplane::sai::GetMcastFdbEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_mcast_fdb_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + mcast_fdb->GetMcastFdbEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: + attr_list[i].value.oid = resp.attr().group_id(); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_mcast_fdb_entry_attribute(const sai_mcast_fdb_entry_t *mcast_fdb_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMcastFdbEntryAttributeRequest req; - lemming::dataplane::sai::GetMcastFdbEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_mcast_fdb_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = mcast_fdb->GetMcastFdbEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MCAST_FDB_ENTRY_ATTR_GROUP_ID: - attr_list[i].value.oid = resp.attr().group_id(); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_MCAST_FDB_ENTRY_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/mcast_fdb.h b/dataplane/standalone/sai/mcast_fdb.h index 168d81f2d..1caa2a419 100644 --- a/dataplane/standalone/sai/mcast_fdb.h +++ b/dataplane/standalone/sai/mcast_fdb.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_mcast_fdb_api_t l_mcast_fdb; +sai_status_t l_create_mcast_fdb_entry( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_mcast_fdb_entry(const sai_mcast_fdb_entry_t *mcast_fdb_entry, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_mcast_fdb_entry( + const sai_mcast_fdb_entry_t* mcast_fdb_entry); -sai_status_t l_remove_mcast_fdb_entry(const sai_mcast_fdb_entry_t *mcast_fdb_entry); - -sai_status_t l_set_mcast_fdb_entry_attribute(const sai_mcast_fdb_entry_t *mcast_fdb_entry, const sai_attribute_t *attr); - -sai_status_t l_get_mcast_fdb_entry_attribute(const sai_mcast_fdb_entry_t *mcast_fdb_entry, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_mcast_fdb_entry_attribute( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, const sai_attribute_t* attr); +sai_status_t l_get_mcast_fdb_entry_attribute( + const sai_mcast_fdb_entry_t* mcast_fdb_entry, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_MCAST_FDB_H_ diff --git a/dataplane/standalone/sai/mirror.cc b/dataplane/standalone/sai/mirror.cc index 8b6f3e752..75eff9b23 100644 --- a/dataplane/standalone/sai/mirror.cc +++ b/dataplane/standalone/sai/mirror.cc @@ -13,371 +13,393 @@ // limitations under the License. #include "dataplane/standalone/sai/mirror.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/mirror.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_mirror_api_t l_mirror = { - .create_mirror_session = l_create_mirror_session, - .remove_mirror_session = l_remove_mirror_session, - .set_mirror_session_attribute = l_set_mirror_session_attribute, - .get_mirror_session_attribute = l_get_mirror_session_attribute, + .create_mirror_session = l_create_mirror_session, + .remove_mirror_session = l_remove_mirror_session, + .set_mirror_session_attribute = l_set_mirror_session_attribute, + .get_mirror_session_attribute = l_get_mirror_session_attribute, }; +lemming::dataplane::sai::CreateMirrorSessionRequest +convert_create_mirror_session(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMirrorSessionRequest msg; -lemming::dataplane::sai::CreateMirrorSessionRequest convert_create_mirror_session(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MIRROR_SESSION_ATTR_TYPE: + msg.set_type( + convert_sai_mirror_session_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: + msg.set_monitor_port(attr_list[i].value.oid); + break; + case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: + msg.set_truncate_size(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: + msg.set_sample_rate(attr_list[i].value.u32); + break; + case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: + msg.set_congestion_mode( + convert_sai_mirror_session_congestion_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_MIRROR_SESSION_ATTR_TC: + msg.set_tc(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: + msg.set_vlan_tpid(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: + msg.set_vlan_pri(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: + msg.set_vlan_cfi(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: + msg.set_vlan_header_valid(attr_list[i].value.booldata); + break; + case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: + msg.set_erspan_encapsulation_type( + convert_sai_erspan_encapsulation_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: + msg.set_iphdr_version(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_TOS: + msg.set_tos(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_TTL: + msg.set_ttl(attr_list[i].value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: + msg.set_src_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: + msg.set_dst_ip_address( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: + msg.set_dst_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: + msg.set_gre_protocol_type(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: + msg.set_monitor_portlist_valid(attr_list[i].value.booldata); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: + msg.mutable_monitor_portlist()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_MIRROR_SESSION_ATTR_POLICER: + msg.set_policer(attr_list[i].value.oid); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: + msg.set_udp_src_port(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: + msg.set_udp_dst_port(attr_list[i].value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; +} -lemming::dataplane::sai::CreateMirrorSessionRequest msg; +sai_status_t l_create_mirror_session(sai_object_id_t* mirror_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::CreateMirrorSessionRequest req = + convert_create_mirror_session(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMirrorSessionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = mirror->CreateMirrorSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (mirror_session_id) { + *mirror_session_id = resp.oid(); + } -switch (attr_list[i].id) { - - case SAI_MIRROR_SESSION_ATTR_TYPE: - msg.set_type(convert_sai_mirror_session_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: - msg.set_monitor_port(attr_list[i].value.oid); - break; - case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: - msg.set_truncate_size(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: - msg.set_sample_rate(attr_list[i].value.u32); - break; - case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: - msg.set_congestion_mode(convert_sai_mirror_session_congestion_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MIRROR_SESSION_ATTR_TC: - msg.set_tc(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: - msg.set_vlan_tpid(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: - msg.set_vlan_pri(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: - msg.set_vlan_cfi(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: - msg.set_vlan_header_valid(attr_list[i].value.booldata); - break; - case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: - msg.set_erspan_encapsulation_type(convert_sai_erspan_encapsulation_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: - msg.set_iphdr_version(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_TOS: - msg.set_tos(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_TTL: - msg.set_ttl(attr_list[i].value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: - msg.set_src_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: - msg.set_dst_ip_address(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: - msg.set_src_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: - msg.set_dst_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: - msg.set_gre_protocol_type(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: - msg.set_monitor_portlist_valid(attr_list[i].value.booldata); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: - msg.mutable_monitor_portlist()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_MIRROR_SESSION_ATTR_POLICER: - msg.set_policer(attr_list[i].value.oid); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: - msg.set_udp_src_port(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: - msg.set_udp_dst_port(attr_list[i].value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_remove_mirror_session(sai_object_id_t mirror_session_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_mirror_session(sai_object_id_t *mirror_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMirrorSessionRequest req = convert_create_mirror_session(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMirrorSessionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = mirror->CreateMirrorSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (mirror_session_id) { - *mirror_session_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveMirrorSessionRequest req; + lemming::dataplane::sai::RemoveMirrorSessionResponse resp; + grpc::ClientContext context; + req.set_oid(mirror_session_id); -sai_status_t l_remove_mirror_session(sai_object_id_t mirror_session_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMirrorSessionRequest req; - lemming::dataplane::sai::RemoveMirrorSessionResponse resp; - grpc::ClientContext context; - req.set_oid(mirror_session_id); - - grpc::Status status = mirror->RemoveMirrorSession(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + grpc::Status status = mirror->RemoveMirrorSession(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_mirror_session_attribute(sai_object_id_t mirror_session_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMirrorSessionAttributeRequest req; - lemming::dataplane::sai::SetMirrorSessionAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(mirror_session_id); - - - +sai_status_t l_set_mirror_session_attribute(sai_object_id_t mirror_session_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr->id) { - - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: - req.set_monitor_port(attr->value.oid); - break; - case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: - req.set_truncate_size(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: - req.set_sample_rate(attr->value.u32); - break; - case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: - req.set_congestion_mode(convert_sai_mirror_session_congestion_mode_t_to_proto(attr->value.s32)); - break; - case SAI_MIRROR_SESSION_ATTR_TC: - req.set_tc(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: - req.set_vlan_tpid(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_ID: - req.set_vlan_id(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: - req.set_vlan_pri(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: - req.set_vlan_cfi(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: - req.set_vlan_header_valid(attr->value.booldata); - break; - case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: - req.set_iphdr_version(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_TOS: - req.set_tos(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_TTL: - req.set_ttl(attr->value.u8); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: - req.set_src_ip_address(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: - req.set_dst_ip_address(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: - req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: - req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: - req.set_gre_protocol_type(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: - req.mutable_monitor_portlist()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_MIRROR_SESSION_ATTR_POLICER: - req.set_policer(attr->value.oid); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: - req.set_udp_src_port(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: - req.set_udp_dst_port(attr->value.u16); - break; - case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; -} + lemming::dataplane::sai::SetMirrorSessionAttributeRequest req; + lemming::dataplane::sai::SetMirrorSessionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(mirror_session_id); - grpc::Status status = mirror->SetMirrorSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + switch (attr->id) { + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: + req.set_monitor_port(attr->value.oid); + break; + case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: + req.set_truncate_size(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: + req.set_sample_rate(attr->value.u32); + break; + case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: + req.set_congestion_mode( + convert_sai_mirror_session_congestion_mode_t_to_proto( + attr->value.s32)); + break; + case SAI_MIRROR_SESSION_ATTR_TC: + req.set_tc(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: + req.set_vlan_tpid(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_ID: + req.set_vlan_id(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: + req.set_vlan_pri(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: + req.set_vlan_cfi(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: + req.set_vlan_header_valid(attr->value.booldata); + break; + case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: + req.set_iphdr_version(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_TOS: + req.set_tos(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_TTL: + req.set_ttl(attr->value.u8); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: + req.set_src_ip_address(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: + req.set_dst_ip_address(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: + req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: + req.set_gre_protocol_type(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: + req.mutable_monitor_portlist()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_MIRROR_SESSION_ATTR_POLICER: + req.set_policer(attr->value.oid); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: + req.set_udp_src_port(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: + req.set_udp_dst_port(attr->value.u16); + break; + case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = mirror->SetMirrorSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_mirror_session_attribute(sai_object_id_t mirror_session_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMirrorSessionAttributeRequest req; - lemming::dataplane::sai::GetMirrorSessionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(mirror_session_id); +sai_status_t l_get_mirror_session_attribute(sai_object_id_t mirror_session_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_mirror_session_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = mirror->GetMirrorSessionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - + lemming::dataplane::sai::GetMirrorSessionAttributeRequest req; + lemming::dataplane::sai::GetMirrorSessionAttributeResponse resp; + grpc::ClientContext context; -switch (attr_list[i].id) { - - case SAI_MIRROR_SESSION_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_mirror_session_type_t_to_sai(resp.attr().type()); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: - attr_list[i].value.oid = resp.attr().monitor_port(); - break; - case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: - attr_list[i].value.u16 = resp.attr().truncate_size(); - break; - case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: - attr_list[i].value.u32 = resp.attr().sample_rate(); - break; - case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: - attr_list[i].value.s32 = convert_sai_mirror_session_congestion_mode_t_to_sai(resp.attr().congestion_mode()); - break; - case SAI_MIRROR_SESSION_ATTR_TC: - attr_list[i].value.u8 = resp.attr().tc(); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: - attr_list[i].value.u16 = resp.attr().vlan_tpid(); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_ID: - attr_list[i].value.u16 = resp.attr().vlan_id(); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: - attr_list[i].value.u8 = resp.attr().vlan_pri(); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: - attr_list[i].value.u8 = resp.attr().vlan_cfi(); - break; - case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: - attr_list[i].value.booldata = resp.attr().vlan_header_valid(); - break; - case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: - attr_list[i].value.s32 = convert_sai_erspan_encapsulation_type_t_to_sai(resp.attr().erspan_encapsulation_type()); - break; - case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: - attr_list[i].value.u8 = resp.attr().iphdr_version(); - break; - case SAI_MIRROR_SESSION_ATTR_TOS: - attr_list[i].value.u8 = resp.attr().tos(); - break; - case SAI_MIRROR_SESSION_ATTR_TTL: - attr_list[i].value.u8 = resp.attr().ttl(); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip_address()); - break; - case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip_address()); - break; - case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: - attr_list[i].value.u16 = resp.attr().gre_protocol_type(); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: - attr_list[i].value.booldata = resp.attr().monitor_portlist_valid(); - break; - case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().monitor_portlist(), &attr_list[i].value.objlist.count); - break; - case SAI_MIRROR_SESSION_ATTR_POLICER: - attr_list[i].value.oid = resp.attr().policer(); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: - attr_list[i].value.u16 = resp.attr().udp_src_port(); - break; - case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: - attr_list[i].value.u16 = resp.attr().udp_dst_port(); - break; - case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; -} + req.set_oid(mirror_session_id); - } - - return SAI_STATUS_SUCCESS; -} + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_mirror_session_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = mirror->GetMirrorSessionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MIRROR_SESSION_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_mirror_session_type_t_to_sai(resp.attr().type()); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORT: + attr_list[i].value.oid = resp.attr().monitor_port(); + break; + case SAI_MIRROR_SESSION_ATTR_TRUNCATE_SIZE: + attr_list[i].value.u16 = resp.attr().truncate_size(); + break; + case SAI_MIRROR_SESSION_ATTR_SAMPLE_RATE: + attr_list[i].value.u32 = resp.attr().sample_rate(); + break; + case SAI_MIRROR_SESSION_ATTR_CONGESTION_MODE: + attr_list[i].value.s32 = + convert_sai_mirror_session_congestion_mode_t_to_sai( + resp.attr().congestion_mode()); + break; + case SAI_MIRROR_SESSION_ATTR_TC: + attr_list[i].value.u8 = resp.attr().tc(); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_TPID: + attr_list[i].value.u16 = resp.attr().vlan_tpid(); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_ID: + attr_list[i].value.u16 = resp.attr().vlan_id(); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_PRI: + attr_list[i].value.u8 = resp.attr().vlan_pri(); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_CFI: + attr_list[i].value.u8 = resp.attr().vlan_cfi(); + break; + case SAI_MIRROR_SESSION_ATTR_VLAN_HEADER_VALID: + attr_list[i].value.booldata = resp.attr().vlan_header_valid(); + break; + case SAI_MIRROR_SESSION_ATTR_ERSPAN_ENCAPSULATION_TYPE: + attr_list[i].value.s32 = convert_sai_erspan_encapsulation_type_t_to_sai( + resp.attr().erspan_encapsulation_type()); + break; + case SAI_MIRROR_SESSION_ATTR_IPHDR_VERSION: + attr_list[i].value.u8 = resp.attr().iphdr_version(); + break; + case SAI_MIRROR_SESSION_ATTR_TOS: + attr_list[i].value.u8 = resp.attr().tos(); + break; + case SAI_MIRROR_SESSION_ATTR_TTL: + attr_list[i].value.u8 = resp.attr().ttl(); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().src_ip_address()); + break; + case SAI_MIRROR_SESSION_ATTR_DST_IP_ADDRESS: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().dst_ip_address()); + break; + case SAI_MIRROR_SESSION_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_MIRROR_SESSION_ATTR_DST_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_MIRROR_SESSION_ATTR_GRE_PROTOCOL_TYPE: + attr_list[i].value.u16 = resp.attr().gre_protocol_type(); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST_VALID: + attr_list[i].value.booldata = resp.attr().monitor_portlist_valid(); + break; + case SAI_MIRROR_SESSION_ATTR_MONITOR_PORTLIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().monitor_portlist(), + &attr_list[i].value.objlist.count); + break; + case SAI_MIRROR_SESSION_ATTR_POLICER: + attr_list[i].value.oid = resp.attr().policer(); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_SRC_PORT: + attr_list[i].value.u16 = resp.attr().udp_src_port(); + break; + case SAI_MIRROR_SESSION_ATTR_UDP_DST_PORT: + attr_list[i].value.u16 = resp.attr().udp_dst_port(); + break; + case SAI_MIRROR_SESSION_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/mirror.h b/dataplane/standalone/sai/mirror.h index 44d0196d3..3b55025a7 100644 --- a/dataplane/standalone/sai/mirror.h +++ b/dataplane/standalone/sai/mirror.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_mirror_api_t l_mirror; - -sai_status_t l_create_mirror_session(sai_object_id_t *mirror_session_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_mirror_session(sai_object_id_t* mirror_session_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_mirror_session(sai_object_id_t mirror_session_id); -sai_status_t l_set_mirror_session_attribute(sai_object_id_t mirror_session_id, const sai_attribute_t *attr); - -sai_status_t l_get_mirror_session_attribute(sai_object_id_t mirror_session_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_mirror_session_attribute(sai_object_id_t mirror_session_id, + const sai_attribute_t* attr); +sai_status_t l_get_mirror_session_attribute(sai_object_id_t mirror_session_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_MIRROR_H_ diff --git a/dataplane/standalone/sai/mpls.cc b/dataplane/standalone/sai/mpls.cc index 403e0fa4e..620a8054a 100644 --- a/dataplane/standalone/sai/mpls.cc +++ b/dataplane/standalone/sai/mpls.cc @@ -13,322 +13,338 @@ // limitations under the License. #include "dataplane/standalone/sai/mpls.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/mpls.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_mpls_api_t l_mpls = { - .create_inseg_entry = l_create_inseg_entry, - .remove_inseg_entry = l_remove_inseg_entry, - .set_inseg_entry_attribute = l_set_inseg_entry_attribute, - .get_inseg_entry_attribute = l_get_inseg_entry_attribute, - .create_inseg_entries = l_create_inseg_entries, - .remove_inseg_entries = l_remove_inseg_entries, - .set_inseg_entries_attribute = l_set_inseg_entries_attribute, - .get_inseg_entries_attribute = l_get_inseg_entries_attribute, + .create_inseg_entry = l_create_inseg_entry, + .remove_inseg_entry = l_remove_inseg_entry, + .set_inseg_entry_attribute = l_set_inseg_entry_attribute, + .get_inseg_entry_attribute = l_get_inseg_entry_attribute, + .create_inseg_entries = l_create_inseg_entries, + .remove_inseg_entries = l_remove_inseg_entries, + .set_inseg_entries_attribute = l_set_inseg_entries_attribute, + .get_inseg_entries_attribute = l_get_inseg_entries_attribute, }; +lemming::dataplane::sai::CreateInsegEntryRequest convert_create_inseg_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateInsegEntryRequest msg; -lemming::dataplane::sai::CreateInsegEntryRequest convert_create_inseg_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateInsegEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: - msg.set_num_of_pop(attr_list[i].value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: - msg.set_trap_priority(attr_list[i].value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: - msg.set_next_hop_id(attr_list[i].value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: - msg.set_psc_type(convert_sai_inseg_entry_psc_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_QOS_TC: - msg.set_qos_tc(attr_list[i].value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: - msg.set_mpls_exp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: - msg.set_mpls_exp_to_color_map(attr_list[i].value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: - msg.set_pop_ttl_mode(convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: - msg.set_pop_qos_mode(convert_sai_inseg_entry_pop_qos_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: + msg.set_num_of_pop(attr_list[i].value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: + msg.set_trap_priority(attr_list[i].value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: + msg.set_next_hop_id(attr_list[i].value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: + msg.set_psc_type(convert_sai_inseg_entry_psc_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_QOS_TC: + msg.set_qos_tc(attr_list[i].value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: + msg.set_mpls_exp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: + msg.set_mpls_exp_to_color_map(attr_list[i].value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: + msg.set_pop_ttl_mode(convert_sai_inseg_entry_pop_ttl_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: + msg.set_pop_qos_mode(convert_sai_inseg_entry_pop_qos_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_inseg_entry(const sai_inseg_entry_t* inseg_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_inseg_entry(const sai_inseg_entry_t *inseg_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateInsegEntryRequest req = convert_create_inseg_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateInsegEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = mpls->CreateInsegEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::CreateInsegEntryRequest req = + convert_create_inseg_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateInsegEntryResponse resp; + grpc::ClientContext context; -sai_status_t l_remove_inseg_entry(const sai_inseg_entry_t *inseg_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveInsegEntryRequest req; - lemming::dataplane::sai::RemoveInsegEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = mpls->RemoveInsegEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = mpls->CreateInsegEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_set_inseg_entry_attribute(const sai_inseg_entry_t *inseg_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetInsegEntryAttributeRequest req; - lemming::dataplane::sai::SetInsegEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: - req.set_num_of_pop(attr->value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: - req.set_trap_priority(attr->value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: - req.set_next_hop_id(attr->value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: - req.set_psc_type(convert_sai_inseg_entry_psc_type_t_to_proto(attr->value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_QOS_TC: - req.set_qos_tc(attr->value.u8); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: - req.set_mpls_exp_to_tc_map(attr->value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: - req.set_mpls_exp_to_color_map(attr->value.oid); - break; - case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: - req.set_pop_ttl_mode(convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(attr->value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: - req.set_pop_qos_mode(convert_sai_inseg_entry_pop_qos_mode_t_to_proto(attr->value.s32)); - break; - case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; + return SAI_STATUS_SUCCESS; } - grpc::Status status = mpls->SetInsegEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_remove_inseg_entry(const sai_inseg_entry_t* inseg_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveInsegEntryRequest req; + lemming::dataplane::sai::RemoveInsegEntryResponse resp; + grpc::ClientContext context; -sai_status_t l_get_inseg_entry_attribute(const sai_inseg_entry_t *inseg_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetInsegEntryAttributeRequest req; - lemming::dataplane::sai::GetInsegEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_inseg_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = mpls->GetInsegEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: - attr_list[i].value.u8 = resp.attr().num_of_pop(); - break; - case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: - attr_list[i].value.u8 = resp.attr().trap_priority(); - break; - case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: - attr_list[i].value.oid = resp.attr().next_hop_id(); - break; - case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: - attr_list[i].value.s32 = convert_sai_inseg_entry_psc_type_t_to_sai(resp.attr().psc_type()); - break; - case SAI_INSEG_ENTRY_ATTR_QOS_TC: - attr_list[i].value.u8 = resp.attr().qos_tc(); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().mpls_exp_to_tc_map(); - break; - case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().mpls_exp_to_color_map(); - break; - case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: - attr_list[i].value.s32 = convert_sai_inseg_entry_pop_ttl_mode_t_to_sai(resp.attr().pop_ttl_mode()); - break; - case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: - attr_list[i].value.s32 = convert_sai_inseg_entry_pop_qos_mode_t_to_sai(resp.attr().pop_qos_mode()); - break; - case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; + grpc::Status status = mpls->RemoveInsegEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_inseg_entry_attribute(const sai_inseg_entry_t* inseg_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetInsegEntryAttributeRequest req; + lemming::dataplane::sai::SetInsegEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: + req.set_num_of_pop(attr->value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: + req.set_trap_priority(attr->value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: + req.set_next_hop_id(attr->value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: + req.set_psc_type( + convert_sai_inseg_entry_psc_type_t_to_proto(attr->value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_QOS_TC: + req.set_qos_tc(attr->value.u8); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: + req.set_mpls_exp_to_tc_map(attr->value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: + req.set_mpls_exp_to_color_map(attr->value.oid); + break; + case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: + req.set_pop_ttl_mode( + convert_sai_inseg_entry_pop_ttl_mode_t_to_proto(attr->value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: + req.set_pop_qos_mode( + convert_sai_inseg_entry_pop_qos_mode_t_to_proto(attr->value.s32)); + break; + case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = mpls->SetInsegEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_inseg_entries(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateInsegEntriesRequest req; - lemming::dataplane::sai::CreateInsegEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_inseg_entry(attr_count[i], attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = mpls->CreateInsegEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_inseg_entry_attribute(const sai_inseg_entry_t* inseg_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetInsegEntryAttributeRequest req; + lemming::dataplane::sai::GetInsegEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_inseg_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = mpls->GetInsegEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_INSEG_ENTRY_ATTR_NUM_OF_POP: + attr_list[i].value.u8 = resp.attr().num_of_pop(); + break; + case SAI_INSEG_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_INSEG_ENTRY_ATTR_TRAP_PRIORITY: + attr_list[i].value.u8 = resp.attr().trap_priority(); + break; + case SAI_INSEG_ENTRY_ATTR_NEXT_HOP_ID: + attr_list[i].value.oid = resp.attr().next_hop_id(); + break; + case SAI_INSEG_ENTRY_ATTR_PSC_TYPE: + attr_list[i].value.s32 = + convert_sai_inseg_entry_psc_type_t_to_sai(resp.attr().psc_type()); + break; + case SAI_INSEG_ENTRY_ATTR_QOS_TC: + attr_list[i].value.u8 = resp.attr().qos_tc(); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().mpls_exp_to_tc_map(); + break; + case SAI_INSEG_ENTRY_ATTR_MPLS_EXP_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().mpls_exp_to_color_map(); + break; + case SAI_INSEG_ENTRY_ATTR_POP_TTL_MODE: + attr_list[i].value.s32 = convert_sai_inseg_entry_pop_ttl_mode_t_to_sai( + resp.attr().pop_ttl_mode()); + break; + case SAI_INSEG_ENTRY_ATTR_POP_QOS_MODE: + attr_list[i].value.s32 = convert_sai_inseg_entry_pop_qos_mode_t_to_sai( + resp.attr().pop_qos_mode()); + break; + case SAI_INSEG_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_inseg_entries(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveInsegEntriesRequest req; - lemming::dataplane::sai::RemoveInsegEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - - } - - grpc::Status status = mpls->RemoveInsegEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_inseg_entries(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateInsegEntriesRequest req; + lemming::dataplane::sai::CreateInsegEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_inseg_entry(attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = mpls->CreateInsegEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_inseg_entries_attribute(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_remove_inseg_entries(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveInsegEntriesRequest req; + lemming::dataplane::sai::RemoveInsegEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + } + + grpc::Status status = mpls->RemoveInsegEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_inseg_entries_attribute(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_inseg_entries_attribute(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t l_get_inseg_entries_attribute(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} diff --git a/dataplane/standalone/sai/mpls.h b/dataplane/standalone/sai/mpls.h index 7703c33c6..6746badba 100644 --- a/dataplane/standalone/sai/mpls.h +++ b/dataplane/standalone/sai/mpls.h @@ -25,22 +25,42 @@ extern "C" { extern const sai_mpls_api_t l_mpls; +sai_status_t l_create_inseg_entry(const sai_inseg_entry_t* inseg_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_inseg_entry(const sai_inseg_entry_t *inseg_entry, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_inseg_entry(const sai_inseg_entry_t* inseg_entry); -sai_status_t l_remove_inseg_entry(const sai_inseg_entry_t *inseg_entry); +sai_status_t l_set_inseg_entry_attribute(const sai_inseg_entry_t* inseg_entry, + const sai_attribute_t* attr); -sai_status_t l_set_inseg_entry_attribute(const sai_inseg_entry_t *inseg_entry, const sai_attribute_t *attr); +sai_status_t l_get_inseg_entry_attribute(const sai_inseg_entry_t* inseg_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_inseg_entry_attribute(const sai_inseg_entry_t *inseg_entry, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_create_inseg_entries(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_create_inseg_entries(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_remove_inseg_entries(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_remove_inseg_entries(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_inseg_entries_attribute(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_inseg_entries_attribute(uint32_t object_count, const sai_inseg_entry_t *inseg_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_set_inseg_entries_attribute(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); +sai_status_t l_get_inseg_entries_attribute(uint32_t object_count, + const sai_inseg_entry_t* inseg_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_MPLS_H_ diff --git a/dataplane/standalone/sai/my_mac.cc b/dataplane/standalone/sai/my_mac.cc index 2c508cec4..fdd3fe6ae 100644 --- a/dataplane/standalone/sai/my_mac.cc +++ b/dataplane/standalone/sai/my_mac.cc @@ -13,179 +13,178 @@ // limitations under the License. #include "dataplane/standalone/sai/my_mac.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/my_mac.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_my_mac_api_t l_my_mac = { - .create_my_mac = l_create_my_mac, - .remove_my_mac = l_remove_my_mac, - .set_my_mac_attribute = l_set_my_mac_attribute, - .get_my_mac_attribute = l_get_my_mac_attribute, + .create_my_mac = l_create_my_mac, + .remove_my_mac = l_remove_my_mac, + .set_my_mac_attribute = l_set_my_mac_attribute, + .get_my_mac_attribute = l_get_my_mac_attribute, }; - -lemming::dataplane::sai::CreateMyMacRequest convert_create_my_mac(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMyMacRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MY_MAC_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u32); - break; - case SAI_MY_MAC_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_MY_MAC_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.u16); - break; - case SAI_MY_MAC_ATTR_MAC_ADDRESS: - msg.set_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: - msg.set_mac_address_mask(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; +lemming::dataplane::sai::CreateMyMacRequest convert_create_my_mac( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMyMacRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MY_MAC_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u32); + break; + case SAI_MY_MAC_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_MY_MAC_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.u16); + break; + case SAI_MY_MAC_ATTR_MAC_ADDRESS: + msg.set_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: + msg.set_mac_address_mask(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_my_mac(sai_object_id_t *my_mac_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMyMacRequest req = convert_create_my_mac(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateMyMacResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = my_mac->CreateMyMac(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (my_mac_id) { - *my_mac_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_my_mac(sai_object_id_t* my_mac_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMyMacRequest req = + convert_create_my_mac(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateMyMacResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = my_mac->CreateMyMac(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (my_mac_id) { + *my_mac_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_my_mac(sai_object_id_t my_mac_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMyMacRequest req; - lemming::dataplane::sai::RemoveMyMacResponse resp; - grpc::ClientContext context; - req.set_oid(my_mac_id); - - grpc::Status status = my_mac->RemoveMyMac(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_my_mac_attribute(sai_object_id_t my_mac_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMyMacAttributeRequest req; - lemming::dataplane::sai::SetMyMacAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(my_mac_id); - - - - -switch (attr->id) { - - case SAI_MY_MAC_ATTR_PRIORITY: - req.set_priority(attr->value.u32); - break; -} - - grpc::Status status = my_mac->SetMyMacAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMyMacRequest req; + lemming::dataplane::sai::RemoveMyMacResponse resp; + grpc::ClientContext context; + req.set_oid(my_mac_id); + + grpc::Status status = my_mac->RemoveMyMac(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_my_mac_attribute(sai_object_id_t my_mac_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMyMacAttributeRequest req; - lemming::dataplane::sai::GetMyMacAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(my_mac_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_my_mac_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = my_mac->GetMyMacAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MY_MAC_ATTR_PRIORITY: - attr_list[i].value.u32 = resp.attr().priority(); - break; - case SAI_MY_MAC_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_MY_MAC_ATTR_VLAN_ID: - attr_list[i].value.u16 = resp.attr().vlan_id(); - break; - case SAI_MY_MAC_ATTR_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: - memcpy(attr_list[i].value.mac, resp.attr().mac_address_mask().data(), sizeof(sai_mac_t)); - break; +sai_status_t l_set_my_mac_attribute(sai_object_id_t my_mac_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMyMacAttributeRequest req; + lemming::dataplane::sai::SetMyMacAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(my_mac_id); + + switch (attr->id) { + case SAI_MY_MAC_ATTR_PRIORITY: + req.set_priority(attr->value.u32); + break; + } + + grpc::Status status = my_mac->SetMyMacAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_my_mac_attribute(sai_object_id_t my_mac_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMyMacAttributeRequest req; + lemming::dataplane::sai::GetMyMacAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(my_mac_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_my_mac_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = my_mac->GetMyMacAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MY_MAC_ATTR_PRIORITY: + attr_list[i].value.u32 = resp.attr().priority(); + break; + case SAI_MY_MAC_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_MY_MAC_ATTR_VLAN_ID: + attr_list[i].value.u16 = resp.attr().vlan_id(); + break; + case SAI_MY_MAC_ATTR_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_MY_MAC_ATTR_MAC_ADDRESS_MASK: + memcpy(attr_list[i].value.mac, resp.attr().mac_address_mask().data(), + sizeof(sai_mac_t)); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/my_mac.h b/dataplane/standalone/sai/my_mac.h index cadb411cf..c6cb169fb 100644 --- a/dataplane/standalone/sai/my_mac.h +++ b/dataplane/standalone/sai/my_mac.h @@ -25,14 +25,17 @@ extern "C" { extern const sai_my_mac_api_t l_my_mac; - -sai_status_t l_create_my_mac(sai_object_id_t *my_mac_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_my_mac(sai_object_id_t* my_mac_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_my_mac(sai_object_id_t my_mac_id); -sai_status_t l_set_my_mac_attribute(sai_object_id_t my_mac_id, const sai_attribute_t *attr); - -sai_status_t l_get_my_mac_attribute(sai_object_id_t my_mac_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_my_mac_attribute(sai_object_id_t my_mac_id, + const sai_attribute_t* attr); +sai_status_t l_get_my_mac_attribute(sai_object_id_t my_mac_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_MY_MAC_H_ diff --git a/dataplane/standalone/sai/nat.cc b/dataplane/standalone/sai/nat.cc index b1f0b812b..73d65ab51 100644 --- a/dataplane/standalone/sai/nat.cc +++ b/dataplane/standalone/sai/nat.cc @@ -13,554 +13,565 @@ // limitations under the License. #include "dataplane/standalone/sai/nat.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/nat.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_nat_api_t l_nat = { - .create_nat_entry = l_create_nat_entry, - .remove_nat_entry = l_remove_nat_entry, - .set_nat_entry_attribute = l_set_nat_entry_attribute, - .get_nat_entry_attribute = l_get_nat_entry_attribute, - .create_nat_entries = l_create_nat_entries, - .remove_nat_entries = l_remove_nat_entries, - .set_nat_entries_attribute = l_set_nat_entries_attribute, - .get_nat_entries_attribute = l_get_nat_entries_attribute, - .create_nat_zone_counter = l_create_nat_zone_counter, - .remove_nat_zone_counter = l_remove_nat_zone_counter, - .set_nat_zone_counter_attribute = l_set_nat_zone_counter_attribute, - .get_nat_zone_counter_attribute = l_get_nat_zone_counter_attribute, + .create_nat_entry = l_create_nat_entry, + .remove_nat_entry = l_remove_nat_entry, + .set_nat_entry_attribute = l_set_nat_entry_attribute, + .get_nat_entry_attribute = l_get_nat_entry_attribute, + .create_nat_entries = l_create_nat_entries, + .remove_nat_entries = l_remove_nat_entries, + .set_nat_entries_attribute = l_set_nat_entries_attribute, + .get_nat_entries_attribute = l_get_nat_entries_attribute, + .create_nat_zone_counter = l_create_nat_zone_counter, + .remove_nat_zone_counter = l_remove_nat_zone_counter, + .set_nat_zone_counter_attribute = l_set_nat_zone_counter_attribute, + .get_nat_zone_counter_attribute = l_get_nat_zone_counter_attribute, }; - -lemming::dataplane::sai::CreateNatEntryRequest convert_create_nat_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNatEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NAT_ENTRY_ATTR_NAT_TYPE: - msg.set_nat_type(convert_sai_nat_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP: - msg.set_src_ip(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: - msg.set_src_ip_mask(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_VR_ID: - msg.set_vr_id(attr_list[i].value.oid); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP: - msg.set_dst_ip(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: - msg.set_dst_ip_mask(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: - msg.set_l4_src_port(attr_list[i].value.u16); - break; - case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: - msg.set_l4_dst_port(attr_list[i].value.u16); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: - msg.set_enable_packet_count(attr_list[i].value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: - msg.set_packet_count(attr_list[i].value.u64); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: - msg.set_enable_byte_count(attr_list[i].value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: - msg.set_byte_count(attr_list[i].value.u64); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: - msg.set_hit_bit_cor(attr_list[i].value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT: - msg.set_hit_bit(attr_list[i].value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_AGING_TIME: - msg.set_aging_time(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateNatZoneCounterRequest convert_create_nat_zone_counter(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNatZoneCounterRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: - msg.set_nat_type(convert_sai_nat_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: - msg.set_zone_id(attr_list[i].value.u8); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: - msg.set_enable_discard(attr_list[i].value.booldata); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: - msg.set_discard_packet_count(attr_list[i].value.u64); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: - msg.set_enable_translation_needed(attr_list[i].value.booldata); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: - msg.set_translation_needed_packet_count(attr_list[i].value.u64); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: - msg.set_enable_translations(attr_list[i].value.booldata); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: - msg.set_translations_packet_count(attr_list[i].value.u64); - break; -} - -} -return msg; -} - -sai_status_t l_create_nat_entry(const sai_nat_entry_t *nat_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNatEntryRequest req = convert_create_nat_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateNatEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = nat->CreateNatEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateNatEntryRequest convert_create_nat_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNatEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NAT_ENTRY_ATTR_NAT_TYPE: + msg.set_nat_type( + convert_sai_nat_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP: + msg.set_src_ip(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: + msg.set_src_ip_mask(&attr_list[i].value.ip4, + sizeof(attr_list[i].value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_VR_ID: + msg.set_vr_id(attr_list[i].value.oid); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP: + msg.set_dst_ip(&attr_list[i].value.ip4, sizeof(attr_list[i].value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: + msg.set_dst_ip_mask(&attr_list[i].value.ip4, + sizeof(attr_list[i].value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: + msg.set_l4_src_port(attr_list[i].value.u16); + break; + case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: + msg.set_l4_dst_port(attr_list[i].value.u16); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: + msg.set_enable_packet_count(attr_list[i].value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: + msg.set_packet_count(attr_list[i].value.u64); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: + msg.set_enable_byte_count(attr_list[i].value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: + msg.set_byte_count(attr_list[i].value.u64); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: + msg.set_hit_bit_cor(attr_list[i].value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT: + msg.set_hit_bit(attr_list[i].value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_AGING_TIME: + msg.set_aging_time(attr_list[i].value.u32); + break; + } + } + return msg; } -sai_status_t l_remove_nat_entry(const sai_nat_entry_t *nat_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNatEntryRequest req; - lemming::dataplane::sai::RemoveNatEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = nat->RemoveNatEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateNatZoneCounterRequest +convert_create_nat_zone_counter(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNatZoneCounterRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: + msg.set_nat_type( + convert_sai_nat_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: + msg.set_zone_id(attr_list[i].value.u8); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: + msg.set_enable_discard(attr_list[i].value.booldata); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: + msg.set_discard_packet_count(attr_list[i].value.u64); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: + msg.set_enable_translation_needed(attr_list[i].value.booldata); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: + msg.set_translation_needed_packet_count(attr_list[i].value.u64); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: + msg.set_enable_translations(attr_list[i].value.booldata); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: + msg.set_translations_packet_count(attr_list[i].value.u64); + break; + } + } + return msg; } -sai_status_t l_set_nat_entry_attribute(const sai_nat_entry_t *nat_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNatEntryAttributeRequest req; - lemming::dataplane::sai::SetNatEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_NAT_ENTRY_ATTR_NAT_TYPE: - req.set_nat_type(convert_sai_nat_type_t_to_proto(attr->value.s32)); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP: - req.set_src_ip(&attr->value.ip4, sizeof(attr->value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: - req.set_src_ip_mask(&attr->value.ip4, sizeof(attr->value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_VR_ID: - req.set_vr_id(attr->value.oid); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP: - req.set_dst_ip(&attr->value.ip4, sizeof(attr->value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: - req.set_dst_ip_mask(&attr->value.ip4, sizeof(attr->value.ip4)); - break; - case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: - req.set_l4_src_port(attr->value.u16); - break; - case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: - req.set_l4_dst_port(attr->value.u16); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: - req.set_enable_packet_count(attr->value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: - req.set_packet_count(attr->value.u64); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: - req.set_enable_byte_count(attr->value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: - req.set_byte_count(attr->value.u64); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: - req.set_hit_bit_cor(attr->value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT: - req.set_hit_bit(attr->value.booldata); - break; - case SAI_NAT_ENTRY_ATTR_AGING_TIME: - req.set_aging_time(attr->value.u32); - break; +sai_status_t l_create_nat_entry(const sai_nat_entry_t* nat_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNatEntryRequest req = + convert_create_nat_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateNatEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = nat->CreateNatEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = nat->SetNatEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_nat_entry(const sai_nat_entry_t* nat_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNatEntryRequest req; + lemming::dataplane::sai::RemoveNatEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = nat->RemoveNatEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_nat_entry_attribute(const sai_nat_entry_t *nat_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNatEntryAttributeRequest req; - lemming::dataplane::sai::GetNatEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_nat_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = nat->GetNatEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NAT_ENTRY_ATTR_NAT_TYPE: - attr_list[i].value.s32 = convert_sai_nat_type_t_to_sai(resp.attr().nat_type()); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP: - memcpy(&attr_list[i].value.ip4, resp.attr().src_ip().data(), sizeof(sai_ip4_t)); - break; - case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: - memcpy(&attr_list[i].value.ip4, resp.attr().src_ip_mask().data(), sizeof(sai_ip4_t)); - break; - case SAI_NAT_ENTRY_ATTR_VR_ID: - attr_list[i].value.oid = resp.attr().vr_id(); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP: - memcpy(&attr_list[i].value.ip4, resp.attr().dst_ip().data(), sizeof(sai_ip4_t)); - break; - case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: - memcpy(&attr_list[i].value.ip4, resp.attr().dst_ip_mask().data(), sizeof(sai_ip4_t)); - break; - case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: - attr_list[i].value.u16 = resp.attr().l4_src_port(); - break; - case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: - attr_list[i].value.u16 = resp.attr().l4_dst_port(); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: - attr_list[i].value.booldata = resp.attr().enable_packet_count(); - break; - case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: - attr_list[i].value.u64 = resp.attr().packet_count(); - break; - case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: - attr_list[i].value.booldata = resp.attr().enable_byte_count(); - break; - case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: - attr_list[i].value.u64 = resp.attr().byte_count(); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: - attr_list[i].value.booldata = resp.attr().hit_bit_cor(); - break; - case SAI_NAT_ENTRY_ATTR_HIT_BIT: - attr_list[i].value.booldata = resp.attr().hit_bit(); - break; - case SAI_NAT_ENTRY_ATTR_AGING_TIME: - attr_list[i].value.u32 = resp.attr().aging_time(); - break; +sai_status_t l_set_nat_entry_attribute(const sai_nat_entry_t* nat_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNatEntryAttributeRequest req; + lemming::dataplane::sai::SetNatEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_NAT_ENTRY_ATTR_NAT_TYPE: + req.set_nat_type(convert_sai_nat_type_t_to_proto(attr->value.s32)); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP: + req.set_src_ip(&attr->value.ip4, sizeof(attr->value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: + req.set_src_ip_mask(&attr->value.ip4, sizeof(attr->value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_VR_ID: + req.set_vr_id(attr->value.oid); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP: + req.set_dst_ip(&attr->value.ip4, sizeof(attr->value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: + req.set_dst_ip_mask(&attr->value.ip4, sizeof(attr->value.ip4)); + break; + case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: + req.set_l4_src_port(attr->value.u16); + break; + case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: + req.set_l4_dst_port(attr->value.u16); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: + req.set_enable_packet_count(attr->value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: + req.set_packet_count(attr->value.u64); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: + req.set_enable_byte_count(attr->value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: + req.set_byte_count(attr->value.u64); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: + req.set_hit_bit_cor(attr->value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT: + req.set_hit_bit(attr->value.booldata); + break; + case SAI_NAT_ENTRY_ATTR_AGING_TIME: + req.set_aging_time(attr->value.u32); + break; + } + + grpc::Status status = nat->SetNatEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_nat_entry_attribute(const sai_nat_entry_t* nat_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNatEntryAttributeRequest req; + lemming::dataplane::sai::GetNatEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_nat_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = nat->GetNatEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NAT_ENTRY_ATTR_NAT_TYPE: + attr_list[i].value.s32 = + convert_sai_nat_type_t_to_sai(resp.attr().nat_type()); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP: + memcpy(&attr_list[i].value.ip4, resp.attr().src_ip().data(), + sizeof(sai_ip4_t)); + break; + case SAI_NAT_ENTRY_ATTR_SRC_IP_MASK: + memcpy(&attr_list[i].value.ip4, resp.attr().src_ip_mask().data(), + sizeof(sai_ip4_t)); + break; + case SAI_NAT_ENTRY_ATTR_VR_ID: + attr_list[i].value.oid = resp.attr().vr_id(); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP: + memcpy(&attr_list[i].value.ip4, resp.attr().dst_ip().data(), + sizeof(sai_ip4_t)); + break; + case SAI_NAT_ENTRY_ATTR_DST_IP_MASK: + memcpy(&attr_list[i].value.ip4, resp.attr().dst_ip_mask().data(), + sizeof(sai_ip4_t)); + break; + case SAI_NAT_ENTRY_ATTR_L4_SRC_PORT: + attr_list[i].value.u16 = resp.attr().l4_src_port(); + break; + case SAI_NAT_ENTRY_ATTR_L4_DST_PORT: + attr_list[i].value.u16 = resp.attr().l4_dst_port(); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_PACKET_COUNT: + attr_list[i].value.booldata = resp.attr().enable_packet_count(); + break; + case SAI_NAT_ENTRY_ATTR_PACKET_COUNT: + attr_list[i].value.u64 = resp.attr().packet_count(); + break; + case SAI_NAT_ENTRY_ATTR_ENABLE_BYTE_COUNT: + attr_list[i].value.booldata = resp.attr().enable_byte_count(); + break; + case SAI_NAT_ENTRY_ATTR_BYTE_COUNT: + attr_list[i].value.u64 = resp.attr().byte_count(); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT_COR: + attr_list[i].value.booldata = resp.attr().hit_bit_cor(); + break; + case SAI_NAT_ENTRY_ATTR_HIT_BIT: + attr_list[i].value.booldata = resp.attr().hit_bit(); + break; + case SAI_NAT_ENTRY_ATTR_AGING_TIME: + attr_list[i].value.u32 = resp.attr().aging_time(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_nat_entries(uint32_t object_count, const sai_nat_entry_t *nat_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNatEntriesRequest req; - lemming::dataplane::sai::CreateNatEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_nat_entry(attr_count[i], attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = nat->CreateNatEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_nat_entries(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNatEntriesRequest req; + lemming::dataplane::sai::CreateNatEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_nat_entry(attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = nat->CreateNatEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_nat_entries(uint32_t object_count, const sai_nat_entry_t *nat_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNatEntriesRequest req; - lemming::dataplane::sai::RemoveNatEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - - } - - grpc::Status status = nat->RemoveNatEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_nat_entries(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNatEntriesRequest req; + lemming::dataplane::sai::RemoveNatEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + } + + grpc::Status status = nat->RemoveNatEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_nat_entries_attribute(uint32_t object_count, const sai_nat_entry_t *nat_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_nat_entries_attribute(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_get_nat_entries_attribute(uint32_t object_count, const sai_nat_entry_t *nat_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_get_nat_entries_attribute(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_create_nat_zone_counter(sai_object_id_t *nat_zone_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNatZoneCounterRequest req = convert_create_nat_zone_counter(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateNatZoneCounterResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = nat->CreateNatZoneCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (nat_zone_counter_id) { - *nat_zone_counter_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_nat_zone_counter(sai_object_id_t* nat_zone_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNatZoneCounterRequest req = + convert_create_nat_zone_counter(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateNatZoneCounterResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = nat->CreateNatZoneCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (nat_zone_counter_id) { + *nat_zone_counter_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_nat_zone_counter(sai_object_id_t nat_zone_counter_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNatZoneCounterRequest req; - lemming::dataplane::sai::RemoveNatZoneCounterResponse resp; - grpc::ClientContext context; - req.set_oid(nat_zone_counter_id); - - grpc::Status status = nat->RemoveNatZoneCounter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_nat_zone_counter_attribute(sai_object_id_t nat_zone_counter_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNatZoneCounterAttributeRequest req; - lemming::dataplane::sai::SetNatZoneCounterAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(nat_zone_counter_id); - - - - -switch (attr->id) { - - case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: - req.set_nat_type(convert_sai_nat_type_t_to_proto(attr->value.s32)); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: - req.set_zone_id(attr->value.u8); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: - req.set_discard_packet_count(attr->value.u64); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: - req.set_translation_needed_packet_count(attr->value.u64); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: - req.set_translations_packet_count(attr->value.u64); - break; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNatZoneCounterRequest req; + lemming::dataplane::sai::RemoveNatZoneCounterResponse resp; + grpc::ClientContext context; + req.set_oid(nat_zone_counter_id); + + grpc::Status status = nat->RemoveNatZoneCounter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = nat->SetNatZoneCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_nat_zone_counter_attribute( + sai_object_id_t nat_zone_counter_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNatZoneCounterAttributeRequest req; + lemming::dataplane::sai::SetNatZoneCounterAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(nat_zone_counter_id); + + switch (attr->id) { + case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: + req.set_nat_type(convert_sai_nat_type_t_to_proto(attr->value.s32)); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: + req.set_zone_id(attr->value.u8); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: + req.set_discard_packet_count(attr->value.u64); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: + req.set_translation_needed_packet_count(attr->value.u64); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: + req.set_translations_packet_count(attr->value.u64); + break; + } + + grpc::Status status = nat->SetNatZoneCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_nat_zone_counter_attribute(sai_object_id_t nat_zone_counter_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNatZoneCounterAttributeRequest req; - lemming::dataplane::sai::GetNatZoneCounterAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(nat_zone_counter_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_nat_zone_counter_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = nat->GetNatZoneCounterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: - attr_list[i].value.s32 = convert_sai_nat_type_t_to_sai(resp.attr().nat_type()); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: - attr_list[i].value.u8 = resp.attr().zone_id(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: - attr_list[i].value.booldata = resp.attr().enable_discard(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: - attr_list[i].value.u64 = resp.attr().discard_packet_count(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: - attr_list[i].value.booldata = resp.attr().enable_translation_needed(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: - attr_list[i].value.u64 = resp.attr().translation_needed_packet_count(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: - attr_list[i].value.booldata = resp.attr().enable_translations(); - break; - case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: - attr_list[i].value.u64 = resp.attr().translations_packet_count(); - break; +sai_status_t l_get_nat_zone_counter_attribute( + sai_object_id_t nat_zone_counter_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNatZoneCounterAttributeRequest req; + lemming::dataplane::sai::GetNatZoneCounterAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(nat_zone_counter_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_nat_zone_counter_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = nat->GetNatZoneCounterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NAT_ZONE_COUNTER_ATTR_NAT_TYPE: + attr_list[i].value.s32 = + convert_sai_nat_type_t_to_sai(resp.attr().nat_type()); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ZONE_ID: + attr_list[i].value.u8 = resp.attr().zone_id(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_DISCARD: + attr_list[i].value.booldata = resp.attr().enable_discard(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_DISCARD_PACKET_COUNT: + attr_list[i].value.u64 = resp.attr().discard_packet_count(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATION_NEEDED: + attr_list[i].value.booldata = resp.attr().enable_translation_needed(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATION_NEEDED_PACKET_COUNT: + attr_list[i].value.u64 = resp.attr().translation_needed_packet_count(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_ENABLE_TRANSLATIONS: + attr_list[i].value.booldata = resp.attr().enable_translations(); + break; + case SAI_NAT_ZONE_COUNTER_ATTR_TRANSLATIONS_PACKET_COUNT: + attr_list[i].value.u64 = resp.attr().translations_packet_count(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/nat.h b/dataplane/standalone/sai/nat.h index d4d04aaea..8ef9b06b6 100644 --- a/dataplane/standalone/sai/nat.h +++ b/dataplane/standalone/sai/nat.h @@ -25,30 +25,56 @@ extern "C" { extern const sai_nat_api_t l_nat; - -sai_status_t l_create_nat_entry(const sai_nat_entry_t *nat_entry, uint32_t attr_count, const sai_attribute_t *attr_list); - -sai_status_t l_remove_nat_entry(const sai_nat_entry_t *nat_entry); - -sai_status_t l_set_nat_entry_attribute(const sai_nat_entry_t *nat_entry, const sai_attribute_t *attr); - -sai_status_t l_get_nat_entry_attribute(const sai_nat_entry_t *nat_entry, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_nat_entries(uint32_t object_count, const sai_nat_entry_t *nat_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_remove_nat_entries(uint32_t object_count, const sai_nat_entry_t *nat_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_nat_entries_attribute(uint32_t object_count, const sai_nat_entry_t *nat_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_nat_entries_attribute(uint32_t object_count, const sai_nat_entry_t *nat_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_create_nat_zone_counter(sai_object_id_t *nat_zone_counter_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_nat_entry(const sai_nat_entry_t* nat_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_remove_nat_entry(const sai_nat_entry_t* nat_entry); + +sai_status_t l_set_nat_entry_attribute(const sai_nat_entry_t* nat_entry, + const sai_attribute_t* attr); + +sai_status_t l_get_nat_entry_attribute(const sai_nat_entry_t* nat_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_nat_entries(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_remove_nat_entries(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_nat_entries_attribute(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_nat_entries_attribute(uint32_t object_count, + const sai_nat_entry_t* nat_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_create_nat_zone_counter(sai_object_id_t* nat_zone_counter_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_nat_zone_counter(sai_object_id_t nat_zone_counter_id); -sai_status_t l_set_nat_zone_counter_attribute(sai_object_id_t nat_zone_counter_id, const sai_attribute_t *attr); - -sai_status_t l_get_nat_zone_counter_attribute(sai_object_id_t nat_zone_counter_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_nat_zone_counter_attribute( + sai_object_id_t nat_zone_counter_id, const sai_attribute_t* attr); +sai_status_t l_get_nat_zone_counter_attribute( + sai_object_id_t nat_zone_counter_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_NAT_H_ diff --git a/dataplane/standalone/sai/neighbor.cc b/dataplane/standalone/sai/neighbor.cc index 76875749d..cdade8ed1 100644 --- a/dataplane/standalone/sai/neighbor.cc +++ b/dataplane/standalone/sai/neighbor.cc @@ -13,310 +13,325 @@ // limitations under the License. #include "dataplane/standalone/sai/neighbor.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/neighbor.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_neighbor_api_t l_neighbor = { - .create_neighbor_entry = l_create_neighbor_entry, - .remove_neighbor_entry = l_remove_neighbor_entry, - .set_neighbor_entry_attribute = l_set_neighbor_entry_attribute, - .get_neighbor_entry_attribute = l_get_neighbor_entry_attribute, - .create_neighbor_entries = l_create_neighbor_entries, - .remove_neighbor_entries = l_remove_neighbor_entries, - .set_neighbor_entries_attribute = l_set_neighbor_entries_attribute, - .get_neighbor_entries_attribute = l_get_neighbor_entries_attribute, + .create_neighbor_entry = l_create_neighbor_entry, + .remove_neighbor_entry = l_remove_neighbor_entry, + .set_neighbor_entry_attribute = l_set_neighbor_entry_attribute, + .get_neighbor_entry_attribute = l_get_neighbor_entry_attribute, + .create_neighbor_entries = l_create_neighbor_entries, + .remove_neighbor_entries = l_remove_neighbor_entries, + .set_neighbor_entries_attribute = l_set_neighbor_entries_attribute, + .get_neighbor_entries_attribute = l_get_neighbor_entries_attribute, }; +lemming::dataplane::sai::CreateNeighborEntryRequest +convert_create_neighbor_entry(uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNeighborEntryRequest msg; -lemming::dataplane::sai::CreateNeighborEntryRequest convert_create_neighbor_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNeighborEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: - msg.set_dst_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: - msg.set_user_trap_id(attr_list[i].value.oid); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: - msg.set_no_host_route(attr_list[i].value.booldata); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: - msg.set_encap_index(attr_list[i].value.u32); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: - msg.set_encap_impose_index(attr_list[i].value.booldata); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: - msg.set_is_local(attr_list[i].value.booldata); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: + msg.set_dst_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: + msg.set_user_trap_id(attr_list[i].value.oid); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: + msg.set_no_host_route(attr_list[i].value.booldata); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: + msg.set_encap_index(attr_list[i].value.u32); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: + msg.set_encap_impose_index(attr_list[i].value.booldata); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: + msg.set_is_local(attr_list[i].value.booldata); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_neighbor_entry(const sai_neighbor_entry_t* neighbor_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_neighbor_entry(const sai_neighbor_entry_t *neighbor_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNeighborEntryRequest req = convert_create_neighbor_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateNeighborEntryResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); - grpc::Status status = neighbor->CreateNeighborEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::CreateNeighborEntryRequest req = + convert_create_neighbor_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateNeighborEntryResponse resp; + grpc::ClientContext context; -sai_status_t l_remove_neighbor_entry(const sai_neighbor_entry_t *neighbor_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNeighborEntryRequest req; - lemming::dataplane::sai::RemoveNeighborEntryResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); - grpc::Status status = neighbor->RemoveNeighborEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); + grpc::Status status = neighbor->CreateNeighborEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_set_neighbor_entry_attribute(const sai_neighbor_entry_t *neighbor_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNeighborEntryAttributeRequest req; - lemming::dataplane::sai::SetNeighborEntryAttributeResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); - - - -switch (attr->id) { - - case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: - req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: - req.set_user_trap_id(attr->value.oid); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: - req.set_no_host_route(attr->value.booldata); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: - req.set_encap_index(attr->value.u32); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: - req.set_encap_impose_index(attr->value.booldata); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: - req.set_is_local(attr->value.booldata); - break; + return SAI_STATUS_SUCCESS; } - grpc::Status status = neighbor->SetNeighborEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_remove_neighbor_entry( + const sai_neighbor_entry_t* neighbor_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNeighborEntryRequest req; + lemming::dataplane::sai::RemoveNeighborEntryResponse resp; + grpc::ClientContext context; -sai_status_t l_get_neighbor_entry_attribute(const sai_neighbor_entry_t *neighbor_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNeighborEntryAttributeRequest req; - lemming::dataplane::sai::GetNeighborEntryAttributeResponse resp; - grpc::ClientContext context; - *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_neighbor_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = neighbor->GetNeighborEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: - attr_list[i].value.oid = resp.attr().user_trap_id(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: - attr_list[i].value.booldata = resp.attr().no_host_route(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: - attr_list[i].value.u32 = resp.attr().encap_index(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: - attr_list[i].value.booldata = resp.attr().encap_impose_index(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: - attr_list[i].value.booldata = resp.attr().is_local(); - break; - case SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: - attr_list[i].value.s32 = convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); - break; + *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); + grpc::Status status = neighbor->RemoveNeighborEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_neighbor_entry_attribute( + const sai_neighbor_entry_t* neighbor_entry, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNeighborEntryAttributeRequest req; + lemming::dataplane::sai::SetNeighborEntryAttributeResponse resp; + grpc::ClientContext context; + + *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); + + switch (attr->id) { + case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: + req.set_dst_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: + req.set_user_trap_id(attr->value.oid); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: + req.set_no_host_route(attr->value.booldata); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: + req.set_encap_index(attr->value.u32); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: + req.set_encap_impose_index(attr->value.booldata); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: + req.set_is_local(attr->value.booldata); + break; + } + + grpc::Status status = + neighbor->SetNeighborEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } +sai_status_t l_get_neighbor_entry_attribute( + const sai_neighbor_entry_t* neighbor_entry, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_neighbor_entries(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNeighborEntriesRequest req; - lemming::dataplane::sai::CreateNeighborEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_neighbor_entry(attr_count[i], attr_list[i]); - - *r.mutable_entry() = convert_from_neighbor_entry(neighbor_entry[i]); - *req.add_reqs() = r; - } - - grpc::Status status = neighbor->CreateNeighborEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; + lemming::dataplane::sai::GetNeighborEntryAttributeRequest req; + lemming::dataplane::sai::GetNeighborEntryAttributeResponse resp; + grpc::ClientContext context; + *req.mutable_entry() = convert_from_neighbor_entry(*neighbor_entry); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_neighbor_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + neighbor->GetNeighborEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().dst_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_USER_TRAP_ID: + attr_list[i].value.oid = resp.attr().user_trap_id(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_NO_HOST_ROUTE: + attr_list[i].value.booldata = resp.attr().no_host_route(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_INDEX: + attr_list[i].value.u32 = resp.attr().encap_index(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_ENCAP_IMPOSE_INDEX: + attr_list[i].value.booldata = resp.attr().encap_impose_index(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_IS_LOCAL: + attr_list[i].value.booldata = resp.attr().is_local(); + break; + case SAI_NEIGHBOR_ENTRY_ATTR_IP_ADDR_FAMILY: + attr_list[i].value.s32 = + convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_neighbor_entries(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNeighborEntriesRequest req; - lemming::dataplane::sai::RemoveNeighborEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - *req.add_reqs()->mutable_entry() = convert_from_neighbor_entry(neighbor_entry[i]); - } - - grpc::Status status = neighbor->RemoveNeighborEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_neighbor_entries( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const uint32_t* attr_count, const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNeighborEntriesRequest req; + lemming::dataplane::sai::CreateNeighborEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_neighbor_entry(attr_count[i], attr_list[i]); + + *r.mutable_entry() = convert_from_neighbor_entry(neighbor_entry[i]); + *req.add_reqs() = r; + } + + grpc::Status status = neighbor->CreateNeighborEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_neighbor_entries_attribute(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_remove_neighbor_entries( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNeighborEntriesRequest req; + lemming::dataplane::sai::RemoveNeighborEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + *req.add_reqs()->mutable_entry() = + convert_from_neighbor_entry(neighbor_entry[i]); + } + + grpc::Status status = neighbor->RemoveNeighborEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_neighbor_entries_attribute(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_neighbor_entries_attribute( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t l_get_neighbor_entries_attribute( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} diff --git a/dataplane/standalone/sai/neighbor.h b/dataplane/standalone/sai/neighbor.h index 8b75a8c02..e60a550a2 100644 --- a/dataplane/standalone/sai/neighbor.h +++ b/dataplane/standalone/sai/neighbor.h @@ -25,23 +25,37 @@ extern "C" { extern const sai_neighbor_api_t l_neighbor; - -sai_status_t l_create_neighbor_entry(const sai_neighbor_entry_t *neighbor_entry, uint32_t attr_count, const sai_attribute_t *attr_list); - -sai_status_t l_remove_neighbor_entry(const sai_neighbor_entry_t *neighbor_entry); - -sai_status_t l_set_neighbor_entry_attribute(const sai_neighbor_entry_t *neighbor_entry, const sai_attribute_t *attr); - -sai_status_t l_get_neighbor_entry_attribute(const sai_neighbor_entry_t *neighbor_entry, uint32_t attr_count, sai_attribute_t *attr_list); - - -sai_status_t l_create_neighbor_entries(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_remove_neighbor_entries(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_neighbor_entries_attribute(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_neighbor_entries_attribute(uint32_t object_count, const sai_neighbor_entry_t *neighbor_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_create_neighbor_entry(const sai_neighbor_entry_t* neighbor_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_remove_neighbor_entry( + const sai_neighbor_entry_t* neighbor_entry); + +sai_status_t l_set_neighbor_entry_attribute( + const sai_neighbor_entry_t* neighbor_entry, const sai_attribute_t* attr); + +sai_status_t l_get_neighbor_entry_attribute( + const sai_neighbor_entry_t* neighbor_entry, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_neighbor_entries( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const uint32_t* attr_count, const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); + +sai_status_t l_remove_neighbor_entries( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); + +sai_status_t l_set_neighbor_entries_attribute( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_neighbor_entries_attribute( + uint32_t object_count, const sai_neighbor_entry_t* neighbor_entry, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_NEIGHBOR_H_ diff --git a/dataplane/standalone/sai/next_hop.cc b/dataplane/standalone/sai/next_hop.cc index 4478ddc5d..76ed5d5e5 100644 --- a/dataplane/standalone/sai/next_hop.cc +++ b/dataplane/standalone/sai/next_hop.cc @@ -13,379 +13,407 @@ // limitations under the License. #include "dataplane/standalone/sai/next_hop.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/next_hop.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_next_hop_api_t l_next_hop = { - .create_next_hop = l_create_next_hop, - .remove_next_hop = l_remove_next_hop, - .set_next_hop_attribute = l_set_next_hop_attribute, - .get_next_hop_attribute = l_get_next_hop_attribute, - .create_next_hops = l_create_next_hops, - .remove_next_hops = l_remove_next_hops, - .set_next_hops_attribute = l_set_next_hops_attribute, - .get_next_hops_attribute = l_get_next_hops_attribute, + .create_next_hop = l_create_next_hop, + .remove_next_hop = l_remove_next_hop, + .set_next_hop_attribute = l_set_next_hop_attribute, + .get_next_hop_attribute = l_get_next_hop_attribute, + .create_next_hops = l_create_next_hops, + .remove_next_hops = l_remove_next_hops, + .set_next_hops_attribute = l_set_next_hops_attribute, + .get_next_hops_attribute = l_get_next_hops_attribute, }; +lemming::dataplane::sai::CreateNextHopRequest convert_create_next_hop( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNextHopRequest msg; -lemming::dataplane::sai::CreateNextHopRequest convert_create_next_hop(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNextHopRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_ATTR_TYPE: - msg.set_type(convert_sai_next_hop_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_ATTR_IP: - msg.set_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: - msg.set_router_interface_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_ID: - msg.set_tunnel_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: - msg.set_tunnel_vni(attr_list[i].value.u32); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: - msg.set_tunnel_mac(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: - msg.set_srv6_sidlist_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_ATTR_LABELSTACK: - msg.mutable_labelstack()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_NEXT_HOP_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: - msg.set_disable_decrement_ttl(attr_list[i].value.booldata); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: - msg.set_outseg_type(convert_sai_outseg_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: - msg.set_outseg_ttl_mode(convert_sai_outseg_ttl_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: - msg.set_outseg_ttl_value(attr_list[i].value.u8); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: - msg.set_outseg_exp_mode(convert_sai_outseg_exp_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: - msg.set_outseg_exp_value(attr_list[i].value.u8); - break; - case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: - msg.set_disable_src_mac_rewrite(attr_list[i].value.booldata); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: - msg.set_disable_dst_mac_rewrite(attr_list[i].value.booldata); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: - msg.set_disable_vlan_rewrite(attr_list[i].value.booldata); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_ATTR_TYPE: + msg.set_type( + convert_sai_next_hop_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_ATTR_IP: + msg.set_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: + msg.set_router_interface_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_ID: + msg.set_tunnel_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: + msg.set_tunnel_vni(attr_list[i].value.u32); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: + msg.set_tunnel_mac(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: + msg.set_srv6_sidlist_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_ATTR_LABELSTACK: + msg.mutable_labelstack()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_NEXT_HOP_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: + msg.set_disable_decrement_ttl(attr_list[i].value.booldata); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: + msg.set_outseg_type( + convert_sai_outseg_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: + msg.set_outseg_ttl_mode( + convert_sai_outseg_ttl_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: + msg.set_outseg_ttl_value(attr_list[i].value.u8); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: + msg.set_outseg_exp_mode( + convert_sai_outseg_exp_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: + msg.set_outseg_exp_value(attr_list[i].value.u8); + break; + case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: + msg.set_disable_src_mac_rewrite(attr_list[i].value.booldata); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: + msg.set_disable_dst_mac_rewrite(attr_list[i].value.booldata); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: + msg.set_disable_vlan_rewrite(attr_list[i].value.booldata); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_next_hop(sai_object_id_t* next_hop_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopRequest req = + convert_create_next_hop(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateNextHopResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = next_hop->CreateNextHop(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (next_hop_id) { + *next_hop_id = resp.oid(); + } -sai_status_t l_create_next_hop(sai_object_id_t *next_hop_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopRequest req = convert_create_next_hop(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateNextHopResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = next_hop->CreateNextHop(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (next_hop_id) { - *next_hop_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_next_hop(sai_object_id_t next_hop_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopRequest req; - lemming::dataplane::sai::RemoveNextHopResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_id); - - grpc::Status status = next_hop->RemoveNextHop(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_next_hop_attribute(sai_object_id_t next_hop_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNextHopAttributeRequest req; - lemming::dataplane::sai::SetNextHopAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_id); - - - - -switch (attr->id) { - - case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: - req.set_tunnel_vni(attr->value.u32); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: - req.set_tunnel_mac(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_NEXT_HOP_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: - req.set_disable_decrement_ttl(attr->value.booldata); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: - req.set_outseg_type(convert_sai_outseg_type_t_to_proto(attr->value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: - req.set_outseg_ttl_mode(convert_sai_outseg_ttl_mode_t_to_proto(attr->value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: - req.set_outseg_ttl_value(attr->value.u8); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: - req.set_outseg_exp_mode(convert_sai_outseg_exp_mode_t_to_proto(attr->value.s32)); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: - req.set_outseg_exp_value(attr->value.u8); - break; - case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: - req.set_disable_src_mac_rewrite(attr->value.booldata); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: - req.set_disable_dst_mac_rewrite(attr->value.booldata); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: - req.set_disable_vlan_rewrite(attr->value.booldata); - break; -} + lemming::dataplane::sai::RemoveNextHopRequest req; + lemming::dataplane::sai::RemoveNextHopResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_id); - grpc::Status status = next_hop->SetNextHopAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = next_hop->RemoveNextHop(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_next_hop_attribute(sai_object_id_t next_hop_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNextHopAttributeRequest req; - lemming::dataplane::sai::GetNextHopAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(next_hop_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_next_hop_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = next_hop->GetNextHopAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_next_hop_type_t_to_sai(resp.attr().type()); - break; - case SAI_NEXT_HOP_ATTR_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().ip()); - break; - case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: - attr_list[i].value.oid = resp.attr().router_interface_id(); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_ID: - attr_list[i].value.oid = resp.attr().tunnel_id(); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: - attr_list[i].value.u32 = resp.attr().tunnel_vni(); - break; - case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: - memcpy(attr_list[i].value.mac, resp.attr().tunnel_mac().data(), sizeof(sai_mac_t)); - break; - case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: - attr_list[i].value.oid = resp.attr().srv6_sidlist_id(); - break; - case SAI_NEXT_HOP_ATTR_LABELSTACK: - copy_list(attr_list[i].value.u32list.list, resp.attr().labelstack(), &attr_list[i].value.u32list.count); - break; - case SAI_NEXT_HOP_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: - attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: - attr_list[i].value.s32 = convert_sai_outseg_type_t_to_sai(resp.attr().outseg_type()); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: - attr_list[i].value.s32 = convert_sai_outseg_ttl_mode_t_to_sai(resp.attr().outseg_ttl_mode()); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: - attr_list[i].value.u8 = resp.attr().outseg_ttl_value(); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: - attr_list[i].value.s32 = convert_sai_outseg_exp_mode_t_to_sai(resp.attr().outseg_exp_mode()); - break; - case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: - attr_list[i].value.u8 = resp.attr().outseg_exp_value(); - break; - case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: - attr_list[i].value.booldata = resp.attr().disable_src_mac_rewrite(); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: - attr_list[i].value.booldata = resp.attr().disable_dst_mac_rewrite(); - break; - case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: - attr_list[i].value.booldata = resp.attr().disable_vlan_rewrite(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_next_hop_attribute(sai_object_id_t next_hop_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNextHopAttributeRequest req; + lemming::dataplane::sai::SetNextHopAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_id); + + switch (attr->id) { + case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: + req.set_tunnel_vni(attr->value.u32); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: + req.set_tunnel_mac(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_NEXT_HOP_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: + req.set_disable_decrement_ttl(attr->value.booldata); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: + req.set_outseg_type(convert_sai_outseg_type_t_to_proto(attr->value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: + req.set_outseg_ttl_mode( + convert_sai_outseg_ttl_mode_t_to_proto(attr->value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: + req.set_outseg_ttl_value(attr->value.u8); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: + req.set_outseg_exp_mode( + convert_sai_outseg_exp_mode_t_to_proto(attr->value.s32)); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: + req.set_outseg_exp_value(attr->value.u8); + break; + case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: + req.set_disable_src_mac_rewrite(attr->value.booldata); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: + req.set_disable_dst_mac_rewrite(attr->value.booldata); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: + req.set_disable_vlan_rewrite(attr->value.booldata); + break; + } + + grpc::Status status = next_hop->SetNextHopAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_next_hops(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopsRequest req; - lemming::dataplane::sai::CreateNextHopsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_next_hop(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = next_hop->CreateNextHops(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_next_hop_attribute(sai_object_id_t next_hop_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNextHopAttributeRequest req; + lemming::dataplane::sai::GetNextHopAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(next_hop_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_next_hop_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = next_hop->GetNextHopAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_next_hop_type_t_to_sai(resp.attr().type()); + break; + case SAI_NEXT_HOP_ATTR_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().ip()); + break; + case SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: + attr_list[i].value.oid = resp.attr().router_interface_id(); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_ID: + attr_list[i].value.oid = resp.attr().tunnel_id(); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_VNI: + attr_list[i].value.u32 = resp.attr().tunnel_vni(); + break; + case SAI_NEXT_HOP_ATTR_TUNNEL_MAC: + memcpy(attr_list[i].value.mac, resp.attr().tunnel_mac().data(), + sizeof(sai_mac_t)); + break; + case SAI_NEXT_HOP_ATTR_SRV6_SIDLIST_ID: + attr_list[i].value.oid = resp.attr().srv6_sidlist_id(); + break; + case SAI_NEXT_HOP_ATTR_LABELSTACK: + copy_list(attr_list[i].value.u32list.list, resp.attr().labelstack(), + &attr_list[i].value.u32list.count); + break; + case SAI_NEXT_HOP_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DECREMENT_TTL: + attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TYPE: + attr_list[i].value.s32 = + convert_sai_outseg_type_t_to_sai(resp.attr().outseg_type()); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_MODE: + attr_list[i].value.s32 = + convert_sai_outseg_ttl_mode_t_to_sai(resp.attr().outseg_ttl_mode()); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_TTL_VALUE: + attr_list[i].value.u8 = resp.attr().outseg_ttl_value(); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_MODE: + attr_list[i].value.s32 = + convert_sai_outseg_exp_mode_t_to_sai(resp.attr().outseg_exp_mode()); + break; + case SAI_NEXT_HOP_ATTR_OUTSEG_EXP_VALUE: + attr_list[i].value.u8 = resp.attr().outseg_exp_value(); + break; + case SAI_NEXT_HOP_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_SRC_MAC_REWRITE: + attr_list[i].value.booldata = resp.attr().disable_src_mac_rewrite(); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_DST_MAC_REWRITE: + attr_list[i].value.booldata = resp.attr().disable_dst_mac_rewrite(); + break; + case SAI_NEXT_HOP_ATTR_DISABLE_VLAN_REWRITE: + attr_list[i].value.booldata = resp.attr().disable_vlan_rewrite(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_next_hops(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopsRequest req; - lemming::dataplane::sai::RemoveNextHopsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = next_hop->RemoveNextHops(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_next_hops(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopsRequest req; + lemming::dataplane::sai::CreateNextHopsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_next_hop(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = next_hop->CreateNextHops(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_next_hops_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_remove_next_hops(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopsRequest req; + lemming::dataplane::sai::RemoveNextHopsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = next_hop->RemoveNextHops(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_next_hops_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_next_hops_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t l_get_next_hops_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} diff --git a/dataplane/standalone/sai/next_hop.h b/dataplane/standalone/sai/next_hop.h index 908383492..c3aa96766 100644 --- a/dataplane/standalone/sai/next_hop.h +++ b/dataplane/standalone/sai/next_hop.h @@ -25,22 +25,43 @@ extern "C" { extern const sai_next_hop_api_t l_next_hop; - -sai_status_t l_create_next_hop(sai_object_id_t *next_hop_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_next_hop(sai_object_id_t* next_hop_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_next_hop(sai_object_id_t next_hop_id); -sai_status_t l_set_next_hop_attribute(sai_object_id_t next_hop_id, const sai_attribute_t *attr); - -sai_status_t l_get_next_hop_attribute(sai_object_id_t next_hop_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_next_hop_attribute(sai_object_id_t next_hop_id, + const sai_attribute_t* attr); -sai_status_t l_create_next_hops(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); +sai_status_t l_get_next_hop_attribute(sai_object_id_t next_hop_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_next_hops(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_create_next_hops(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); -sai_status_t l_set_next_hops_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_remove_next_hops(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_get_next_hops_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_set_next_hops_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); +sai_status_t l_get_next_hops_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_NEXT_HOP_H_ diff --git a/dataplane/standalone/sai/next_hop_group.cc b/dataplane/standalone/sai/next_hop_group.cc index ff51b6414..231a76c5d 100644 --- a/dataplane/standalone/sai/next_hop_group.cc +++ b/dataplane/standalone/sai/next_hop_group.cc @@ -13,723 +13,799 @@ // limitations under the License. #include "dataplane/standalone/sai/next_hop_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/next_hop_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_next_hop_group_api_t l_next_hop_group = { - .create_next_hop_group = l_create_next_hop_group, - .remove_next_hop_group = l_remove_next_hop_group, - .set_next_hop_group_attribute = l_set_next_hop_group_attribute, - .get_next_hop_group_attribute = l_get_next_hop_group_attribute, - .create_next_hop_group_member = l_create_next_hop_group_member, - .remove_next_hop_group_member = l_remove_next_hop_group_member, - .set_next_hop_group_member_attribute = l_set_next_hop_group_member_attribute, - .get_next_hop_group_member_attribute = l_get_next_hop_group_member_attribute, - .create_next_hop_group_members = l_create_next_hop_group_members, - .remove_next_hop_group_members = l_remove_next_hop_group_members, - .create_next_hop_group_map = l_create_next_hop_group_map, - .remove_next_hop_group_map = l_remove_next_hop_group_map, - .set_next_hop_group_map_attribute = l_set_next_hop_group_map_attribute, - .get_next_hop_group_map_attribute = l_get_next_hop_group_map_attribute, - .set_next_hop_group_members_attribute = l_set_next_hop_group_members_attribute, - .get_next_hop_group_members_attribute = l_get_next_hop_group_members_attribute, - .create_next_hop_groups = l_create_next_hop_groups, - .remove_next_hop_groups = l_remove_next_hop_groups, - .set_next_hop_groups_attribute = l_set_next_hop_groups_attribute, - .get_next_hop_groups_attribute = l_get_next_hop_groups_attribute, + .create_next_hop_group = l_create_next_hop_group, + .remove_next_hop_group = l_remove_next_hop_group, + .set_next_hop_group_attribute = l_set_next_hop_group_attribute, + .get_next_hop_group_attribute = l_get_next_hop_group_attribute, + .create_next_hop_group_member = l_create_next_hop_group_member, + .remove_next_hop_group_member = l_remove_next_hop_group_member, + .set_next_hop_group_member_attribute = + l_set_next_hop_group_member_attribute, + .get_next_hop_group_member_attribute = + l_get_next_hop_group_member_attribute, + .create_next_hop_group_members = l_create_next_hop_group_members, + .remove_next_hop_group_members = l_remove_next_hop_group_members, + .create_next_hop_group_map = l_create_next_hop_group_map, + .remove_next_hop_group_map = l_remove_next_hop_group_map, + .set_next_hop_group_map_attribute = l_set_next_hop_group_map_attribute, + .get_next_hop_group_map_attribute = l_get_next_hop_group_map_attribute, + .set_next_hop_group_members_attribute = + l_set_next_hop_group_members_attribute, + .get_next_hop_group_members_attribute = + l_get_next_hop_group_members_attribute, + .create_next_hop_groups = l_create_next_hop_groups, + .remove_next_hop_groups = l_remove_next_hop_groups, + .set_next_hop_groups_attribute = l_set_next_hop_groups_attribute, + .get_next_hop_groups_attribute = l_get_next_hop_groups_attribute, }; - -lemming::dataplane::sai::CreateNextHopGroupRequest convert_create_next_hop_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNextHopGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_ATTR_TYPE: - msg.set_type(convert_sai_next_hop_group_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: - msg.set_set_switchover(attr_list[i].value.booldata); - break; - case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: - msg.set_configured_size(attr_list[i].value.u32); - break; - case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: - msg.set_selection_map(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: - msg.set_hierarchical_nexthop(attr_list[i].value.booldata); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: - msg.set_ars_object_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: - msg.mutable_next_hop_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: - msg.mutable_next_hop_member_weight_list()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: - msg.mutable_next_hop_member_counter_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateNextHopGroupMemberRequest convert_create_next_hop_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNextHopGroupMemberRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: - msg.set_next_hop_group_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: - msg.set_next_hop_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: - msg.set_weight(attr_list[i].value.u32); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: - msg.set_configured_role(convert_sai_next_hop_group_member_configured_role_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: - msg.set_monitored_object(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: - msg.set_index(attr_list[i].value.u32); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: - msg.set_sequence_id(attr_list[i].value.u32); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: - msg.set_ars_alternate_path(attr_list[i].value.booldata); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateNextHopGroupMapRequest convert_create_next_hop_group_map(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateNextHopGroupMapRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: - msg.set_type(convert_sai_next_hop_group_map_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -sai_status_t l_create_next_hop_group(sai_object_id_t *next_hop_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopGroupRequest req = convert_create_next_hop_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateNextHopGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = next_hop_group->CreateNextHopGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (next_hop_group_id) { - *next_hop_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateNextHopGroupRequest +convert_create_next_hop_group(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNextHopGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_ATTR_TYPE: + msg.set_type( + convert_sai_next_hop_group_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: + msg.set_set_switchover(attr_list[i].value.booldata); + break; + case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: + msg.set_configured_size(attr_list[i].value.u32); + break; + case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: + msg.set_selection_map(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: + msg.set_hierarchical_nexthop(attr_list[i].value.booldata); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: + msg.set_ars_object_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: + msg.mutable_next_hop_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: + msg.mutable_next_hop_member_weight_list()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: + msg.mutable_next_hop_member_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateNextHopGroupMemberRequest +convert_create_next_hop_group_member(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNextHopGroupMemberRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: + msg.set_next_hop_group_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: + msg.set_next_hop_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: + msg.set_weight(attr_list[i].value.u32); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: + msg.set_configured_role( + convert_sai_next_hop_group_member_configured_role_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: + msg.set_monitored_object(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: + msg.set_index(attr_list[i].value.u32); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: + msg.set_sequence_id(attr_list[i].value.u32); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: + msg.set_ars_alternate_path(attr_list[i].value.booldata); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateNextHopGroupMapRequest +convert_create_next_hop_group_map(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateNextHopGroupMapRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: + msg.set_type(convert_sai_next_hop_group_map_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +sai_status_t l_create_next_hop_group(sai_object_id_t* next_hop_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopGroupRequest req = + convert_create_next_hop_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateNextHopGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + next_hop_group->CreateNextHopGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (next_hop_group_id) { + *next_hop_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_next_hop_group(sai_object_id_t next_hop_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopGroupRequest req; - lemming::dataplane::sai::RemoveNextHopGroupResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_group_id); - - grpc::Status status = next_hop_group->RemoveNextHopGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_next_hop_group_attribute(sai_object_id_t next_hop_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNextHopGroupAttributeRequest req; - lemming::dataplane::sai::SetNextHopGroupAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_group_id); - - - - -switch (attr->id) { - - case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: - req.set_set_switchover(attr->value.booldata); - break; - case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: - req.set_selection_map(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: - req.set_ars_object_id(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: - req.mutable_next_hop_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: - req.mutable_next_hop_member_weight_list()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: - req.mutable_next_hop_member_counter_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; -} - - grpc::Status status = next_hop_group->SetNextHopGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_next_hop_group_attribute(sai_object_id_t next_hop_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNextHopGroupAttributeRequest req; - lemming::dataplane::sai::GetNextHopGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(next_hop_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_next_hop_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = next_hop_group->GetNextHopGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: - attr_list[i].value.u32 = resp.attr().next_hop_count(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().next_hop_member_list(), &attr_list[i].value.objlist.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_next_hop_group_type_t_to_sai(resp.attr().type()); - break; - case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: - attr_list[i].value.booldata = resp.attr().set_switchover(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: - attr_list[i].value.u32 = resp.attr().configured_size(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE: - attr_list[i].value.u32 = resp.attr().real_size(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: - attr_list[i].value.oid = resp.attr().selection_map(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: - attr_list[i].value.booldata = resp.attr().hierarchical_nexthop(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: - attr_list[i].value.oid = resp.attr().ars_object_id(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: - attr_list[i].value.u32 = resp.attr().ars_packet_drops(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: - attr_list[i].value.u32 = resp.attr().ars_next_hop_reassignments(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: - attr_list[i].value.u32 = resp.attr().ars_port_reassignments(); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().next_hop_list(), &attr_list[i].value.objlist.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: - copy_list(attr_list[i].value.u32list.list, resp.attr().next_hop_member_weight_list(), &attr_list[i].value.u32list.count); - break; - case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().next_hop_member_counter_list(), &attr_list[i].value.objlist.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_next_hop_group_member(sai_object_id_t *next_hop_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopGroupMemberRequest req = convert_create_next_hop_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateNextHopGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = next_hop_group->CreateNextHopGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (next_hop_group_member_id) { - *next_hop_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_next_hop_group_member(sai_object_id_t next_hop_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopGroupMemberRequest req; - lemming::dataplane::sai::RemoveNextHopGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_group_member_id); - - grpc::Status status = next_hop_group->RemoveNextHopGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_next_hop_group_member_attribute(sai_object_id_t next_hop_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetNextHopGroupMemberAttributeRequest req; - lemming::dataplane::sai::SetNextHopGroupMemberAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_group_member_id); - - - - -switch (attr->id) { - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: - req.set_next_hop_id(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: - req.set_weight(attr->value.u32); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: - req.set_monitored_object(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: - req.set_sequence_id(attr->value.u32); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: - req.set_ars_alternate_path(attr->value.booldata); - break; -} - - grpc::Status status = next_hop_group->SetNextHopGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_next_hop_group_member_attribute(sai_object_id_t next_hop_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNextHopGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetNextHopGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(next_hop_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_next_hop_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = next_hop_group->GetNextHopGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: - attr_list[i].value.oid = resp.attr().next_hop_group_id(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: - attr_list[i].value.oid = resp.attr().next_hop_id(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: - attr_list[i].value.u32 = resp.attr().weight(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: - attr_list[i].value.s32 = convert_sai_next_hop_group_member_configured_role_t_to_sai(resp.attr().configured_role()); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: - attr_list[i].value.s32 = convert_sai_next_hop_group_member_observed_role_t_to_sai(resp.attr().observed_role()); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: - attr_list[i].value.oid = resp.attr().monitored_object(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: - attr_list[i].value.u32 = resp.attr().index(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: - attr_list[i].value.u32 = resp.attr().sequence_id(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: - attr_list[i].value.booldata = resp.attr().ars_alternate_path(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_next_hop_group_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopGroupMembersRequest req; - lemming::dataplane::sai::CreateNextHopGroupMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_next_hop_group_member(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = next_hop_group->CreateNextHopGroupMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_next_hop_group_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopGroupMembersRequest req; - lemming::dataplane::sai::RemoveNextHopGroupMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = next_hop_group->RemoveNextHopGroupMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_next_hop_group_map(sai_object_id_t *next_hop_group_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopGroupMapRequest req = convert_create_next_hop_group_map(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateNextHopGroupMapResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = next_hop_group->CreateNextHopGroupMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (next_hop_group_map_id) { - *next_hop_group_map_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_next_hop_group_map(sai_object_id_t next_hop_group_map_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopGroupMapRequest req; - lemming::dataplane::sai::RemoveNextHopGroupMapResponse resp; - grpc::ClientContext context; - req.set_oid(next_hop_group_map_id); - - grpc::Status status = next_hop_group->RemoveNextHopGroupMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_next_hop_group_map_attribute(sai_object_id_t next_hop_group_map_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_next_hop_group_map_attribute(sai_object_id_t next_hop_group_map_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetNextHopGroupMapAttributeRequest req; - lemming::dataplane::sai::GetNextHopGroupMapAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(next_hop_group_map_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_next_hop_group_map_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = next_hop_group->GetNextHopGroupMapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_next_hop_group_map_type_t_to_sai(resp.attr().type()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_next_hop_group_members_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - -sai_status_t l_get_next_hop_group_members_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - -sai_status_t l_create_next_hop_groups(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateNextHopGroupsRequest req; - lemming::dataplane::sai::CreateNextHopGroupsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_next_hop_group(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = next_hop_group->CreateNextHopGroups(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_next_hop_groups(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveNextHopGroupsRequest req; - lemming::dataplane::sai::RemoveNextHopGroupsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = next_hop_group->RemoveNextHopGroups(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_next_hop_groups_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopGroupRequest req; + lemming::dataplane::sai::RemoveNextHopGroupResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_group_id); + + grpc::Status status = + next_hop_group->RemoveNextHopGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_next_hop_group_attribute(sai_object_id_t next_hop_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNextHopGroupAttributeRequest req; + lemming::dataplane::sai::SetNextHopGroupAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_group_id); + + switch (attr->id) { + case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: + req.set_set_switchover(attr->value.booldata); + break; + case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: + req.set_selection_map(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: + req.set_ars_object_id(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: + req.mutable_next_hop_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: + req.mutable_next_hop_member_weight_list()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: + req.mutable_next_hop_member_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = + next_hop_group->SetNextHopGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_next_hop_group_attribute(sai_object_id_t next_hop_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNextHopGroupAttributeRequest req; + lemming::dataplane::sai::GetNextHopGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(next_hop_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_next_hop_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + next_hop_group->GetNextHopGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_COUNT: + attr_list[i].value.u32 = resp.attr().next_hop_count(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().next_hop_member_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_next_hop_group_type_t_to_sai(resp.attr().type()); + break; + case SAI_NEXT_HOP_GROUP_ATTR_SET_SWITCHOVER: + attr_list[i].value.booldata = resp.attr().set_switchover(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_CONFIGURED_SIZE: + attr_list[i].value.u32 = resp.attr().configured_size(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_REAL_SIZE: + attr_list[i].value.u32 = resp.attr().real_size(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_SELECTION_MAP: + attr_list[i].value.oid = resp.attr().selection_map(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_HIERARCHICAL_NEXTHOP: + attr_list[i].value.booldata = resp.attr().hierarchical_nexthop(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_OBJECT_ID: + attr_list[i].value.oid = resp.attr().ars_object_id(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_PACKET_DROPS: + attr_list[i].value.u32 = resp.attr().ars_packet_drops(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_NEXT_HOP_REASSIGNMENTS: + attr_list[i].value.u32 = resp.attr().ars_next_hop_reassignments(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS: + attr_list[i].value.u32 = resp.attr().ars_port_reassignments(); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().next_hop_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_WEIGHT_LIST: + copy_list(attr_list[i].value.u32list.list, + resp.attr().next_hop_member_weight_list(), + &attr_list[i].value.u32list.count); + break; + case SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().next_hop_member_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_next_hop_group_member( + sai_object_id_t* next_hop_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopGroupMemberRequest req = + convert_create_next_hop_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateNextHopGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + next_hop_group->CreateNextHopGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (next_hop_group_member_id) { + *next_hop_group_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_next_hop_group_member( + sai_object_id_t next_hop_group_member_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopGroupMemberRequest req; + lemming::dataplane::sai::RemoveNextHopGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_group_member_id); + + grpc::Status status = + next_hop_group->RemoveNextHopGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_next_hop_group_member_attribute( + sai_object_id_t next_hop_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetNextHopGroupMemberAttributeRequest req; + lemming::dataplane::sai::SetNextHopGroupMemberAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_group_member_id); + + switch (attr->id) { + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: + req.set_next_hop_id(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: + req.set_weight(attr->value.u32); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: + req.set_monitored_object(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: + req.set_sequence_id(attr->value.u32); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: + req.set_ars_alternate_path(attr->value.booldata); + break; + } + + grpc::Status status = + next_hop_group->SetNextHopGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_next_hop_group_member_attribute( + sai_object_id_t next_hop_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNextHopGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetNextHopGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(next_hop_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_next_hop_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + next_hop_group->GetNextHopGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID: + attr_list[i].value.oid = resp.attr().next_hop_group_id(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID: + attr_list[i].value.oid = resp.attr().next_hop_id(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT: + attr_list[i].value.u32 = resp.attr().weight(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_CONFIGURED_ROLE: + attr_list[i].value.s32 = + convert_sai_next_hop_group_member_configured_role_t_to_sai( + resp.attr().configured_role()); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_OBSERVED_ROLE: + attr_list[i].value.s32 = + convert_sai_next_hop_group_member_observed_role_t_to_sai( + resp.attr().observed_role()); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_MONITORED_OBJECT: + attr_list[i].value.oid = resp.attr().monitored_object(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_INDEX: + attr_list[i].value.u32 = resp.attr().index(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID: + attr_list[i].value.u32 = resp.attr().sequence_id(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_NEXT_HOP_GROUP_MEMBER_ATTR_ARS_ALTERNATE_PATH: + attr_list[i].value.booldata = resp.attr().ars_alternate_path(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_next_hop_group_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopGroupMembersRequest req; + lemming::dataplane::sai::CreateNextHopGroupMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_next_hop_group_member(switch_id, attr_count[i], + attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = + next_hop_group->CreateNextHopGroupMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_next_hop_group_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopGroupMembersRequest req; + lemming::dataplane::sai::RemoveNextHopGroupMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = + next_hop_group->RemoveNextHopGroupMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_next_hop_group_map(sai_object_id_t* next_hop_group_map_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopGroupMapRequest req = + convert_create_next_hop_group_map(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateNextHopGroupMapResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + next_hop_group->CreateNextHopGroupMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (next_hop_group_map_id) { + *next_hop_group_map_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_next_hop_group_map( + sai_object_id_t next_hop_group_map_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopGroupMapRequest req; + lemming::dataplane::sai::RemoveNextHopGroupMapResponse resp; + grpc::ClientContext context; + req.set_oid(next_hop_group_map_id); + + grpc::Status status = + next_hop_group->RemoveNextHopGroupMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_next_hop_group_map_attribute( + sai_object_id_t next_hop_group_map_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_next_hop_group_map_attribute( + sai_object_id_t next_hop_group_map_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetNextHopGroupMapAttributeRequest req; + lemming::dataplane::sai::GetNextHopGroupMapAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(next_hop_group_map_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_next_hop_group_map_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + next_hop_group->GetNextHopGroupMapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_NEXT_HOP_GROUP_MAP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_next_hop_group_map_type_t_to_sai(resp.attr().type()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_next_hop_group_members_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_get_next_hop_group_members_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} + +sai_status_t l_create_next_hop_groups(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateNextHopGroupsRequest req; + lemming::dataplane::sai::CreateNextHopGroupsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = + convert_create_next_hop_group(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = + next_hop_group->CreateNextHopGroups(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_next_hop_groups(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveNextHopGroupsRequest req; + lemming::dataplane::sai::RemoveNextHopGroupsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = + next_hop_group->RemoveNextHopGroups(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_next_hop_groups_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; for (uint32_t i = 0; i < object_count; i++) { object_statuses[i] = l_set_next_hop_group_attribute(object_id[i], &attr_list[i]); @@ -740,8 +816,12 @@ sai_status_t l_set_next_hop_groups_attribute(uint32_t object_count, const sai_ob return SAI_STATUS_SUCCESS; } -sai_status_t l_get_next_hop_groups_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { +sai_status_t l_get_next_hop_groups_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { LOG(INFO) << "Func: " << __PRETTY_FUNCTION__ << " is not implemented but by-passing check"; return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/next_hop_group.h b/dataplane/standalone/sai/next_hop_group.h index cff4cc7dc..8d4b7a240 100644 --- a/dataplane/standalone/sai/next_hop_group.h +++ b/dataplane/standalone/sai/next_hop_group.h @@ -25,46 +25,95 @@ extern "C" { extern const sai_next_hop_group_api_t l_next_hop_group; - -sai_status_t l_create_next_hop_group(sai_object_id_t *next_hop_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_next_hop_group(sai_object_id_t* next_hop_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_next_hop_group(sai_object_id_t next_hop_group_id); -sai_status_t l_set_next_hop_group_attribute(sai_object_id_t next_hop_group_id, const sai_attribute_t *attr); +sai_status_t l_set_next_hop_group_attribute(sai_object_id_t next_hop_group_id, + const sai_attribute_t* attr); -sai_status_t l_get_next_hop_group_attribute(sai_object_id_t next_hop_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_next_hop_group_attribute(sai_object_id_t next_hop_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_next_hop_group_member(sai_object_id_t *next_hop_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_next_hop_group_member( + sai_object_id_t* next_hop_group_member_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_remove_next_hop_group_member(sai_object_id_t next_hop_group_member_id); +sai_status_t l_remove_next_hop_group_member( + sai_object_id_t next_hop_group_member_id); -sai_status_t l_set_next_hop_group_member_attribute(sai_object_id_t next_hop_group_member_id, const sai_attribute_t *attr); +sai_status_t l_set_next_hop_group_member_attribute( + sai_object_id_t next_hop_group_member_id, const sai_attribute_t* attr); -sai_status_t l_get_next_hop_group_member_attribute(sai_object_id_t next_hop_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_next_hop_group_member_attribute( + sai_object_id_t next_hop_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_next_hop_group_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); +sai_status_t l_create_next_hop_group_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); -sai_status_t l_remove_next_hop_group_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_remove_next_hop_group_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_create_next_hop_group_map(sai_object_id_t *next_hop_group_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_next_hop_group_map(sai_object_id_t* next_hop_group_map_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_next_hop_group_map(sai_object_id_t next_hop_group_map_id); -sai_status_t l_set_next_hop_group_map_attribute(sai_object_id_t next_hop_group_map_id, const sai_attribute_t *attr); - -sai_status_t l_get_next_hop_group_map_attribute(sai_object_id_t next_hop_group_map_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_set_next_hop_group_members_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_next_hop_group_members_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_create_next_hop_groups(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_next_hop_groups(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_next_hop_groups_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_next_hop_groups_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_next_hop_group_map_attribute( + sai_object_id_t next_hop_group_map_id, const sai_attribute_t* attr); + +sai_status_t l_get_next_hop_group_map_attribute( + sai_object_id_t next_hop_group_map_id, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_set_next_hop_group_members_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_next_hop_group_members_attribute( + uint32_t object_count, const sai_object_id_t* object_id, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); + +sai_status_t l_create_next_hop_groups(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_next_hop_groups(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_next_hop_groups_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_next_hop_groups_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_NEXT_HOP_GROUP_H_ diff --git a/dataplane/standalone/sai/poe.cc b/dataplane/standalone/sai/poe.cc index 74062b5dd..071aca2e3 100644 --- a/dataplane/standalone/sai/poe.cc +++ b/dataplane/standalone/sai/poe.cc @@ -13,25 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/poe.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/poe.pb.h" -#include - -const sai_poe_api_t l_poe = { -}; - - - - - - - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/poe.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_poe_api_t l_poe = {}; diff --git a/dataplane/standalone/sai/poe.h b/dataplane/standalone/sai/poe.h index eb1cf2d06..73f93fa7e 100644 --- a/dataplane/standalone/sai/poe.h +++ b/dataplane/standalone/sai/poe.h @@ -25,18 +25,4 @@ extern "C" { extern const sai_poe_api_t l_poe; - - - - - - - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_POE_H_ diff --git a/dataplane/standalone/sai/policer.cc b/dataplane/standalone/sai/policer.cc index f8956642a..ce1901785 100644 --- a/dataplane/standalone/sai/policer.cc +++ b/dataplane/standalone/sai/policer.cc @@ -13,285 +13,341 @@ // limitations under the License. #include "dataplane/standalone/sai/policer.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/policer.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_policer_api_t l_policer = { - .create_policer = l_create_policer, - .remove_policer = l_remove_policer, - .set_policer_attribute = l_set_policer_attribute, - .get_policer_attribute = l_get_policer_attribute, - .get_policer_stats = l_get_policer_stats, - .get_policer_stats_ext = l_get_policer_stats_ext, - .clear_policer_stats = l_clear_policer_stats, + .create_policer = l_create_policer, + .remove_policer = l_remove_policer, + .set_policer_attribute = l_set_policer_attribute, + .get_policer_attribute = l_get_policer_attribute, + .get_policer_stats = l_get_policer_stats, + .get_policer_stats_ext = l_get_policer_stats_ext, + .clear_policer_stats = l_clear_policer_stats, }; +lemming::dataplane::sai::CreatePolicerRequest convert_create_policer( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreatePolicerRequest msg; -lemming::dataplane::sai::CreatePolicerRequest convert_create_policer(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreatePolicerRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_POLICER_ATTR_METER_TYPE: - msg.set_meter_type(convert_sai_meter_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_MODE: - msg.set_mode(convert_sai_policer_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_COLOR_SOURCE: - msg.set_color_source(convert_sai_policer_color_source_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_CBS: - msg.set_cbs(attr_list[i].value.u64); - break; - case SAI_POLICER_ATTR_CIR: - msg.set_cir(attr_list[i].value.u64); - break; - case SAI_POLICER_ATTR_PBS: - msg.set_pbs(attr_list[i].value.u64); - break; - case SAI_POLICER_ATTR_PIR: - msg.set_pir(attr_list[i].value.u64); - break; - case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: - msg.set_green_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: - msg.set_yellow_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_RED_PACKET_ACTION: - msg.set_red_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: - msg.mutable_enable_counter_packet_action_list()->CopyFrom(convert_list_sai_packet_action_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_POLICER_ATTR_OBJECT_STAGE: - msg.set_object_stage(convert_sai_object_stage_t_to_proto(attr_list[i].value.s32)); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_POLICER_ATTR_METER_TYPE: + msg.set_meter_type( + convert_sai_meter_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_MODE: + msg.set_mode( + convert_sai_policer_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_COLOR_SOURCE: + msg.set_color_source(convert_sai_policer_color_source_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_CBS: + msg.set_cbs(attr_list[i].value.u64); + break; + case SAI_POLICER_ATTR_CIR: + msg.set_cir(attr_list[i].value.u64); + break; + case SAI_POLICER_ATTR_PBS: + msg.set_pbs(attr_list[i].value.u64); + break; + case SAI_POLICER_ATTR_PIR: + msg.set_pir(attr_list[i].value.u64); + break; + case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: + msg.set_green_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: + msg.set_yellow_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_RED_PACKET_ACTION: + msg.set_red_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: + msg.mutable_enable_counter_packet_action_list()->CopyFrom( + convert_list_sai_packet_action_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_POLICER_ATTR_OBJECT_STAGE: + msg.set_object_stage( + convert_sai_object_stage_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_POLICER_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_policer(sai_object_id_t* policer_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePolicerRequest req = + convert_create_policer(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreatePolicerResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = policer->CreatePolicer(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (policer_id) { + *policer_id = resp.oid(); + } -sai_status_t l_create_policer(sai_object_id_t *policer_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePolicerRequest req = convert_create_policer(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreatePolicerResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = policer->CreatePolicer(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (policer_id) { - *policer_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_policer(sai_object_id_t policer_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePolicerRequest req; - lemming::dataplane::sai::RemovePolicerResponse resp; - grpc::ClientContext context; - req.set_oid(policer_id); - - grpc::Status status = policer->RemovePolicer(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_policer_attribute(sai_object_id_t policer_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetPolicerAttributeRequest req; - lemming::dataplane::sai::SetPolicerAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(policer_id); - - - - -switch (attr->id) { - - case SAI_POLICER_ATTR_CBS: - req.set_cbs(attr->value.u64); - break; - case SAI_POLICER_ATTR_CIR: - req.set_cir(attr->value.u64); - break; - case SAI_POLICER_ATTR_PBS: - req.set_pbs(attr->value.u64); - break; - case SAI_POLICER_ATTR_PIR: - req.set_pir(attr->value.u64); - break; - case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: - req.set_green_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: - req.set_yellow_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_POLICER_ATTR_RED_PACKET_ACTION: - req.set_red_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: - req.mutable_enable_counter_packet_action_list()->CopyFrom(convert_list_sai_packet_action_t_to_proto(attr->value.s32list)); - break; -} + lemming::dataplane::sai::RemovePolicerRequest req; + lemming::dataplane::sai::RemovePolicerResponse resp; + grpc::ClientContext context; + req.set_oid(policer_id); - grpc::Status status = policer->SetPolicerAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = policer->RemovePolicer(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_policer_attribute(sai_object_id_t policer_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPolicerAttributeRequest req; - lemming::dataplane::sai::GetPolicerAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(policer_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_policer_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = policer->GetPolicerAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_POLICER_ATTR_METER_TYPE: - attr_list[i].value.s32 = convert_sai_meter_type_t_to_sai(resp.attr().meter_type()); - break; - case SAI_POLICER_ATTR_MODE: - attr_list[i].value.s32 = convert_sai_policer_mode_t_to_sai(resp.attr().mode()); - break; - case SAI_POLICER_ATTR_COLOR_SOURCE: - attr_list[i].value.s32 = convert_sai_policer_color_source_t_to_sai(resp.attr().color_source()); - break; - case SAI_POLICER_ATTR_CBS: - attr_list[i].value.u64 = resp.attr().cbs(); - break; - case SAI_POLICER_ATTR_CIR: - attr_list[i].value.u64 = resp.attr().cir(); - break; - case SAI_POLICER_ATTR_PBS: - attr_list[i].value.u64 = resp.attr().pbs(); - break; - case SAI_POLICER_ATTR_PIR: - attr_list[i].value.u64 = resp.attr().pir(); - break; - case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().green_packet_action()); - break; - case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().yellow_packet_action()); - break; - case SAI_POLICER_ATTR_RED_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().red_packet_action()); - break; - case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: - convert_list_sai_packet_action_t_to_sai(attr_list[i].value.s32list.list, resp.attr().enable_counter_packet_action_list(), &attr_list[i].value.s32list.count); - break; - case SAI_POLICER_ATTR_OBJECT_STAGE: - attr_list[i].value.s32 = convert_sai_object_stage_t_to_sai(resp.attr().object_stage()); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_policer_attribute(sai_object_id_t policer_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetPolicerAttributeRequest req; + lemming::dataplane::sai::SetPolicerAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(policer_id); + + switch (attr->id) { + case SAI_POLICER_ATTR_CBS: + req.set_cbs(attr->value.u64); + break; + case SAI_POLICER_ATTR_CIR: + req.set_cir(attr->value.u64); + break; + case SAI_POLICER_ATTR_PBS: + req.set_pbs(attr->value.u64); + break; + case SAI_POLICER_ATTR_PIR: + req.set_pir(attr->value.u64); + break; + case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: + req.set_green_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: + req.set_yellow_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_POLICER_ATTR_RED_PACKET_ACTION: + req.set_red_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: + req.mutable_enable_counter_packet_action_list()->CopyFrom( + convert_list_sai_packet_action_t_to_proto(attr->value.s32list)); + break; + case SAI_POLICER_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_POLICER_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = policer->SetPolicerAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_policer_stats(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPolicerStatsRequest req; - lemming::dataplane::sai::GetPolicerStatsResponse resp; - grpc::ClientContext context; - req.set_oid(policer_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_policer_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = policer->GetPolicerStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_policer_attribute(sai_object_id_t policer_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPolicerAttributeRequest req; + lemming::dataplane::sai::GetPolicerAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(policer_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_policer_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = policer->GetPolicerAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_POLICER_ATTR_METER_TYPE: + attr_list[i].value.s32 = + convert_sai_meter_type_t_to_sai(resp.attr().meter_type()); + break; + case SAI_POLICER_ATTR_MODE: + attr_list[i].value.s32 = + convert_sai_policer_mode_t_to_sai(resp.attr().mode()); + break; + case SAI_POLICER_ATTR_COLOR_SOURCE: + attr_list[i].value.s32 = convert_sai_policer_color_source_t_to_sai( + resp.attr().color_source()); + break; + case SAI_POLICER_ATTR_CBS: + attr_list[i].value.u64 = resp.attr().cbs(); + break; + case SAI_POLICER_ATTR_CIR: + attr_list[i].value.u64 = resp.attr().cir(); + break; + case SAI_POLICER_ATTR_PBS: + attr_list[i].value.u64 = resp.attr().pbs(); + break; + case SAI_POLICER_ATTR_PIR: + attr_list[i].value.u64 = resp.attr().pir(); + break; + case SAI_POLICER_ATTR_GREEN_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().green_packet_action()); + break; + case SAI_POLICER_ATTR_YELLOW_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().yellow_packet_action()); + break; + case SAI_POLICER_ATTR_RED_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().red_packet_action()); + break; + case SAI_POLICER_ATTR_ENABLE_COUNTER_PACKET_ACTION_LIST: + convert_list_sai_packet_action_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().enable_counter_packet_action_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_POLICER_ATTR_OBJECT_STAGE: + attr_list[i].value.s32 = + convert_sai_object_stage_t_to_sai(resp.attr().object_stage()); + break; + case SAI_POLICER_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_POLICER_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_policer_stats_ext(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_policer_stats(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPolicerStatsRequest req; + lemming::dataplane::sai::GetPolicerStatsResponse resp; + grpc::ClientContext context; + req.set_oid(policer_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_policer_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = policer->GetPolicerStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_policer_stats(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_policer_stats_ext(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_clear_policer_stats(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/policer.h b/dataplane/standalone/sai/policer.h index 506f7bfaf..09a67b31d 100644 --- a/dataplane/standalone/sai/policer.h +++ b/dataplane/standalone/sai/policer.h @@ -25,20 +25,31 @@ extern "C" { extern const sai_policer_api_t l_policer; - -sai_status_t l_create_policer(sai_object_id_t *policer_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_policer(sai_object_id_t* policer_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_policer(sai_object_id_t policer_id); -sai_status_t l_set_policer_attribute(sai_object_id_t policer_id, const sai_attribute_t *attr); - -sai_status_t l_get_policer_attribute(sai_object_id_t policer_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_policer_attribute(sai_object_id_t policer_id, + const sai_attribute_t* attr); -sai_status_t l_get_policer_stats(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_policer_attribute(sai_object_id_t policer_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_policer_stats_ext(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_policer_stats(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_policer_stats(sai_object_id_t policer_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_policer_stats_ext(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); +sai_status_t l_clear_policer_stats(sai_object_id_t policer_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_POLICER_H_ diff --git a/dataplane/standalone/sai/port.cc b/dataplane/standalone/sai/port.cc index 6990c64e1..aca88dcd2 100644 --- a/dataplane/standalone/sai/port.cc +++ b/dataplane/standalone/sai/port.cc @@ -13,2010 +13,2369 @@ // limitations under the License. #include "dataplane/standalone/sai/port.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/port.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_port_api_t l_port = { - .create_port = l_create_port, - .remove_port = l_remove_port, - .set_port_attribute = l_set_port_attribute, - .get_port_attribute = l_get_port_attribute, - .get_port_stats = l_get_port_stats, - .get_port_stats_ext = l_get_port_stats_ext, - .clear_port_stats = l_clear_port_stats, - .create_port_pool = l_create_port_pool, - .remove_port_pool = l_remove_port_pool, - .set_port_pool_attribute = l_set_port_pool_attribute, - .get_port_pool_attribute = l_get_port_pool_attribute, - .get_port_pool_stats = l_get_port_pool_stats, - .get_port_pool_stats_ext = l_get_port_pool_stats_ext, - .clear_port_pool_stats = l_clear_port_pool_stats, - .create_port_connector = l_create_port_connector, - .remove_port_connector = l_remove_port_connector, - .set_port_connector_attribute = l_set_port_connector_attribute, - .get_port_connector_attribute = l_get_port_connector_attribute, - .create_port_serdes = l_create_port_serdes, - .remove_port_serdes = l_remove_port_serdes, - .set_port_serdes_attribute = l_set_port_serdes_attribute, - .get_port_serdes_attribute = l_get_port_serdes_attribute, - .create_ports = l_create_ports, - .remove_ports = l_remove_ports, - .set_ports_attribute = l_set_ports_attribute, - .get_ports_attribute = l_get_ports_attribute, + .create_port = l_create_port, + .remove_port = l_remove_port, + .set_port_attribute = l_set_port_attribute, + .get_port_attribute = l_get_port_attribute, + .get_port_stats = l_get_port_stats, + .get_port_stats_ext = l_get_port_stats_ext, + .clear_port_stats = l_clear_port_stats, + .create_port_pool = l_create_port_pool, + .remove_port_pool = l_remove_port_pool, + .set_port_pool_attribute = l_set_port_pool_attribute, + .get_port_pool_attribute = l_get_port_pool_attribute, + .get_port_pool_stats = l_get_port_pool_stats, + .get_port_pool_stats_ext = l_get_port_pool_stats_ext, + .clear_port_pool_stats = l_clear_port_pool_stats, + .create_port_connector = l_create_port_connector, + .remove_port_connector = l_remove_port_connector, + .set_port_connector_attribute = l_set_port_connector_attribute, + .get_port_connector_attribute = l_get_port_connector_attribute, + .create_port_serdes = l_create_port_serdes, + .remove_port_serdes = l_remove_port_serdes, + .set_port_serdes_attribute = l_set_port_serdes_attribute, + .get_port_serdes_attribute = l_get_port_serdes_attribute, + .create_ports = l_create_ports, + .remove_ports = l_remove_ports, + .set_ports_attribute = l_set_ports_attribute, + .get_ports_attribute = l_get_ports_attribute, }; - -lemming::dataplane::sai::CreatePortRequest convert_create_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreatePortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_ATTR_HW_LANE_LIST: - msg.mutable_hw_lane_list()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SPEED: - msg.set_speed(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_FULL_DUPLEX_MODE: - msg.set_full_duplex_mode(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_AUTO_NEG_MODE: - msg.set_auto_neg_mode(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ADMIN_STATE: - msg.set_admin_state(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_MEDIA_TYPE: - msg.set_media_type(convert_sai_port_media_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_SPEED: - msg.mutable_advertised_speed()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: - msg.mutable_advertised_fec_mode()->CopyFrom(convert_list_sai_port_fec_mode_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: - msg.mutable_advertised_fec_mode_extended()->CopyFrom(convert_list_sai_port_fec_mode_extended_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: - msg.mutable_advertised_half_duplex_speed()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: - msg.set_advertised_auto_neg_mode(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: - msg.set_advertised_flow_control_mode(convert_sai_port_flow_control_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: - msg.set_advertised_asymmetric_pause_mode(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: - msg.set_advertised_media_type(convert_sai_port_media_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: - msg.set_advertised_oui_code(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_PORT_VLAN_ID: - msg.set_port_vlan_id(attr_list[i].value.u16); - break; - case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: - msg.set_default_vlan_priority(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_DROP_UNTAGGED: - msg.set_drop_untagged(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_DROP_TAGGED: - msg.set_drop_tagged(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: - msg.set_internal_loopback_mode(convert_sai_port_internal_loopback_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_USE_EXTENDED_FEC: - msg.set_use_extended_fec(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_FEC_MODE: - msg.set_fec_mode(convert_sai_port_fec_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_FEC_MODE_EXTENDED: - msg.set_fec_mode_extended(convert_sai_port_fec_mode_extended_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_UPDATE_DSCP: - msg.set_update_dscp(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_MTU: - msg.set_mtu(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: - msg.set_flood_storm_control_policer_id(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: - msg.set_broadcast_storm_control_policer_id(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: - msg.set_multicast_storm_control_policer_id(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: - msg.set_global_flow_control_mode(convert_sai_port_flow_control_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_INGRESS_ACL: - msg.set_ingress_acl(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_EGRESS_ACL: - msg.set_egress_acl(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: - msg.set_ingress_macsec_acl(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: - msg.set_egress_macsec_acl(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: - msg.mutable_ingress_mirror_session()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: - msg.mutable_egress_mirror_session()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - msg.set_ingress_samplepacket_enable(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: - msg.set_egress_samplepacket_enable(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: - msg.mutable_ingress_sample_mirror_session()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: - msg.mutable_egress_sample_mirror_session()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_POLICER_ID: - msg.set_policer_id(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_DEFAULT_TC: - msg.set_qos_default_tc(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: - msg.set_qos_dot1p_to_tc_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: - msg.set_qos_dot1p_to_color_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: - msg.set_qos_dscp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: - msg.set_qos_dscp_to_color_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - msg.set_qos_tc_and_color_to_dot1p_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - msg.set_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: - msg.set_qos_tc_to_priority_group_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: - msg.set_qos_pfc_priority_to_priority_group_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: - msg.set_qos_pfc_priority_to_queue_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: - msg.set_qos_scheduler_profile_id(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: - msg.mutable_qos_ingress_buffer_profile_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: - msg.mutable_qos_egress_buffer_profile_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: - msg.set_priority_flow_control_mode(convert_sai_port_priority_flow_control_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: - msg.set_priority_flow_control(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: - msg.set_priority_flow_control_rx(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: - msg.set_priority_flow_control_tx(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: - msg.mutable_egress_block_port_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_HW_PROFILE_ID: - msg.set_hw_profile_id(attr_list[i].value.u64); - break; - case SAI_PORT_ATTR_EEE_ENABLE: - msg.set_eee_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_EEE_IDLE_TIME: - msg.set_eee_idle_time(attr_list[i].value.u16); - break; - case SAI_PORT_ATTR_EEE_WAKE_TIME: - msg.set_eee_wake_time(attr_list[i].value.u16); - break; - case SAI_PORT_ATTR_ISOLATION_GROUP: - msg.set_isolation_group(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_PKT_TX_ENABLE: - msg.set_pkt_tx_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_TAM_OBJECT: - msg.mutable_tam_object()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_SERDES_PREEMPHASIS: - msg.mutable_serdes_preemphasis()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IDRIVER: - msg.mutable_serdes_idriver()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IPREDRIVER: - msg.mutable_serdes_ipredriver()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: - msg.set_link_training_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_PTP_MODE: - msg.set_ptp_mode(convert_sai_port_ptp_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_INTERFACE_TYPE: - msg.set_interface_type(convert_sai_port_interface_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: - msg.mutable_advertised_interface_type()->CopyFrom(convert_list_sai_port_interface_type_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_PORT_ATTR_REFERENCE_CLOCK: - msg.set_reference_clock(attr_list[i].value.u64); - break; - case SAI_PORT_ATTR_PRBS_POLYNOMIAL: - msg.set_prbs_polynomial(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_PRBS_CONFIG: - msg.set_prbs_config(convert_sai_port_prbs_config_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: - msg.set_disable_decrement_ttl(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - msg.set_qos_mpls_exp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - msg.set_qos_mpls_exp_to_color_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_TPID: - msg.set_tpid(attr_list[i].value.u16); - break; - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: - msg.set_auto_neg_fec_mode_override(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_LOOPBACK_MODE: - msg.set_loopback_mode(convert_sai_port_loopback_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_MDIX_MODE_CONFIG: - msg.set_mdix_mode_config(convert_sai_port_mdix_mode_config_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: - msg.set_auto_neg_config_mode(convert_sai_port_auto_neg_config_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: - msg.set__1000x_sgmii_slave_autodetect(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_MODULE_TYPE: - msg.set_module_type(convert_sai_port_module_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_DUAL_MEDIA: - msg.set_dual_media(convert_sai_port_dual_media_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_IPG: - msg.set_ipg(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: - msg.set_global_flow_control_forward(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: - msg.set_priority_flow_control_forward(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - msg.set_qos_dscp_to_forwarding_class_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - msg.set_qos_mpls_exp_to_forwarding_class_map(attr_list[i].value.oid); - break; - case SAI_PORT_ATTR_FABRIC_ISOLATE: - msg.set_fabric_isolate(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ARS_ENABLE: - msg.set_ars_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: - msg.set_ars_port_load_scaling_factor(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: - msg.set_ars_port_load_past_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: - msg.set_ars_port_load_future_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: - msg.set_ars_alternate_path(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: - msg.set_ecmp_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ECMP_HASH_SEED: - msg.set_ecmp_hash_seed(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_ECMP_HASH_OFFSET: - msg.set_ecmp_hash_offset(attr_list[i].value.u8); - break; - case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: - msg.set_host_tx_signal_enable(attr_list[i].value.booldata); - break; - case SAI_PORT_ATTR_PATH_TRACING_INTF: - msg.set_path_tracing_intf(attr_list[i].value.u16); - break; - case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: - msg.set_path_tracing_timestamp_type(convert_sai_port_path_tracing_timestamp_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_DATAPATH_ENABLE: - msg.set_datapath_enable(convert_sai_port_datapath_enable_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_CABLE_TYPE: - msg.set_cable_type(convert_sai_port_cable_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: - msg.set_ars_port_load_past_weight(attr_list[i].value.u32); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: - msg.set_ars_port_load_future_weight(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreatePortPoolRequest convert_create_port_pool(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreatePortPoolRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_POOL_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: - msg.set_buffer_pool_id(attr_list[i].value.oid); - break; - case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: - msg.set_qos_wred_profile_id(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreatePortRequest convert_create_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreatePortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_ATTR_HW_LANE_LIST: + msg.mutable_hw_lane_list()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SPEED: + msg.set_speed(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_FULL_DUPLEX_MODE: + msg.set_full_duplex_mode(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_AUTO_NEG_MODE: + msg.set_auto_neg_mode(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ADMIN_STATE: + msg.set_admin_state(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_MEDIA_TYPE: + msg.set_media_type( + convert_sai_port_media_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_SPEED: + msg.mutable_advertised_speed()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: + msg.mutable_advertised_fec_mode()->CopyFrom( + convert_list_sai_port_fec_mode_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: + msg.mutable_advertised_fec_mode_extended()->CopyFrom( + convert_list_sai_port_fec_mode_extended_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: + msg.mutable_advertised_half_duplex_speed()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: + msg.set_advertised_auto_neg_mode(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: + msg.set_advertised_flow_control_mode( + convert_sai_port_flow_control_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + msg.set_advertised_asymmetric_pause_mode(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: + msg.set_advertised_media_type( + convert_sai_port_media_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: + msg.set_advertised_oui_code(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_PORT_VLAN_ID: + msg.set_port_vlan_id(attr_list[i].value.u16); + break; + case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: + msg.set_default_vlan_priority(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_DROP_UNTAGGED: + msg.set_drop_untagged(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_DROP_TAGGED: + msg.set_drop_tagged(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: + msg.set_internal_loopback_mode( + convert_sai_port_internal_loopback_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_USE_EXTENDED_FEC: + msg.set_use_extended_fec(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_FEC_MODE: + msg.set_fec_mode( + convert_sai_port_fec_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_FEC_MODE_EXTENDED: + msg.set_fec_mode_extended(convert_sai_port_fec_mode_extended_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_UPDATE_DSCP: + msg.set_update_dscp(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_MTU: + msg.set_mtu(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: + msg.set_flood_storm_control_policer_id(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: + msg.set_broadcast_storm_control_policer_id(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: + msg.set_multicast_storm_control_policer_id(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: + msg.set_global_flow_control_mode( + convert_sai_port_flow_control_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_INGRESS_ACL: + msg.set_ingress_acl(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_EGRESS_ACL: + msg.set_egress_acl(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: + msg.set_ingress_macsec_acl(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: + msg.set_egress_macsec_acl(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: + msg.mutable_ingress_mirror_session()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: + msg.mutable_egress_mirror_session()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + msg.set_ingress_samplepacket_enable(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: + msg.set_egress_samplepacket_enable(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: + msg.mutable_ingress_sample_mirror_session()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: + msg.mutable_egress_sample_mirror_session()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_POLICER_ID: + msg.set_policer_id(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_DEFAULT_TC: + msg.set_qos_default_tc(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: + msg.set_qos_dot1p_to_tc_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: + msg.set_qos_dot1p_to_color_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: + msg.set_qos_dscp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: + msg.set_qos_dscp_to_color_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + msg.set_qos_tc_and_color_to_dot1p_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + msg.set_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: + msg.set_qos_tc_to_priority_group_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: + msg.set_qos_pfc_priority_to_priority_group_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: + msg.set_qos_pfc_priority_to_queue_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: + msg.set_qos_scheduler_profile_id(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: + msg.mutable_qos_ingress_buffer_profile_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: + msg.mutable_qos_egress_buffer_profile_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: + msg.set_priority_flow_control_mode( + convert_sai_port_priority_flow_control_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: + msg.set_priority_flow_control(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: + msg.set_priority_flow_control_rx(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: + msg.set_priority_flow_control_tx(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: + msg.mutable_egress_block_port_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_HW_PROFILE_ID: + msg.set_hw_profile_id(attr_list[i].value.u64); + break; + case SAI_PORT_ATTR_EEE_ENABLE: + msg.set_eee_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_EEE_IDLE_TIME: + msg.set_eee_idle_time(attr_list[i].value.u16); + break; + case SAI_PORT_ATTR_EEE_WAKE_TIME: + msg.set_eee_wake_time(attr_list[i].value.u16); + break; + case SAI_PORT_ATTR_ISOLATION_GROUP: + msg.set_isolation_group(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_PKT_TX_ENABLE: + msg.set_pkt_tx_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_TAM_OBJECT: + msg.mutable_tam_object()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_SERDES_PREEMPHASIS: + msg.mutable_serdes_preemphasis()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IDRIVER: + msg.mutable_serdes_idriver()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IPREDRIVER: + msg.mutable_serdes_ipredriver()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: + msg.set_link_training_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_PTP_MODE: + msg.set_ptp_mode( + convert_sai_port_ptp_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_INTERFACE_TYPE: + msg.set_interface_type( + convert_sai_port_interface_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: + msg.mutable_advertised_interface_type()->CopyFrom( + convert_list_sai_port_interface_type_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_PORT_ATTR_REFERENCE_CLOCK: + msg.set_reference_clock(attr_list[i].value.u64); + break; + case SAI_PORT_ATTR_PRBS_POLYNOMIAL: + msg.set_prbs_polynomial(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_PRBS_CONFIG: + msg.set_prbs_config( + convert_sai_port_prbs_config_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: + msg.set_disable_decrement_ttl(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + msg.set_qos_mpls_exp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + msg.set_qos_mpls_exp_to_color_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_TPID: + msg.set_tpid(attr_list[i].value.u16); + break; + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: + msg.set_auto_neg_fec_mode_override(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_LOOPBACK_MODE: + msg.set_loopback_mode( + convert_sai_port_loopback_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_MDIX_MODE_CONFIG: + msg.set_mdix_mode_config(convert_sai_port_mdix_mode_config_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: + msg.set_auto_neg_config_mode( + convert_sai_port_auto_neg_config_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: + msg.set__1000x_sgmii_slave_autodetect(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_MODULE_TYPE: + msg.set_module_type( + convert_sai_port_module_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_DUAL_MEDIA: + msg.set_dual_media( + convert_sai_port_dual_media_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_IPG: + msg.set_ipg(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: + msg.set_global_flow_control_forward(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: + msg.set_priority_flow_control_forward(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + msg.set_qos_dscp_to_forwarding_class_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + msg.set_qos_mpls_exp_to_forwarding_class_map(attr_list[i].value.oid); + break; + case SAI_PORT_ATTR_FABRIC_ISOLATE: + msg.set_fabric_isolate(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ARS_ENABLE: + msg.set_ars_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: + msg.set_ars_port_load_scaling_factor(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: + msg.set_ars_port_load_past_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: + msg.set_ars_port_load_future_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: + msg.set_ars_alternate_path(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: + msg.set_ecmp_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ECMP_HASH_SEED: + msg.set_ecmp_hash_seed(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_ECMP_HASH_OFFSET: + msg.set_ecmp_hash_offset(attr_list[i].value.u8); + break; + case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: + msg.set_host_tx_signal_enable(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_PATH_TRACING_INTF: + msg.set_path_tracing_intf(attr_list[i].value.u16); + break; + case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: + msg.set_path_tracing_timestamp_type( + convert_sai_port_path_tracing_timestamp_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_DATAPATH_ENABLE: + msg.set_datapath_enable(convert_sai_port_datapath_enable_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_CABLE_TYPE: + msg.set_cable_type( + convert_sai_port_cable_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: + msg.set_ars_port_load_past_weight(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: + msg.set_ars_port_load_future_weight(attr_list[i].value.u32); + break; + case SAI_PORT_ATTR_UNRELIABLE_LOS: + msg.set_unreliable_los(attr_list[i].value.booldata); + break; + case SAI_PORT_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_PORT_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -lemming::dataplane::sai::CreatePortConnectorRequest convert_create_port_connector(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreatePortConnectorRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: - msg.set_system_side_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: - msg.set_line_side_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: - msg.set_system_side_failover_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: - msg.set_line_side_failover_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: - msg.set_failover_mode(convert_sai_port_connector_failover_mode_t_to_proto(attr_list[i].value.s32)); - break; +lemming::dataplane::sai::CreatePortPoolRequest convert_create_port_pool( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreatePortPoolRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_POOL_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: + msg.set_buffer_pool_id(attr_list[i].value.oid); + break; + case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: + msg.set_qos_wred_profile_id(attr_list[i].value.oid); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreatePortConnectorRequest +convert_create_port_connector(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreatePortConnectorRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: + msg.set_system_side_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: + msg.set_line_side_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: + msg.set_system_side_failover_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: + msg.set_line_side_failover_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: + msg.set_failover_mode( + convert_sai_port_connector_failover_mode_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; } -lemming::dataplane::sai::CreatePortSerdesRequest convert_create_port_serdes(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreatePortSerdesRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_SERDES_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_PORT_SERDES_ATTR_PREEMPHASIS: - msg.mutable_preemphasis()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_IDRIVER: - msg.mutable_idriver()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_IPREDRIVER: - msg.mutable_ipredriver()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: - msg.mutable_tx_fir_pre1()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: - msg.mutable_tx_fir_pre2()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: - msg.mutable_tx_fir_pre3()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: - msg.mutable_tx_fir_main()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: - msg.mutable_tx_fir_post1()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: - msg.mutable_tx_fir_post2()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: - msg.mutable_tx_fir_post3()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: - msg.mutable_tx_fir_attn()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: - msg.mutable_tx_pam4_ratio()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: - msg.mutable_tx_out_common_mode()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: - msg.mutable_tx_pmos_common_mode()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: - msg.mutable_tx_nmos_common_mode()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: - msg.mutable_tx_pmos_vltg_reg()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: - msg.mutable_tx_nmos_vltg_reg()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PRECODING: - msg.mutable_tx_precoding()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_RX_PRECODING: - msg.mutable_rx_precoding()->Add(attr_list[i].value.s32list.list, attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); - break; -} - -} -return msg; +lemming::dataplane::sai::CreatePortSerdesRequest convert_create_port_serdes( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreatePortSerdesRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_SERDES_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_PORT_SERDES_ATTR_PREEMPHASIS: + msg.mutable_preemphasis()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_IDRIVER: + msg.mutable_idriver()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_IPREDRIVER: + msg.mutable_ipredriver()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: + msg.mutable_tx_fir_pre1()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: + msg.mutable_tx_fir_pre2()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: + msg.mutable_tx_fir_pre3()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: + msg.mutable_tx_fir_main()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: + msg.mutable_tx_fir_post1()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: + msg.mutable_tx_fir_post2()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: + msg.mutable_tx_fir_post3()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: + msg.mutable_tx_fir_attn()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: + msg.mutable_tx_pam4_ratio()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: + msg.mutable_tx_out_common_mode()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: + msg.mutable_tx_pmos_common_mode()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: + msg.mutable_tx_nmos_common_mode()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: + msg.mutable_tx_pmos_vltg_reg()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: + msg.mutable_tx_nmos_vltg_reg()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PRECODING: + msg.mutable_tx_precoding()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_RX_PRECODING: + msg.mutable_rx_precoding()->Add( + attr_list[i].value.s32list.list, + attr_list[i].value.s32list.list + attr_list[i].value.s32list.count); + break; + } + } + return msg; } -sai_status_t l_create_port(sai_object_id_t *port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePortRequest req = convert_create_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreatePortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = port->CreatePort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (port_id) { - *port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_port(sai_object_id_t* port_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePortRequest req = + convert_create_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreatePortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = port->CreatePort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (port_id) { + *port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_port(sai_object_id_t port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePortRequest req; - lemming::dataplane::sai::RemovePortResponse resp; - grpc::ClientContext context; - req.set_oid(port_id); - - grpc::Status status = port->RemovePort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemovePortRequest req; + lemming::dataplane::sai::RemovePortResponse resp; + grpc::ClientContext context; + req.set_oid(port_id); + + grpc::Status status = port->RemovePort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_port_attribute(sai_object_id_t port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetPortAttributeRequest req; - lemming::dataplane::sai::SetPortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(port_id); - - - - -switch (attr->id) { - - case SAI_PORT_ATTR_SPEED: - req.set_speed(attr->value.u32); - break; - case SAI_PORT_ATTR_AUTO_NEG_MODE: - req.set_auto_neg_mode(attr->value.booldata); - break; - case SAI_PORT_ATTR_ADMIN_STATE: - req.set_admin_state(attr->value.booldata); - break; - case SAI_PORT_ATTR_MEDIA_TYPE: - req.set_media_type(convert_sai_port_media_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_SPEED: - req.mutable_advertised_speed()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: - req.mutable_advertised_fec_mode()->CopyFrom(convert_list_sai_port_fec_mode_t_to_proto(attr->value.s32list)); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: - req.mutable_advertised_fec_mode_extended()->CopyFrom(convert_list_sai_port_fec_mode_extended_t_to_proto(attr->value.s32list)); - break; - case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: - req.mutable_advertised_half_duplex_speed()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: - req.set_advertised_auto_neg_mode(attr->value.booldata); - break; - case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: - req.set_advertised_flow_control_mode(convert_sai_port_flow_control_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: - req.set_advertised_asymmetric_pause_mode(attr->value.booldata); - break; - case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: - req.set_advertised_media_type(convert_sai_port_media_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: - req.set_advertised_oui_code(attr->value.u32); - break; - case SAI_PORT_ATTR_PORT_VLAN_ID: - req.set_port_vlan_id(attr->value.u16); - break; - case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: - req.set_default_vlan_priority(attr->value.u8); - break; - case SAI_PORT_ATTR_DROP_UNTAGGED: - req.set_drop_untagged(attr->value.booldata); - break; - case SAI_PORT_ATTR_DROP_TAGGED: - req.set_drop_tagged(attr->value.booldata); - break; - case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: - req.set_internal_loopback_mode(convert_sai_port_internal_loopback_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_USE_EXTENDED_FEC: - req.set_use_extended_fec(attr->value.booldata); - break; - case SAI_PORT_ATTR_FEC_MODE: - req.set_fec_mode(convert_sai_port_fec_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_FEC_MODE_EXTENDED: - req.set_fec_mode_extended(convert_sai_port_fec_mode_extended_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_UPDATE_DSCP: - req.set_update_dscp(attr->value.booldata); - break; - case SAI_PORT_ATTR_MTU: - req.set_mtu(attr->value.u32); - break; - case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: - req.set_flood_storm_control_policer_id(attr->value.oid); - break; - case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: - req.set_broadcast_storm_control_policer_id(attr->value.oid); - break; - case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: - req.set_multicast_storm_control_policer_id(attr->value.oid); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: - req.set_global_flow_control_mode(convert_sai_port_flow_control_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_INGRESS_ACL: - req.set_ingress_acl(attr->value.oid); - break; - case SAI_PORT_ATTR_EGRESS_ACL: - req.set_egress_acl(attr->value.oid); - break; - case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: - req.set_ingress_macsec_acl(attr->value.oid); - break; - case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: - req.set_egress_macsec_acl(attr->value.oid); - break; - case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: - req.mutable_ingress_mirror_session()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: - req.mutable_egress_mirror_session()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - req.set_ingress_samplepacket_enable(attr->value.oid); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: - req.set_egress_samplepacket_enable(attr->value.oid); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: - req.mutable_ingress_sample_mirror_session()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: - req.mutable_egress_sample_mirror_session()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_POLICER_ID: - req.set_policer_id(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_DEFAULT_TC: - req.set_qos_default_tc(attr->value.u8); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: - req.set_qos_dot1p_to_tc_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: - req.set_qos_dot1p_to_color_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: - req.set_qos_dscp_to_tc_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: - req.set_qos_dscp_to_color_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - req.set_qos_tc_to_queue_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - req.set_qos_tc_and_color_to_dot1p_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - req.set_qos_tc_and_color_to_dscp_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: - req.set_qos_tc_to_priority_group_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: - req.set_qos_pfc_priority_to_priority_group_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: - req.set_qos_pfc_priority_to_queue_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: - req.set_qos_scheduler_profile_id(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: - req.mutable_qos_ingress_buffer_profile_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: - req.mutable_qos_egress_buffer_profile_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: - req.set_priority_flow_control_mode(convert_sai_port_priority_flow_control_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: - req.set_priority_flow_control(attr->value.u8); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: - req.set_priority_flow_control_rx(attr->value.u8); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: - req.set_priority_flow_control_tx(attr->value.u8); - break; - case SAI_PORT_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; - case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: - req.mutable_egress_block_port_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_HW_PROFILE_ID: - req.set_hw_profile_id(attr->value.u64); - break; - case SAI_PORT_ATTR_EEE_ENABLE: - req.set_eee_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_EEE_IDLE_TIME: - req.set_eee_idle_time(attr->value.u16); - break; - case SAI_PORT_ATTR_EEE_WAKE_TIME: - req.set_eee_wake_time(attr->value.u16); - break; - case SAI_PORT_ATTR_ISOLATION_GROUP: - req.set_isolation_group(attr->value.oid); - break; - case SAI_PORT_ATTR_PKT_TX_ENABLE: - req.set_pkt_tx_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_TAM_OBJECT: - req.mutable_tam_object()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_PORT_ATTR_SERDES_PREEMPHASIS: - req.mutable_serdes_preemphasis()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IDRIVER: - req.mutable_serdes_idriver()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IPREDRIVER: - req.mutable_serdes_ipredriver()->Add(attr->value.u32list.list, attr->value.u32list.list + attr->value.u32list.count); - break; - case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: - req.set_link_training_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_PTP_MODE: - req.set_ptp_mode(convert_sai_port_ptp_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_INTERFACE_TYPE: - req.set_interface_type(convert_sai_port_interface_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: - req.mutable_advertised_interface_type()->CopyFrom(convert_list_sai_port_interface_type_t_to_proto(attr->value.s32list)); - break; - case SAI_PORT_ATTR_PRBS_POLYNOMIAL: - req.set_prbs_polynomial(attr->value.u32); - break; - case SAI_PORT_ATTR_PRBS_CONFIG: - req.set_prbs_config(convert_sai_port_prbs_config_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: - req.set_disable_decrement_ttl(attr->value.booldata); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - req.set_qos_mpls_exp_to_tc_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - req.set_qos_mpls_exp_to_color_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); - break; - case SAI_PORT_ATTR_TPID: - req.set_tpid(attr->value.u16); - break; - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: - req.set_auto_neg_fec_mode_override(attr->value.booldata); - break; - case SAI_PORT_ATTR_LOOPBACK_MODE: - req.set_loopback_mode(convert_sai_port_loopback_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_MDIX_MODE_CONFIG: - req.set_mdix_mode_config(convert_sai_port_mdix_mode_config_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: - req.set_auto_neg_config_mode(convert_sai_port_auto_neg_config_mode_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: - req.set__1000x_sgmii_slave_autodetect(attr->value.booldata); - break; - case SAI_PORT_ATTR_MODULE_TYPE: - req.set_module_type(convert_sai_port_module_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_DUAL_MEDIA: - req.set_dual_media(convert_sai_port_dual_media_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_IPG: - req.set_ipg(attr->value.u32); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: - req.set_global_flow_control_forward(attr->value.booldata); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: - req.set_priority_flow_control_forward(attr->value.booldata); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - req.set_qos_dscp_to_forwarding_class_map(attr->value.oid); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - req.set_qos_mpls_exp_to_forwarding_class_map(attr->value.oid); - break; - case SAI_PORT_ATTR_FABRIC_ISOLATE: - req.set_fabric_isolate(attr->value.booldata); - break; - case SAI_PORT_ATTR_ARS_ENABLE: - req.set_ars_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: - req.set_ars_port_load_scaling_factor(attr->value.u32); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: - req.set_ars_port_load_past_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: - req.set_ars_port_load_future_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: - req.set_ars_alternate_path(attr->value.booldata); - break; - case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: - req.set_ecmp_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ECMP_HASH_SEED: - req.set_ecmp_hash_seed(attr->value.u32); - break; - case SAI_PORT_ATTR_ECMP_HASH_OFFSET: - req.set_ecmp_hash_offset(attr->value.u8); - break; - case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: - req.set_host_tx_signal_enable(attr->value.booldata); - break; - case SAI_PORT_ATTR_PATH_TRACING_INTF: - req.set_path_tracing_intf(attr->value.u16); - break; - case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: - req.set_path_tracing_timestamp_type(convert_sai_port_path_tracing_timestamp_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_DATAPATH_ENABLE: - req.set_datapath_enable(convert_sai_port_datapath_enable_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_CABLE_TYPE: - req.set_cable_type(convert_sai_port_cable_type_t_to_proto(attr->value.s32)); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: - req.set_ars_port_load_past_weight(attr->value.u32); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: - req.set_ars_port_load_future_weight(attr->value.u32); - break; +sai_status_t l_set_port_attribute(sai_object_id_t port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetPortAttributeRequest req; + lemming::dataplane::sai::SetPortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(port_id); + + switch (attr->id) { + case SAI_PORT_ATTR_SPEED: + req.set_speed(attr->value.u32); + break; + case SAI_PORT_ATTR_AUTO_NEG_MODE: + req.set_auto_neg_mode(attr->value.booldata); + break; + case SAI_PORT_ATTR_ADMIN_STATE: + req.set_admin_state(attr->value.booldata); + break; + case SAI_PORT_ATTR_MEDIA_TYPE: + req.set_media_type( + convert_sai_port_media_type_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_SPEED: + req.mutable_advertised_speed()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: + req.mutable_advertised_fec_mode()->CopyFrom( + convert_list_sai_port_fec_mode_t_to_proto(attr->value.s32list)); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: + req.mutable_advertised_fec_mode_extended()->CopyFrom( + convert_list_sai_port_fec_mode_extended_t_to_proto( + attr->value.s32list)); + break; + case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: + req.mutable_advertised_half_duplex_speed()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: + req.set_advertised_auto_neg_mode(attr->value.booldata); + break; + case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: + req.set_advertised_flow_control_mode( + convert_sai_port_flow_control_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + req.set_advertised_asymmetric_pause_mode(attr->value.booldata); + break; + case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: + req.set_advertised_media_type( + convert_sai_port_media_type_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: + req.set_advertised_oui_code(attr->value.u32); + break; + case SAI_PORT_ATTR_PORT_VLAN_ID: + req.set_port_vlan_id(attr->value.u16); + break; + case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: + req.set_default_vlan_priority(attr->value.u8); + break; + case SAI_PORT_ATTR_DROP_UNTAGGED: + req.set_drop_untagged(attr->value.booldata); + break; + case SAI_PORT_ATTR_DROP_TAGGED: + req.set_drop_tagged(attr->value.booldata); + break; + case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: + req.set_internal_loopback_mode( + convert_sai_port_internal_loopback_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_USE_EXTENDED_FEC: + req.set_use_extended_fec(attr->value.booldata); + break; + case SAI_PORT_ATTR_FEC_MODE: + req.set_fec_mode(convert_sai_port_fec_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_FEC_MODE_EXTENDED: + req.set_fec_mode_extended( + convert_sai_port_fec_mode_extended_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_UPDATE_DSCP: + req.set_update_dscp(attr->value.booldata); + break; + case SAI_PORT_ATTR_MTU: + req.set_mtu(attr->value.u32); + break; + case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: + req.set_flood_storm_control_policer_id(attr->value.oid); + break; + case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: + req.set_broadcast_storm_control_policer_id(attr->value.oid); + break; + case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: + req.set_multicast_storm_control_policer_id(attr->value.oid); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: + req.set_global_flow_control_mode( + convert_sai_port_flow_control_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_INGRESS_ACL: + req.set_ingress_acl(attr->value.oid); + break; + case SAI_PORT_ATTR_EGRESS_ACL: + req.set_egress_acl(attr->value.oid); + break; + case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: + req.set_ingress_macsec_acl(attr->value.oid); + break; + case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: + req.set_egress_macsec_acl(attr->value.oid); + break; + case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: + req.mutable_ingress_mirror_session()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: + req.mutable_egress_mirror_session()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + req.set_ingress_samplepacket_enable(attr->value.oid); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: + req.set_egress_samplepacket_enable(attr->value.oid); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: + req.mutable_ingress_sample_mirror_session()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: + req.mutable_egress_sample_mirror_session()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_POLICER_ID: + req.set_policer_id(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_DEFAULT_TC: + req.set_qos_default_tc(attr->value.u8); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: + req.set_qos_dot1p_to_tc_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: + req.set_qos_dot1p_to_color_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: + req.set_qos_dscp_to_tc_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: + req.set_qos_dscp_to_color_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + req.set_qos_tc_to_queue_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + req.set_qos_tc_and_color_to_dot1p_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + req.set_qos_tc_and_color_to_dscp_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: + req.set_qos_tc_to_priority_group_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: + req.set_qos_pfc_priority_to_priority_group_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: + req.set_qos_pfc_priority_to_queue_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: + req.set_qos_scheduler_profile_id(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: + req.mutable_qos_ingress_buffer_profile_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: + req.mutable_qos_egress_buffer_profile_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: + req.set_priority_flow_control_mode( + convert_sai_port_priority_flow_control_mode_t_to_proto( + attr->value.s32)); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: + req.set_priority_flow_control(attr->value.u8); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: + req.set_priority_flow_control_rx(attr->value.u8); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: + req.set_priority_flow_control_tx(attr->value.u8); + break; + case SAI_PORT_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: + req.mutable_egress_block_port_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_HW_PROFILE_ID: + req.set_hw_profile_id(attr->value.u64); + break; + case SAI_PORT_ATTR_EEE_ENABLE: + req.set_eee_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_EEE_IDLE_TIME: + req.set_eee_idle_time(attr->value.u16); + break; + case SAI_PORT_ATTR_EEE_WAKE_TIME: + req.set_eee_wake_time(attr->value.u16); + break; + case SAI_PORT_ATTR_ISOLATION_GROUP: + req.set_isolation_group(attr->value.oid); + break; + case SAI_PORT_ATTR_PKT_TX_ENABLE: + req.set_pkt_tx_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_TAM_OBJECT: + req.mutable_tam_object()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_PORT_ATTR_SERDES_PREEMPHASIS: + req.mutable_serdes_preemphasis()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IDRIVER: + req.mutable_serdes_idriver()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IPREDRIVER: + req.mutable_serdes_ipredriver()->Add( + attr->value.u32list.list, + attr->value.u32list.list + attr->value.u32list.count); + break; + case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: + req.set_link_training_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_PTP_MODE: + req.set_ptp_mode(convert_sai_port_ptp_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_INTERFACE_TYPE: + req.set_interface_type( + convert_sai_port_interface_type_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: + req.mutable_advertised_interface_type()->CopyFrom( + convert_list_sai_port_interface_type_t_to_proto(attr->value.s32list)); + break; + case SAI_PORT_ATTR_PRBS_POLYNOMIAL: + req.set_prbs_polynomial(attr->value.u32); + break; + case SAI_PORT_ATTR_PRBS_CONFIG: + req.set_prbs_config( + convert_sai_port_prbs_config_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: + req.set_disable_decrement_ttl(attr->value.booldata); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + req.set_qos_mpls_exp_to_tc_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + req.set_qos_mpls_exp_to_color_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); + break; + case SAI_PORT_ATTR_TPID: + req.set_tpid(attr->value.u16); + break; + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: + req.set_auto_neg_fec_mode_override(attr->value.booldata); + break; + case SAI_PORT_ATTR_LOOPBACK_MODE: + req.set_loopback_mode( + convert_sai_port_loopback_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_MDIX_MODE_CONFIG: + req.set_mdix_mode_config( + convert_sai_port_mdix_mode_config_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: + req.set_auto_neg_config_mode( + convert_sai_port_auto_neg_config_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: + req.set__1000x_sgmii_slave_autodetect(attr->value.booldata); + break; + case SAI_PORT_ATTR_MODULE_TYPE: + req.set_module_type( + convert_sai_port_module_type_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_DUAL_MEDIA: + req.set_dual_media( + convert_sai_port_dual_media_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_IPG: + req.set_ipg(attr->value.u32); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: + req.set_global_flow_control_forward(attr->value.booldata); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: + req.set_priority_flow_control_forward(attr->value.booldata); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + req.set_qos_dscp_to_forwarding_class_map(attr->value.oid); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + req.set_qos_mpls_exp_to_forwarding_class_map(attr->value.oid); + break; + case SAI_PORT_ATTR_FABRIC_ISOLATE: + req.set_fabric_isolate(attr->value.booldata); + break; + case SAI_PORT_ATTR_ARS_ENABLE: + req.set_ars_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: + req.set_ars_port_load_scaling_factor(attr->value.u32); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: + req.set_ars_port_load_past_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: + req.set_ars_port_load_future_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: + req.set_ars_alternate_path(attr->value.booldata); + break; + case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: + req.set_ecmp_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ECMP_HASH_SEED: + req.set_ecmp_hash_seed(attr->value.u32); + break; + case SAI_PORT_ATTR_ECMP_HASH_OFFSET: + req.set_ecmp_hash_offset(attr->value.u8); + break; + case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: + req.set_host_tx_signal_enable(attr->value.booldata); + break; + case SAI_PORT_ATTR_PATH_TRACING_INTF: + req.set_path_tracing_intf(attr->value.u16); + break; + case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: + req.set_path_tracing_timestamp_type( + convert_sai_port_path_tracing_timestamp_type_t_to_proto( + attr->value.s32)); + break; + case SAI_PORT_ATTR_DATAPATH_ENABLE: + req.set_datapath_enable( + convert_sai_port_datapath_enable_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_CABLE_TYPE: + req.set_cable_type( + convert_sai_port_cable_type_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: + req.set_ars_port_load_past_weight(attr->value.u32); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: + req.set_ars_port_load_future_weight(attr->value.u32); + break; + case SAI_PORT_ATTR_UNRELIABLE_LOS: + req.set_unreliable_los(attr->value.booldata); + break; + case SAI_PORT_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_PORT_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = port->SetPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = port->SetPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_port_attribute(sai_object_id_t port_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortAttributeRequest req; + lemming::dataplane::sai::GetPortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = port->GetPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_port_type_t_to_sai(resp.attr().type()); + break; + case SAI_PORT_ATTR_OPER_STATUS: + attr_list[i].value.s32 = + convert_sai_port_oper_status_t_to_sai(resp.attr().oper_status()); + break; + case SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: + convert_list_sai_port_breakout_mode_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_breakout_mode_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: + attr_list[i].value.s32 = convert_sai_port_breakout_mode_type_t_to_sai( + resp.attr().current_breakout_mode_type()); + break; + case SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES: + attr_list[i].value.u32 = resp.attr().qos_number_of_queues(); + break; + case SAI_PORT_ATTR_QOS_QUEUE_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().qos_queue_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: + attr_list[i].value.u32 = resp.attr().qos_number_of_scheduler_groups(); + break; + case SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().qos_scheduler_group_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: + attr_list[i].value.u32 = resp.attr().qos_maximum_headroom_size(); + break; + case SAI_PORT_ATTR_SUPPORTED_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().supported_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SUPPORTED_FEC_MODE: + convert_list_sai_port_fec_mode_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().supported_fec_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: + convert_list_sai_port_fec_mode_extended_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_fec_mode_extended(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().supported_half_duplex_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: + attr_list[i].value.booldata = resp.attr().supported_auto_neg_mode(); + break; + case SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: + attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai( + resp.attr().supported_flow_control_mode()); + break; + case SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: + attr_list[i].value.booldata = + resp.attr().supported_asymmetric_pause_mode(); + break; + case SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE: + attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai( + resp.attr().supported_media_type()); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().remote_advertised_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: + convert_list_sai_port_fec_mode_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().remote_advertised_fec_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: + convert_list_sai_port_fec_mode_extended_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().remote_advertised_fec_mode_extended(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().remote_advertised_half_duplex_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: + attr_list[i].value.booldata = + resp.attr().remote_advertised_auto_neg_mode(); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: + attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai( + resp.attr().remote_advertised_flow_control_mode()); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + attr_list[i].value.booldata = + resp.attr().remote_advertised_asymmetric_pause_mode(); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: + attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai( + resp.attr().remote_advertised_media_type()); + break; + case SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: + attr_list[i].value.u32 = resp.attr().remote_advertised_oui_code(); + break; + case SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: + attr_list[i].value.u32 = + resp.attr().number_of_ingress_priority_groups(); + break; + case SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ingress_priority_group_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_OPER_SPEED: + attr_list[i].value.u32 = resp.attr().oper_speed(); + break; + case SAI_PORT_ATTR_HW_LANE_LIST: + copy_list(attr_list[i].value.u32list.list, resp.attr().hw_lane_list(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SPEED: + attr_list[i].value.u32 = resp.attr().speed(); + break; + case SAI_PORT_ATTR_FULL_DUPLEX_MODE: + attr_list[i].value.booldata = resp.attr().full_duplex_mode(); + break; + case SAI_PORT_ATTR_AUTO_NEG_MODE: + attr_list[i].value.booldata = resp.attr().auto_neg_mode(); + break; + case SAI_PORT_ATTR_ADMIN_STATE: + attr_list[i].value.booldata = resp.attr().admin_state(); + break; + case SAI_PORT_ATTR_MEDIA_TYPE: + attr_list[i].value.s32 = + convert_sai_port_media_type_t_to_sai(resp.attr().media_type()); + break; + case SAI_PORT_ATTR_ADVERTISED_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().advertised_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: + convert_list_sai_port_fec_mode_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().advertised_fec_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: + convert_list_sai_port_fec_mode_extended_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().advertised_fec_mode_extended(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: + copy_list(attr_list[i].value.u32list.list, + resp.attr().advertised_half_duplex_speed(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: + attr_list[i].value.booldata = resp.attr().advertised_auto_neg_mode(); + break; + case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: + attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai( + resp.attr().advertised_flow_control_mode()); + break; + case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: + attr_list[i].value.booldata = + resp.attr().advertised_asymmetric_pause_mode(); + break; + case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: + attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai( + resp.attr().advertised_media_type()); + break; + case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: + attr_list[i].value.u32 = resp.attr().advertised_oui_code(); + break; + case SAI_PORT_ATTR_PORT_VLAN_ID: + attr_list[i].value.u16 = resp.attr().port_vlan_id(); + break; + case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: + attr_list[i].value.u8 = resp.attr().default_vlan_priority(); + break; + case SAI_PORT_ATTR_DROP_UNTAGGED: + attr_list[i].value.booldata = resp.attr().drop_untagged(); + break; + case SAI_PORT_ATTR_DROP_TAGGED: + attr_list[i].value.booldata = resp.attr().drop_tagged(); + break; + case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: + attr_list[i].value.s32 = + convert_sai_port_internal_loopback_mode_t_to_sai( + resp.attr().internal_loopback_mode()); + break; + case SAI_PORT_ATTR_USE_EXTENDED_FEC: + attr_list[i].value.booldata = resp.attr().use_extended_fec(); + break; + case SAI_PORT_ATTR_FEC_MODE: + attr_list[i].value.s32 = + convert_sai_port_fec_mode_t_to_sai(resp.attr().fec_mode()); + break; + case SAI_PORT_ATTR_FEC_MODE_EXTENDED: + attr_list[i].value.s32 = convert_sai_port_fec_mode_extended_t_to_sai( + resp.attr().fec_mode_extended()); + break; + case SAI_PORT_ATTR_UPDATE_DSCP: + attr_list[i].value.booldata = resp.attr().update_dscp(); + break; + case SAI_PORT_ATTR_MTU: + attr_list[i].value.u32 = resp.attr().mtu(); + break; + case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: + attr_list[i].value.oid = resp.attr().flood_storm_control_policer_id(); + break; + case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: + attr_list[i].value.oid = + resp.attr().broadcast_storm_control_policer_id(); + break; + case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: + attr_list[i].value.oid = + resp.attr().multicast_storm_control_policer_id(); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: + attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai( + resp.attr().global_flow_control_mode()); + break; + case SAI_PORT_ATTR_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().ingress_acl(); + break; + case SAI_PORT_ATTR_EGRESS_ACL: + attr_list[i].value.oid = resp.attr().egress_acl(); + break; + case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: + attr_list[i].value.oid = resp.attr().ingress_macsec_acl(); + break; + case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: + attr_list[i].value.oid = resp.attr().egress_macsec_acl(); + break; + case SAI_PORT_ATTR_MACSEC_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().macsec_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ingress_mirror_session(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: + copy_list(attr_list[i].value.objlist.list, + resp.attr().egress_mirror_session(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + attr_list[i].value.oid = resp.attr().ingress_samplepacket_enable(); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: + attr_list[i].value.oid = resp.attr().egress_samplepacket_enable(); + break; + case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ingress_sample_mirror_session(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: + copy_list(attr_list[i].value.objlist.list, + resp.attr().egress_sample_mirror_session(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_POLICER_ID: + attr_list[i].value.oid = resp.attr().policer_id(); + break; + case SAI_PORT_ATTR_QOS_DEFAULT_TC: + attr_list[i].value.u8 = resp.attr().qos_default_tc(); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_dot1p_to_tc_map(); + break; + case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_dot1p_to_color_map(); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_tc_map(); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_color_map(); + break; + case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dot1p_map(); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dscp_map(); + break; + case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_to_priority_group_map(); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: + attr_list[i].value.oid = + resp.attr().qos_pfc_priority_to_priority_group_map(); + break; + case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().qos_pfc_priority_to_queue_map(); + break; + case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: + attr_list[i].value.oid = resp.attr().qos_scheduler_profile_id(); + break; + case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().qos_ingress_buffer_profile_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().qos_egress_buffer_profile_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: + attr_list[i].value.s32 = + convert_sai_port_priority_flow_control_mode_t_to_sai( + resp.attr().priority_flow_control_mode()); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: + attr_list[i].value.u8 = resp.attr().priority_flow_control(); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: + attr_list[i].value.u8 = resp.attr().priority_flow_control_rx(); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: + attr_list[i].value.u8 = resp.attr().priority_flow_control_tx(); + break; + case SAI_PORT_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().egress_block_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_HW_PROFILE_ID: + attr_list[i].value.u64 = resp.attr().hw_profile_id(); + break; + case SAI_PORT_ATTR_EEE_ENABLE: + attr_list[i].value.booldata = resp.attr().eee_enable(); + break; + case SAI_PORT_ATTR_EEE_IDLE_TIME: + attr_list[i].value.u16 = resp.attr().eee_idle_time(); + break; + case SAI_PORT_ATTR_EEE_WAKE_TIME: + attr_list[i].value.u16 = resp.attr().eee_wake_time(); + break; + case SAI_PORT_ATTR_PORT_POOL_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().port_pool_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_ISOLATION_GROUP: + attr_list[i].value.oid = resp.attr().isolation_group(); + break; + case SAI_PORT_ATTR_PKT_TX_ENABLE: + attr_list[i].value.booldata = resp.attr().pkt_tx_enable(); + break; + case SAI_PORT_ATTR_TAM_OBJECT: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), + &attr_list[i].value.objlist.count); + break; + case SAI_PORT_ATTR_SERDES_PREEMPHASIS: + copy_list(attr_list[i].value.u32list.list, + resp.attr().serdes_preemphasis(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IDRIVER: + copy_list(attr_list[i].value.u32list.list, resp.attr().serdes_idriver(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_SERDES_IPREDRIVER: + copy_list(attr_list[i].value.u32list.list, + resp.attr().serdes_ipredriver(), + &attr_list[i].value.u32list.count); + break; + case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: + attr_list[i].value.booldata = resp.attr().link_training_enable(); + break; + case SAI_PORT_ATTR_PTP_MODE: + attr_list[i].value.s32 = + convert_sai_port_ptp_mode_t_to_sai(resp.attr().ptp_mode()); + break; + case SAI_PORT_ATTR_INTERFACE_TYPE: + attr_list[i].value.s32 = convert_sai_port_interface_type_t_to_sai( + resp.attr().interface_type()); + break; + case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: + convert_list_sai_port_interface_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().advertised_interface_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_REFERENCE_CLOCK: + attr_list[i].value.u64 = resp.attr().reference_clock(); + break; + case SAI_PORT_ATTR_PRBS_POLYNOMIAL: + attr_list[i].value.u32 = resp.attr().prbs_polynomial(); + break; + case SAI_PORT_ATTR_PORT_SERDES_ID: + attr_list[i].value.oid = resp.attr().port_serdes_id(); + break; + case SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: + attr_list[i].value.s32 = + convert_sai_port_link_training_failure_status_t_to_sai( + resp.attr().link_training_failure_status()); + break; + case SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS: + attr_list[i].value.s32 = + convert_sai_port_link_training_rx_status_t_to_sai( + resp.attr().link_training_rx_status()); + break; + case SAI_PORT_ATTR_PRBS_CONFIG: + attr_list[i].value.s32 = + convert_sai_port_prbs_config_t_to_sai(resp.attr().prbs_config()); + break; + case SAI_PORT_ATTR_PRBS_LOCK_STATUS: + attr_list[i].value.booldata = resp.attr().prbs_lock_status(); + break; + case SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS: + attr_list[i].value.booldata = resp.attr().prbs_lock_loss_status(); + break; + case SAI_PORT_ATTR_PRBS_RX_STATUS: + attr_list[i].value.s32 = convert_sai_port_prbs_rx_status_t_to_sai( + resp.attr().prbs_rx_status()); + break; + case SAI_PORT_ATTR_AUTO_NEG_STATUS: + attr_list[i].value.booldata = resp.attr().auto_neg_status(); + break; + case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: + attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_tc_map(); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_color_map(); + break; + case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); + break; + case SAI_PORT_ATTR_TPID: + attr_list[i].value.u16 = resp.attr().tpid(); + break; + case SAI_PORT_ATTR_FABRIC_ATTACHED: + attr_list[i].value.booldata = resp.attr().fabric_attached(); + break; + case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: + attr_list[i].value.s32 = convert_sai_switch_type_t_to_sai( + resp.attr().fabric_attached_switch_type()); + break; + case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: + attr_list[i].value.u32 = resp.attr().fabric_attached_switch_id(); + break; + case SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: + attr_list[i].value.u32 = resp.attr().fabric_attached_port_index(); + break; + case SAI_PORT_ATTR_SYSTEM_PORT: + attr_list[i].value.oid = resp.attr().system_port(); + break; + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: + attr_list[i].value.booldata = resp.attr().auto_neg_fec_mode_override(); + break; + case SAI_PORT_ATTR_LOOPBACK_MODE: + attr_list[i].value.s32 = convert_sai_port_loopback_mode_t_to_sai( + resp.attr().loopback_mode()); + break; + case SAI_PORT_ATTR_MDIX_MODE_STATUS: + attr_list[i].value.s32 = convert_sai_port_mdix_mode_status_t_to_sai( + resp.attr().mdix_mode_status()); + break; + case SAI_PORT_ATTR_MDIX_MODE_CONFIG: + attr_list[i].value.s32 = convert_sai_port_mdix_mode_config_t_to_sai( + resp.attr().mdix_mode_config()); + break; + case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: + attr_list[i].value.s32 = convert_sai_port_auto_neg_config_mode_t_to_sai( + resp.attr().auto_neg_config_mode()); + break; + case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: + attr_list[i].value.booldata = + resp.attr()._1000x_sgmii_slave_autodetect(); + break; + case SAI_PORT_ATTR_MODULE_TYPE: + attr_list[i].value.s32 = + convert_sai_port_module_type_t_to_sai(resp.attr().module_type()); + break; + case SAI_PORT_ATTR_DUAL_MEDIA: + attr_list[i].value.s32 = + convert_sai_port_dual_media_t_to_sai(resp.attr().dual_media()); + break; + case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: + attr_list[i].value.s32 = convert_sai_port_fec_mode_extended_t_to_sai( + resp.attr().auto_neg_fec_mode_extended()); + break; + case SAI_PORT_ATTR_IPG: + attr_list[i].value.u32 = resp.attr().ipg(); + break; + case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: + attr_list[i].value.booldata = resp.attr().global_flow_control_forward(); + break; + case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: + attr_list[i].value.booldata = + resp.attr().priority_flow_control_forward(); + break; + case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_forwarding_class_map(); + break; + case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + attr_list[i].value.oid = + resp.attr().qos_mpls_exp_to_forwarding_class_map(); + break; + case SAI_PORT_ATTR_IPSEC_PORT: + attr_list[i].value.oid = resp.attr().ipsec_port(); + break; + case SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: + attr_list[i].value.booldata = + resp.attr().supported_link_training_mode(); + break; + case SAI_PORT_ATTR_FABRIC_ISOLATE: + attr_list[i].value.booldata = resp.attr().fabric_isolate(); + break; + case SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: + attr_list[i].value.u32 = resp.attr().max_fec_symbol_errors_detectable(); + break; + case SAI_PORT_ATTR_ARS_ENABLE: + attr_list[i].value.booldata = resp.attr().ars_enable(); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: + attr_list[i].value.u32 = resp.attr().ars_port_load_scaling_factor(); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: + attr_list[i].value.booldata = resp.attr().ars_port_load_past_enable(); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: + attr_list[i].value.booldata = resp.attr().ars_port_load_future_enable(); + break; + case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: + attr_list[i].value.booldata = resp.attr().ars_alternate_path(); + break; + case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: + copy_list(attr_list[i].value.s8list.list, + resp.attr().json_formatted_debug_data(), + &attr_list[i].value.s8list.count); + break; + case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: + attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai( + resp.attr().ecmp_hash_algorithm()); + break; + case SAI_PORT_ATTR_ECMP_HASH_SEED: + attr_list[i].value.u32 = resp.attr().ecmp_hash_seed(); + break; + case SAI_PORT_ATTR_ECMP_HASH_OFFSET: + attr_list[i].value.u8 = resp.attr().ecmp_hash_offset(); + break; + case SAI_PORT_ATTR_OPER_PORT_FEC_MODE: + attr_list[i].value.s32 = convert_sai_port_fec_mode_t_to_sai( + resp.attr().oper_port_fec_mode()); + break; + case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: + attr_list[i].value.booldata = resp.attr().host_tx_signal_enable(); + break; + case SAI_PORT_ATTR_HOST_TX_READY_STATUS: + attr_list[i].value.s32 = convert_sai_port_host_tx_ready_status_t_to_sai( + resp.attr().host_tx_ready_status()); + break; + case SAI_PORT_ATTR_PATH_TRACING_INTF: + attr_list[i].value.u16 = resp.attr().path_tracing_intf(); + break; + case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: + attr_list[i].value.s32 = + convert_sai_port_path_tracing_timestamp_type_t_to_sai( + resp.attr().path_tracing_timestamp_type()); + break; + case SAI_PORT_ATTR_DATAPATH_ENABLE: + attr_list[i].value.s32 = convert_sai_port_datapath_enable_t_to_sai( + resp.attr().datapath_enable()); + break; + case SAI_PORT_ATTR_CABLE_PAIR_STATE: + convert_list_sai_port_cable_pair_state_t_to_sai( + attr_list[i].value.s32list.list, resp.attr().cable_pair_state(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_CABLE_PAIR_LENGTH: + copy_list(attr_list[i].value.s32list.list, + resp.attr().cable_pair_length(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_ATTR_CABLE_TYPE: + attr_list[i].value.s32 = + convert_sai_port_cable_type_t_to_sai(resp.attr().cable_type()); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: + attr_list[i].value.u32 = resp.attr().ars_port_load_past_weight(); + break; + case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: + attr_list[i].value.u32 = resp.attr().ars_port_load_future_weight(); + break; + case SAI_PORT_ATTR_POE_PORT_ID: + attr_list[i].value.oid = resp.attr().poe_port_id(); + break; + case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA_SIZE: + attr_list[i].value.u32 = resp.attr().json_formatted_debug_data_size(); + break; + case SAI_PORT_ATTR_UNRELIABLE_LOS: + attr_list[i].value.booldata = resp.attr().unreliable_los(); + break; + case SAI_PORT_ATTR_ERROR_STATUS: + attr_list[i].value.s32 = + convert_sai_port_error_status_t_to_sai(resp.attr().error_status()); + break; + case SAI_PORT_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_PORT_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_port_attribute(sai_object_id_t port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortAttributeRequest req; - lemming::dataplane::sai::GetPortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = port->GetPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_port_type_t_to_sai(resp.attr().type()); - break; - case SAI_PORT_ATTR_OPER_STATUS: - attr_list[i].value.s32 = convert_sai_port_oper_status_t_to_sai(resp.attr().oper_status()); - break; - case SAI_PORT_ATTR_SUPPORTED_BREAKOUT_MODE_TYPE: - convert_list_sai_port_breakout_mode_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_breakout_mode_type(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_CURRENT_BREAKOUT_MODE_TYPE: - attr_list[i].value.s32 = convert_sai_port_breakout_mode_type_t_to_sai(resp.attr().current_breakout_mode_type()); - break; - case SAI_PORT_ATTR_QOS_NUMBER_OF_QUEUES: - attr_list[i].value.u32 = resp.attr().qos_number_of_queues(); - break; - case SAI_PORT_ATTR_QOS_QUEUE_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().qos_queue_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_QOS_NUMBER_OF_SCHEDULER_GROUPS: - attr_list[i].value.u32 = resp.attr().qos_number_of_scheduler_groups(); - break; - case SAI_PORT_ATTR_QOS_SCHEDULER_GROUP_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().qos_scheduler_group_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_QOS_MAXIMUM_HEADROOM_SIZE: - attr_list[i].value.u32 = resp.attr().qos_maximum_headroom_size(); - break; - case SAI_PORT_ATTR_SUPPORTED_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().supported_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SUPPORTED_FEC_MODE: - convert_list_sai_port_fec_mode_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_fec_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_SUPPORTED_FEC_MODE_EXTENDED: - convert_list_sai_port_fec_mode_extended_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_fec_mode_extended(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_SUPPORTED_HALF_DUPLEX_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().supported_half_duplex_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE: - attr_list[i].value.booldata = resp.attr().supported_auto_neg_mode(); - break; - case SAI_PORT_ATTR_SUPPORTED_FLOW_CONTROL_MODE: - attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai(resp.attr().supported_flow_control_mode()); - break; - case SAI_PORT_ATTR_SUPPORTED_ASYMMETRIC_PAUSE_MODE: - attr_list[i].value.booldata = resp.attr().supported_asymmetric_pause_mode(); - break; - case SAI_PORT_ATTR_SUPPORTED_MEDIA_TYPE: - attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai(resp.attr().supported_media_type()); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().remote_advertised_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE: - convert_list_sai_port_fec_mode_t_to_sai(attr_list[i].value.s32list.list, resp.attr().remote_advertised_fec_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE_EXTENDED: - convert_list_sai_port_fec_mode_extended_t_to_sai(attr_list[i].value.s32list.list, resp.attr().remote_advertised_fec_mode_extended(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_HALF_DUPLEX_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().remote_advertised_half_duplex_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_AUTO_NEG_MODE: - attr_list[i].value.booldata = resp.attr().remote_advertised_auto_neg_mode(); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_FLOW_CONTROL_MODE: - attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai(resp.attr().remote_advertised_flow_control_mode()); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_ASYMMETRIC_PAUSE_MODE: - attr_list[i].value.booldata = resp.attr().remote_advertised_asymmetric_pause_mode(); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_MEDIA_TYPE: - attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai(resp.attr().remote_advertised_media_type()); - break; - case SAI_PORT_ATTR_REMOTE_ADVERTISED_OUI_CODE: - attr_list[i].value.u32 = resp.attr().remote_advertised_oui_code(); - break; - case SAI_PORT_ATTR_NUMBER_OF_INGRESS_PRIORITY_GROUPS: - attr_list[i].value.u32 = resp.attr().number_of_ingress_priority_groups(); - break; - case SAI_PORT_ATTR_INGRESS_PRIORITY_GROUP_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().ingress_priority_group_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_OPER_SPEED: - attr_list[i].value.u32 = resp.attr().oper_speed(); - break; - case SAI_PORT_ATTR_HW_LANE_LIST: - copy_list(attr_list[i].value.u32list.list, resp.attr().hw_lane_list(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SPEED: - attr_list[i].value.u32 = resp.attr().speed(); - break; - case SAI_PORT_ATTR_FULL_DUPLEX_MODE: - attr_list[i].value.booldata = resp.attr().full_duplex_mode(); - break; - case SAI_PORT_ATTR_AUTO_NEG_MODE: - attr_list[i].value.booldata = resp.attr().auto_neg_mode(); - break; - case SAI_PORT_ATTR_ADMIN_STATE: - attr_list[i].value.booldata = resp.attr().admin_state(); - break; - case SAI_PORT_ATTR_MEDIA_TYPE: - attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai(resp.attr().media_type()); - break; - case SAI_PORT_ATTR_ADVERTISED_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().advertised_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE: - convert_list_sai_port_fec_mode_t_to_sai(attr_list[i].value.s32list.list, resp.attr().advertised_fec_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_FEC_MODE_EXTENDED: - convert_list_sai_port_fec_mode_extended_t_to_sai(attr_list[i].value.s32list.list, resp.attr().advertised_fec_mode_extended(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_HALF_DUPLEX_SPEED: - copy_list(attr_list[i].value.u32list.list, resp.attr().advertised_half_duplex_speed(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_ADVERTISED_AUTO_NEG_MODE: - attr_list[i].value.booldata = resp.attr().advertised_auto_neg_mode(); - break; - case SAI_PORT_ATTR_ADVERTISED_FLOW_CONTROL_MODE: - attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai(resp.attr().advertised_flow_control_mode()); - break; - case SAI_PORT_ATTR_ADVERTISED_ASYMMETRIC_PAUSE_MODE: - attr_list[i].value.booldata = resp.attr().advertised_asymmetric_pause_mode(); - break; - case SAI_PORT_ATTR_ADVERTISED_MEDIA_TYPE: - attr_list[i].value.s32 = convert_sai_port_media_type_t_to_sai(resp.attr().advertised_media_type()); - break; - case SAI_PORT_ATTR_ADVERTISED_OUI_CODE: - attr_list[i].value.u32 = resp.attr().advertised_oui_code(); - break; - case SAI_PORT_ATTR_PORT_VLAN_ID: - attr_list[i].value.u16 = resp.attr().port_vlan_id(); - break; - case SAI_PORT_ATTR_DEFAULT_VLAN_PRIORITY: - attr_list[i].value.u8 = resp.attr().default_vlan_priority(); - break; - case SAI_PORT_ATTR_DROP_UNTAGGED: - attr_list[i].value.booldata = resp.attr().drop_untagged(); - break; - case SAI_PORT_ATTR_DROP_TAGGED: - attr_list[i].value.booldata = resp.attr().drop_tagged(); - break; - case SAI_PORT_ATTR_INTERNAL_LOOPBACK_MODE: - attr_list[i].value.s32 = convert_sai_port_internal_loopback_mode_t_to_sai(resp.attr().internal_loopback_mode()); - break; - case SAI_PORT_ATTR_USE_EXTENDED_FEC: - attr_list[i].value.booldata = resp.attr().use_extended_fec(); - break; - case SAI_PORT_ATTR_FEC_MODE: - attr_list[i].value.s32 = convert_sai_port_fec_mode_t_to_sai(resp.attr().fec_mode()); - break; - case SAI_PORT_ATTR_FEC_MODE_EXTENDED: - attr_list[i].value.s32 = convert_sai_port_fec_mode_extended_t_to_sai(resp.attr().fec_mode_extended()); - break; - case SAI_PORT_ATTR_UPDATE_DSCP: - attr_list[i].value.booldata = resp.attr().update_dscp(); - break; - case SAI_PORT_ATTR_MTU: - attr_list[i].value.u32 = resp.attr().mtu(); - break; - case SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID: - attr_list[i].value.oid = resp.attr().flood_storm_control_policer_id(); - break; - case SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID: - attr_list[i].value.oid = resp.attr().broadcast_storm_control_policer_id(); - break; - case SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID: - attr_list[i].value.oid = resp.attr().multicast_storm_control_policer_id(); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_MODE: - attr_list[i].value.s32 = convert_sai_port_flow_control_mode_t_to_sai(resp.attr().global_flow_control_mode()); - break; - case SAI_PORT_ATTR_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().ingress_acl(); - break; - case SAI_PORT_ATTR_EGRESS_ACL: - attr_list[i].value.oid = resp.attr().egress_acl(); - break; - case SAI_PORT_ATTR_INGRESS_MACSEC_ACL: - attr_list[i].value.oid = resp.attr().ingress_macsec_acl(); - break; - case SAI_PORT_ATTR_EGRESS_MACSEC_ACL: - attr_list[i].value.oid = resp.attr().egress_macsec_acl(); - break; - case SAI_PORT_ATTR_MACSEC_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().macsec_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_INGRESS_MIRROR_SESSION: - copy_list(attr_list[i].value.objlist.list, resp.attr().ingress_mirror_session(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_MIRROR_SESSION: - copy_list(attr_list[i].value.objlist.list, resp.attr().egress_mirror_session(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - attr_list[i].value.oid = resp.attr().ingress_samplepacket_enable(); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLEPACKET_ENABLE: - attr_list[i].value.oid = resp.attr().egress_samplepacket_enable(); - break; - case SAI_PORT_ATTR_INGRESS_SAMPLE_MIRROR_SESSION: - copy_list(attr_list[i].value.objlist.list, resp.attr().ingress_sample_mirror_session(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_EGRESS_SAMPLE_MIRROR_SESSION: - copy_list(attr_list[i].value.objlist.list, resp.attr().egress_sample_mirror_session(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_POLICER_ID: - attr_list[i].value.oid = resp.attr().policer_id(); - break; - case SAI_PORT_ATTR_QOS_DEFAULT_TC: - attr_list[i].value.u8 = resp.attr().qos_default_tc(); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_dot1p_to_tc_map(); - break; - case SAI_PORT_ATTR_QOS_DOT1P_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_dot1p_to_color_map(); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_tc_map(); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_color_map(); - break; - case SAI_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dot1p_map(); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dscp_map(); - break; - case SAI_PORT_ATTR_QOS_TC_TO_PRIORITY_GROUP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_to_priority_group_map(); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_PRIORITY_GROUP_MAP: - attr_list[i].value.oid = resp.attr().qos_pfc_priority_to_priority_group_map(); - break; - case SAI_PORT_ATTR_QOS_PFC_PRIORITY_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().qos_pfc_priority_to_queue_map(); - break; - case SAI_PORT_ATTR_QOS_SCHEDULER_PROFILE_ID: - attr_list[i].value.oid = resp.attr().qos_scheduler_profile_id(); - break; - case SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().qos_ingress_buffer_profile_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().qos_egress_buffer_profile_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_MODE: - attr_list[i].value.s32 = convert_sai_port_priority_flow_control_mode_t_to_sai(resp.attr().priority_flow_control_mode()); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL: - attr_list[i].value.u8 = resp.attr().priority_flow_control(); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_RX: - attr_list[i].value.u8 = resp.attr().priority_flow_control_rx(); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_TX: - attr_list[i].value.u8 = resp.attr().priority_flow_control_tx(); - break; - case SAI_PORT_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; - case SAI_PORT_ATTR_EGRESS_BLOCK_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().egress_block_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_HW_PROFILE_ID: - attr_list[i].value.u64 = resp.attr().hw_profile_id(); - break; - case SAI_PORT_ATTR_EEE_ENABLE: - attr_list[i].value.booldata = resp.attr().eee_enable(); - break; - case SAI_PORT_ATTR_EEE_IDLE_TIME: - attr_list[i].value.u16 = resp.attr().eee_idle_time(); - break; - case SAI_PORT_ATTR_EEE_WAKE_TIME: - attr_list[i].value.u16 = resp.attr().eee_wake_time(); - break; - case SAI_PORT_ATTR_PORT_POOL_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_pool_list(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_ISOLATION_GROUP: - attr_list[i].value.oid = resp.attr().isolation_group(); - break; - case SAI_PORT_ATTR_PKT_TX_ENABLE: - attr_list[i].value.booldata = resp.attr().pkt_tx_enable(); - break; - case SAI_PORT_ATTR_TAM_OBJECT: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), &attr_list[i].value.objlist.count); - break; - case SAI_PORT_ATTR_SERDES_PREEMPHASIS: - copy_list(attr_list[i].value.u32list.list, resp.attr().serdes_preemphasis(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IDRIVER: - copy_list(attr_list[i].value.u32list.list, resp.attr().serdes_idriver(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_SERDES_IPREDRIVER: - copy_list(attr_list[i].value.u32list.list, resp.attr().serdes_ipredriver(), &attr_list[i].value.u32list.count); - break; - case SAI_PORT_ATTR_LINK_TRAINING_ENABLE: - attr_list[i].value.booldata = resp.attr().link_training_enable(); - break; - case SAI_PORT_ATTR_PTP_MODE: - attr_list[i].value.s32 = convert_sai_port_ptp_mode_t_to_sai(resp.attr().ptp_mode()); - break; - case SAI_PORT_ATTR_INTERFACE_TYPE: - attr_list[i].value.s32 = convert_sai_port_interface_type_t_to_sai(resp.attr().interface_type()); - break; - case SAI_PORT_ATTR_ADVERTISED_INTERFACE_TYPE: - convert_list_sai_port_interface_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().advertised_interface_type(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_REFERENCE_CLOCK: - attr_list[i].value.u64 = resp.attr().reference_clock(); - break; - case SAI_PORT_ATTR_PRBS_POLYNOMIAL: - attr_list[i].value.u32 = resp.attr().prbs_polynomial(); - break; - case SAI_PORT_ATTR_PORT_SERDES_ID: - attr_list[i].value.oid = resp.attr().port_serdes_id(); - break; - case SAI_PORT_ATTR_LINK_TRAINING_FAILURE_STATUS: - attr_list[i].value.s32 = convert_sai_port_link_training_failure_status_t_to_sai(resp.attr().link_training_failure_status()); - break; - case SAI_PORT_ATTR_LINK_TRAINING_RX_STATUS: - attr_list[i].value.s32 = convert_sai_port_link_training_rx_status_t_to_sai(resp.attr().link_training_rx_status()); - break; - case SAI_PORT_ATTR_PRBS_CONFIG: - attr_list[i].value.s32 = convert_sai_port_prbs_config_t_to_sai(resp.attr().prbs_config()); - break; - case SAI_PORT_ATTR_PRBS_LOCK_STATUS: - attr_list[i].value.booldata = resp.attr().prbs_lock_status(); - break; - case SAI_PORT_ATTR_PRBS_LOCK_LOSS_STATUS: - attr_list[i].value.booldata = resp.attr().prbs_lock_loss_status(); - break; - case SAI_PORT_ATTR_PRBS_RX_STATUS: - attr_list[i].value.s32 = convert_sai_port_prbs_rx_status_t_to_sai(resp.attr().prbs_rx_status()); - break; - case SAI_PORT_ATTR_AUTO_NEG_STATUS: - attr_list[i].value.booldata = resp.attr().auto_neg_status(); - break; - case SAI_PORT_ATTR_DISABLE_DECREMENT_TTL: - attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_tc_map(); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_color_map(); - break; - case SAI_PORT_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); - break; - case SAI_PORT_ATTR_TPID: - attr_list[i].value.u16 = resp.attr().tpid(); - break; - case SAI_PORT_ATTR_FABRIC_ATTACHED: - attr_list[i].value.booldata = resp.attr().fabric_attached(); - break; - case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_TYPE: - attr_list[i].value.s32 = convert_sai_switch_type_t_to_sai(resp.attr().fabric_attached_switch_type()); - break; - case SAI_PORT_ATTR_FABRIC_ATTACHED_SWITCH_ID: - attr_list[i].value.u32 = resp.attr().fabric_attached_switch_id(); - break; - case SAI_PORT_ATTR_FABRIC_ATTACHED_PORT_INDEX: - attr_list[i].value.u32 = resp.attr().fabric_attached_port_index(); - break; - case SAI_PORT_ATTR_SYSTEM_PORT: - attr_list[i].value.oid = resp.attr().system_port(); - break; - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_OVERRIDE: - attr_list[i].value.booldata = resp.attr().auto_neg_fec_mode_override(); - break; - case SAI_PORT_ATTR_LOOPBACK_MODE: - attr_list[i].value.s32 = convert_sai_port_loopback_mode_t_to_sai(resp.attr().loopback_mode()); - break; - case SAI_PORT_ATTR_MDIX_MODE_STATUS: - attr_list[i].value.s32 = convert_sai_port_mdix_mode_status_t_to_sai(resp.attr().mdix_mode_status()); - break; - case SAI_PORT_ATTR_MDIX_MODE_CONFIG: - attr_list[i].value.s32 = convert_sai_port_mdix_mode_config_t_to_sai(resp.attr().mdix_mode_config()); - break; - case SAI_PORT_ATTR_AUTO_NEG_CONFIG_MODE: - attr_list[i].value.s32 = convert_sai_port_auto_neg_config_mode_t_to_sai(resp.attr().auto_neg_config_mode()); - break; - case SAI_PORT_ATTR_1000X_SGMII_SLAVE_AUTODETECT: - attr_list[i].value.booldata = resp.attr()._1000x_sgmii_slave_autodetect(); - break; - case SAI_PORT_ATTR_MODULE_TYPE: - attr_list[i].value.s32 = convert_sai_port_module_type_t_to_sai(resp.attr().module_type()); - break; - case SAI_PORT_ATTR_DUAL_MEDIA: - attr_list[i].value.s32 = convert_sai_port_dual_media_t_to_sai(resp.attr().dual_media()); - break; - case SAI_PORT_ATTR_AUTO_NEG_FEC_MODE_EXTENDED: - attr_list[i].value.s32 = convert_sai_port_fec_mode_extended_t_to_sai(resp.attr().auto_neg_fec_mode_extended()); - break; - case SAI_PORT_ATTR_IPG: - attr_list[i].value.u32 = resp.attr().ipg(); - break; - case SAI_PORT_ATTR_GLOBAL_FLOW_CONTROL_FORWARD: - attr_list[i].value.booldata = resp.attr().global_flow_control_forward(); - break; - case SAI_PORT_ATTR_PRIORITY_FLOW_CONTROL_FORWARD: - attr_list[i].value.booldata = resp.attr().priority_flow_control_forward(); - break; - case SAI_PORT_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_forwarding_class_map(); - break; - case SAI_PORT_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_forwarding_class_map(); - break; - case SAI_PORT_ATTR_IPSEC_PORT: - attr_list[i].value.oid = resp.attr().ipsec_port(); - break; - case SAI_PORT_ATTR_SUPPORTED_LINK_TRAINING_MODE: - attr_list[i].value.booldata = resp.attr().supported_link_training_mode(); - break; - case SAI_PORT_ATTR_FABRIC_ISOLATE: - attr_list[i].value.booldata = resp.attr().fabric_isolate(); - break; - case SAI_PORT_ATTR_MAX_FEC_SYMBOL_ERRORS_DETECTABLE: - attr_list[i].value.u32 = resp.attr().max_fec_symbol_errors_detectable(); - break; - case SAI_PORT_ATTR_ARS_ENABLE: - attr_list[i].value.booldata = resp.attr().ars_enable(); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_SCALING_FACTOR: - attr_list[i].value.u32 = resp.attr().ars_port_load_scaling_factor(); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_ENABLE: - attr_list[i].value.booldata = resp.attr().ars_port_load_past_enable(); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_ENABLE: - attr_list[i].value.booldata = resp.attr().ars_port_load_future_enable(); - break; - case SAI_PORT_ATTR_ARS_ALTERNATE_PATH: - attr_list[i].value.booldata = resp.attr().ars_alternate_path(); - break; - case SAI_PORT_ATTR_JSON_FORMATTED_DEBUG_DATA: - copy_list(attr_list[i].value.s8list.list, resp.attr().json_formatted_debug_data(), &attr_list[i].value.s8list.count); - break; - case SAI_PORT_ATTR_ECMP_HASH_ALGORITHM: - attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai(resp.attr().ecmp_hash_algorithm()); - break; - case SAI_PORT_ATTR_ECMP_HASH_SEED: - attr_list[i].value.u32 = resp.attr().ecmp_hash_seed(); - break; - case SAI_PORT_ATTR_ECMP_HASH_OFFSET: - attr_list[i].value.u8 = resp.attr().ecmp_hash_offset(); - break; - case SAI_PORT_ATTR_OPER_PORT_FEC_MODE: - attr_list[i].value.s32 = convert_sai_port_fec_mode_t_to_sai(resp.attr().oper_port_fec_mode()); - break; - case SAI_PORT_ATTR_HOST_TX_SIGNAL_ENABLE: - attr_list[i].value.booldata = resp.attr().host_tx_signal_enable(); - break; - case SAI_PORT_ATTR_HOST_TX_READY_STATUS: - attr_list[i].value.s32 = convert_sai_port_host_tx_ready_status_t_to_sai(resp.attr().host_tx_ready_status()); - break; - case SAI_PORT_ATTR_PATH_TRACING_INTF: - attr_list[i].value.u16 = resp.attr().path_tracing_intf(); - break; - case SAI_PORT_ATTR_PATH_TRACING_TIMESTAMP_TYPE: - attr_list[i].value.s32 = convert_sai_port_path_tracing_timestamp_type_t_to_sai(resp.attr().path_tracing_timestamp_type()); - break; - case SAI_PORT_ATTR_DATAPATH_ENABLE: - attr_list[i].value.s32 = convert_sai_port_datapath_enable_t_to_sai(resp.attr().datapath_enable()); - break; - case SAI_PORT_ATTR_CABLE_PAIR_STATE: - convert_list_sai_port_cable_pair_state_t_to_sai(attr_list[i].value.s32list.list, resp.attr().cable_pair_state(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_CABLE_PAIR_LENGTH: - copy_list(attr_list[i].value.s32list.list, resp.attr().cable_pair_length(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_ATTR_CABLE_TYPE: - attr_list[i].value.s32 = convert_sai_port_cable_type_t_to_sai(resp.attr().cable_type()); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_PAST_WEIGHT: - attr_list[i].value.u32 = resp.attr().ars_port_load_past_weight(); - break; - case SAI_PORT_ATTR_ARS_PORT_LOAD_FUTURE_WEIGHT: - attr_list[i].value.u32 = resp.attr().ars_port_load_future_weight(); - break; - case SAI_PORT_ATTR_POE_PORT_ID: - attr_list[i].value.oid = resp.attr().poe_port_id(); - break; +sai_status_t l_get_port_stats(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortStatsRequest req; + lemming::dataplane::sai::GetPortStatsResponse resp; + grpc::ClientContext context; + req.set_oid(port_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_port_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = port->GetPortStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_port_stats_ext(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_port_stats(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortStatsRequest req; - lemming::dataplane::sai::GetPortStatsResponse resp; - grpc::ClientContext context; - req.set_oid(port_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_port_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = port->GetPortStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_port_stats_ext(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_port_stats(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_port_stats(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } - -sai_status_t l_create_port_pool(sai_object_id_t *port_pool_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePortPoolRequest req = convert_create_port_pool(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreatePortPoolResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = port->CreatePortPool(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (port_pool_id) { - *port_pool_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_port_pool(sai_object_id_t* port_pool_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePortPoolRequest req = + convert_create_port_pool(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreatePortPoolResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = port->CreatePortPool(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (port_pool_id) { + *port_pool_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_port_pool(sai_object_id_t port_pool_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePortPoolRequest req; - lemming::dataplane::sai::RemovePortPoolResponse resp; - grpc::ClientContext context; - req.set_oid(port_pool_id); - - grpc::Status status = port->RemovePortPool(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemovePortPoolRequest req; + lemming::dataplane::sai::RemovePortPoolResponse resp; + grpc::ClientContext context; + req.set_oid(port_pool_id); + + grpc::Status status = port->RemovePortPool(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_port_pool_attribute(sai_object_id_t port_pool_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetPortPoolAttributeRequest req; - lemming::dataplane::sai::SetPortPoolAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(port_pool_id); - - - - -switch (attr->id) { - - case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: - req.set_qos_wred_profile_id(attr->value.oid); - break; +sai_status_t l_set_port_pool_attribute(sai_object_id_t port_pool_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetPortPoolAttributeRequest req; + lemming::dataplane::sai::SetPortPoolAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(port_pool_id); + + switch (attr->id) { + case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: + req.set_qos_wred_profile_id(attr->value.oid); + break; + } + + grpc::Status status = port->SetPortPoolAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = port->SetPortPoolAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_port_pool_attribute(sai_object_id_t port_pool_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortPoolAttributeRequest req; + lemming::dataplane::sai::GetPortPoolAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(port_pool_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_port_pool_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = port->GetPortPoolAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_POOL_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: + attr_list[i].value.oid = resp.attr().buffer_pool_id(); + break; + case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: + attr_list[i].value.oid = resp.attr().qos_wred_profile_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_port_pool_attribute(sai_object_id_t port_pool_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortPoolAttributeRequest req; - lemming::dataplane::sai::GetPortPoolAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(port_pool_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_port_pool_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = port->GetPortPoolAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_POOL_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_PORT_POOL_ATTR_BUFFER_POOL_ID: - attr_list[i].value.oid = resp.attr().buffer_pool_id(); - break; - case SAI_PORT_POOL_ATTR_QOS_WRED_PROFILE_ID: - attr_list[i].value.oid = resp.attr().qos_wred_profile_id(); - break; +sai_status_t l_get_port_pool_stats(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortPoolStatsRequest req; + lemming::dataplane::sai::GetPortPoolStatsResponse resp; + grpc::ClientContext context; + req.set_oid(port_pool_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_port_pool_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = port->GetPortPoolStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_port_pool_stats_ext(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_port_pool_stats(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortPoolStatsRequest req; - lemming::dataplane::sai::GetPortPoolStatsResponse resp; - grpc::ClientContext context; - req.set_oid(port_pool_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_port_pool_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = port->GetPortPoolStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_port_pool_stats_ext(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_port_pool_stats(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_port_pool_stats(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_port_connector(sai_object_id_t *port_connector_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePortConnectorRequest req = convert_create_port_connector(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreatePortConnectorResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = port->CreatePortConnector(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (port_connector_id) { - *port_connector_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_port_connector(sai_object_id_t* port_connector_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePortConnectorRequest req = + convert_create_port_connector(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreatePortConnectorResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = port->CreatePortConnector(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (port_connector_id) { + *port_connector_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_port_connector(sai_object_id_t port_connector_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePortConnectorRequest req; - lemming::dataplane::sai::RemovePortConnectorResponse resp; - grpc::ClientContext context; - req.set_oid(port_connector_id); - - grpc::Status status = port->RemovePortConnector(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemovePortConnectorRequest req; + lemming::dataplane::sai::RemovePortConnectorResponse resp; + grpc::ClientContext context; + req.set_oid(port_connector_id); + + grpc::Status status = port->RemovePortConnector(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_port_connector_attribute(sai_object_id_t port_connector_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetPortConnectorAttributeRequest req; - lemming::dataplane::sai::SetPortConnectorAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(port_connector_id); - - - - -switch (attr->id) { - - case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: - req.set_failover_mode(convert_sai_port_connector_failover_mode_t_to_proto(attr->value.s32)); - break; +sai_status_t l_set_port_connector_attribute(sai_object_id_t port_connector_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetPortConnectorAttributeRequest req; + lemming::dataplane::sai::SetPortConnectorAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(port_connector_id); + + switch (attr->id) { + case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: + req.set_failover_mode( + convert_sai_port_connector_failover_mode_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = port->SetPortConnectorAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = port->SetPortConnectorAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_port_connector_attribute(sai_object_id_t port_connector_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortConnectorAttributeRequest req; + lemming::dataplane::sai::GetPortConnectorAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(port_connector_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_port_connector_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = port->GetPortConnectorAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: + attr_list[i].value.oid = resp.attr().system_side_port_id(); + break; + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: + attr_list[i].value.oid = resp.attr().line_side_port_id(); + break; + case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: + attr_list[i].value.oid = resp.attr().system_side_failover_port_id(); + break; + case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: + attr_list[i].value.oid = resp.attr().line_side_failover_port_id(); + break; + case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: + attr_list[i].value.s32 = + convert_sai_port_connector_failover_mode_t_to_sai( + resp.attr().failover_mode()); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_port_connector_attribute(sai_object_id_t port_connector_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortConnectorAttributeRequest req; - lemming::dataplane::sai::GetPortConnectorAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(port_connector_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_port_connector_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = port->GetPortConnectorAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_PORT_ID: - attr_list[i].value.oid = resp.attr().system_side_port_id(); - break; - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_PORT_ID: - attr_list[i].value.oid = resp.attr().line_side_port_id(); - break; - case SAI_PORT_CONNECTOR_ATTR_SYSTEM_SIDE_FAILOVER_PORT_ID: - attr_list[i].value.oid = resp.attr().system_side_failover_port_id(); - break; - case SAI_PORT_CONNECTOR_ATTR_LINE_SIDE_FAILOVER_PORT_ID: - attr_list[i].value.oid = resp.attr().line_side_failover_port_id(); - break; - case SAI_PORT_CONNECTOR_ATTR_FAILOVER_MODE: - attr_list[i].value.s32 = convert_sai_port_connector_failover_mode_t_to_sai(resp.attr().failover_mode()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_port_serdes(sai_object_id_t *port_serdes_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePortSerdesRequest req = convert_create_port_serdes(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreatePortSerdesResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = port->CreatePortSerdes(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (port_serdes_id) { - *port_serdes_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_port_serdes(sai_object_id_t* port_serdes_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePortSerdesRequest req = + convert_create_port_serdes(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreatePortSerdesResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = port->CreatePortSerdes(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (port_serdes_id) { + *port_serdes_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_port_serdes(sai_object_id_t port_serdes_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePortSerdesRequest req; - lemming::dataplane::sai::RemovePortSerdesResponse resp; - grpc::ClientContext context; - req.set_oid(port_serdes_id); - - grpc::Status status = port->RemovePortSerdes(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemovePortSerdesRequest req; + lemming::dataplane::sai::RemovePortSerdesResponse resp; + grpc::ClientContext context; + req.set_oid(port_serdes_id); + + grpc::Status status = port->RemovePortSerdes(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_port_serdes_attribute(sai_object_id_t port_serdes_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_port_serdes_attribute(sai_object_id_t port_serdes_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_port_serdes_attribute(sai_object_id_t port_serdes_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetPortSerdesAttributeRequest req; - lemming::dataplane::sai::GetPortSerdesAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(port_serdes_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_port_serdes_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = port->GetPortSerdesAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_PORT_SERDES_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_PORT_SERDES_ATTR_PREEMPHASIS: - copy_list(attr_list[i].value.s32list.list, resp.attr().preemphasis(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_IDRIVER: - copy_list(attr_list[i].value.s32list.list, resp.attr().idriver(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_IPREDRIVER: - copy_list(attr_list[i].value.s32list.list, resp.attr().ipredriver(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre1(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre2(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre3(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_main(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post1(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post2(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post3(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_attn(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_pam4_ratio(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_out_common_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_pmos_common_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_nmos_common_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_pmos_vltg_reg(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_nmos_vltg_reg(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_TX_PRECODING: - copy_list(attr_list[i].value.s32list.list, resp.attr().tx_precoding(), &attr_list[i].value.s32list.count); - break; - case SAI_PORT_SERDES_ATTR_RX_PRECODING: - copy_list(attr_list[i].value.s32list.list, resp.attr().rx_precoding(), &attr_list[i].value.s32list.count); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_port_serdes_attribute(sai_object_id_t port_serdes_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetPortSerdesAttributeRequest req; + lemming::dataplane::sai::GetPortSerdesAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(port_serdes_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_port_serdes_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = port->GetPortSerdesAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_PORT_SERDES_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_PORT_SERDES_ATTR_PREEMPHASIS: + copy_list(attr_list[i].value.s32list.list, resp.attr().preemphasis(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_IDRIVER: + copy_list(attr_list[i].value.s32list.list, resp.attr().idriver(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_IPREDRIVER: + copy_list(attr_list[i].value.s32list.list, resp.attr().ipredriver(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE1: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre1(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE2: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre2(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_PRE3: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_pre3(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_MAIN: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_main(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST1: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post1(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST2: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post2(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_POST3: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_post3(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_FIR_ATTN: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_fir_attn(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PAM4_RATIO: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_pam4_ratio(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_OUT_COMMON_MODE: + copy_list(attr_list[i].value.s32list.list, + resp.attr().tx_out_common_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PMOS_COMMON_MODE: + copy_list(attr_list[i].value.s32list.list, + resp.attr().tx_pmos_common_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_NMOS_COMMON_MODE: + copy_list(attr_list[i].value.s32list.list, + resp.attr().tx_nmos_common_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PMOS_VLTG_REG: + copy_list(attr_list[i].value.s32list.list, + resp.attr().tx_pmos_vltg_reg(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_NMOS_VLTG_REG: + copy_list(attr_list[i].value.s32list.list, + resp.attr().tx_nmos_vltg_reg(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_TX_PRECODING: + copy_list(attr_list[i].value.s32list.list, resp.attr().tx_precoding(), + &attr_list[i].value.s32list.count); + break; + case SAI_PORT_SERDES_ATTR_RX_PRECODING: + copy_list(attr_list[i].value.s32list.list, resp.attr().rx_precoding(), + &attr_list[i].value.s32list.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_ports(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreatePortsRequest req; - lemming::dataplane::sai::CreatePortsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_port(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = port->CreatePorts(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_ports(sai_object_id_t switch_id, uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreatePortsRequest req; + lemming::dataplane::sai::CreatePortsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_port(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = port->CreatePorts(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_ports(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemovePortsRequest req; - lemming::dataplane::sai::RemovePortsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = port->RemovePorts(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_ports(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemovePortsRequest req; + lemming::dataplane::sai::RemovePortsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = port->RemovePorts(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_ports_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_ports_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_get_ports_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_get_ports_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - - - - - diff --git a/dataplane/standalone/sai/port.h b/dataplane/standalone/sai/port.h index 66762ed30..a6539d1b8 100644 --- a/dataplane/standalone/sai/port.h +++ b/dataplane/standalone/sai/port.h @@ -25,63 +25,111 @@ extern "C" { extern const sai_port_api_t l_port; - -sai_status_t l_create_port(sai_object_id_t *port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_port(sai_object_id_t* port_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_port(sai_object_id_t port_id); -sai_status_t l_set_port_attribute(sai_object_id_t port_id, const sai_attribute_t *attr); - -sai_status_t l_get_port_attribute(sai_object_id_t port_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_port_attribute(sai_object_id_t port_id, + const sai_attribute_t* attr); -sai_status_t l_get_port_stats(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_port_attribute(sai_object_id_t port_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_port_stats_ext(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_port_stats(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_port_stats(sai_object_id_t port_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_port_stats_ext(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); +sai_status_t l_clear_port_stats(sai_object_id_t port_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_port_pool(sai_object_id_t *port_pool_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_port_pool(sai_object_id_t* port_pool_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_port_pool(sai_object_id_t port_pool_id); -sai_status_t l_set_port_pool_attribute(sai_object_id_t port_pool_id, const sai_attribute_t *attr); +sai_status_t l_set_port_pool_attribute(sai_object_id_t port_pool_id, + const sai_attribute_t* attr); -sai_status_t l_get_port_pool_attribute(sai_object_id_t port_pool_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_port_pool_attribute(sai_object_id_t port_pool_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_port_pool_stats(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_port_pool_stats(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_port_pool_stats_ext(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_port_pool_stats_ext(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); -sai_status_t l_clear_port_pool_stats(sai_object_id_t port_pool_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_port_pool_stats(sai_object_id_t port_pool_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_port_connector(sai_object_id_t *port_connector_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_port_connector(sai_object_id_t* port_connector_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_port_connector(sai_object_id_t port_connector_id); -sai_status_t l_set_port_connector_attribute(sai_object_id_t port_connector_id, const sai_attribute_t *attr); +sai_status_t l_set_port_connector_attribute(sai_object_id_t port_connector_id, + const sai_attribute_t* attr); -sai_status_t l_get_port_connector_attribute(sai_object_id_t port_connector_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_port_connector_attribute(sai_object_id_t port_connector_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_port_serdes(sai_object_id_t *port_serdes_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_port_serdes(sai_object_id_t* port_serdes_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_port_serdes(sai_object_id_t port_serdes_id); -sai_status_t l_set_port_serdes_attribute(sai_object_id_t port_serdes_id, const sai_attribute_t *attr); - -sai_status_t l_get_port_serdes_attribute(sai_object_id_t port_serdes_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_ports(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_ports(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_ports_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_ports_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - - - - - +sai_status_t l_set_port_serdes_attribute(sai_object_id_t port_serdes_id, + const sai_attribute_t* attr); + +sai_status_t l_get_port_serdes_attribute(sai_object_id_t port_serdes_id, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_ports(sai_object_id_t switch_id, uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_ports(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_ports_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_ports_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_PORT_H_ diff --git a/dataplane/standalone/sai/qos_map.cc b/dataplane/standalone/sai/qos_map.cc index 6511999bb..0a024b5d6 100644 --- a/dataplane/standalone/sai/qos_map.cc +++ b/dataplane/standalone/sai/qos_map.cc @@ -13,129 +13,129 @@ // limitations under the License. #include "dataplane/standalone/sai/qos_map.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/qos_map.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_qos_map_api_t l_qos_map = { - .create_qos_map = l_create_qos_map, - .remove_qos_map = l_remove_qos_map, - .set_qos_map_attribute = l_set_qos_map_attribute, - .get_qos_map_attribute = l_get_qos_map_attribute, + .create_qos_map = l_create_qos_map, + .remove_qos_map = l_remove_qos_map, + .set_qos_map_attribute = l_set_qos_map_attribute, + .get_qos_map_attribute = l_get_qos_map_attribute, }; - -lemming::dataplane::sai::CreateQosMapRequest convert_create_qos_map(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateQosMapRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_QOS_MAP_ATTR_TYPE: - msg.set_type(convert_sai_qos_map_type_t_to_proto(attr_list[i].value.s32)); - break; +lemming::dataplane::sai::CreateQosMapRequest convert_create_qos_map( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateQosMapRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_QOS_MAP_ATTR_TYPE: + msg.set_type( + convert_sai_qos_map_type_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_qos_map(sai_object_id_t *qos_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateQosMapRequest req = convert_create_qos_map(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateQosMapResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = qos_map->CreateQosMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (qos_map_id) { - *qos_map_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_qos_map(sai_object_id_t* qos_map_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateQosMapRequest req = + convert_create_qos_map(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateQosMapResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = qos_map->CreateQosMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (qos_map_id) { + *qos_map_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_qos_map(sai_object_id_t qos_map_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveQosMapRequest req; - lemming::dataplane::sai::RemoveQosMapResponse resp; - grpc::ClientContext context; - req.set_oid(qos_map_id); - - grpc::Status status = qos_map->RemoveQosMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveQosMapRequest req; + lemming::dataplane::sai::RemoveQosMapResponse resp; + grpc::ClientContext context; + req.set_oid(qos_map_id); + + grpc::Status status = qos_map->RemoveQosMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_qos_map_attribute(sai_object_id_t qos_map_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_qos_map_attribute(sai_object_id_t qos_map_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_qos_map_attribute(sai_object_id_t qos_map_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetQosMapAttributeRequest req; - lemming::dataplane::sai::GetQosMapAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(qos_map_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_qos_map_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = qos_map->GetQosMapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_QOS_MAP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_qos_map_type_t_to_sai(resp.attr().type()); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_qos_map_attribute(sai_object_id_t qos_map_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetQosMapAttributeRequest req; + lemming::dataplane::sai::GetQosMapAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(qos_map_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_qos_map_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = qos_map->GetQosMapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_QOS_MAP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_qos_map_type_t_to_sai(resp.attr().type()); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/qos_map.h b/dataplane/standalone/sai/qos_map.h index 1395ac3ae..4964cd60f 100644 --- a/dataplane/standalone/sai/qos_map.h +++ b/dataplane/standalone/sai/qos_map.h @@ -25,14 +25,17 @@ extern "C" { extern const sai_qos_map_api_t l_qos_map; - -sai_status_t l_create_qos_map(sai_object_id_t *qos_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_qos_map(sai_object_id_t* qos_map_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_qos_map(sai_object_id_t qos_map_id); -sai_status_t l_set_qos_map_attribute(sai_object_id_t qos_map_id, const sai_attribute_t *attr); - -sai_status_t l_get_qos_map_attribute(sai_object_id_t qos_map_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_qos_map_attribute(sai_object_id_t qos_map_id, + const sai_attribute_t* attr); +sai_status_t l_get_qos_map_attribute(sai_object_id_t qos_map_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_QOS_MAP_H_ diff --git a/dataplane/standalone/sai/queue.cc b/dataplane/standalone/sai/queue.cc index 3cdcf1c55..4521b49e4 100644 --- a/dataplane/standalone/sai/queue.cc +++ b/dataplane/standalone/sai/queue.cc @@ -13,285 +13,328 @@ // limitations under the License. #include "dataplane/standalone/sai/queue.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/queue.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_queue_api_t l_queue = { - .create_queue = l_create_queue, - .remove_queue = l_remove_queue, - .set_queue_attribute = l_set_queue_attribute, - .get_queue_attribute = l_get_queue_attribute, - .get_queue_stats = l_get_queue_stats, - .get_queue_stats_ext = l_get_queue_stats_ext, - .clear_queue_stats = l_clear_queue_stats, + .create_queue = l_create_queue, + .remove_queue = l_remove_queue, + .set_queue_attribute = l_set_queue_attribute, + .get_queue_attribute = l_get_queue_attribute, + .get_queue_stats = l_get_queue_stats, + .get_queue_stats_ext = l_get_queue_stats_ext, + .clear_queue_stats = l_clear_queue_stats, }; +lemming::dataplane::sai::CreateQueueRequest convert_create_queue( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateQueueRequest msg; -lemming::dataplane::sai::CreateQueueRequest convert_create_queue(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateQueueRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_QUEUE_ATTR_TYPE: - msg.set_type(convert_sai_queue_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_QUEUE_ATTR_PORT: - msg.set_port(attr_list[i].value.oid); - break; - case SAI_QUEUE_ATTR_INDEX: - msg.set_index(attr_list[i].value.u8); - break; - case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: - msg.set_parent_scheduler_node(attr_list[i].value.oid); - break; - case SAI_QUEUE_ATTR_WRED_PROFILE_ID: - msg.set_wred_profile_id(attr_list[i].value.oid); - break; - case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: - msg.set_buffer_profile_id(attr_list[i].value.oid); - break; - case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: - msg.set_scheduler_profile_id(attr_list[i].value.oid); - break; - case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: - msg.set_enable_pfc_dldr(attr_list[i].value.booldata); - break; - case SAI_QUEUE_ATTR_PFC_DLR_INIT: - msg.set_pfc_dlr_init(attr_list[i].value.booldata); - break; - case SAI_QUEUE_ATTR_TAM_OBJECT: - msg.mutable_tam_object()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: - msg.set_pfc_dlr_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_QUEUE_ATTR_TYPE: + msg.set_type(convert_sai_queue_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_QUEUE_ATTR_PORT: + msg.set_port(attr_list[i].value.oid); + break; + case SAI_QUEUE_ATTR_INDEX: + msg.set_index(attr_list[i].value.u8); + break; + case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: + msg.set_parent_scheduler_node(attr_list[i].value.oid); + break; + case SAI_QUEUE_ATTR_WRED_PROFILE_ID: + msg.set_wred_profile_id(attr_list[i].value.oid); + break; + case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: + msg.set_buffer_profile_id(attr_list[i].value.oid); + break; + case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: + msg.set_scheduler_profile_id(attr_list[i].value.oid); + break; + case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: + msg.set_enable_pfc_dldr(attr_list[i].value.booldata); + break; + case SAI_QUEUE_ATTR_PFC_DLR_INIT: + msg.set_pfc_dlr_init(attr_list[i].value.booldata); + break; + case SAI_QUEUE_ATTR_TAM_OBJECT: + msg.mutable_tam_object()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: + msg.set_pfc_dlr_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_QUEUE_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_QUEUE_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_queue(sai_object_id_t* queue_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateQueueRequest req = + convert_create_queue(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateQueueResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = queue->CreateQueue(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (queue_id) { + *queue_id = resp.oid(); + } -sai_status_t l_create_queue(sai_object_id_t *queue_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateQueueRequest req = convert_create_queue(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateQueueResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = queue->CreateQueue(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (queue_id) { - *queue_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_queue(sai_object_id_t queue_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveQueueRequest req; - lemming::dataplane::sai::RemoveQueueResponse resp; - grpc::ClientContext context; - req.set_oid(queue_id); - - grpc::Status status = queue->RemoveQueue(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_queue_attribute(sai_object_id_t queue_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetQueueAttributeRequest req; - lemming::dataplane::sai::SetQueueAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(queue_id); - - - - -switch (attr->id) { - - case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: - req.set_parent_scheduler_node(attr->value.oid); - break; - case SAI_QUEUE_ATTR_WRED_PROFILE_ID: - req.set_wred_profile_id(attr->value.oid); - break; - case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: - req.set_buffer_profile_id(attr->value.oid); - break; - case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: - req.set_scheduler_profile_id(attr->value.oid); - break; - case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: - req.set_enable_pfc_dldr(attr->value.booldata); - break; - case SAI_QUEUE_ATTR_PFC_DLR_INIT: - req.set_pfc_dlr_init(attr->value.booldata); - break; - case SAI_QUEUE_ATTR_TAM_OBJECT: - req.mutable_tam_object()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: - req.set_pfc_dlr_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; -} + lemming::dataplane::sai::RemoveQueueRequest req; + lemming::dataplane::sai::RemoveQueueResponse resp; + grpc::ClientContext context; + req.set_oid(queue_id); - grpc::Status status = queue->SetQueueAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = queue->RemoveQueue(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_queue_attribute(sai_object_id_t queue_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetQueueAttributeRequest req; - lemming::dataplane::sai::GetQueueAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(queue_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_queue_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = queue->GetQueueAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_QUEUE_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_queue_type_t_to_sai(resp.attr().type()); - break; - case SAI_QUEUE_ATTR_PORT: - attr_list[i].value.oid = resp.attr().port(); - break; - case SAI_QUEUE_ATTR_INDEX: - attr_list[i].value.u8 = resp.attr().index(); - break; - case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: - attr_list[i].value.oid = resp.attr().parent_scheduler_node(); - break; - case SAI_QUEUE_ATTR_WRED_PROFILE_ID: - attr_list[i].value.oid = resp.attr().wred_profile_id(); - break; - case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: - attr_list[i].value.oid = resp.attr().buffer_profile_id(); - break; - case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: - attr_list[i].value.oid = resp.attr().scheduler_profile_id(); - break; - case SAI_QUEUE_ATTR_PAUSE_STATUS: - attr_list[i].value.booldata = resp.attr().pause_status(); - break; - case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: - attr_list[i].value.booldata = resp.attr().enable_pfc_dldr(); - break; - case SAI_QUEUE_ATTR_PFC_DLR_INIT: - attr_list[i].value.booldata = resp.attr().pfc_dlr_init(); - break; - case SAI_QUEUE_ATTR_TAM_OBJECT: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), &attr_list[i].value.objlist.count); - break; - case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().pfc_dlr_packet_action()); - break; - case SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: - attr_list[i].value.s32 = convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai(resp.attr().pfc_continuous_deadlock_state()); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_queue_attribute(sai_object_id_t queue_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetQueueAttributeRequest req; + lemming::dataplane::sai::SetQueueAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(queue_id); + + switch (attr->id) { + case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: + req.set_parent_scheduler_node(attr->value.oid); + break; + case SAI_QUEUE_ATTR_WRED_PROFILE_ID: + req.set_wred_profile_id(attr->value.oid); + break; + case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: + req.set_buffer_profile_id(attr->value.oid); + break; + case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: + req.set_scheduler_profile_id(attr->value.oid); + break; + case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: + req.set_enable_pfc_dldr(attr->value.booldata); + break; + case SAI_QUEUE_ATTR_PFC_DLR_INIT: + req.set_pfc_dlr_init(attr->value.booldata); + break; + case SAI_QUEUE_ATTR_TAM_OBJECT: + req.mutable_tam_object()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: + req.set_pfc_dlr_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_QUEUE_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_QUEUE_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = queue->SetQueueAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_queue_stats(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetQueueStatsRequest req; - lemming::dataplane::sai::GetQueueStatsResponse resp; - grpc::ClientContext context; - req.set_oid(queue_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_queue_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = queue->GetQueueStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_queue_attribute(sai_object_id_t queue_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetQueueAttributeRequest req; + lemming::dataplane::sai::GetQueueAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(queue_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_queue_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = queue->GetQueueAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_QUEUE_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_queue_type_t_to_sai(resp.attr().type()); + break; + case SAI_QUEUE_ATTR_PORT: + attr_list[i].value.oid = resp.attr().port(); + break; + case SAI_QUEUE_ATTR_INDEX: + attr_list[i].value.u8 = resp.attr().index(); + break; + case SAI_QUEUE_ATTR_PARENT_SCHEDULER_NODE: + attr_list[i].value.oid = resp.attr().parent_scheduler_node(); + break; + case SAI_QUEUE_ATTR_WRED_PROFILE_ID: + attr_list[i].value.oid = resp.attr().wred_profile_id(); + break; + case SAI_QUEUE_ATTR_BUFFER_PROFILE_ID: + attr_list[i].value.oid = resp.attr().buffer_profile_id(); + break; + case SAI_QUEUE_ATTR_SCHEDULER_PROFILE_ID: + attr_list[i].value.oid = resp.attr().scheduler_profile_id(); + break; + case SAI_QUEUE_ATTR_PAUSE_STATUS: + attr_list[i].value.booldata = resp.attr().pause_status(); + break; + case SAI_QUEUE_ATTR_ENABLE_PFC_DLDR: + attr_list[i].value.booldata = resp.attr().enable_pfc_dldr(); + break; + case SAI_QUEUE_ATTR_PFC_DLR_INIT: + attr_list[i].value.booldata = resp.attr().pfc_dlr_init(); + break; + case SAI_QUEUE_ATTR_TAM_OBJECT: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), + &attr_list[i].value.objlist.count); + break; + case SAI_QUEUE_ATTR_PFC_DLR_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().pfc_dlr_packet_action()); + break; + case SAI_QUEUE_ATTR_PFC_CONTINUOUS_DEADLOCK_STATE: + attr_list[i].value.s32 = + convert_sai_queue_pfc_continuous_deadlock_state_t_to_sai( + resp.attr().pfc_continuous_deadlock_state()); + break; + case SAI_QUEUE_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_QUEUE_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_queue_stats_ext(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_queue_stats(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetQueueStatsRequest req; + lemming::dataplane::sai::GetQueueStatsResponse resp; + grpc::ClientContext context; + req.set_oid(queue_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_queue_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = queue->GetQueueStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_queue_stats(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_queue_stats_ext(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_clear_queue_stats(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/queue.h b/dataplane/standalone/sai/queue.h index 8ae2bcf33..8f9916682 100644 --- a/dataplane/standalone/sai/queue.h +++ b/dataplane/standalone/sai/queue.h @@ -25,20 +25,31 @@ extern "C" { extern const sai_queue_api_t l_queue; - -sai_status_t l_create_queue(sai_object_id_t *queue_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_queue(sai_object_id_t* queue_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_queue(sai_object_id_t queue_id); -sai_status_t l_set_queue_attribute(sai_object_id_t queue_id, const sai_attribute_t *attr); - -sai_status_t l_get_queue_attribute(sai_object_id_t queue_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_queue_attribute(sai_object_id_t queue_id, + const sai_attribute_t* attr); -sai_status_t l_get_queue_stats(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_queue_attribute(sai_object_id_t queue_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_queue_stats_ext(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_queue_stats(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_clear_queue_stats(sai_object_id_t queue_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_get_queue_stats_ext(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); +sai_status_t l_clear_queue_stats(sai_object_id_t queue_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_QUEUE_H_ diff --git a/dataplane/standalone/sai/route.cc b/dataplane/standalone/sai/route.cc index 67aef566e..b2416989b 100644 --- a/dataplane/standalone/sai/route.cc +++ b/dataplane/standalone/sai/route.cc @@ -13,301 +13,315 @@ // limitations under the License. #include "dataplane/standalone/sai/route.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/route.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_route_api_t l_route = { - .create_route_entry = l_create_route_entry, - .remove_route_entry = l_remove_route_entry, - .set_route_entry_attribute = l_set_route_entry_attribute, - .get_route_entry_attribute = l_get_route_entry_attribute, - .create_route_entries = l_create_route_entries, - .remove_route_entries = l_remove_route_entries, - .set_route_entries_attribute = l_set_route_entries_attribute, - .get_route_entries_attribute = l_get_route_entries_attribute, + .create_route_entry = l_create_route_entry, + .remove_route_entry = l_remove_route_entry, + .set_route_entry_attribute = l_set_route_entry_attribute, + .get_route_entry_attribute = l_get_route_entry_attribute, + .create_route_entries = l_create_route_entries, + .remove_route_entries = l_remove_route_entries, + .set_route_entries_attribute = l_set_route_entries_attribute, + .get_route_entries_attribute = l_get_route_entries_attribute, }; +lemming::dataplane::sai::CreateRouteEntryRequest convert_create_route_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateRouteEntryRequest msg; -lemming::dataplane::sai::CreateRouteEntryRequest convert_create_route_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateRouteEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: - msg.set_user_trap_id(attr_list[i].value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: - msg.set_next_hop_id(attr_list[i].value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; - case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: - msg.set_prefix_agg_id(attr_list[i].value.u32); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: + msg.set_user_trap_id(attr_list[i].value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: + msg.set_next_hop_id(attr_list[i].value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: + msg.set_prefix_agg_id(attr_list[i].value.u32); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_route_entry(const sai_route_entry_t* route_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_route_entry(const sai_route_entry_t *route_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRouteEntryRequest req = convert_create_route_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateRouteEntryResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_route_entry(*route_entry); - grpc::Status status = route->CreateRouteEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::CreateRouteEntryRequest req = + convert_create_route_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateRouteEntryResponse resp; + grpc::ClientContext context; -sai_status_t l_remove_route_entry(const sai_route_entry_t *route_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRouteEntryRequest req; - lemming::dataplane::sai::RemoveRouteEntryResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_route_entry(*route_entry); - grpc::Status status = route->RemoveRouteEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + *req.mutable_entry() = convert_from_route_entry(*route_entry); + grpc::Status status = route->CreateRouteEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_set_route_entry_attribute(const sai_route_entry_t *route_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetRouteEntryAttributeRequest req; - lemming::dataplane::sai::SetRouteEntryAttributeResponse resp; - grpc::ClientContext context; - - *req.mutable_entry() = convert_from_route_entry(*route_entry); - - - -switch (attr->id) { - - case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: - req.set_user_trap_id(attr->value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: - req.set_next_hop_id(attr->value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; - case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; - case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: - req.set_prefix_agg_id(attr->value.u32); - break; + return SAI_STATUS_SUCCESS; } - grpc::Status status = route->SetRouteEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_route_entry(const sai_route_entry_t* route_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveRouteEntryRequest req; + lemming::dataplane::sai::RemoveRouteEntryResponse resp; + grpc::ClientContext context; + + *req.mutable_entry() = convert_from_route_entry(*route_entry); + grpc::Status status = route->RemoveRouteEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_route_entry_attribute(const sai_route_entry_t *route_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetRouteEntryAttributeRequest req; - lemming::dataplane::sai::GetRouteEntryAttributeResponse resp; - grpc::ClientContext context; - *req.mutable_entry() = convert_from_route_entry(*route_entry); - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_route_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = route->GetRouteEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: - attr_list[i].value.oid = resp.attr().user_trap_id(); - break; - case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: - attr_list[i].value.oid = resp.attr().next_hop_id(); - break; - case SAI_ROUTE_ENTRY_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; - case SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: - attr_list[i].value.s32 = convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); - break; - case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; - case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: - attr_list[i].value.u32 = resp.attr().prefix_agg_id(); - break; +sai_status_t l_set_route_entry_attribute(const sai_route_entry_t* route_entry, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetRouteEntryAttributeRequest req; + lemming::dataplane::sai::SetRouteEntryAttributeResponse resp; + grpc::ClientContext context; + + *req.mutable_entry() = convert_from_route_entry(*route_entry); + + switch (attr->id) { + case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: + req.set_user_trap_id(attr->value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: + req.set_next_hop_id(attr->value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: + req.set_prefix_agg_id(attr->value.u32); + break; + } + + grpc::Status status = route->SetRouteEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_route_entry_attribute(const sai_route_entry_t* route_entry, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetRouteEntryAttributeRequest req; + lemming::dataplane::sai::GetRouteEntryAttributeResponse resp; + grpc::ClientContext context; + *req.mutable_entry() = convert_from_route_entry(*route_entry); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_route_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = route->GetRouteEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ROUTE_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_ROUTE_ENTRY_ATTR_USER_TRAP_ID: + attr_list[i].value.oid = resp.attr().user_trap_id(); + break; + case SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID: + attr_list[i].value.oid = resp.attr().next_hop_id(); + break; + case SAI_ROUTE_ENTRY_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + case SAI_ROUTE_ENTRY_ATTR_IP_ADDR_FAMILY: + attr_list[i].value.s32 = + convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); + break; + case SAI_ROUTE_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + case SAI_ROUTE_ENTRY_ATTR_PREFIX_AGG_ID: + attr_list[i].value.u32 = resp.attr().prefix_agg_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_route_entries(uint32_t object_count, const sai_route_entry_t *route_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRouteEntriesRequest req; - lemming::dataplane::sai::CreateRouteEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_route_entry(attr_count[i], attr_list[i]); - - *r.mutable_entry() = convert_from_route_entry(route_entry[i]); - *req.add_reqs() = r; - } - - grpc::Status status = route->CreateRouteEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_route_entries(uint32_t object_count, + const sai_route_entry_t* route_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateRouteEntriesRequest req; + lemming::dataplane::sai::CreateRouteEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_route_entry(attr_count[i], attr_list[i]); + + *r.mutable_entry() = convert_from_route_entry(route_entry[i]); + *req.add_reqs() = r; + } + + grpc::Status status = route->CreateRouteEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_route_entries(uint32_t object_count, const sai_route_entry_t *route_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRouteEntriesRequest req; - lemming::dataplane::sai::RemoveRouteEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - *req.add_reqs()->mutable_entry() = convert_from_route_entry(route_entry[i]); - } - - grpc::Status status = route->RemoveRouteEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_route_entries(uint32_t object_count, + const sai_route_entry_t* route_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveRouteEntriesRequest req; + lemming::dataplane::sai::RemoveRouteEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + *req.add_reqs()->mutable_entry() = convert_from_route_entry(route_entry[i]); + } + + grpc::Status status = route->RemoveRouteEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_route_entries_attribute(uint32_t object_count, const sai_route_entry_t *route_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - sai_status_t status; +sai_status_t l_set_route_entries_attribute(uint32_t object_count, + const sai_route_entry_t* route_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + sai_status_t status; sai_status_t overall_status = SAI_STATUS_SUCCESS; - bool error = false; + bool error = false; - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_NOT_EXECUTED; - if (false == error) + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_NOT_EXECUTED; + if (false == error) { - status = l_set_route_entry_attribute(&route_entry[i], &attr_list[i]); - object_statuses[i] = status; - if (status != SAI_STATUS_SUCCESS) { - overall_status = SAI_STATUS_FAILURE; - if (mode == SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR) { - error = true; - } - } - } - } - - return overall_status; -} + status = l_set_route_entry_attribute(&route_entry[i], &attr_list[i]); + object_statuses[i] = status; + if (status != SAI_STATUS_SUCCESS) { + overall_status = SAI_STATUS_FAILURE; + if (mode == SAI_BULK_OP_ERROR_MODE_STOP_ON_ERROR) { + error = true; + } + } + } + } -sai_status_t l_get_route_entries_attribute(uint32_t object_count, const sai_route_entry_t *route_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; + return overall_status; } +sai_status_t l_get_route_entries_attribute(uint32_t object_count, + const sai_route_entry_t* route_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} diff --git a/dataplane/standalone/sai/route.h b/dataplane/standalone/sai/route.h index fa8a5fd5f..4664d8efb 100644 --- a/dataplane/standalone/sai/route.h +++ b/dataplane/standalone/sai/route.h @@ -25,22 +25,42 @@ extern "C" { extern const sai_route_api_t l_route; +sai_status_t l_create_route_entry(const sai_route_entry_t* route_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); -sai_status_t l_create_route_entry(const sai_route_entry_t *route_entry, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_remove_route_entry(const sai_route_entry_t* route_entry); -sai_status_t l_remove_route_entry(const sai_route_entry_t *route_entry); +sai_status_t l_set_route_entry_attribute(const sai_route_entry_t* route_entry, + const sai_attribute_t* attr); -sai_status_t l_set_route_entry_attribute(const sai_route_entry_t *route_entry, const sai_attribute_t *attr); +sai_status_t l_get_route_entry_attribute(const sai_route_entry_t* route_entry, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_route_entry_attribute(const sai_route_entry_t *route_entry, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_create_route_entries(uint32_t object_count, + const sai_route_entry_t* route_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_create_route_entries(uint32_t object_count, const sai_route_entry_t *route_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_remove_route_entries(uint32_t object_count, + const sai_route_entry_t* route_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); -sai_status_t l_remove_route_entries(uint32_t object_count, const sai_route_entry_t *route_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_route_entries_attribute(uint32_t object_count, const sai_route_entry_t *route_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_route_entries_attribute(uint32_t object_count, const sai_route_entry_t *route_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); +sai_status_t l_set_route_entries_attribute(uint32_t object_count, + const sai_route_entry_t* route_entry, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); +sai_status_t l_get_route_entries_attribute(uint32_t object_count, + const sai_route_entry_t* route_entry, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_ROUTE_H_ diff --git a/dataplane/standalone/sai/router_interface.cc b/dataplane/standalone/sai/router_interface.cc index 4fa8fd8c6..9daf6fc64 100644 --- a/dataplane/standalone/sai/router_interface.cc +++ b/dataplane/standalone/sai/router_interface.cc @@ -13,443 +13,514 @@ // limitations under the License. #include "dataplane/standalone/sai/router_interface.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/router_interface.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_router_interface_api_t l_router_interface = { - .create_router_interface = l_create_router_interface, - .remove_router_interface = l_remove_router_interface, - .set_router_interface_attribute = l_set_router_interface_attribute, - .get_router_interface_attribute = l_get_router_interface_attribute, - .get_router_interface_stats = l_get_router_interface_stats, - .get_router_interface_stats_ext = l_get_router_interface_stats_ext, - .clear_router_interface_stats = l_clear_router_interface_stats, - .create_router_interfaces = l_create_router_interfaces, - .remove_router_interfaces = l_remove_router_interfaces, - .set_router_interfaces_attribute = l_set_router_interfaces_attribute, - .get_router_interfaces_attribute = l_get_router_interfaces_attribute, + .create_router_interface = l_create_router_interface, + .remove_router_interface = l_remove_router_interface, + .set_router_interface_attribute = l_set_router_interface_attribute, + .get_router_interface_attribute = l_get_router_interface_attribute, + .get_router_interface_stats = l_get_router_interface_stats, + .get_router_interface_stats_ext = l_get_router_interface_stats_ext, + .clear_router_interface_stats = l_clear_router_interface_stats, + .create_router_interfaces = l_create_router_interfaces, + .remove_router_interfaces = l_remove_router_interfaces, + .set_router_interfaces_attribute = l_set_router_interfaces_attribute, + .get_router_interfaces_attribute = l_get_router_interfaces_attribute, }; +lemming::dataplane::sai::CreateRouterInterfaceRequest +convert_create_router_interface(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateRouterInterfaceRequest msg; -lemming::dataplane::sai::CreateRouterInterfaceRequest convert_create_router_interface(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateRouterInterfaceRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: - msg.set_virtual_router_id(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_TYPE: - msg.set_type(convert_sai_router_interface_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: - msg.set_outer_vlan_id(attr_list[i].value.u16); - break; - case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: - msg.set_inner_vlan_id(attr_list[i].value.u16); - break; - case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: - msg.set_bridge_id(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: - msg.set_src_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: - msg.set_admin_v4_state(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: - msg.set_admin_v6_state(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_MTU: - msg.set_mtu(attr_list[i].value.u32); - break; - case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: - msg.set_ingress_acl(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: - msg.set_egress_acl(attr_list[i].value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: - msg.set_neighbor_miss_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: - msg.set_v4_mcast_enable(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: - msg.set_v6_mcast_enable(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: - msg.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: - msg.set_is_virtual(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: - msg.set_nat_zone_id(attr_list[i].value.u8); - break; - case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: - msg.set_disable_decrement_ttl(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: - msg.set_admin_mpls_state(attr_list[i].value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_LABEL: - msg.set_label(attr_list[i].value.chardata); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: + msg.set_virtual_router_id(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_TYPE: + msg.set_type(convert_sai_router_interface_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: + msg.set_outer_vlan_id(attr_list[i].value.u16); + break; + case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: + msg.set_inner_vlan_id(attr_list[i].value.u16); + break; + case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: + msg.set_bridge_id(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: + msg.set_admin_v4_state(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: + msg.set_admin_v6_state(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_MTU: + msg.set_mtu(attr_list[i].value.u32); + break; + case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: + msg.set_ingress_acl(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: + msg.set_egress_acl(attr_list[i].value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: + msg.set_neighbor_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: + msg.set_v4_mcast_enable(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: + msg.set_v6_mcast_enable(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: + msg.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: + msg.set_is_virtual(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: + msg.set_nat_zone_id(attr_list[i].value.u8); + break; + case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: + msg.set_disable_decrement_ttl(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: + msg.set_admin_mpls_state(attr_list[i].value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_ROUTER_INTERFACE_ATTR_LABEL: + msg.set_label(attr_list[i].value.chardata); + break; + } + } + return msg; } -} -return msg; -} +sai_status_t l_create_router_interface(sai_object_id_t* router_interface_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_router_interface(sai_object_id_t *router_interface_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRouterInterfaceRequest req = convert_create_router_interface(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateRouterInterfaceResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = router_interface->CreateRouterInterface(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (router_interface_id) { - *router_interface_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + lemming::dataplane::sai::CreateRouterInterfaceRequest req = + convert_create_router_interface(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateRouterInterfaceResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + router_interface->CreateRouterInterface(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (router_interface_id) { + *router_interface_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_router_interface(sai_object_id_t router_interface_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRouterInterfaceRequest req; - lemming::dataplane::sai::RemoveRouterInterfaceResponse resp; - grpc::ClientContext context; - req.set_oid(router_interface_id); - - grpc::Status status = router_interface->RemoveRouterInterface(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_router_interface_attribute(sai_object_id_t router_interface_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetRouterInterfaceAttributeRequest req; - lemming::dataplane::sai::SetRouterInterfaceAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(router_interface_id); - - - - -switch (attr->id) { - - case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: - req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: - req.set_admin_v4_state(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: - req.set_admin_v6_state(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_MTU: - req.set_mtu(attr->value.u32); - break; - case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: - req.set_ingress_acl(attr->value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: - req.set_egress_acl(attr->value.oid); - break; - case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: - req.set_neighbor_miss_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: - req.set_v4_mcast_enable(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: - req.set_v6_mcast_enable(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: - req.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: - req.set_nat_zone_id(attr->value.u8); - break; - case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: - req.set_disable_decrement_ttl(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: - req.set_admin_mpls_state(attr->value.booldata); - break; - case SAI_ROUTER_INTERFACE_ATTR_LABEL: - req.set_label(attr->value.chardata); - break; -} + lemming::dataplane::sai::RemoveRouterInterfaceRequest req; + lemming::dataplane::sai::RemoveRouterInterfaceResponse resp; + grpc::ClientContext context; + req.set_oid(router_interface_id); - grpc::Status status = router_interface->SetRouterInterfaceAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + grpc::Status status = + router_interface->RemoveRouterInterface(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_router_interface_attribute(sai_object_id_t router_interface_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetRouterInterfaceAttributeRequest req; - lemming::dataplane::sai::GetRouterInterfaceAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(router_interface_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_router_interface_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = router_interface->GetRouterInterfaceAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: - attr_list[i].value.oid = resp.attr().virtual_router_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_router_interface_type_t_to_sai(resp.attr().type()); - break; - case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: - attr_list[i].value.oid = resp.attr().vlan_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: - attr_list[i].value.u16 = resp.attr().outer_vlan_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: - attr_list[i].value.u16 = resp.attr().inner_vlan_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: - attr_list[i].value.oid = resp.attr().bridge_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: - attr_list[i].value.booldata = resp.attr().admin_v4_state(); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: - attr_list[i].value.booldata = resp.attr().admin_v6_state(); - break; - case SAI_ROUTER_INTERFACE_ATTR_MTU: - attr_list[i].value.u32 = resp.attr().mtu(); - break; - case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().ingress_acl(); - break; - case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: - attr_list[i].value.oid = resp.attr().egress_acl(); - break; - case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().neighbor_miss_packet_action()); - break; - case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: - attr_list[i].value.booldata = resp.attr().v4_mcast_enable(); - break; - case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: - attr_list[i].value.booldata = resp.attr().v6_mcast_enable(); - break; - case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().loopback_packet_action()); - break; - case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: - attr_list[i].value.booldata = resp.attr().is_virtual(); - break; - case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: - attr_list[i].value.u8 = resp.attr().nat_zone_id(); - break; - case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: - attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); - break; - case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: - attr_list[i].value.booldata = resp.attr().admin_mpls_state(); - break; - case SAI_ROUTER_INTERFACE_ATTR_LABEL: - strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_router_interface_attribute( + sai_object_id_t router_interface_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetRouterInterfaceAttributeRequest req; + lemming::dataplane::sai::SetRouterInterfaceAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(router_interface_id); + + switch (attr->id) { + case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: + req.set_admin_v4_state(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: + req.set_admin_v6_state(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_MTU: + req.set_mtu(attr->value.u32); + break; + case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: + req.set_ingress_acl(attr->value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: + req.set_egress_acl(attr->value.oid); + break; + case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: + req.set_neighbor_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: + req.set_v4_mcast_enable(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: + req.set_v6_mcast_enable(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: + req.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: + req.set_nat_zone_id(attr->value.u8); + break; + case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: + req.set_disable_decrement_ttl(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: + req.set_admin_mpls_state(attr->value.booldata); + break; + case SAI_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_ROUTER_INTERFACE_ATTR_LABEL: + req.set_label(attr->value.chardata); + break; + } + + grpc::Status status = + router_interface->SetRouterInterfaceAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_router_interface_stats(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetRouterInterfaceStatsRequest req; - lemming::dataplane::sai::GetRouterInterfaceStatsResponse resp; - grpc::ClientContext context; - req.set_oid(router_interface_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_router_interface_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = router_interface->GetRouterInterfaceStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_router_interface_attribute( + sai_object_id_t router_interface_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetRouterInterfaceAttributeRequest req; + lemming::dataplane::sai::GetRouterInterfaceAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(router_interface_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_router_interface_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + router_interface->GetRouterInterfaceAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID: + attr_list[i].value.oid = resp.attr().virtual_router_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_router_interface_type_t_to_sai(resp.attr().type()); + break; + case SAI_ROUTER_INTERFACE_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_VLAN_ID: + attr_list[i].value.oid = resp.attr().vlan_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_OUTER_VLAN_ID: + attr_list[i].value.u16 = resp.attr().outer_vlan_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_INNER_VLAN_ID: + attr_list[i].value.u16 = resp.attr().inner_vlan_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_BRIDGE_ID: + attr_list[i].value.oid = resp.attr().bridge_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V4_STATE: + attr_list[i].value.booldata = resp.attr().admin_v4_state(); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_V6_STATE: + attr_list[i].value.booldata = resp.attr().admin_v6_state(); + break; + case SAI_ROUTER_INTERFACE_ATTR_MTU: + attr_list[i].value.u32 = resp.attr().mtu(); + break; + case SAI_ROUTER_INTERFACE_ATTR_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().ingress_acl(); + break; + case SAI_ROUTER_INTERFACE_ATTR_EGRESS_ACL: + attr_list[i].value.oid = resp.attr().egress_acl(); + break; + case SAI_ROUTER_INTERFACE_ATTR_NEIGHBOR_MISS_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().neighbor_miss_packet_action()); + break; + case SAI_ROUTER_INTERFACE_ATTR_V4_MCAST_ENABLE: + attr_list[i].value.booldata = resp.attr().v4_mcast_enable(); + break; + case SAI_ROUTER_INTERFACE_ATTR_V6_MCAST_ENABLE: + attr_list[i].value.booldata = resp.attr().v6_mcast_enable(); + break; + case SAI_ROUTER_INTERFACE_ATTR_LOOPBACK_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().loopback_packet_action()); + break; + case SAI_ROUTER_INTERFACE_ATTR_IS_VIRTUAL: + attr_list[i].value.booldata = resp.attr().is_virtual(); + break; + case SAI_ROUTER_INTERFACE_ATTR_NAT_ZONE_ID: + attr_list[i].value.u8 = resp.attr().nat_zone_id(); + break; + case SAI_ROUTER_INTERFACE_ATTR_DISABLE_DECREMENT_TTL: + attr_list[i].value.booldata = resp.attr().disable_decrement_ttl(); + break; + case SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE: + attr_list[i].value.booldata = resp.attr().admin_mpls_state(); + break; + case SAI_ROUTER_INTERFACE_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_ROUTER_INTERFACE_ATTR_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_router_interface_stats_ext(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_router_interface_stats(sai_object_id_t router_interface_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetRouterInterfaceStatsRequest req; + lemming::dataplane::sai::GetRouterInterfaceStatsResponse resp; + grpc::ClientContext context; + req.set_oid(router_interface_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_router_interface_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = + router_interface->GetRouterInterfaceStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_router_interface_stats(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_router_interface_stats_ext( + sai_object_id_t router_interface_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_router_interfaces(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRouterInterfacesRequest req; - lemming::dataplane::sai::CreateRouterInterfacesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_router_interface(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = router_interface->CreateRouterInterfaces(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_clear_router_interface_stats(sai_object_id_t router_interface_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_router_interfaces(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRouterInterfacesRequest req; - lemming::dataplane::sai::RemoveRouterInterfacesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = router_interface->RemoveRouterInterfaces(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_router_interfaces(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateRouterInterfacesRequest req; + lemming::dataplane::sai::CreateRouterInterfacesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = + convert_create_router_interface(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = + router_interface->CreateRouterInterfaces(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_router_interfaces_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_remove_router_interfaces(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveRouterInterfacesRequest req; + lemming::dataplane::sai::RemoveRouterInterfacesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = + router_interface->RemoveRouterInterfaces(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_router_interfaces_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_router_interfaces_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } +sai_status_t l_get_router_interfaces_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; +} diff --git a/dataplane/standalone/sai/router_interface.h b/dataplane/standalone/sai/router_interface.h index 350785eb4..3cb250e9b 100644 --- a/dataplane/standalone/sai/router_interface.h +++ b/dataplane/standalone/sai/router_interface.h @@ -25,28 +25,58 @@ extern "C" { extern const sai_router_interface_api_t l_router_interface; - -sai_status_t l_create_router_interface(sai_object_id_t *router_interface_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_router_interface(sai_object_id_t* router_interface_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_router_interface(sai_object_id_t router_interface_id); -sai_status_t l_set_router_interface_attribute(sai_object_id_t router_interface_id, const sai_attribute_t *attr); - -sai_status_t l_get_router_interface_attribute(sai_object_id_t router_interface_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_get_router_interface_stats(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); - -sai_status_t l_get_router_interface_stats_ext(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); - -sai_status_t l_clear_router_interface_stats(sai_object_id_t router_interface_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); - -sai_status_t l_create_router_interfaces(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_router_interfaces(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_router_interfaces_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_router_interfaces_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_router_interface_attribute( + sai_object_id_t router_interface_id, const sai_attribute_t* attr); + +sai_status_t l_get_router_interface_attribute( + sai_object_id_t router_interface_id, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_get_router_interface_stats(sai_object_id_t router_interface_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); + +sai_status_t l_get_router_interface_stats_ext( + sai_object_id_t router_interface_id, uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, sai_stats_mode_t mode, + uint64_t* counters); + +sai_status_t l_clear_router_interface_stats(sai_object_id_t router_interface_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); + +sai_status_t l_create_router_interfaces(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_router_interfaces(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_router_interfaces_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_router_interfaces_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_ROUTER_INTERFACE_H_ diff --git a/dataplane/standalone/sai/rpf_group.cc b/dataplane/standalone/sai/rpf_group.cc index 73657b2f2..96e55d0aa 100644 --- a/dataplane/standalone/sai/rpf_group.cc +++ b/dataplane/standalone/sai/rpf_group.cc @@ -13,251 +13,251 @@ // limitations under the License. #include "dataplane/standalone/sai/rpf_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/rpf_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_rpf_group_api_t l_rpf_group = { - .create_rpf_group = l_create_rpf_group, - .remove_rpf_group = l_remove_rpf_group, - .set_rpf_group_attribute = l_set_rpf_group_attribute, - .get_rpf_group_attribute = l_get_rpf_group_attribute, - .create_rpf_group_member = l_create_rpf_group_member, - .remove_rpf_group_member = l_remove_rpf_group_member, - .set_rpf_group_member_attribute = l_set_rpf_group_member_attribute, - .get_rpf_group_member_attribute = l_get_rpf_group_member_attribute, + .create_rpf_group = l_create_rpf_group, + .remove_rpf_group = l_remove_rpf_group, + .set_rpf_group_attribute = l_set_rpf_group_attribute, + .get_rpf_group_attribute = l_get_rpf_group_attribute, + .create_rpf_group_member = l_create_rpf_group_member, + .remove_rpf_group_member = l_remove_rpf_group_member, + .set_rpf_group_member_attribute = l_set_rpf_group_member_attribute, + .get_rpf_group_member_attribute = l_get_rpf_group_member_attribute, }; +lemming::dataplane::sai::CreateRpfGroupRequest convert_create_rpf_group( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateRpfGroupRequest msg; -lemming::dataplane::sai::CreateRpfGroupRequest convert_create_rpf_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) {} + } + return msg; +} -lemming::dataplane::sai::CreateRpfGroupRequest msg; +lemming::dataplane::sai::CreateRpfGroupMemberRequest +convert_create_rpf_group_member(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateRpfGroupMemberRequest msg; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: + msg.set_rpf_group_id(attr_list[i].value.oid); + break; + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: + msg.set_rpf_interface_id(attr_list[i].value.oid); + break; + } + } + return msg; +} - for(uint32_t i = 0; i < attr_count; i++ ) { - - +sai_status_t l_create_rpf_group(sai_object_id_t* rpf_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr_list[i].id) { - -} + lemming::dataplane::sai::CreateRpfGroupRequest req = + convert_create_rpf_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateRpfGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); -} -return msg; -} + grpc::Status status = rpf_group->CreateRpfGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (rpf_group_id) { + *rpf_group_id = resp.oid(); + } -lemming::dataplane::sai::CreateRpfGroupMemberRequest convert_create_rpf_group_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + return SAI_STATUS_SUCCESS; +} -lemming::dataplane::sai::CreateRpfGroupMemberRequest msg; +sai_status_t l_remove_rpf_group(sai_object_id_t rpf_group_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::RemoveRpfGroupRequest req; + lemming::dataplane::sai::RemoveRpfGroupResponse resp; + grpc::ClientContext context; + req.set_oid(rpf_group_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = rpf_group->RemoveRpfGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -switch (attr_list[i].id) { - - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: - msg.set_rpf_group_id(attr_list[i].value.oid); - break; - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: - msg.set_rpf_interface_id(attr_list[i].value.oid); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_set_rpf_group_attribute(sai_object_id_t rpf_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_rpf_group(sai_object_id_t *rpf_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRpfGroupRequest req = convert_create_rpf_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateRpfGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = rpf_group->CreateRpfGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (rpf_group_id) { - *rpf_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_rpf_group(sai_object_id_t rpf_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRpfGroupRequest req; - lemming::dataplane::sai::RemoveRpfGroupResponse resp; - grpc::ClientContext context; - req.set_oid(rpf_group_id); - - grpc::Status status = rpf_group->RemoveRpfGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_rpf_group_attribute(sai_object_id_t rpf_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_rpf_group_attribute(sai_object_id_t rpf_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::GetRpfGroupAttributeRequest req; + lemming::dataplane::sai::GetRpfGroupAttributeResponse resp; + grpc::ClientContext context; -sai_status_t l_get_rpf_group_attribute(sai_object_id_t rpf_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetRpfGroupAttributeRequest req; - lemming::dataplane::sai::GetRpfGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(rpf_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_rpf_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = rpf_group->GetRpfGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: - attr_list[i].value.u32 = resp.attr().rpf_interface_count(); - break; - case SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().rpf_member_list(), &attr_list[i].value.objlist.count); - break; -} + req.set_oid(rpf_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_rpf_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = rpf_group->GetRpfGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_RPF_GROUP_ATTR_RPF_INTERFACE_COUNT: + attr_list[i].value.u32 = resp.attr().rpf_interface_count(); + break; + case SAI_RPF_GROUP_ATTR_RPF_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().rpf_member_list(), + &attr_list[i].value.objlist.count); + break; + } + } - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_rpf_group_member(sai_object_id_t *rpf_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateRpfGroupMemberRequest req = convert_create_rpf_group_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateRpfGroupMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = rpf_group->CreateRpfGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (rpf_group_member_id) { - *rpf_group_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_rpf_group_member(sai_object_id_t* rpf_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateRpfGroupMemberRequest req = + convert_create_rpf_group_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateRpfGroupMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = rpf_group->CreateRpfGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (rpf_group_member_id) { + *rpf_group_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_rpf_group_member(sai_object_id_t rpf_group_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveRpfGroupMemberRequest req; - lemming::dataplane::sai::RemoveRpfGroupMemberResponse resp; - grpc::ClientContext context; - req.set_oid(rpf_group_member_id); - - grpc::Status status = rpf_group->RemoveRpfGroupMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_rpf_group_member_attribute(sai_object_id_t rpf_group_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveRpfGroupMemberRequest req; + lemming::dataplane::sai::RemoveRpfGroupMemberResponse resp; + grpc::ClientContext context; + req.set_oid(rpf_group_member_id); + + grpc::Status status = rpf_group->RemoveRpfGroupMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } -sai_status_t l_get_rpf_group_member_attribute(sai_object_id_t rpf_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetRpfGroupMemberAttributeRequest req; - lemming::dataplane::sai::GetRpfGroupMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(rpf_group_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_rpf_group_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = rpf_group->GetRpfGroupMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: - attr_list[i].value.oid = resp.attr().rpf_group_id(); - break; - case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: - attr_list[i].value.oid = resp.attr().rpf_interface_id(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_rpf_group_member_attribute( + sai_object_id_t rpf_group_member_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_get_rpf_group_member_attribute( + sai_object_id_t rpf_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetRpfGroupMemberAttributeRequest req; + lemming::dataplane::sai::GetRpfGroupMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(rpf_group_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_rpf_group_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + rpf_group->GetRpfGroupMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_GROUP_ID: + attr_list[i].value.oid = resp.attr().rpf_group_id(); + break; + case SAI_RPF_GROUP_MEMBER_ATTR_RPF_INTERFACE_ID: + attr_list[i].value.oid = resp.attr().rpf_interface_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/rpf_group.h b/dataplane/standalone/sai/rpf_group.h index 417f2a129..0ab1fa032 100644 --- a/dataplane/standalone/sai/rpf_group.h +++ b/dataplane/standalone/sai/rpf_group.h @@ -25,22 +25,31 @@ extern "C" { extern const sai_rpf_group_api_t l_rpf_group; - -sai_status_t l_create_rpf_group(sai_object_id_t *rpf_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_rpf_group(sai_object_id_t* rpf_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_rpf_group(sai_object_id_t rpf_group_id); -sai_status_t l_set_rpf_group_attribute(sai_object_id_t rpf_group_id, const sai_attribute_t *attr); +sai_status_t l_set_rpf_group_attribute(sai_object_id_t rpf_group_id, + const sai_attribute_t* attr); -sai_status_t l_get_rpf_group_attribute(sai_object_id_t rpf_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_rpf_group_attribute(sai_object_id_t rpf_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_rpf_group_member(sai_object_id_t *rpf_group_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_rpf_group_member(sai_object_id_t* rpf_group_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_rpf_group_member(sai_object_id_t rpf_group_member_id); -sai_status_t l_set_rpf_group_member_attribute(sai_object_id_t rpf_group_member_id, const sai_attribute_t *attr); - -sai_status_t l_get_rpf_group_member_attribute(sai_object_id_t rpf_group_member_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_rpf_group_member_attribute( + sai_object_id_t rpf_group_member_id, const sai_attribute_t* attr); +sai_status_t l_get_rpf_group_member_attribute( + sai_object_id_t rpf_group_member_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_RPF_GROUP_H_ diff --git a/dataplane/standalone/sai/samplepacket.cc b/dataplane/standalone/sai/samplepacket.cc index d936fdb05..aa98422a4 100644 --- a/dataplane/standalone/sai/samplepacket.cc +++ b/dataplane/standalone/sai/samplepacket.cc @@ -13,167 +13,188 @@ // limitations under the License. #include "dataplane/standalone/sai/samplepacket.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/samplepacket.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_samplepacket_api_t l_samplepacket = { - .create_samplepacket = l_create_samplepacket, - .remove_samplepacket = l_remove_samplepacket, - .set_samplepacket_attribute = l_set_samplepacket_attribute, - .get_samplepacket_attribute = l_get_samplepacket_attribute, + .create_samplepacket = l_create_samplepacket, + .remove_samplepacket = l_remove_samplepacket, + .set_samplepacket_attribute = l_set_samplepacket_attribute, + .get_samplepacket_attribute = l_get_samplepacket_attribute, }; - -lemming::dataplane::sai::CreateSamplepacketRequest convert_create_samplepacket(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSamplepacketRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: - msg.set_sample_rate(attr_list[i].value.u32); - break; - case SAI_SAMPLEPACKET_ATTR_TYPE: - msg.set_type(convert_sai_samplepacket_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SAMPLEPACKET_ATTR_MODE: - msg.set_mode(convert_sai_samplepacket_mode_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateSamplepacketRequest convert_create_samplepacket( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSamplepacketRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: + msg.set_sample_rate(attr_list[i].value.u32); + break; + case SAI_SAMPLEPACKET_ATTR_TYPE: + msg.set_type( + convert_sai_samplepacket_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SAMPLEPACKET_ATTR_MODE: + msg.set_mode( + convert_sai_samplepacket_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE: + msg.set_truncate_enable(attr_list[i].value.booldata); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_SIZE: + msg.set_truncate_size(attr_list[i].value.u32); + break; + } + } + return msg; } -sai_status_t l_create_samplepacket(sai_object_id_t *samplepacket_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSamplepacketRequest req = convert_create_samplepacket(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSamplepacketResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = samplepacket->CreateSamplepacket(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (samplepacket_id) { - *samplepacket_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_samplepacket(sai_object_id_t* samplepacket_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSamplepacketRequest req = + convert_create_samplepacket(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSamplepacketResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = samplepacket->CreateSamplepacket(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (samplepacket_id) { + *samplepacket_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_samplepacket(sai_object_id_t samplepacket_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSamplepacketRequest req; - lemming::dataplane::sai::RemoveSamplepacketResponse resp; - grpc::ClientContext context; - req.set_oid(samplepacket_id); - - grpc::Status status = samplepacket->RemoveSamplepacket(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSamplepacketRequest req; + lemming::dataplane::sai::RemoveSamplepacketResponse resp; + grpc::ClientContext context; + req.set_oid(samplepacket_id); + + grpc::Status status = samplepacket->RemoveSamplepacket(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_samplepacket_attribute(sai_object_id_t samplepacket_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSamplepacketAttributeRequest req; - lemming::dataplane::sai::SetSamplepacketAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(samplepacket_id); - - - - -switch (attr->id) { - - case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: - req.set_sample_rate(attr->value.u32); - break; +sai_status_t l_set_samplepacket_attribute(sai_object_id_t samplepacket_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetSamplepacketAttributeRequest req; + lemming::dataplane::sai::SetSamplepacketAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(samplepacket_id); + + switch (attr->id) { + case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: + req.set_sample_rate(attr->value.u32); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE: + req.set_truncate_enable(attr->value.booldata); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_SIZE: + req.set_truncate_size(attr->value.u32); + break; + } + + grpc::Status status = + samplepacket->SetSamplepacketAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = samplepacket->SetSamplepacketAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_samplepacket_attribute(sai_object_id_t samplepacket_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSamplepacketAttributeRequest req; + lemming::dataplane::sai::GetSamplepacketAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(samplepacket_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_samplepacket_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + samplepacket->GetSamplepacketAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: + attr_list[i].value.u32 = resp.attr().sample_rate(); + break; + case SAI_SAMPLEPACKET_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_samplepacket_type_t_to_sai(resp.attr().type()); + break; + case SAI_SAMPLEPACKET_ATTR_MODE: + attr_list[i].value.s32 = + convert_sai_samplepacket_mode_t_to_sai(resp.attr().mode()); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_ENABLE: + attr_list[i].value.booldata = resp.attr().truncate_enable(); + break; + case SAI_SAMPLEPACKET_ATTR_TRUNCATE_SIZE: + attr_list[i].value.u32 = resp.attr().truncate_size(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_samplepacket_attribute(sai_object_id_t samplepacket_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSamplepacketAttributeRequest req; - lemming::dataplane::sai::GetSamplepacketAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(samplepacket_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_samplepacket_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = samplepacket->GetSamplepacketAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SAMPLEPACKET_ATTR_SAMPLE_RATE: - attr_list[i].value.u32 = resp.attr().sample_rate(); - break; - case SAI_SAMPLEPACKET_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_samplepacket_type_t_to_sai(resp.attr().type()); - break; - case SAI_SAMPLEPACKET_ATTR_MODE: - attr_list[i].value.s32 = convert_sai_samplepacket_mode_t_to_sai(resp.attr().mode()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/samplepacket.h b/dataplane/standalone/sai/samplepacket.h index d1bf0cf33..050c35567 100644 --- a/dataplane/standalone/sai/samplepacket.h +++ b/dataplane/standalone/sai/samplepacket.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_samplepacket_api_t l_samplepacket; - -sai_status_t l_create_samplepacket(sai_object_id_t *samplepacket_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_samplepacket(sai_object_id_t* samplepacket_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_samplepacket(sai_object_id_t samplepacket_id); -sai_status_t l_set_samplepacket_attribute(sai_object_id_t samplepacket_id, const sai_attribute_t *attr); - -sai_status_t l_get_samplepacket_attribute(sai_object_id_t samplepacket_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_samplepacket_attribute(sai_object_id_t samplepacket_id, + const sai_attribute_t* attr); +sai_status_t l_get_samplepacket_attribute(sai_object_id_t samplepacket_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_SAMPLEPACKET_H_ diff --git a/dataplane/standalone/sai/scheduler.cc b/dataplane/standalone/sai/scheduler.cc index a521ee4ee..d6b93f52d 100644 --- a/dataplane/standalone/sai/scheduler.cc +++ b/dataplane/standalone/sai/scheduler.cc @@ -13,209 +13,209 @@ // limitations under the License. #include "dataplane/standalone/sai/scheduler.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/scheduler.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_scheduler_api_t l_scheduler = { - .create_scheduler = l_create_scheduler, - .remove_scheduler = l_remove_scheduler, - .set_scheduler_attribute = l_set_scheduler_attribute, - .get_scheduler_attribute = l_get_scheduler_attribute, + .create_scheduler = l_create_scheduler, + .remove_scheduler = l_remove_scheduler, + .set_scheduler_attribute = l_set_scheduler_attribute, + .get_scheduler_attribute = l_get_scheduler_attribute, }; - -lemming::dataplane::sai::CreateSchedulerRequest convert_create_scheduler(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSchedulerRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: - msg.set_scheduling_type(convert_sai_scheduling_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: - msg.set_scheduling_weight(attr_list[i].value.u8); - break; - case SAI_SCHEDULER_ATTR_METER_TYPE: - msg.set_meter_type(convert_sai_meter_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: - msg.set_min_bandwidth_rate(attr_list[i].value.u64); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: - msg.set_min_bandwidth_burst_rate(attr_list[i].value.u64); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: - msg.set_max_bandwidth_rate(attr_list[i].value.u64); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: - msg.set_max_bandwidth_burst_rate(attr_list[i].value.u64); - break; +lemming::dataplane::sai::CreateSchedulerRequest convert_create_scheduler( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSchedulerRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: + msg.set_scheduling_type( + convert_sai_scheduling_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: + msg.set_scheduling_weight(attr_list[i].value.u8); + break; + case SAI_SCHEDULER_ATTR_METER_TYPE: + msg.set_meter_type( + convert_sai_meter_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: + msg.set_min_bandwidth_rate(attr_list[i].value.u64); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: + msg.set_min_bandwidth_burst_rate(attr_list[i].value.u64); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: + msg.set_max_bandwidth_rate(attr_list[i].value.u64); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: + msg.set_max_bandwidth_burst_rate(attr_list[i].value.u64); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_scheduler(sai_object_id_t *scheduler_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSchedulerRequest req = convert_create_scheduler(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSchedulerResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = scheduler->CreateScheduler(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (scheduler_id) { - *scheduler_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_scheduler(sai_object_id_t* scheduler_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSchedulerRequest req = + convert_create_scheduler(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSchedulerResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = scheduler->CreateScheduler(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (scheduler_id) { + *scheduler_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_scheduler(sai_object_id_t scheduler_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSchedulerRequest req; - lemming::dataplane::sai::RemoveSchedulerResponse resp; - grpc::ClientContext context; - req.set_oid(scheduler_id); - - grpc::Status status = scheduler->RemoveScheduler(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_scheduler_attribute(sai_object_id_t scheduler_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSchedulerAttributeRequest req; - lemming::dataplane::sai::SetSchedulerAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(scheduler_id); - - - - -switch (attr->id) { - - case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: - req.set_scheduling_type(convert_sai_scheduling_type_t_to_proto(attr->value.s32)); - break; - case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: - req.set_scheduling_weight(attr->value.u8); - break; - case SAI_SCHEDULER_ATTR_METER_TYPE: - req.set_meter_type(convert_sai_meter_type_t_to_proto(attr->value.s32)); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: - req.set_min_bandwidth_rate(attr->value.u64); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: - req.set_min_bandwidth_burst_rate(attr->value.u64); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: - req.set_max_bandwidth_rate(attr->value.u64); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: - req.set_max_bandwidth_burst_rate(attr->value.u64); - break; -} - - grpc::Status status = scheduler->SetSchedulerAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSchedulerRequest req; + lemming::dataplane::sai::RemoveSchedulerResponse resp; + grpc::ClientContext context; + req.set_oid(scheduler_id); + + grpc::Status status = scheduler->RemoveScheduler(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_scheduler_attribute(sai_object_id_t scheduler_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSchedulerAttributeRequest req; - lemming::dataplane::sai::GetSchedulerAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(scheduler_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_scheduler_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = scheduler->GetSchedulerAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: - attr_list[i].value.s32 = convert_sai_scheduling_type_t_to_sai(resp.attr().scheduling_type()); - break; - case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: - attr_list[i].value.u8 = resp.attr().scheduling_weight(); - break; - case SAI_SCHEDULER_ATTR_METER_TYPE: - attr_list[i].value.s32 = convert_sai_meter_type_t_to_sai(resp.attr().meter_type()); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: - attr_list[i].value.u64 = resp.attr().min_bandwidth_rate(); - break; - case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: - attr_list[i].value.u64 = resp.attr().min_bandwidth_burst_rate(); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: - attr_list[i].value.u64 = resp.attr().max_bandwidth_rate(); - break; - case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: - attr_list[i].value.u64 = resp.attr().max_bandwidth_burst_rate(); - break; +sai_status_t l_set_scheduler_attribute(sai_object_id_t scheduler_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetSchedulerAttributeRequest req; + lemming::dataplane::sai::SetSchedulerAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(scheduler_id); + + switch (attr->id) { + case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: + req.set_scheduling_type( + convert_sai_scheduling_type_t_to_proto(attr->value.s32)); + break; + case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: + req.set_scheduling_weight(attr->value.u8); + break; + case SAI_SCHEDULER_ATTR_METER_TYPE: + req.set_meter_type(convert_sai_meter_type_t_to_proto(attr->value.s32)); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: + req.set_min_bandwidth_rate(attr->value.u64); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: + req.set_min_bandwidth_burst_rate(attr->value.u64); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: + req.set_max_bandwidth_rate(attr->value.u64); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: + req.set_max_bandwidth_burst_rate(attr->value.u64); + break; + } + + grpc::Status status = scheduler->SetSchedulerAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_scheduler_attribute(sai_object_id_t scheduler_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSchedulerAttributeRequest req; + lemming::dataplane::sai::GetSchedulerAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(scheduler_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_scheduler_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = scheduler->GetSchedulerAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SCHEDULER_ATTR_SCHEDULING_TYPE: + attr_list[i].value.s32 = + convert_sai_scheduling_type_t_to_sai(resp.attr().scheduling_type()); + break; + case SAI_SCHEDULER_ATTR_SCHEDULING_WEIGHT: + attr_list[i].value.u8 = resp.attr().scheduling_weight(); + break; + case SAI_SCHEDULER_ATTR_METER_TYPE: + attr_list[i].value.s32 = + convert_sai_meter_type_t_to_sai(resp.attr().meter_type()); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_RATE: + attr_list[i].value.u64 = resp.attr().min_bandwidth_rate(); + break; + case SAI_SCHEDULER_ATTR_MIN_BANDWIDTH_BURST_RATE: + attr_list[i].value.u64 = resp.attr().min_bandwidth_burst_rate(); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_RATE: + attr_list[i].value.u64 = resp.attr().max_bandwidth_rate(); + break; + case SAI_SCHEDULER_ATTR_MAX_BANDWIDTH_BURST_RATE: + attr_list[i].value.u64 = resp.attr().max_bandwidth_burst_rate(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/scheduler.h b/dataplane/standalone/sai/scheduler.h index ea0154f64..8a6d499cb 100644 --- a/dataplane/standalone/sai/scheduler.h +++ b/dataplane/standalone/sai/scheduler.h @@ -25,14 +25,17 @@ extern "C" { extern const sai_scheduler_api_t l_scheduler; - -sai_status_t l_create_scheduler(sai_object_id_t *scheduler_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_scheduler(sai_object_id_t* scheduler_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_scheduler(sai_object_id_t scheduler_id); -sai_status_t l_set_scheduler_attribute(sai_object_id_t scheduler_id, const sai_attribute_t *attr); - -sai_status_t l_get_scheduler_attribute(sai_object_id_t scheduler_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_scheduler_attribute(sai_object_id_t scheduler_id, + const sai_attribute_t* attr); +sai_status_t l_get_scheduler_attribute(sai_object_id_t scheduler_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_SCHEDULER_H_ diff --git a/dataplane/standalone/sai/scheduler_group.cc b/dataplane/standalone/sai/scheduler_group.cc index 0d5f81f0c..ac4ba1c43 100644 --- a/dataplane/standalone/sai/scheduler_group.cc +++ b/dataplane/standalone/sai/scheduler_group.cc @@ -13,188 +13,190 @@ // limitations under the License. #include "dataplane/standalone/sai/scheduler_group.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/scheduler_group.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_scheduler_group_api_t l_scheduler_group = { - .create_scheduler_group = l_create_scheduler_group, - .remove_scheduler_group = l_remove_scheduler_group, - .set_scheduler_group_attribute = l_set_scheduler_group_attribute, - .get_scheduler_group_attribute = l_get_scheduler_group_attribute, + .create_scheduler_group = l_create_scheduler_group, + .remove_scheduler_group = l_remove_scheduler_group, + .set_scheduler_group_attribute = l_set_scheduler_group_attribute, + .get_scheduler_group_attribute = l_get_scheduler_group_attribute, }; - -lemming::dataplane::sai::CreateSchedulerGroupRequest convert_create_scheduler_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSchedulerGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: - msg.set_port_id(attr_list[i].value.oid); - break; - case SAI_SCHEDULER_GROUP_ATTR_LEVEL: - msg.set_level(attr_list[i].value.u8); - break; - case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: - msg.set_max_childs(attr_list[i].value.u8); - break; - case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: - msg.set_scheduler_profile_id(attr_list[i].value.oid); - break; - case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: - msg.set_parent_node(attr_list[i].value.oid); - break; +lemming::dataplane::sai::CreateSchedulerGroupRequest +convert_create_scheduler_group(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSchedulerGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: + msg.set_port_id(attr_list[i].value.oid); + break; + case SAI_SCHEDULER_GROUP_ATTR_LEVEL: + msg.set_level(attr_list[i].value.u8); + break; + case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: + msg.set_max_childs(attr_list[i].value.u8); + break; + case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: + msg.set_scheduler_profile_id(attr_list[i].value.oid); + break; + case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: + msg.set_parent_node(attr_list[i].value.oid); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_scheduler_group(sai_object_id_t *scheduler_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSchedulerGroupRequest req = convert_create_scheduler_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSchedulerGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = scheduler_group->CreateSchedulerGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (scheduler_group_id) { - *scheduler_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_scheduler_group(sai_object_id_t* scheduler_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSchedulerGroupRequest req = + convert_create_scheduler_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSchedulerGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + scheduler_group->CreateSchedulerGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (scheduler_group_id) { + *scheduler_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_scheduler_group(sai_object_id_t scheduler_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSchedulerGroupRequest req; - lemming::dataplane::sai::RemoveSchedulerGroupResponse resp; - grpc::ClientContext context; - req.set_oid(scheduler_group_id); - - grpc::Status status = scheduler_group->RemoveSchedulerGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_scheduler_group_attribute(sai_object_id_t scheduler_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSchedulerGroupAttributeRequest req; - lemming::dataplane::sai::SetSchedulerGroupAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(scheduler_group_id); - - - - -switch (attr->id) { - - case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: - req.set_scheduler_profile_id(attr->value.oid); - break; - case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: - req.set_parent_node(attr->value.oid); - break; -} - - grpc::Status status = scheduler_group->SetSchedulerGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSchedulerGroupRequest req; + lemming::dataplane::sai::RemoveSchedulerGroupResponse resp; + grpc::ClientContext context; + req.set_oid(scheduler_group_id); + + grpc::Status status = + scheduler_group->RemoveSchedulerGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_scheduler_group_attribute(sai_object_id_t scheduler_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSchedulerGroupAttributeRequest req; - lemming::dataplane::sai::GetSchedulerGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(scheduler_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_scheduler_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = scheduler_group->GetSchedulerGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT: - attr_list[i].value.u32 = resp.attr().child_count(); - break; - case SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().child_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: - attr_list[i].value.oid = resp.attr().port_id(); - break; - case SAI_SCHEDULER_GROUP_ATTR_LEVEL: - attr_list[i].value.u8 = resp.attr().level(); - break; - case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: - attr_list[i].value.u8 = resp.attr().max_childs(); - break; - case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: - attr_list[i].value.oid = resp.attr().scheduler_profile_id(); - break; - case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: - attr_list[i].value.oid = resp.attr().parent_node(); - break; +sai_status_t l_set_scheduler_group_attribute(sai_object_id_t scheduler_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetSchedulerGroupAttributeRequest req; + lemming::dataplane::sai::SetSchedulerGroupAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(scheduler_group_id); + + switch (attr->id) { + case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: + req.set_scheduler_profile_id(attr->value.oid); + break; + case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: + req.set_parent_node(attr->value.oid); + break; + } + + grpc::Status status = + scheduler_group->SetSchedulerGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_scheduler_group_attribute(sai_object_id_t scheduler_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSchedulerGroupAttributeRequest req; + lemming::dataplane::sai::GetSchedulerGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(scheduler_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_scheduler_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + scheduler_group->GetSchedulerGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SCHEDULER_GROUP_ATTR_CHILD_COUNT: + attr_list[i].value.u32 = resp.attr().child_count(); + break; + case SAI_SCHEDULER_GROUP_ATTR_CHILD_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().child_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SCHEDULER_GROUP_ATTR_PORT_ID: + attr_list[i].value.oid = resp.attr().port_id(); + break; + case SAI_SCHEDULER_GROUP_ATTR_LEVEL: + attr_list[i].value.u8 = resp.attr().level(); + break; + case SAI_SCHEDULER_GROUP_ATTR_MAX_CHILDS: + attr_list[i].value.u8 = resp.attr().max_childs(); + break; + case SAI_SCHEDULER_GROUP_ATTR_SCHEDULER_PROFILE_ID: + attr_list[i].value.oid = resp.attr().scheduler_profile_id(); + break; + case SAI_SCHEDULER_GROUP_ATTR_PARENT_NODE: + attr_list[i].value.oid = resp.attr().parent_node(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/scheduler_group.h b/dataplane/standalone/sai/scheduler_group.h index d4f2240ef..d1b7463f8 100644 --- a/dataplane/standalone/sai/scheduler_group.h +++ b/dataplane/standalone/sai/scheduler_group.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_scheduler_group_api_t l_scheduler_group; - -sai_status_t l_create_scheduler_group(sai_object_id_t *scheduler_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_scheduler_group(sai_object_id_t* scheduler_group_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_scheduler_group(sai_object_id_t scheduler_group_id); -sai_status_t l_set_scheduler_group_attribute(sai_object_id_t scheduler_group_id, const sai_attribute_t *attr); - -sai_status_t l_get_scheduler_group_attribute(sai_object_id_t scheduler_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_scheduler_group_attribute(sai_object_id_t scheduler_group_id, + const sai_attribute_t* attr); +sai_status_t l_get_scheduler_group_attribute(sai_object_id_t scheduler_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_SCHEDULER_GROUP_H_ diff --git a/dataplane/standalone/sai/srv6.cc b/dataplane/standalone/sai/srv6.cc index a60d7fd5b..5d3c6e721 100644 --- a/dataplane/standalone/sai/srv6.cc +++ b/dataplane/standalone/sai/srv6.cc @@ -13,554 +13,619 @@ // limitations under the License. #include "dataplane/standalone/sai/srv6.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/srv6.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_srv6_api_t l_srv6 = { - .create_srv6_sidlist = l_create_srv6_sidlist, - .remove_srv6_sidlist = l_remove_srv6_sidlist, - .set_srv6_sidlist_attribute = l_set_srv6_sidlist_attribute, - .get_srv6_sidlist_attribute = l_get_srv6_sidlist_attribute, - .create_srv6_sidlists = l_create_srv6_sidlists, - .remove_srv6_sidlists = l_remove_srv6_sidlists, - .get_srv6_sidlist_stats = l_get_srv6_sidlist_stats, - .get_srv6_sidlist_stats_ext = l_get_srv6_sidlist_stats_ext, - .clear_srv6_sidlist_stats = l_clear_srv6_sidlist_stats, - .create_my_sid_entry = l_create_my_sid_entry, - .remove_my_sid_entry = l_remove_my_sid_entry, - .set_my_sid_entry_attribute = l_set_my_sid_entry_attribute, - .get_my_sid_entry_attribute = l_get_my_sid_entry_attribute, - .create_my_sid_entries = l_create_my_sid_entries, - .remove_my_sid_entries = l_remove_my_sid_entries, - .set_my_sid_entries_attribute = l_set_my_sid_entries_attribute, - .get_my_sid_entries_attribute = l_get_my_sid_entries_attribute, + .create_srv6_sidlist = l_create_srv6_sidlist, + .remove_srv6_sidlist = l_remove_srv6_sidlist, + .set_srv6_sidlist_attribute = l_set_srv6_sidlist_attribute, + .get_srv6_sidlist_attribute = l_get_srv6_sidlist_attribute, + .create_srv6_sidlists = l_create_srv6_sidlists, + .remove_srv6_sidlists = l_remove_srv6_sidlists, + .get_srv6_sidlist_stats = l_get_srv6_sidlist_stats, + .get_srv6_sidlist_stats_ext = l_get_srv6_sidlist_stats_ext, + .clear_srv6_sidlist_stats = l_clear_srv6_sidlist_stats, + .create_my_sid_entry = l_create_my_sid_entry, + .remove_my_sid_entry = l_remove_my_sid_entry, + .set_my_sid_entry_attribute = l_set_my_sid_entry_attribute, + .get_my_sid_entry_attribute = l_get_my_sid_entry_attribute, + .create_my_sid_entries = l_create_my_sid_entries, + .remove_my_sid_entries = l_remove_my_sid_entries, + .set_my_sid_entries_attribute = l_set_my_sid_entries_attribute, + .get_my_sid_entries_attribute = l_get_my_sid_entries_attribute, }; - -lemming::dataplane::sai::CreateSrv6SidlistRequest convert_create_srv6_sidlist(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSrv6SidlistRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SRV6_SIDLIST_ATTR_TYPE: - msg.set_type(convert_sai_srv6_sidlist_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: - msg.set_next_hop_id(attr_list[i].value.oid); - break; +lemming::dataplane::sai::CreateSrv6SidlistRequest convert_create_srv6_sidlist( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSrv6SidlistRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SRV6_SIDLIST_ATTR_TYPE: + msg.set_type( + convert_sai_srv6_sidlist_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: + msg.set_next_hop_id(attr_list[i].value.oid); + break; + case SAI_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; -} - -lemming::dataplane::sai::CreateMySidEntryRequest convert_create_my_sid_entry(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateMySidEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: - msg.set_endpoint_behavior(convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: - msg.set_endpoint_behavior_flavor(convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: - msg.set_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: - msg.set_trap_priority(attr_list[i].value.u8); - break; - case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: - msg.set_next_hop_id(attr_list[i].value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: - msg.set_tunnel_id(attr_list[i].value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_VRF: - msg.set_vrf(attr_list[i].value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: - msg.set_counter_id(attr_list[i].value.oid); - break; +lemming::dataplane::sai::CreateMySidEntryRequest convert_create_my_sid_entry( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateMySidEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: + msg.set_endpoint_behavior( + convert_sai_my_sid_entry_endpoint_behavior_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: + msg.set_endpoint_behavior_flavor( + convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: + msg.set_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: + msg.set_trap_priority(attr_list[i].value.u8); + break; + case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: + msg.set_next_hop_id(attr_list[i].value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: + msg.set_tunnel_id(attr_list[i].value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_VRF: + msg.set_vrf(attr_list[i].value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: + msg.set_counter_id(attr_list[i].value.oid); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_srv6_sidlist(sai_object_id_t *srv6_sidlist_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSrv6SidlistRequest req = convert_create_srv6_sidlist(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSrv6SidlistResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = srv6->CreateSrv6Sidlist(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (srv6_sidlist_id) { - *srv6_sidlist_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_srv6_sidlist(sai_object_id_t* srv6_sidlist_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSrv6SidlistRequest req = + convert_create_srv6_sidlist(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSrv6SidlistResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = srv6->CreateSrv6Sidlist(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (srv6_sidlist_id) { + *srv6_sidlist_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_srv6_sidlist(sai_object_id_t srv6_sidlist_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSrv6SidlistRequest req; - lemming::dataplane::sai::RemoveSrv6SidlistResponse resp; - grpc::ClientContext context; - req.set_oid(srv6_sidlist_id); - - grpc::Status status = srv6->RemoveSrv6Sidlist(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSrv6SidlistRequest req; + lemming::dataplane::sai::RemoveSrv6SidlistResponse resp; + grpc::ClientContext context; + req.set_oid(srv6_sidlist_id); + + grpc::Status status = srv6->RemoveSrv6Sidlist(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSrv6SidlistAttributeRequest req; - lemming::dataplane::sai::SetSrv6SidlistAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(srv6_sidlist_id); - - - - -switch (attr->id) { - - case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: - req.set_next_hop_id(attr->value.oid); - break; +sai_status_t l_set_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetSrv6SidlistAttributeRequest req; + lemming::dataplane::sai::SetSrv6SidlistAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(srv6_sidlist_id); + + switch (attr->id) { + case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: + req.set_next_hop_id(attr->value.oid); + break; + case SAI_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = srv6->SetSrv6SidlistAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = srv6->SetSrv6SidlistAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSrv6SidlistAttributeRequest req; + lemming::dataplane::sai::GetSrv6SidlistAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(srv6_sidlist_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_srv6_sidlist_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = srv6->GetSrv6SidlistAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SRV6_SIDLIST_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_srv6_sidlist_type_t_to_sai(resp.attr().type()); + break; + case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: + attr_list[i].value.oid = resp.attr().next_hop_id(); + break; + case SAI_SRV6_SIDLIST_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_SRV6_SIDLIST_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSrv6SidlistAttributeRequest req; - lemming::dataplane::sai::GetSrv6SidlistAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(srv6_sidlist_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_srv6_sidlist_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = srv6->GetSrv6SidlistAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SRV6_SIDLIST_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_srv6_sidlist_type_t_to_sai(resp.attr().type()); - break; - case SAI_SRV6_SIDLIST_ATTR_NEXT_HOP_ID: - attr_list[i].value.oid = resp.attr().next_hop_id(); - break; +sai_status_t l_create_srv6_sidlists(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSrv6SidlistsRequest req; + lemming::dataplane::sai::CreateSrv6SidlistsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = + convert_create_srv6_sidlist(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = srv6->CreateSrv6Sidlists(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_srv6_sidlists(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSrv6SidlistsRequest req; + lemming::dataplane::sai::RemoveSrv6SidlistsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = srv6->RemoveSrv6Sidlists(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_srv6_sidlists(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSrv6SidlistsRequest req; - lemming::dataplane::sai::CreateSrv6SidlistsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_srv6_sidlist(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = srv6->CreateSrv6Sidlists(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSrv6SidlistStatsRequest req; + lemming::dataplane::sai::GetSrv6SidlistStatsResponse resp; + grpc::ClientContext context; + req.set_oid(srv6_sidlist_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids( + convert_sai_srv6_sidlist_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = srv6->GetSrv6SidlistStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_srv6_sidlists(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSrv6SidlistsRequest req; - lemming::dataplane::sai::RemoveSrv6SidlistsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = srv6->RemoveSrv6Sidlists(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_srv6_sidlist_stats_ext(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSrv6SidlistStatsRequest req; - lemming::dataplane::sai::GetSrv6SidlistStatsResponse resp; - grpc::ClientContext context; - req.set_oid(srv6_sidlist_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_srv6_sidlist_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = srv6->GetSrv6SidlistStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_srv6_sidlist_stats_ext(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_clear_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_my_sid_entry(const sai_my_sid_entry_t *my_sid_entry, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMySidEntryRequest req = convert_create_my_sid_entry(attr_count, attr_list); - lemming::dataplane::sai::CreateMySidEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = srv6->CreateMySidEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_my_sid_entry(const sai_my_sid_entry_t *my_sid_entry) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMySidEntryRequest req; - lemming::dataplane::sai::RemoveMySidEntryResponse resp; - grpc::ClientContext context; - - - grpc::Status status = srv6->RemoveMySidEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_my_sid_entry(const sai_my_sid_entry_t* my_sid_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMySidEntryRequest req = + convert_create_my_sid_entry(attr_count, attr_list); + lemming::dataplane::sai::CreateMySidEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = srv6->CreateMySidEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_my_sid_entry_attribute(const sai_my_sid_entry_t *my_sid_entry, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetMySidEntryAttributeRequest req; - lemming::dataplane::sai::SetMySidEntryAttributeResponse resp; - grpc::ClientContext context; - - - - - -switch (attr->id) { - - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: - req.set_endpoint_behavior(convert_sai_my_sid_entry_endpoint_behavior_t_to_proto(attr->value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: - req.set_endpoint_behavior_flavor(convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto(attr->value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: - req.set_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: - req.set_trap_priority(attr->value.u8); - break; - case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: - req.set_next_hop_id(attr->value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: - req.set_tunnel_id(attr->value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_VRF: - req.set_vrf(attr->value.oid); - break; - case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: - req.set_counter_id(attr->value.oid); - break; +sai_status_t l_remove_my_sid_entry(const sai_my_sid_entry_t* my_sid_entry) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMySidEntryRequest req; + lemming::dataplane::sai::RemoveMySidEntryResponse resp; + grpc::ClientContext context; + + grpc::Status status = srv6->RemoveMySidEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = srv6->SetMySidEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_my_sid_entry_attribute( + const sai_my_sid_entry_t* my_sid_entry, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetMySidEntryAttributeRequest req; + lemming::dataplane::sai::SetMySidEntryAttributeResponse resp; + grpc::ClientContext context; + + switch (attr->id) { + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: + req.set_endpoint_behavior( + convert_sai_my_sid_entry_endpoint_behavior_t_to_proto( + attr->value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: + req.set_endpoint_behavior_flavor( + convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_proto( + attr->value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: + req.set_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: + req.set_trap_priority(attr->value.u8); + break; + case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: + req.set_next_hop_id(attr->value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: + req.set_tunnel_id(attr->value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_VRF: + req.set_vrf(attr->value.oid); + break; + case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: + req.set_counter_id(attr->value.oid); + break; + } + + grpc::Status status = srv6->SetMySidEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_my_sid_entry_attribute(const sai_my_sid_entry_t *my_sid_entry, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetMySidEntryAttributeRequest req; - lemming::dataplane::sai::GetMySidEntryAttributeResponse resp; - grpc::ClientContext context; - - - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_my_sid_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = srv6->GetMySidEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: - attr_list[i].value.s32 = convert_sai_my_sid_entry_endpoint_behavior_t_to_sai(resp.attr().endpoint_behavior()); - break; - case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: - attr_list[i].value.s32 = convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai(resp.attr().endpoint_behavior_flavor()); - break; - case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); - break; - case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: - attr_list[i].value.u8 = resp.attr().trap_priority(); - break; - case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: - attr_list[i].value.oid = resp.attr().next_hop_id(); - break; - case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: - attr_list[i].value.oid = resp.attr().tunnel_id(); - break; - case SAI_MY_SID_ENTRY_ATTR_VRF: - attr_list[i].value.oid = resp.attr().vrf(); - break; - case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: - attr_list[i].value.oid = resp.attr().counter_id(); - break; +sai_status_t l_get_my_sid_entry_attribute( + const sai_my_sid_entry_t* my_sid_entry, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetMySidEntryAttributeRequest req; + lemming::dataplane::sai::GetMySidEntryAttributeResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_my_sid_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = srv6->GetMySidEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR: + attr_list[i].value.s32 = + convert_sai_my_sid_entry_endpoint_behavior_t_to_sai( + resp.attr().endpoint_behavior()); + break; + case SAI_MY_SID_ENTRY_ATTR_ENDPOINT_BEHAVIOR_FLAVOR: + attr_list[i].value.s32 = + convert_sai_my_sid_entry_endpoint_behavior_flavor_t_to_sai( + resp.attr().endpoint_behavior_flavor()); + break; + case SAI_MY_SID_ENTRY_ATTR_PACKET_ACTION: + attr_list[i].value.s32 = + convert_sai_packet_action_t_to_sai(resp.attr().packet_action()); + break; + case SAI_MY_SID_ENTRY_ATTR_TRAP_PRIORITY: + attr_list[i].value.u8 = resp.attr().trap_priority(); + break; + case SAI_MY_SID_ENTRY_ATTR_NEXT_HOP_ID: + attr_list[i].value.oid = resp.attr().next_hop_id(); + break; + case SAI_MY_SID_ENTRY_ATTR_TUNNEL_ID: + attr_list[i].value.oid = resp.attr().tunnel_id(); + break; + case SAI_MY_SID_ENTRY_ATTR_VRF: + attr_list[i].value.oid = resp.attr().vrf(); + break; + case SAI_MY_SID_ENTRY_ATTR_COUNTER_ID: + attr_list[i].value.oid = resp.attr().counter_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_my_sid_entries(uint32_t object_count, + const sai_my_sid_entry_t* my_sid_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateMySidEntriesRequest req; + lemming::dataplane::sai::CreateMySidEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_my_sid_entry(attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = srv6->CreateMySidEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_my_sid_entries(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateMySidEntriesRequest req; - lemming::dataplane::sai::CreateMySidEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_my_sid_entry(attr_count[i], attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = srv6->CreateMySidEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_my_sid_entries(uint32_t object_count, + const sai_my_sid_entry_t* my_sid_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveMySidEntriesRequest req; + lemming::dataplane::sai::RemoveMySidEntriesResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + } + + grpc::Status status = srv6->RemoveMySidEntries(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_my_sid_entries(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveMySidEntriesRequest req; - lemming::dataplane::sai::RemoveMySidEntriesResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - - - } - - grpc::Status status = srv6->RemoveMySidEntries(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_my_sid_entries_attribute( + uint32_t object_count, const sai_my_sid_entry_t* my_sid_entry, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_set_my_sid_entries_attribute(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_get_my_sid_entries_attribute( + uint32_t object_count, const sai_my_sid_entry_t* my_sid_entry, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - -sai_status_t l_get_my_sid_entries_attribute(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; -} - diff --git a/dataplane/standalone/sai/srv6.h b/dataplane/standalone/sai/srv6.h index 552b2538d..a93ca2777 100644 --- a/dataplane/standalone/sai/srv6.h +++ b/dataplane/standalone/sai/srv6.h @@ -25,40 +25,81 @@ extern "C" { extern const sai_srv6_api_t l_srv6; - -sai_status_t l_create_srv6_sidlist(sai_object_id_t *srv6_sidlist_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_srv6_sidlist(sai_object_id_t* srv6_sidlist_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_srv6_sidlist(sai_object_id_t srv6_sidlist_id); -sai_status_t l_set_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, const sai_attribute_t *attr); - -sai_status_t l_get_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_srv6_sidlists(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_srv6_sidlists(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); - -sai_status_t l_get_srv6_sidlist_stats_ext(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); - -sai_status_t l_clear_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); - -sai_status_t l_create_my_sid_entry(const sai_my_sid_entry_t *my_sid_entry, uint32_t attr_count, const sai_attribute_t *attr_list); - -sai_status_t l_remove_my_sid_entry(const sai_my_sid_entry_t *my_sid_entry); - -sai_status_t l_set_my_sid_entry_attribute(const sai_my_sid_entry_t *my_sid_entry, const sai_attribute_t *attr); - -sai_status_t l_get_my_sid_entry_attribute(const sai_my_sid_entry_t *my_sid_entry, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_my_sid_entries(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_remove_my_sid_entries(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_my_sid_entries_attribute(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_my_sid_entries_attribute(uint32_t object_count, const sai_my_sid_entry_t *my_sid_entry, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, + const sai_attribute_t* attr); + +sai_status_t l_get_srv6_sidlist_attribute(sai_object_id_t srv6_sidlist_id, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_srv6_sidlists(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_srv6_sidlists(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); + +sai_status_t l_get_srv6_sidlist_stats_ext(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, + uint64_t* counters); + +sai_status_t l_clear_srv6_sidlist_stats(sai_object_id_t srv6_sidlist_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); + +sai_status_t l_create_my_sid_entry(const sai_my_sid_entry_t* my_sid_entry, + uint32_t attr_count, + const sai_attribute_t* attr_list); + +sai_status_t l_remove_my_sid_entry(const sai_my_sid_entry_t* my_sid_entry); + +sai_status_t l_set_my_sid_entry_attribute( + const sai_my_sid_entry_t* my_sid_entry, const sai_attribute_t* attr); + +sai_status_t l_get_my_sid_entry_attribute( + const sai_my_sid_entry_t* my_sid_entry, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_my_sid_entries(uint32_t object_count, + const sai_my_sid_entry_t* my_sid_entry, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_remove_my_sid_entries(uint32_t object_count, + const sai_my_sid_entry_t* my_sid_entry, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_my_sid_entries_attribute( + uint32_t object_count, const sai_my_sid_entry_t* my_sid_entry, + const sai_attribute_t* attr_list, sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_my_sid_entries_attribute( + uint32_t object_count, const sai_my_sid_entry_t* my_sid_entry, + const uint32_t* attr_count, sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_SRV6_H_ diff --git a/dataplane/standalone/sai/stp.cc b/dataplane/standalone/sai/stp.cc index de16152d2..0701824a9 100644 --- a/dataplane/standalone/sai/stp.cc +++ b/dataplane/standalone/sai/stp.cc @@ -13,351 +13,354 @@ // limitations under the License. #include "dataplane/standalone/sai/stp.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/stp.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_stp_api_t l_stp = { - .create_stp = l_create_stp, - .remove_stp = l_remove_stp, - .set_stp_attribute = l_set_stp_attribute, - .get_stp_attribute = l_get_stp_attribute, - .create_stp_port = l_create_stp_port, - .remove_stp_port = l_remove_stp_port, - .set_stp_port_attribute = l_set_stp_port_attribute, - .get_stp_port_attribute = l_get_stp_port_attribute, - .create_stp_ports = l_create_stp_ports, - .remove_stp_ports = l_remove_stp_ports, + .create_stp = l_create_stp, + .remove_stp = l_remove_stp, + .set_stp_attribute = l_set_stp_attribute, + .get_stp_attribute = l_get_stp_attribute, + .create_stp_port = l_create_stp_port, + .remove_stp_port = l_remove_stp_port, + .set_stp_port_attribute = l_set_stp_port_attribute, + .get_stp_port_attribute = l_get_stp_port_attribute, + .create_stp_ports = l_create_stp_ports, + .remove_stp_ports = l_remove_stp_ports, }; +lemming::dataplane::sai::CreateStpRequest convert_create_stp( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateStpRequest msg; -lemming::dataplane::sai::CreateStpRequest convert_create_stp(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateStpRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - -} - -} -return msg; -} - -lemming::dataplane::sai::CreateStpPortRequest convert_create_stp_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateStpPortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_STP_PORT_ATTR_STP: - msg.set_stp(attr_list[i].value.oid); - break; - case SAI_STP_PORT_ATTR_BRIDGE_PORT: - msg.set_bridge_port(attr_list[i].value.oid); - break; - case SAI_STP_PORT_ATTR_STATE: - msg.set_state(convert_sai_stp_port_state_t_to_proto(attr_list[i].value.s32)); - break; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) {} + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateStpPortRequest convert_create_stp_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateStpPortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_STP_PORT_ATTR_STP: + msg.set_stp(attr_list[i].value.oid); + break; + case SAI_STP_PORT_ATTR_BRIDGE_PORT: + msg.set_bridge_port(attr_list[i].value.oid); + break; + case SAI_STP_PORT_ATTR_STATE: + msg.set_state( + convert_sai_stp_port_state_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; } -sai_status_t l_create_stp(sai_object_id_t *stp_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateStpRequest req = convert_create_stp(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateStpResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = stp->CreateStp(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (stp_id) { - *stp_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_stp(sai_object_id_t* stp_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateStpRequest req = + convert_create_stp(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateStpResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = stp->CreateStp(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (stp_id) { + *stp_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_stp(sai_object_id_t stp_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveStpRequest req; - lemming::dataplane::sai::RemoveStpResponse resp; - grpc::ClientContext context; - req.set_oid(stp_id); - - grpc::Status status = stp->RemoveStp(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveStpRequest req; + lemming::dataplane::sai::RemoveStpResponse resp; + grpc::ClientContext context; + req.set_oid(stp_id); + + grpc::Status status = stp->RemoveStp(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_stp_attribute(sai_object_id_t stp_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_stp_attribute(sai_object_id_t stp_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_stp_attribute(sai_object_id_t stp_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetStpAttributeRequest req; - lemming::dataplane::sai::GetStpAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(stp_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_stp_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = stp->GetStpAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_STP_ATTR_BRIDGE_ID: - attr_list[i].value.oid = resp.attr().bridge_id(); - break; - case SAI_STP_ATTR_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), &attr_list[i].value.objlist.count); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_stp_attribute(sai_object_id_t stp_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetStpAttributeRequest req; + lemming::dataplane::sai::GetStpAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(stp_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_stp_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = stp->GetStpAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_STP_ATTR_BRIDGE_ID: + attr_list[i].value.oid = resp.attr().bridge_id(); + break; + case SAI_STP_ATTR_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_stp_port(sai_object_id_t *stp_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateStpPortRequest req = convert_create_stp_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateStpPortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = stp->CreateStpPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (stp_port_id) { - *stp_port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_stp_port(sai_object_id_t* stp_port_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateStpPortRequest req = + convert_create_stp_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateStpPortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = stp->CreateStpPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (stp_port_id) { + *stp_port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_stp_port(sai_object_id_t stp_port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveStpPortRequest req; - lemming::dataplane::sai::RemoveStpPortResponse resp; - grpc::ClientContext context; - req.set_oid(stp_port_id); - - grpc::Status status = stp->RemoveStpPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_stp_port_attribute(sai_object_id_t stp_port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetStpPortAttributeRequest req; - lemming::dataplane::sai::SetStpPortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(stp_port_id); - - - - -switch (attr->id) { - - case SAI_STP_PORT_ATTR_STATE: - req.set_state(convert_sai_stp_port_state_t_to_proto(attr->value.s32)); - break; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveStpPortRequest req; + lemming::dataplane::sai::RemoveStpPortResponse resp; + grpc::ClientContext context; + req.set_oid(stp_port_id); + + grpc::Status status = stp->RemoveStpPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = stp->SetStpPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_set_stp_port_attribute(sai_object_id_t stp_port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetStpPortAttributeRequest req; + lemming::dataplane::sai::SetStpPortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(stp_port_id); + + switch (attr->id) { + case SAI_STP_PORT_ATTR_STATE: + req.set_state(convert_sai_stp_port_state_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = stp->SetStpPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_stp_port_attribute(sai_object_id_t stp_port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetStpPortAttributeRequest req; - lemming::dataplane::sai::GetStpPortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(stp_port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_stp_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = stp->GetStpPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_STP_PORT_ATTR_STP: - attr_list[i].value.oid = resp.attr().stp(); - break; - case SAI_STP_PORT_ATTR_BRIDGE_PORT: - attr_list[i].value.oid = resp.attr().bridge_port(); - break; - case SAI_STP_PORT_ATTR_STATE: - attr_list[i].value.s32 = convert_sai_stp_port_state_t_to_sai(resp.attr().state()); - break; +sai_status_t l_get_stp_port_attribute(sai_object_id_t stp_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetStpPortAttributeRequest req; + lemming::dataplane::sai::GetStpPortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(stp_port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_stp_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = stp->GetStpPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_STP_PORT_ATTR_STP: + attr_list[i].value.oid = resp.attr().stp(); + break; + case SAI_STP_PORT_ATTR_BRIDGE_PORT: + attr_list[i].value.oid = resp.attr().bridge_port(); + break; + case SAI_STP_PORT_ATTR_STATE: + attr_list[i].value.s32 = + convert_sai_stp_port_state_t_to_sai(resp.attr().state()); + break; + } + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_stp_ports(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateStpPortsRequest req; + lemming::dataplane::sai::CreateStpPortsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_stp_port(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = stp->CreateStpPorts(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_stp_ports(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateStpPortsRequest req; - lemming::dataplane::sai::CreateStpPortsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_stp_port(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = stp->CreateStpPorts(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_stp_ports(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveStpPortsRequest req; + lemming::dataplane::sai::RemoveStpPortsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = stp->RemoveStpPorts(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_remove_stp_ports(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveStpPortsRequest req; - lemming::dataplane::sai::RemoveStpPortsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = stp->RemoveStpPorts(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/stp.h b/dataplane/standalone/sai/stp.h index dfaf6aaa3..377f42b66 100644 --- a/dataplane/standalone/sai/stp.h +++ b/dataplane/standalone/sai/stp.h @@ -25,26 +25,42 @@ extern "C" { extern const sai_stp_api_t l_stp; - -sai_status_t l_create_stp(sai_object_id_t *stp_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_stp(sai_object_id_t* stp_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_stp(sai_object_id_t stp_id); -sai_status_t l_set_stp_attribute(sai_object_id_t stp_id, const sai_attribute_t *attr); +sai_status_t l_set_stp_attribute(sai_object_id_t stp_id, + const sai_attribute_t* attr); -sai_status_t l_get_stp_attribute(sai_object_id_t stp_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_stp_attribute(sai_object_id_t stp_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_stp_port(sai_object_id_t *stp_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_stp_port(sai_object_id_t* stp_port_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_stp_port(sai_object_id_t stp_port_id); -sai_status_t l_set_stp_port_attribute(sai_object_id_t stp_port_id, const sai_attribute_t *attr); - -sai_status_t l_get_stp_port_attribute(sai_object_id_t stp_port_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_stp_ports(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_stp_ports(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_stp_port_attribute(sai_object_id_t stp_port_id, + const sai_attribute_t* attr); + +sai_status_t l_get_stp_port_attribute(sai_object_id_t stp_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_stp_ports(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_stp_ports(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_STP_H_ diff --git a/dataplane/standalone/sai/switch.cc b/dataplane/standalone/sai/switch.cc index 830d035a8..3666bcc26 100644 --- a/dataplane/standalone/sai/switch.cc +++ b/dataplane/standalone/sai/switch.cc @@ -13,1539 +13,1744 @@ // limitations under the License. #include "dataplane/standalone/sai/switch.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/switch.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_switch_api_t l_switch = { - .create_switch = l_create_switch, - .remove_switch = l_remove_switch, - .set_switch_attribute = l_set_switch_attribute, - .get_switch_attribute = l_get_switch_attribute, - .get_switch_stats = l_get_switch_stats, - .get_switch_stats_ext = l_get_switch_stats_ext, - .clear_switch_stats = l_clear_switch_stats, - .create_switch_tunnel = l_create_switch_tunnel, - .remove_switch_tunnel = l_remove_switch_tunnel, - .set_switch_tunnel_attribute = l_set_switch_tunnel_attribute, - .get_switch_tunnel_attribute = l_get_switch_tunnel_attribute, + .create_switch = l_create_switch, + .remove_switch = l_remove_switch, + .set_switch_attribute = l_set_switch_attribute, + .get_switch_attribute = l_get_switch_attribute, + .get_switch_stats = l_get_switch_stats, + .get_switch_stats_ext = l_get_switch_stats_ext, + .clear_switch_stats = l_clear_switch_stats, + .create_switch_tunnel = l_create_switch_tunnel, + .remove_switch_tunnel = l_remove_switch_tunnel, + .set_switch_tunnel_attribute = l_set_switch_tunnel_attribute, + .get_switch_tunnel_attribute = l_get_switch_tunnel_attribute, }; std::unique_ptr port_state; -lemming::dataplane::sai::CreateSwitchRequest convert_create_switch(uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSwitchRequest msg; +lemming::dataplane::sai::CreateSwitchRequest convert_create_switch( + uint32_t attr_count, const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSwitchRequest msg; - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SWITCH_ATTR_INGRESS_ACL: - msg.set_ingress_acl(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_EGRESS_ACL: - msg.set_egress_acl(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_RESTART_WARM: - msg.set_restart_warm(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_WARM_RECOVER: - msg.set_warm_recover(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_SWITCHING_MODE: - msg.set_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: - msg.set_bcast_cpu_flood_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: - msg.set_mcast_cpu_flood_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: - msg.set_src_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: - msg.set_max_learned_addresses(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_FDB_AGING_TIME: - msg.set_fdb_aging_time(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: - msg.set_fdb_unicast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: - msg.set_fdb_broadcast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: - msg.set_fdb_multicast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: - msg.set_ecmp_default_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: - msg.set_ecmp_default_hash_seed(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: - msg.set_ecmp_default_hash_offset(attr_list[i].value.u8); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: - msg.set_ecmp_default_symmetric_hash(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: - msg.set_ecmp_hash_ipv4(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: - msg.set_ecmp_hash_ipv4_in_ipv4(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: - msg.set_ecmp_hash_ipv6(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: - msg.set_lag_default_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: - msg.set_lag_default_hash_seed(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: - msg.set_lag_default_hash_offset(attr_list[i].value.u8); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: - msg.set_lag_default_symmetric_hash(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4: - msg.set_lag_hash_ipv4(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: - msg.set_lag_hash_ipv4_in_ipv4(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV6: - msg.set_lag_hash_ipv6(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: - msg.set_counter_refresh_interval(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: - msg.set_qos_default_tc(attr_list[i].value.u8); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: - msg.set_qos_dot1p_to_tc_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: - msg.set_qos_dot1p_to_color_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: - msg.set_qos_dscp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: - msg.set_qos_dscp_to_color_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: - msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - msg.set_qos_tc_and_color_to_dot1p_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - msg.set_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: - msg.set_switch_shell_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: - msg.set_switch_profile_id(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: - msg.mutable_switch_hardware_info()->Add(attr_list[i].value.s8list.list, attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); - break; - case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: - msg.mutable_firmware_path_name()->Add(attr_list[i].value.s8list.list, attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); - break; - case SAI_SWITCH_ATTR_INIT_SWITCH: - msg.set_init_switch(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: - port_state = std::make_unique( switch_, reinterpret_cast(attr_list[i].value.ptr) ); - break; - case SAI_SWITCH_ATTR_FAST_API_ENABLE: - msg.set_fast_api_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_MIRROR_TC: - msg.set_mirror_tc(attr_list[i].value.u8); - break; - case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: - msg.set_pfc_dlr_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: - msg.set_tpid_outer_vlan(attr_list[i].value.u16); - break; - case SAI_SWITCH_ATTR_TPID_INNER_VLAN: - msg.set_tpid_inner_vlan(attr_list[i].value.u16); - break; - case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: - msg.set_crc_check_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: - msg.set_crc_recalculation_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: - msg.set_ecn_ect_threshold_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: - msg.set_vxlan_default_router_mac(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: - msg.set_vxlan_default_port(attr_list[i].value.u16); - break; - case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: - msg.set_uninit_data_plane_on_removal(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_TAM_OBJECT_ID: - msg.mutable_tam_object_id()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PRE_SHUTDOWN: - msg.set_pre_shutdown(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: - msg.set_nat_zone_counter_object_id(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_NAT_ENABLE: - msg.set_nat_enable(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: - msg.set_hardware_access_bus(convert_sai_switch_hardware_access_bus_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: - msg.set_platfrom_context(attr_list[i].value.u64); - break; - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: - msg.set_firmware_download_broadcast(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: - msg.set_firmware_load_method(convert_sai_switch_firmware_load_method_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: - msg.set_firmware_load_type(convert_sai_switch_firmware_load_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: - msg.set_firmware_download_execute(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: - msg.set_firmware_broadcast_stop(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: - msg.set_firmware_verify_and_init_switch(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_TYPE: - msg.set_type(convert_sai_switch_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: - msg.mutable_macsec_object_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - msg.set_qos_mpls_exp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - msg.set_qos_mpls_exp_to_color_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_SWITCH_ID: - msg.set_switch_id(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: - msg.set_max_system_cores(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: - msg.set_failover_config_mode(convert_sai_switch_failover_config_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: - msg.mutable_tunnel_objects_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: - msg.set_pre_ingress_acl(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: - msg.mutable_slave_mdio_addr_list()->Add(attr_list[i].value.u8list.list, attr_list[i].value.u8list.list + attr_list[i].value.u8list.count); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - msg.set_qos_dscp_to_forwarding_class_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - msg.set_qos_mpls_exp_to_forwarding_class_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: - msg.set_ipsec_object_id(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: - msg.set_ipsec_sa_tag_tpid(attr_list[i].value.u16); - break; - case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: - msg.set_ecmp_member_count(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_ARS_PROFILE: - msg.set_ars_profile(attr_list[i].value.oid); - break; - case SAI_SWITCH_ATTR_CREDIT_WD: - msg.set_credit_wd(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: - msg.set_credit_wd_timer(attr_list[i].value.u32); - break; - case SAI_SWITCH_ATTR_SWITCH_ISOLATE: - msg.set_switch_isolate(attr_list[i].value.booldata); - break; - case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: - msg.set_hostif_oper_status_update_mode(convert_sai_switch_hostif_oper_status_update_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - msg.mutable_reg_fatal_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - msg.mutable_reg_warning_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - msg.mutable_reg_notice_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr_list[i].value.s32list)); - break; - case SAI_SWITCH_ATTR_POE_DEVICE_LIST: - msg.mutable_poe_device_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; -} - -} -return msg; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SWITCH_ATTR_INGRESS_ACL: + msg.set_ingress_acl(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_EGRESS_ACL: + msg.set_egress_acl(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_RESTART_WARM: + msg.set_restart_warm(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_WARM_RECOVER: + msg.set_warm_recover(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_SWITCHING_MODE: + msg.set_switching_mode(convert_sai_switch_switching_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: + msg.set_bcast_cpu_flood_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: + msg.set_mcast_cpu_flood_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: + msg.set_max_learned_addresses(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_FDB_AGING_TIME: + msg.set_fdb_aging_time(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: + msg.set_fdb_unicast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: + msg.set_fdb_broadcast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: + msg.set_fdb_multicast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: + msg.set_ecmp_default_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: + msg.set_ecmp_default_hash_seed(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: + msg.set_ecmp_default_hash_offset(attr_list[i].value.u8); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: + msg.set_ecmp_default_symmetric_hash(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: + msg.set_ecmp_hash_ipv4(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: + msg.set_ecmp_hash_ipv4_in_ipv4(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: + msg.set_ecmp_hash_ipv6(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: + msg.set_lag_default_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: + msg.set_lag_default_hash_seed(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: + msg.set_lag_default_hash_offset(attr_list[i].value.u8); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: + msg.set_lag_default_symmetric_hash(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4: + msg.set_lag_hash_ipv4(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: + msg.set_lag_hash_ipv4_in_ipv4(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV6: + msg.set_lag_hash_ipv6(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: + msg.set_counter_refresh_interval(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: + msg.set_qos_default_tc(attr_list[i].value.u8); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: + msg.set_qos_dot1p_to_tc_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: + msg.set_qos_dot1p_to_color_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: + msg.set_qos_dscp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: + msg.set_qos_dscp_to_color_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: + msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + msg.set_qos_tc_and_color_to_dot1p_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + msg.set_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: + msg.set_switch_shell_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: + msg.set_switch_profile_id(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: + msg.mutable_switch_hardware_info()->Add( + attr_list[i].value.s8list.list, + attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); + break; + case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: + msg.mutable_firmware_path_name()->Add( + attr_list[i].value.s8list.list, + attr_list[i].value.s8list.list + attr_list[i].value.s8list.count); + break; + case SAI_SWITCH_ATTR_INIT_SWITCH: + msg.set_init_switch(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: + port_state = std::make_unique( + switch_, reinterpret_cast( + attr_list[i].value.ptr)); + break; + case SAI_SWITCH_ATTR_FAST_API_ENABLE: + msg.set_fast_api_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_MIRROR_TC: + msg.set_mirror_tc(attr_list[i].value.u8); + break; + case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: + msg.set_pfc_dlr_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: + msg.set_tpid_outer_vlan(attr_list[i].value.u16); + break; + case SAI_SWITCH_ATTR_TPID_INNER_VLAN: + msg.set_tpid_inner_vlan(attr_list[i].value.u16); + break; + case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: + msg.set_crc_check_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: + msg.set_crc_recalculation_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: + msg.set_ecn_ect_threshold_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: + msg.set_vxlan_default_router_mac(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: + msg.set_vxlan_default_port(attr_list[i].value.u16); + break; + case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: + msg.set_uninit_data_plane_on_removal(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_TAM_OBJECT_ID: + msg.mutable_tam_object_id()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PRE_SHUTDOWN: + msg.set_pre_shutdown(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: + msg.set_nat_zone_counter_object_id(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_NAT_ENABLE: + msg.set_nat_enable(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: + msg.set_hardware_access_bus( + convert_sai_switch_hardware_access_bus_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: + msg.set_platfrom_context(attr_list[i].value.u64); + break; + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: + msg.set_firmware_download_broadcast(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: + msg.set_firmware_load_method( + convert_sai_switch_firmware_load_method_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: + msg.set_firmware_load_type( + convert_sai_switch_firmware_load_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: + msg.set_firmware_download_execute(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: + msg.set_firmware_broadcast_stop(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: + msg.set_firmware_verify_and_init_switch(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_TYPE: + msg.set_type( + convert_sai_switch_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: + msg.mutable_macsec_object_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + msg.set_qos_mpls_exp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + msg.set_qos_mpls_exp_to_color_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + msg.set_qos_tc_and_color_to_mpls_exp_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_SWITCH_ID: + msg.set_switch_id(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: + msg.set_max_system_cores(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: + msg.set_failover_config_mode( + convert_sai_switch_failover_config_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: + msg.mutable_tunnel_objects_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: + msg.set_pre_ingress_acl(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: + msg.mutable_slave_mdio_addr_list()->Add( + attr_list[i].value.u8list.list, + attr_list[i].value.u8list.list + attr_list[i].value.u8list.count); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + msg.set_qos_dscp_to_forwarding_class_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + msg.set_qos_mpls_exp_to_forwarding_class_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: + msg.set_ipsec_object_id(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: + msg.set_ipsec_sa_tag_tpid(attr_list[i].value.u16); + break; + case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: + msg.set_ecmp_member_count(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_ARS_PROFILE: + msg.set_ars_profile(attr_list[i].value.oid); + break; + case SAI_SWITCH_ATTR_CREDIT_WD: + msg.set_credit_wd(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: + msg.set_credit_wd_timer(attr_list[i].value.u32); + break; + case SAI_SWITCH_ATTR_SWITCH_ISOLATE: + msg.set_switch_isolate(attr_list[i].value.booldata); + break; + case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: + msg.set_hostif_oper_status_update_mode( + convert_sai_switch_hostif_oper_status_update_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + msg.mutable_reg_fatal_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + msg.mutable_reg_warning_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + msg.mutable_reg_notice_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr_list[i].value.s32list)); + break; + case SAI_SWITCH_ATTR_POE_DEVICE_LIST: + msg.mutable_poe_device_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateSwitchTunnelRequest convert_create_switch_tunnel(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { +lemming::dataplane::sai::CreateSwitchTunnelRequest convert_create_switch_tunnel( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSwitchTunnelRequest msg; -lemming::dataplane::sai::CreateSwitchTunnelRequest msg; + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: + msg.set_tunnel_type( + convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + msg.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: + msg.set_tunnel_encap_ecn_mode( + convert_sai_tunnel_encap_ecn_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: + msg.mutable_encap_mappers()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: + msg.set_tunnel_decap_ecn_mode( + convert_sai_tunnel_decap_ecn_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: + msg.mutable_decap_mappers()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: + msg.set_tunnel_vxlan_udp_sport_mode( + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: + msg.set_vxlan_udp_sport(attr_list[i].value.u16); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + msg.set_vxlan_udp_sport_mask(attr_list[i].value.u8); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + msg.set_encap_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + msg.set_encap_qos_tc_to_queue_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + msg.set_decap_qos_dscp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + msg.set_decap_qos_tc_to_priority_group_map(attr_list[i].value.oid); + break; + } + } + return msg; +} +sai_status_t l_create_switch(sai_object_id_t* switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - for(uint32_t i = 0; i < attr_count; i++ ) { - - + lemming::dataplane::sai::CreateSwitchRequest req = + convert_create_switch(attr_count, attr_list); + lemming::dataplane::sai::CreateSwitchResponse resp; + grpc::ClientContext context; -switch (attr_list[i].id) { - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: - msg.set_tunnel_type(convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - msg.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: - msg.set_tunnel_encap_ecn_mode(convert_sai_tunnel_encap_ecn_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: - msg.mutable_encap_mappers()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: - msg.set_tunnel_decap_ecn_mode(convert_sai_tunnel_decap_ecn_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: - msg.mutable_decap_mappers()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: - msg.set_tunnel_vxlan_udp_sport_mode(convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: - msg.set_vxlan_udp_sport(attr_list[i].value.u16); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - msg.set_vxlan_udp_sport_mask(attr_list[i].value.u8); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - msg.set_encap_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - msg.set_encap_qos_tc_to_queue_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - msg.set_decap_qos_dscp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - msg.set_decap_qos_tc_to_priority_group_map(attr_list[i].value.oid); - break; -} + grpc::Status status = switch_->CreateSwitch(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (switch_id) { + *switch_id = resp.oid(); + } -} -return msg; -} - -sai_status_t l_create_switch(sai_object_id_t *switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSwitchRequest req = convert_create_switch(attr_count, attr_list); - lemming::dataplane::sai::CreateSwitchResponse resp; - grpc::ClientContext context; - - - grpc::Status status = switch_->CreateSwitch(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (switch_id) { - *switch_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_switch(sai_object_id_t switch_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSwitchRequest req; - lemming::dataplane::sai::RemoveSwitchResponse resp; - grpc::ClientContext context; - req.set_oid(switch_id); - - grpc::Status status = switch_->RemoveSwitch(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_switch_attribute(sai_object_id_t switch_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSwitchAttributeRequest req; - lemming::dataplane::sai::SetSwitchAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(switch_id); - - - + lemming::dataplane::sai::RemoveSwitchRequest req; + lemming::dataplane::sai::RemoveSwitchResponse resp; + grpc::ClientContext context; + req.set_oid(switch_id); -switch (attr->id) { - - case SAI_SWITCH_ATTR_INGRESS_ACL: - req.set_ingress_acl(attr->value.oid); - break; - case SAI_SWITCH_ATTR_EGRESS_ACL: - req.set_egress_acl(attr->value.oid); - break; - case SAI_SWITCH_ATTR_RESTART_WARM: - req.set_restart_warm(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_WARM_RECOVER: - req.set_warm_recover(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_SWITCHING_MODE: - req.set_switching_mode(convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: - req.set_bcast_cpu_flood_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: - req.set_mcast_cpu_flood_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: - req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: - req.set_max_learned_addresses(attr->value.u32); - break; - case SAI_SWITCH_ATTR_FDB_AGING_TIME: - req.set_fdb_aging_time(attr->value.u32); - break; - case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: - req.set_fdb_unicast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: - req.set_fdb_broadcast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: - req.set_fdb_multicast_miss_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: - req.set_ecmp_default_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: - req.set_ecmp_default_hash_seed(attr->value.u32); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: - req.set_ecmp_default_hash_offset(attr->value.u8); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: - req.set_ecmp_default_symmetric_hash(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: - req.set_ecmp_hash_ipv4(attr->value.oid); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: - req.set_ecmp_hash_ipv4_in_ipv4(attr->value.oid); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: - req.set_ecmp_hash_ipv6(attr->value.oid); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: - req.set_lag_default_hash_algorithm(convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: - req.set_lag_default_hash_seed(attr->value.u32); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: - req.set_lag_default_hash_offset(attr->value.u8); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: - req.set_lag_default_symmetric_hash(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4: - req.set_lag_hash_ipv4(attr->value.oid); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: - req.set_lag_hash_ipv4_in_ipv4(attr->value.oid); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV6: - req.set_lag_hash_ipv6(attr->value.oid); - break; - case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: - req.set_counter_refresh_interval(attr->value.u32); - break; - case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: - req.set_qos_default_tc(attr->value.u8); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: - req.set_qos_dot1p_to_tc_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: - req.set_qos_dot1p_to_color_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: - req.set_qos_dscp_to_tc_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: - req.set_qos_dscp_to_color_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: - req.set_qos_tc_to_queue_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - req.set_qos_tc_and_color_to_dot1p_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - req.set_qos_tc_and_color_to_dscp_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: - req.set_switch_shell_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: - port_state = std::make_unique( switch_, reinterpret_cast(attr->value.ptr) ); - break; - case SAI_SWITCH_ATTR_FAST_API_ENABLE: - req.set_fast_api_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_MIRROR_TC: - req.set_mirror_tc(attr->value.u8); - break; - case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: - req.set_pfc_dlr_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: - req.set_tpid_outer_vlan(attr->value.u16); - break; - case SAI_SWITCH_ATTR_TPID_INNER_VLAN: - req.set_tpid_inner_vlan(attr->value.u16); - break; - case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: - req.set_crc_check_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: - req.set_crc_recalculation_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: - req.set_ecn_ect_threshold_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: - req.set_vxlan_default_router_mac(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: - req.set_vxlan_default_port(attr->value.u16); - break; - case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: - req.set_uninit_data_plane_on_removal(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_TAM_OBJECT_ID: - req.mutable_tam_object_id()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_SWITCH_ATTR_PRE_SHUTDOWN: - req.set_pre_shutdown(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: - req.set_nat_zone_counter_object_id(attr->value.oid); - break; - case SAI_SWITCH_ATTR_NAT_ENABLE: - req.set_nat_enable(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: - req.set_firmware_download_execute(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: - req.set_firmware_broadcast_stop(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: - req.set_firmware_verify_and_init_switch(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: - req.mutable_macsec_object_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - req.set_qos_mpls_exp_to_tc_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - req.set_qos_mpls_exp_to_color_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: - req.set_failover_config_mode(convert_sai_switch_failover_config_mode_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: - req.mutable_tunnel_objects_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: - req.set_pre_ingress_acl(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - req.set_qos_dscp_to_forwarding_class_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - req.set_qos_mpls_exp_to_forwarding_class_map(attr->value.oid); - break; - case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: - req.set_ipsec_object_id(attr->value.oid); - break; - case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: - req.set_ipsec_sa_tag_tpid(attr->value.u16); - break; - case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: - req.set_ecmp_member_count(attr->value.u32); - break; - case SAI_SWITCH_ATTR_ARS_PROFILE: - req.set_ars_profile(attr->value.oid); - break; - case SAI_SWITCH_ATTR_CREDIT_WD: - req.set_credit_wd(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: - req.set_credit_wd_timer(attr->value.u32); - break; - case SAI_SWITCH_ATTR_SWITCH_ISOLATE: - req.set_switch_isolate(attr->value.booldata); - break; - case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: - req.set_hostif_oper_status_update_mode(convert_sai_switch_hostif_oper_status_update_mode_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - req.mutable_reg_fatal_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr->value.s32list)); - break; - case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - req.mutable_reg_warning_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr->value.s32list)); - break; - case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - req.mutable_reg_notice_switch_asic_sdk_health_category()->CopyFrom(convert_list_sai_switch_asic_sdk_health_category_t_to_proto(attr->value.s32list)); - break; - case SAI_SWITCH_ATTR_POE_DEVICE_LIST: - req.mutable_poe_device_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; -} + grpc::Status status = switch_->RemoveSwitch(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } - grpc::Status status = switch_->SetSwitchAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } +sai_status_t l_set_switch_attribute(sai_object_id_t switch_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::SetSwitchAttributeRequest req; + lemming::dataplane::sai::SetSwitchAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(switch_id); + switch (attr->id) { + case SAI_SWITCH_ATTR_INGRESS_ACL: + req.set_ingress_acl(attr->value.oid); + break; + case SAI_SWITCH_ATTR_EGRESS_ACL: + req.set_egress_acl(attr->value.oid); + break; + case SAI_SWITCH_ATTR_RESTART_WARM: + req.set_restart_warm(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_WARM_RECOVER: + req.set_warm_recover(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_SWITCHING_MODE: + req.set_switching_mode( + convert_sai_switch_switching_mode_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: + req.set_bcast_cpu_flood_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: + req.set_mcast_cpu_flood_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: + req.set_max_learned_addresses(attr->value.u32); + break; + case SAI_SWITCH_ATTR_FDB_AGING_TIME: + req.set_fdb_aging_time(attr->value.u32); + break; + case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: + req.set_fdb_unicast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: + req.set_fdb_broadcast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: + req.set_fdb_multicast_miss_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: + req.set_ecmp_default_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: + req.set_ecmp_default_hash_seed(attr->value.u32); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: + req.set_ecmp_default_hash_offset(attr->value.u8); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: + req.set_ecmp_default_symmetric_hash(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: + req.set_ecmp_hash_ipv4(attr->value.oid); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: + req.set_ecmp_hash_ipv4_in_ipv4(attr->value.oid); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: + req.set_ecmp_hash_ipv6(attr->value.oid); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: + req.set_lag_default_hash_algorithm( + convert_sai_hash_algorithm_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: + req.set_lag_default_hash_seed(attr->value.u32); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: + req.set_lag_default_hash_offset(attr->value.u8); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: + req.set_lag_default_symmetric_hash(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4: + req.set_lag_hash_ipv4(attr->value.oid); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: + req.set_lag_hash_ipv4_in_ipv4(attr->value.oid); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV6: + req.set_lag_hash_ipv6(attr->value.oid); + break; + case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: + req.set_counter_refresh_interval(attr->value.u32); + break; + case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: + req.set_qos_default_tc(attr->value.u8); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: + req.set_qos_dot1p_to_tc_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: + req.set_qos_dot1p_to_color_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: + req.set_qos_dscp_to_tc_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: + req.set_qos_dscp_to_color_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: + req.set_qos_tc_to_queue_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + req.set_qos_tc_and_color_to_dot1p_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + req.set_qos_tc_and_color_to_dscp_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: + req.set_switch_shell_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_PORT_STATE_CHANGE_NOTIFY: + port_state = std::make_unique( + switch_, reinterpret_cast( + attr->value.ptr)); + break; + case SAI_SWITCH_ATTR_FAST_API_ENABLE: + req.set_fast_api_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_MIRROR_TC: + req.set_mirror_tc(attr->value.u8); + break; + case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: + req.set_pfc_dlr_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: + req.set_tpid_outer_vlan(attr->value.u16); + break; + case SAI_SWITCH_ATTR_TPID_INNER_VLAN: + req.set_tpid_inner_vlan(attr->value.u16); + break; + case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: + req.set_crc_check_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: + req.set_crc_recalculation_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: + req.set_ecn_ect_threshold_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: + req.set_vxlan_default_router_mac(attr->value.mac, + sizeof(attr->value.mac)); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: + req.set_vxlan_default_port(attr->value.u16); + break; + case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: + req.set_uninit_data_plane_on_removal(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_TAM_OBJECT_ID: + req.mutable_tam_object_id()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_SWITCH_ATTR_PRE_SHUTDOWN: + req.set_pre_shutdown(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: + req.set_nat_zone_counter_object_id(attr->value.oid); + break; + case SAI_SWITCH_ATTR_NAT_ENABLE: + req.set_nat_enable(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: + req.set_firmware_download_execute(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: + req.set_firmware_broadcast_stop(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: + req.set_firmware_verify_and_init_switch(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: + req.mutable_macsec_object_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + req.set_qos_mpls_exp_to_tc_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + req.set_qos_mpls_exp_to_color_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + req.set_qos_tc_and_color_to_mpls_exp_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: + req.set_failover_config_mode( + convert_sai_switch_failover_config_mode_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: + req.mutable_tunnel_objects_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: + req.set_pre_ingress_acl(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + req.set_qos_dscp_to_forwarding_class_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + req.set_qos_mpls_exp_to_forwarding_class_map(attr->value.oid); + break; + case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: + req.set_ipsec_object_id(attr->value.oid); + break; + case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: + req.set_ipsec_sa_tag_tpid(attr->value.u16); + break; + case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: + req.set_ecmp_member_count(attr->value.u32); + break; + case SAI_SWITCH_ATTR_ARS_PROFILE: + req.set_ars_profile(attr->value.oid); + break; + case SAI_SWITCH_ATTR_CREDIT_WD: + req.set_credit_wd(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: + req.set_credit_wd_timer(attr->value.u32); + break; + case SAI_SWITCH_ATTR_SWITCH_ISOLATE: + req.set_switch_isolate(attr->value.booldata); + break; + case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: + req.set_hostif_oper_status_update_mode( + convert_sai_switch_hostif_oper_status_update_mode_t_to_proto( + attr->value.s32)); + break; + case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + req.mutable_reg_fatal_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr->value.s32list)); + break; + case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + req.mutable_reg_warning_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr->value.s32list)); + break; + case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + req.mutable_reg_notice_switch_asic_sdk_health_category()->CopyFrom( + convert_list_sai_switch_asic_sdk_health_category_t_to_proto( + attr->value.s32list)); + break; + case SAI_SWITCH_ATTR_POE_DEVICE_LIST: + req.mutable_poe_device_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_SWITCH_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + grpc::Status status = switch_->SetSwitchAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + return SAI_STATUS_SUCCESS; +} +sai_status_t l_get_switch_attribute(sai_object_id_t switch_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::GetSwitchAttributeRequest req; + lemming::dataplane::sai::GetSwitchAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(switch_id); + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_switch_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = switch_->GetSwitchAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: + attr_list[i].value.u32 = resp.attr().number_of_active_ports(); + break; + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: + attr_list[i].value.u32 = resp.attr().max_number_of_supported_ports(); + break; + case SAI_SWITCH_ATTR_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PORT_MAX_MTU: + attr_list[i].value.u32 = resp.attr().port_max_mtu(); + break; + case SAI_SWITCH_ATTR_CPU_PORT: + attr_list[i].value.oid = resp.attr().cpu_port(); + break; + case SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: + attr_list[i].value.u32 = resp.attr().max_virtual_routers(); + break; + case SAI_SWITCH_ATTR_FDB_TABLE_SIZE: + attr_list[i].value.u32 = resp.attr().fdb_table_size(); + break; + case SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: + attr_list[i].value.u32 = resp.attr().l3_neighbor_table_size(); + break; + case SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: + attr_list[i].value.u32 = resp.attr().l3_route_table_size(); + break; + case SAI_SWITCH_ATTR_LAG_MEMBERS: + attr_list[i].value.u32 = resp.attr().lag_members(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_LAGS: + attr_list[i].value.u32 = resp.attr().number_of_lags(); + break; + case SAI_SWITCH_ATTR_ECMP_MEMBERS: + attr_list[i].value.u32 = resp.attr().ecmp_members(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: + attr_list[i].value.u32 = resp.attr().number_of_ecmp_groups(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: + attr_list[i].value.u32 = resp.attr().number_of_unicast_queues(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: + attr_list[i].value.u32 = resp.attr().number_of_multicast_queues(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_QUEUES: + attr_list[i].value.u32 = resp.attr().number_of_queues(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: + attr_list[i].value.u32 = resp.attr().number_of_cpu_queues(); + break; + case SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: + attr_list[i].value.booldata = resp.attr().on_link_route_supported(); + break; + case SAI_SWITCH_ATTR_OPER_STATUS: + attr_list[i].value.s32 = + convert_sai_switch_oper_status_t_to_sai(resp.attr().oper_status()); + break; + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: + attr_list[i].value.u8 = resp.attr().max_number_of_temp_sensors(); + break; + case SAI_SWITCH_ATTR_TEMP_LIST: + copy_list(attr_list[i].value.s32list.list, resp.attr().temp_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_table_minimum_priority(); + break; + case SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_table_maximum_priority(); + break; + case SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_entry_minimum_priority(); + break; + case SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_entry_maximum_priority(); + break; + case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_table_group_minimum_priority(); + break; + case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().acl_table_group_maximum_priority(); + break; + case SAI_SWITCH_ATTR_DEFAULT_VLAN_ID: + attr_list[i].value.oid = resp.attr().default_vlan_id(); + break; + case SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID: + attr_list[i].value.oid = resp.attr().default_stp_inst_id(); + break; + case SAI_SWITCH_ATTR_MAX_STP_INSTANCE: + attr_list[i].value.u32 = resp.attr().max_stp_instance(); + break; + case SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: + attr_list[i].value.oid = resp.attr().default_virtual_router_id(); + break; + case SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: + attr_list[i].value.oid = + resp.attr().default_override_virtual_router_id(); + break; + case SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: + attr_list[i].value.oid = resp.attr().default_1q_bridge_id(); + break; + case SAI_SWITCH_ATTR_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().ingress_acl(); + break; + case SAI_SWITCH_ATTR_EGRESS_ACL: + attr_list[i].value.oid = resp.attr().egress_acl(); + break; + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: + attr_list[i].value.u8 = resp.attr().qos_max_number_of_traffic_classes(); + break; + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: + attr_list[i].value.u32 = + resp.attr().qos_max_number_of_scheduler_group_hierarchy_levels(); + break; + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: + copy_list(attr_list[i].value.u32list.list, + resp.attr() + .qos_max_number_of_scheduler_groups_per_hierarchy_level(), + &attr_list[i].value.u32list.count); + break; + case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: + attr_list[i].value.u32 = + resp.attr().qos_max_number_of_childs_per_scheduler_group(); + break; + case SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE: + attr_list[i].value.u64 = resp.attr().total_buffer_size(); + break; + case SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: + attr_list[i].value.u32 = resp.attr().ingress_buffer_pool_num(); + break; + case SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: + attr_list[i].value.u32 = resp.attr().egress_buffer_pool_num(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv4_route_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv6_route_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv4_nexthop_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv6_nexthop_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv4_neighbor_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipv6_neighbor_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: + attr_list[i].value.u32 = resp.attr().available_next_hop_group_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: + attr_list[i].value.u32 = + resp.attr().available_next_hop_group_member_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY: + attr_list[i].value.u32 = resp.attr().available_fdb_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: + attr_list[i].value.u32 = resp.attr().available_l2mc_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: + attr_list[i].value.u32 = resp.attr().available_ipmc_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_snat_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_dnat_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_double_nat_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: + attr_list[i].value.u32 = resp.attr().available_my_sid_entry(); + break; + case SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP: + attr_list[i].value.oid = resp.attr().default_trap_group(); + break; + case SAI_SWITCH_ATTR_ECMP_HASH: + attr_list[i].value.oid = resp.attr().ecmp_hash(); + break; + case SAI_SWITCH_ATTR_LAG_HASH: + attr_list[i].value.oid = resp.attr().lag_hash(); + break; + case SAI_SWITCH_ATTR_RESTART_WARM: + attr_list[i].value.booldata = resp.attr().restart_warm(); + break; + case SAI_SWITCH_ATTR_WARM_RECOVER: + attr_list[i].value.booldata = resp.attr().warm_recover(); + break; + case SAI_SWITCH_ATTR_RESTART_TYPE: + attr_list[i].value.s32 = convert_sai_switch_restart_type_t_to_sai( + resp.attr().restart_type()); + break; + case SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: + attr_list[i].value.u32 = resp.attr().min_planned_restart_interval(); + break; + case SAI_SWITCH_ATTR_NV_STORAGE_SIZE: + attr_list[i].value.u64 = resp.attr().nv_storage_size(); + break; + case SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT: + attr_list[i].value.u32 = resp.attr().max_acl_action_count(); + break; + case SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT: + attr_list[i].value.u32 = resp.attr().max_acl_range_count(); + break; + case SAI_SWITCH_ATTR_ACL_CAPABILITY: + convert_to_acl_capability(attr_list[i].value.aclcapability, + resp.attr().acl_capability()); + break; + case SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: + attr_list[i].value.s32 = + convert_sai_switch_mcast_snooping_capability_t_to_sai( + resp.attr().mcast_snooping_capability()); + break; + case SAI_SWITCH_ATTR_SWITCHING_MODE: + attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai( + resp.attr().switching_mode()); + break; + case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: + attr_list[i].value.booldata = resp.attr().bcast_cpu_flood_enable(); + break; + case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: + attr_list[i].value.booldata = resp.attr().mcast_cpu_flood_enable(); + break; + case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: + attr_list[i].value.u32 = resp.attr().max_learned_addresses(); + break; + case SAI_SWITCH_ATTR_FDB_AGING_TIME: + attr_list[i].value.u32 = resp.attr().fdb_aging_time(); + break; + case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().fdb_unicast_miss_packet_action()); + break; + case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().fdb_broadcast_miss_packet_action()); + break; + case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().fdb_multicast_miss_packet_action()); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: + attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai( + resp.attr().ecmp_default_hash_algorithm()); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: + attr_list[i].value.u32 = resp.attr().ecmp_default_hash_seed(); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: + attr_list[i].value.u8 = resp.attr().ecmp_default_hash_offset(); + break; + case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: + attr_list[i].value.booldata = resp.attr().ecmp_default_symmetric_hash(); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: + attr_list[i].value.oid = resp.attr().ecmp_hash_ipv4(); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: + attr_list[i].value.oid = resp.attr().ecmp_hash_ipv4_in_ipv4(); + break; + case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: + attr_list[i].value.oid = resp.attr().ecmp_hash_ipv6(); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: + attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai( + resp.attr().lag_default_hash_algorithm()); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: + attr_list[i].value.u32 = resp.attr().lag_default_hash_seed(); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: + attr_list[i].value.u8 = resp.attr().lag_default_hash_offset(); + break; + case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: + attr_list[i].value.booldata = resp.attr().lag_default_symmetric_hash(); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4: + attr_list[i].value.oid = resp.attr().lag_hash_ipv4(); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: + attr_list[i].value.oid = resp.attr().lag_hash_ipv4_in_ipv4(); + break; + case SAI_SWITCH_ATTR_LAG_HASH_IPV6: + attr_list[i].value.oid = resp.attr().lag_hash_ipv6(); + break; + case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: + attr_list[i].value.u32 = resp.attr().counter_refresh_interval(); + break; + case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: + attr_list[i].value.u8 = resp.attr().qos_default_tc(); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_dot1p_to_tc_map(); + break; + case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_dot1p_to_color_map(); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_tc_map(); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_color_map(); + break; + case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dot1p_map(); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dscp_map(); + break; + case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: + attr_list[i].value.booldata = resp.attr().switch_shell_enable(); + break; + case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: + attr_list[i].value.u32 = resp.attr().switch_profile_id(); + break; + case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: + copy_list(attr_list[i].value.s8list.list, + resp.attr().switch_hardware_info(), + &attr_list[i].value.s8list.count); + break; + case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: + copy_list(attr_list[i].value.s8list.list, + resp.attr().firmware_path_name(), + &attr_list[i].value.s8list.count); + break; + case SAI_SWITCH_ATTR_INIT_SWITCH: + attr_list[i].value.booldata = resp.attr().init_switch(); + break; + case SAI_SWITCH_ATTR_FAST_API_ENABLE: + attr_list[i].value.booldata = resp.attr().fast_api_enable(); + break; + case SAI_SWITCH_ATTR_MIRROR_TC: + attr_list[i].value.u8 = resp.attr().mirror_tc(); + break; + case SAI_SWITCH_ATTR_ACL_STAGE_INGRESS: + convert_to_acl_capability(attr_list[i].value.aclcapability, + resp.attr().acl_stage_ingress()); + break; + case SAI_SWITCH_ATTR_ACL_STAGE_EGRESS: + convert_to_acl_capability(attr_list[i].value.aclcapability, + resp.attr().acl_stage_egress()); + break; + case SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH: + attr_list[i].value.u32 = resp.attr().srv6_max_sid_depth(); + break; + case SAI_SWITCH_ATTR_SRV6_TLV_TYPE: + convert_list_sai_tlv_type_t_to_sai(attr_list[i].value.s32list.list, + resp.attr().srv6_tlv_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: + attr_list[i].value.u32 = resp.attr().qos_num_lossless_queues(); + break; + case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().pfc_dlr_packet_action()); + break; + case SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: + convert_list_sai_object_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_protected_object_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: + attr_list[i].value.u16 = resp.attr().tpid_outer_vlan(); + break; + case SAI_SWITCH_ATTR_TPID_INNER_VLAN: + attr_list[i].value.u16 = resp.attr().tpid_inner_vlan(); + break; + case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: + attr_list[i].value.booldata = resp.attr().crc_check_enable(); + break; + case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: + attr_list[i].value.booldata = resp.attr().crc_recalculation_enable(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION: + attr_list[i].value.u32 = resp.attr().number_of_bfd_session(); + break; + case SAI_SWITCH_ATTR_MAX_BFD_SESSION: + attr_list[i].value.u32 = resp.attr().max_bfd_session(); + break; + case SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: + convert_list_sai_bfd_session_offload_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_ipv4_bfd_session_offload_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: + convert_list_sai_bfd_session_offload_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_ipv6_bfd_session_offload_type(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_MIN_BFD_RX: + attr_list[i].value.u32 = resp.attr().min_bfd_rx(); + break; + case SAI_SWITCH_ATTR_MIN_BFD_TX: + attr_list[i].value.u32 = resp.attr().min_bfd_tx(); + break; + case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: + attr_list[i].value.booldata = resp.attr().ecn_ect_threshold_enable(); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: + memcpy(attr_list[i].value.mac, + resp.attr().vxlan_default_router_mac().data(), + sizeof(sai_mac_t)); + break; + case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: + attr_list[i].value.u16 = resp.attr().vxlan_default_port(); + break; + case SAI_SWITCH_ATTR_MAX_MIRROR_SESSION: + attr_list[i].value.u32 = resp.attr().max_mirror_session(); + break; + case SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: + attr_list[i].value.u32 = resp.attr().max_sampled_mirror_session(); + break; + case SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: + convert_list_sai_stats_mode_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_extended_stats_mode(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: + attr_list[i].value.booldata = + resp.attr().uninit_data_plane_on_removal(); + break; + case SAI_SWITCH_ATTR_TAM_OBJECT_ID: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object_id(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: + convert_list_sai_object_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().supported_object_type_list(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_PRE_SHUTDOWN: + attr_list[i].value.booldata = resp.attr().pre_shutdown(); + break; + case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: + attr_list[i].value.oid = resp.attr().nat_zone_counter_object_id(); + break; + case SAI_SWITCH_ATTR_NAT_ENABLE: + attr_list[i].value.booldata = resp.attr().nat_enable(); + break; + case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: + attr_list[i].value.s32 = + convert_sai_switch_hardware_access_bus_t_to_sai( + resp.attr().hardware_access_bus()); + break; + case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: + attr_list[i].value.u64 = resp.attr().platfrom_context(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: + attr_list[i].value.booldata = resp.attr().firmware_download_broadcast(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: + attr_list[i].value.s32 = + convert_sai_switch_firmware_load_method_t_to_sai( + resp.attr().firmware_load_method()); + break; + case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: + attr_list[i].value.s32 = convert_sai_switch_firmware_load_type_t_to_sai( + resp.attr().firmware_load_type()); + break; + case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: + attr_list[i].value.booldata = resp.attr().firmware_download_execute(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: + attr_list[i].value.booldata = resp.attr().firmware_broadcast_stop(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: + attr_list[i].value.booldata = + resp.attr().firmware_verify_and_init_switch(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_STATUS: + attr_list[i].value.booldata = resp.attr().firmware_status(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: + attr_list[i].value.u32 = resp.attr().firmware_major_version(); + break; + case SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION: + attr_list[i].value.u32 = resp.attr().firmware_minor_version(); + break; + case SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().port_connector_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: + attr_list[i].value.booldata = + resp.attr().propogate_port_state_from_line_to_system_port_support(); + break; + case SAI_SWITCH_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_switch_type_t_to_sai(resp.attr().type()); + break; + case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().macsec_object_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_tc_map(); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: + attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_color_map(); + break; + case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); + break; + case SAI_SWITCH_ATTR_SWITCH_ID: + attr_list[i].value.u32 = resp.attr().switch_id(); + break; + case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: + attr_list[i].value.u32 = resp.attr().max_system_cores(); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: + attr_list[i].value.u32 = resp.attr().number_of_system_ports(); + break; + case SAI_SWITCH_ATTR_SYSTEM_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().system_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: + attr_list[i].value.u32 = resp.attr().number_of_fabric_ports(); + break; + case SAI_SWITCH_ATTR_FABRIC_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().fabric_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: + attr_list[i].value.u32 = resp.attr().packet_dma_memory_pool_size(); + break; + case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: + attr_list[i].value.s32 = + convert_sai_switch_failover_config_mode_t_to_sai( + resp.attr().failover_config_mode()); + break; + case SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: + attr_list[i].value.booldata = resp.attr().supported_failover_mode(); + break; + case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().tunnel_objects_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: + attr_list[i].value.u32 = + resp.attr().packet_available_dma_memory_pool_size(); + break; + case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().pre_ingress_acl(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_snapt_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_dnapt_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: + attr_list[i].value.u32 = resp.attr().available_double_napt_entry(); + break; + case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: + copy_list(attr_list[i].value.u8list.list, + resp.attr().slave_mdio_addr_list(), + &attr_list[i].value.u8list.count); + break; + case SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().my_mac_table_minimum_priority(); + break; + case SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: + attr_list[i].value.u32 = resp.attr().my_mac_table_maximum_priority(); + break; + case SAI_SWITCH_ATTR_MY_MAC_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().my_mac_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: + attr_list[i].value.u32 = resp.attr().installed_my_mac_entries(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: + attr_list[i].value.u32 = resp.attr().available_my_mac_entries(); + break; + case SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: + attr_list[i].value.u8 = resp.attr().max_number_of_forwarding_classes(); + break; + case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: + attr_list[i].value.oid = resp.attr().qos_dscp_to_forwarding_class_map(); + break; + case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: + attr_list[i].value.oid = + resp.attr().qos_mpls_exp_to_forwarding_class_map(); + break; + case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: + attr_list[i].value.oid = resp.attr().ipsec_object_id(); + break; + case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: + attr_list[i].value.u16 = resp.attr().ipsec_sa_tag_tpid(); + break; + case SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: + attr_list[i].value.u32 = resp.attr().max_ecmp_member_count(); + break; + case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: + attr_list[i].value.u32 = resp.attr().ecmp_member_count(); + break; + case SAI_SWITCH_ATTR_ARS_PROFILE: + attr_list[i].value.oid = resp.attr().ars_profile(); + break; + case SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS: + convert_to_acl_capability(attr_list[i].value.aclcapability, + resp.attr().acl_stage_post_ingress()); + break; + case SAI_SWITCH_ATTR_CREDIT_WD: + attr_list[i].value.booldata = resp.attr().credit_wd(); + break; + case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: + attr_list[i].value.u32 = resp.attr().credit_wd_timer(); + break; + case SAI_SWITCH_ATTR_SWITCH_ISOLATE: + attr_list[i].value.booldata = resp.attr().switch_isolate(); + break; + case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: + attr_list[i].value.s32 = + convert_sai_switch_hostif_oper_status_update_mode_t_to_sai( + resp.attr().hostif_oper_status_update_mode()); + break; + case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + convert_list_sai_switch_asic_sdk_health_category_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().reg_fatal_switch_asic_sdk_health_category(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + convert_list_sai_switch_asic_sdk_health_category_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().reg_warning_switch_asic_sdk_health_category(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: + convert_list_sai_switch_asic_sdk_health_category_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().reg_notice_switch_asic_sdk_health_category(), + &attr_list[i].value.s32list.count); + break; + case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: + attr_list[i].value.u32 = + resp.attr().tunnel_term_table_entry_minimum_priority(); + break; + case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: + attr_list[i].value.u32 = + resp.attr().tunnel_term_table_entry_maximum_priority(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: + attr_list[i].value.u32 = resp.attr().available_twamp_session(); + break; + case SAI_SWITCH_ATTR_MAX_TWAMP_SESSION: + attr_list[i].value.u32 = resp.attr().max_twamp_session(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: + attr_list[i].value.u32 = + resp.attr().available_ip_next_hop_group_member_entry(); + break; + case SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: + attr_list[i].value.u32 = resp.attr().available_system_voqs(); + break; + case SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: + convert_to_acl_capability(attr_list[i].value.aclcapability, + resp.attr().acl_stage_pre_ingress()); + break; + case SAI_SWITCH_ATTR_POE_DEVICE_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().poe_device_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_ATTR_AVAILABLE_ICMP_ECHO_SESSION: + attr_list[i].value.u32 = resp.attr().available_icmp_echo_session(); + break; + case SAI_SWITCH_ATTR_MAX_ICMP_ECHO_SESSION: + attr_list[i].value.u32 = resp.attr().max_icmp_echo_session(); + break; + case SAI_SWITCH_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_SWITCH_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } -sai_status_t l_get_switch_attribute(sai_object_id_t switch_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSwitchAttributeRequest req; - lemming::dataplane::sai::GetSwitchAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(switch_id); + return SAI_STATUS_SUCCESS; +} - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_switch_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = switch_->GetSwitchAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - +sai_status_t l_get_switch_stats(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr_list[i].id) { - - case SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS: - attr_list[i].value.u32 = resp.attr().number_of_active_ports(); - break; - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_SUPPORTED_PORTS: - attr_list[i].value.u32 = resp.attr().max_number_of_supported_ports(); - break; - case SAI_SWITCH_ATTR_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PORT_MAX_MTU: - attr_list[i].value.u32 = resp.attr().port_max_mtu(); - break; - case SAI_SWITCH_ATTR_CPU_PORT: - attr_list[i].value.oid = resp.attr().cpu_port(); - break; - case SAI_SWITCH_ATTR_MAX_VIRTUAL_ROUTERS: - attr_list[i].value.u32 = resp.attr().max_virtual_routers(); - break; - case SAI_SWITCH_ATTR_FDB_TABLE_SIZE: - attr_list[i].value.u32 = resp.attr().fdb_table_size(); - break; - case SAI_SWITCH_ATTR_L3_NEIGHBOR_TABLE_SIZE: - attr_list[i].value.u32 = resp.attr().l3_neighbor_table_size(); - break; - case SAI_SWITCH_ATTR_L3_ROUTE_TABLE_SIZE: - attr_list[i].value.u32 = resp.attr().l3_route_table_size(); - break; - case SAI_SWITCH_ATTR_LAG_MEMBERS: - attr_list[i].value.u32 = resp.attr().lag_members(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_LAGS: - attr_list[i].value.u32 = resp.attr().number_of_lags(); - break; - case SAI_SWITCH_ATTR_ECMP_MEMBERS: - attr_list[i].value.u32 = resp.attr().ecmp_members(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_ECMP_GROUPS: - attr_list[i].value.u32 = resp.attr().number_of_ecmp_groups(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_UNICAST_QUEUES: - attr_list[i].value.u32 = resp.attr().number_of_unicast_queues(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_MULTICAST_QUEUES: - attr_list[i].value.u32 = resp.attr().number_of_multicast_queues(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_QUEUES: - attr_list[i].value.u32 = resp.attr().number_of_queues(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_CPU_QUEUES: - attr_list[i].value.u32 = resp.attr().number_of_cpu_queues(); - break; - case SAI_SWITCH_ATTR_ON_LINK_ROUTE_SUPPORTED: - attr_list[i].value.booldata = resp.attr().on_link_route_supported(); - break; - case SAI_SWITCH_ATTR_OPER_STATUS: - attr_list[i].value.s32 = convert_sai_switch_oper_status_t_to_sai(resp.attr().oper_status()); - break; - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_TEMP_SENSORS: - attr_list[i].value.u8 = resp.attr().max_number_of_temp_sensors(); - break; - case SAI_SWITCH_ATTR_TEMP_LIST: - copy_list(attr_list[i].value.s32list.list, resp.attr().temp_list(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_ACL_TABLE_MINIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_table_minimum_priority(); - break; - case SAI_SWITCH_ATTR_ACL_TABLE_MAXIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_table_maximum_priority(); - break; - case SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_entry_minimum_priority(); - break; - case SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_entry_maximum_priority(); - break; - case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MINIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_table_group_minimum_priority(); - break; - case SAI_SWITCH_ATTR_ACL_TABLE_GROUP_MAXIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().acl_table_group_maximum_priority(); - break; - case SAI_SWITCH_ATTR_DEFAULT_VLAN_ID: - attr_list[i].value.oid = resp.attr().default_vlan_id(); - break; - case SAI_SWITCH_ATTR_DEFAULT_STP_INST_ID: - attr_list[i].value.oid = resp.attr().default_stp_inst_id(); - break; - case SAI_SWITCH_ATTR_MAX_STP_INSTANCE: - attr_list[i].value.u32 = resp.attr().max_stp_instance(); - break; - case SAI_SWITCH_ATTR_DEFAULT_VIRTUAL_ROUTER_ID: - attr_list[i].value.oid = resp.attr().default_virtual_router_id(); - break; - case SAI_SWITCH_ATTR_DEFAULT_OVERRIDE_VIRTUAL_ROUTER_ID: - attr_list[i].value.oid = resp.attr().default_override_virtual_router_id(); - break; - case SAI_SWITCH_ATTR_DEFAULT_1Q_BRIDGE_ID: - attr_list[i].value.oid = resp.attr().default_1q_bridge_id(); - break; - case SAI_SWITCH_ATTR_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().ingress_acl(); - break; - case SAI_SWITCH_ATTR_EGRESS_ACL: - attr_list[i].value.oid = resp.attr().egress_acl(); - break; - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_TRAFFIC_CLASSES: - attr_list[i].value.u8 = resp.attr().qos_max_number_of_traffic_classes(); - break; - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUP_HIERARCHY_LEVELS: - attr_list[i].value.u32 = resp.attr().qos_max_number_of_scheduler_group_hierarchy_levels(); - break; - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_SCHEDULER_GROUPS_PER_HIERARCHY_LEVEL: - copy_list(attr_list[i].value.u32list.list, resp.attr().qos_max_number_of_scheduler_groups_per_hierarchy_level(), &attr_list[i].value.u32list.count); - break; - case SAI_SWITCH_ATTR_QOS_MAX_NUMBER_OF_CHILDS_PER_SCHEDULER_GROUP: - attr_list[i].value.u32 = resp.attr().qos_max_number_of_childs_per_scheduler_group(); - break; - case SAI_SWITCH_ATTR_TOTAL_BUFFER_SIZE: - attr_list[i].value.u64 = resp.attr().total_buffer_size(); - break; - case SAI_SWITCH_ATTR_INGRESS_BUFFER_POOL_NUM: - attr_list[i].value.u32 = resp.attr().ingress_buffer_pool_num(); - break; - case SAI_SWITCH_ATTR_EGRESS_BUFFER_POOL_NUM: - attr_list[i].value.u32 = resp.attr().egress_buffer_pool_num(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_ROUTE_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv4_route_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_ROUTE_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv6_route_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEXTHOP_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv4_nexthop_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEXTHOP_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv6_nexthop_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV4_NEIGHBOR_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv4_neighbor_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPV6_NEIGHBOR_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipv6_neighbor_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_ENTRY: - attr_list[i].value.u32 = resp.attr().available_next_hop_group_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_NEXT_HOP_GROUP_MEMBER_ENTRY: - attr_list[i].value.u32 = resp.attr().available_next_hop_group_member_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_FDB_ENTRY: - attr_list[i].value.u32 = resp.attr().available_fdb_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_L2MC_ENTRY: - attr_list[i].value.u32 = resp.attr().available_l2mc_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ipmc_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_SNAT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_snat_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_DNAT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_dnat_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_double_nat_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_MY_SID_ENTRY: - attr_list[i].value.u32 = resp.attr().available_my_sid_entry(); - break; - case SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP: - attr_list[i].value.oid = resp.attr().default_trap_group(); - break; - case SAI_SWITCH_ATTR_ECMP_HASH: - attr_list[i].value.oid = resp.attr().ecmp_hash(); - break; - case SAI_SWITCH_ATTR_LAG_HASH: - attr_list[i].value.oid = resp.attr().lag_hash(); - break; - case SAI_SWITCH_ATTR_RESTART_WARM: - attr_list[i].value.booldata = resp.attr().restart_warm(); - break; - case SAI_SWITCH_ATTR_WARM_RECOVER: - attr_list[i].value.booldata = resp.attr().warm_recover(); - break; - case SAI_SWITCH_ATTR_RESTART_TYPE: - attr_list[i].value.s32 = convert_sai_switch_restart_type_t_to_sai(resp.attr().restart_type()); - break; - case SAI_SWITCH_ATTR_MIN_PLANNED_RESTART_INTERVAL: - attr_list[i].value.u32 = resp.attr().min_planned_restart_interval(); - break; - case SAI_SWITCH_ATTR_NV_STORAGE_SIZE: - attr_list[i].value.u64 = resp.attr().nv_storage_size(); - break; - case SAI_SWITCH_ATTR_MAX_ACL_ACTION_COUNT: - attr_list[i].value.u32 = resp.attr().max_acl_action_count(); - break; - case SAI_SWITCH_ATTR_MAX_ACL_RANGE_COUNT: - attr_list[i].value.u32 = resp.attr().max_acl_range_count(); - break; - case SAI_SWITCH_ATTR_ACL_CAPABILITY: - convert_to_acl_capability(attr_list[i].value.aclcapability, resp.attr().acl_capability()); - break; - case SAI_SWITCH_ATTR_MCAST_SNOOPING_CAPABILITY: - attr_list[i].value.s32 = convert_sai_switch_mcast_snooping_capability_t_to_sai(resp.attr().mcast_snooping_capability()); - break; - case SAI_SWITCH_ATTR_SWITCHING_MODE: - attr_list[i].value.s32 = convert_sai_switch_switching_mode_t_to_sai(resp.attr().switching_mode()); - break; - case SAI_SWITCH_ATTR_BCAST_CPU_FLOOD_ENABLE: - attr_list[i].value.booldata = resp.attr().bcast_cpu_flood_enable(); - break; - case SAI_SWITCH_ATTR_MCAST_CPU_FLOOD_ENABLE: - attr_list[i].value.booldata = resp.attr().mcast_cpu_flood_enable(); - break; - case SAI_SWITCH_ATTR_SRC_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_SWITCH_ATTR_MAX_LEARNED_ADDRESSES: - attr_list[i].value.u32 = resp.attr().max_learned_addresses(); - break; - case SAI_SWITCH_ATTR_FDB_AGING_TIME: - attr_list[i].value.u32 = resp.attr().fdb_aging_time(); - break; - case SAI_SWITCH_ATTR_FDB_UNICAST_MISS_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().fdb_unicast_miss_packet_action()); - break; - case SAI_SWITCH_ATTR_FDB_BROADCAST_MISS_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().fdb_broadcast_miss_packet_action()); - break; - case SAI_SWITCH_ATTR_FDB_MULTICAST_MISS_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().fdb_multicast_miss_packet_action()); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_ALGORITHM: - attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai(resp.attr().ecmp_default_hash_algorithm()); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_SEED: - attr_list[i].value.u32 = resp.attr().ecmp_default_hash_seed(); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_HASH_OFFSET: - attr_list[i].value.u8 = resp.attr().ecmp_default_hash_offset(); - break; - case SAI_SWITCH_ATTR_ECMP_DEFAULT_SYMMETRIC_HASH: - attr_list[i].value.booldata = resp.attr().ecmp_default_symmetric_hash(); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4: - attr_list[i].value.oid = resp.attr().ecmp_hash_ipv4(); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV4_IN_IPV4: - attr_list[i].value.oid = resp.attr().ecmp_hash_ipv4_in_ipv4(); - break; - case SAI_SWITCH_ATTR_ECMP_HASH_IPV6: - attr_list[i].value.oid = resp.attr().ecmp_hash_ipv6(); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_ALGORITHM: - attr_list[i].value.s32 = convert_sai_hash_algorithm_t_to_sai(resp.attr().lag_default_hash_algorithm()); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_SEED: - attr_list[i].value.u32 = resp.attr().lag_default_hash_seed(); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_HASH_OFFSET: - attr_list[i].value.u8 = resp.attr().lag_default_hash_offset(); - break; - case SAI_SWITCH_ATTR_LAG_DEFAULT_SYMMETRIC_HASH: - attr_list[i].value.booldata = resp.attr().lag_default_symmetric_hash(); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4: - attr_list[i].value.oid = resp.attr().lag_hash_ipv4(); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV4_IN_IPV4: - attr_list[i].value.oid = resp.attr().lag_hash_ipv4_in_ipv4(); - break; - case SAI_SWITCH_ATTR_LAG_HASH_IPV6: - attr_list[i].value.oid = resp.attr().lag_hash_ipv6(); - break; - case SAI_SWITCH_ATTR_COUNTER_REFRESH_INTERVAL: - attr_list[i].value.u32 = resp.attr().counter_refresh_interval(); - break; - case SAI_SWITCH_ATTR_QOS_DEFAULT_TC: - attr_list[i].value.u8 = resp.attr().qos_default_tc(); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_dot1p_to_tc_map(); - break; - case SAI_SWITCH_ATTR_QOS_DOT1P_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_dot1p_to_color_map(); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_tc_map(); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_color_map(); - break; - case SAI_SWITCH_ATTR_QOS_TC_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DOT1P_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dot1p_map(); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_DSCP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_dscp_map(); - break; - case SAI_SWITCH_ATTR_SWITCH_SHELL_ENABLE: - attr_list[i].value.booldata = resp.attr().switch_shell_enable(); - break; - case SAI_SWITCH_ATTR_SWITCH_PROFILE_ID: - attr_list[i].value.u32 = resp.attr().switch_profile_id(); - break; - case SAI_SWITCH_ATTR_SWITCH_HARDWARE_INFO: - copy_list(attr_list[i].value.s8list.list, resp.attr().switch_hardware_info(), &attr_list[i].value.s8list.count); - break; - case SAI_SWITCH_ATTR_FIRMWARE_PATH_NAME: - copy_list(attr_list[i].value.s8list.list, resp.attr().firmware_path_name(), &attr_list[i].value.s8list.count); - break; - case SAI_SWITCH_ATTR_INIT_SWITCH: - attr_list[i].value.booldata = resp.attr().init_switch(); - break; - case SAI_SWITCH_ATTR_FAST_API_ENABLE: - attr_list[i].value.booldata = resp.attr().fast_api_enable(); - break; - case SAI_SWITCH_ATTR_MIRROR_TC: - attr_list[i].value.u8 = resp.attr().mirror_tc(); - break; - case SAI_SWITCH_ATTR_ACL_STAGE_INGRESS: - convert_to_acl_capability(attr_list[i].value.aclcapability, resp.attr().acl_stage_ingress()); - break; - case SAI_SWITCH_ATTR_ACL_STAGE_EGRESS: - convert_to_acl_capability(attr_list[i].value.aclcapability, resp.attr().acl_stage_egress()); - break; - case SAI_SWITCH_ATTR_SRV6_MAX_SID_DEPTH: - attr_list[i].value.u32 = resp.attr().srv6_max_sid_depth(); - break; - case SAI_SWITCH_ATTR_SRV6_TLV_TYPE: - convert_list_sai_tlv_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().srv6_tlv_type(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_QOS_NUM_LOSSLESS_QUEUES: - attr_list[i].value.u32 = resp.attr().qos_num_lossless_queues(); - break; - case SAI_SWITCH_ATTR_PFC_DLR_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().pfc_dlr_packet_action()); - break; - case SAI_SWITCH_ATTR_SUPPORTED_PROTECTED_OBJECT_TYPE: - convert_list_sai_object_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_protected_object_type(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_TPID_OUTER_VLAN: - attr_list[i].value.u16 = resp.attr().tpid_outer_vlan(); - break; - case SAI_SWITCH_ATTR_TPID_INNER_VLAN: - attr_list[i].value.u16 = resp.attr().tpid_inner_vlan(); - break; - case SAI_SWITCH_ATTR_CRC_CHECK_ENABLE: - attr_list[i].value.booldata = resp.attr().crc_check_enable(); - break; - case SAI_SWITCH_ATTR_CRC_RECALCULATION_ENABLE: - attr_list[i].value.booldata = resp.attr().crc_recalculation_enable(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_BFD_SESSION: - attr_list[i].value.u32 = resp.attr().number_of_bfd_session(); - break; - case SAI_SWITCH_ATTR_MAX_BFD_SESSION: - attr_list[i].value.u32 = resp.attr().max_bfd_session(); - break; - case SAI_SWITCH_ATTR_SUPPORTED_IPV4_BFD_SESSION_OFFLOAD_TYPE: - convert_list_sai_bfd_session_offload_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_ipv4_bfd_session_offload_type(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_SUPPORTED_IPV6_BFD_SESSION_OFFLOAD_TYPE: - convert_list_sai_bfd_session_offload_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_ipv6_bfd_session_offload_type(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_MIN_BFD_RX: - attr_list[i].value.u32 = resp.attr().min_bfd_rx(); - break; - case SAI_SWITCH_ATTR_MIN_BFD_TX: - attr_list[i].value.u32 = resp.attr().min_bfd_tx(); - break; - case SAI_SWITCH_ATTR_ECN_ECT_THRESHOLD_ENABLE: - attr_list[i].value.booldata = resp.attr().ecn_ect_threshold_enable(); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_ROUTER_MAC: - memcpy(attr_list[i].value.mac, resp.attr().vxlan_default_router_mac().data(), sizeof(sai_mac_t)); - break; - case SAI_SWITCH_ATTR_VXLAN_DEFAULT_PORT: - attr_list[i].value.u16 = resp.attr().vxlan_default_port(); - break; - case SAI_SWITCH_ATTR_MAX_MIRROR_SESSION: - attr_list[i].value.u32 = resp.attr().max_mirror_session(); - break; - case SAI_SWITCH_ATTR_MAX_SAMPLED_MIRROR_SESSION: - attr_list[i].value.u32 = resp.attr().max_sampled_mirror_session(); - break; - case SAI_SWITCH_ATTR_SUPPORTED_EXTENDED_STATS_MODE: - convert_list_sai_stats_mode_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_extended_stats_mode(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_UNINIT_DATA_PLANE_ON_REMOVAL: - attr_list[i].value.booldata = resp.attr().uninit_data_plane_on_removal(); - break; - case SAI_SWITCH_ATTR_TAM_OBJECT_ID: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object_id(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_SUPPORTED_OBJECT_TYPE_LIST: - convert_list_sai_object_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().supported_object_type_list(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_PRE_SHUTDOWN: - attr_list[i].value.booldata = resp.attr().pre_shutdown(); - break; - case SAI_SWITCH_ATTR_NAT_ZONE_COUNTER_OBJECT_ID: - attr_list[i].value.oid = resp.attr().nat_zone_counter_object_id(); - break; - case SAI_SWITCH_ATTR_NAT_ENABLE: - attr_list[i].value.booldata = resp.attr().nat_enable(); - break; - case SAI_SWITCH_ATTR_HARDWARE_ACCESS_BUS: - attr_list[i].value.s32 = convert_sai_switch_hardware_access_bus_t_to_sai(resp.attr().hardware_access_bus()); - break; - case SAI_SWITCH_ATTR_PLATFROM_CONTEXT: - attr_list[i].value.u64 = resp.attr().platfrom_context(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_BROADCAST: - attr_list[i].value.booldata = resp.attr().firmware_download_broadcast(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_METHOD: - attr_list[i].value.s32 = convert_sai_switch_firmware_load_method_t_to_sai(resp.attr().firmware_load_method()); - break; - case SAI_SWITCH_ATTR_FIRMWARE_LOAD_TYPE: - attr_list[i].value.s32 = convert_sai_switch_firmware_load_type_t_to_sai(resp.attr().firmware_load_type()); - break; - case SAI_SWITCH_ATTR_FIRMWARE_DOWNLOAD_EXECUTE: - attr_list[i].value.booldata = resp.attr().firmware_download_execute(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_BROADCAST_STOP: - attr_list[i].value.booldata = resp.attr().firmware_broadcast_stop(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_VERIFY_AND_INIT_SWITCH: - attr_list[i].value.booldata = resp.attr().firmware_verify_and_init_switch(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_STATUS: - attr_list[i].value.booldata = resp.attr().firmware_status(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION: - attr_list[i].value.u32 = resp.attr().firmware_major_version(); - break; - case SAI_SWITCH_ATTR_FIRMWARE_MINOR_VERSION: - attr_list[i].value.u32 = resp.attr().firmware_minor_version(); - break; - case SAI_SWITCH_ATTR_PORT_CONNECTOR_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().port_connector_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PROPOGATE_PORT_STATE_FROM_LINE_TO_SYSTEM_PORT_SUPPORT: - attr_list[i].value.booldata = resp.attr().propogate_port_state_from_line_to_system_port_support(); - break; - case SAI_SWITCH_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_switch_type_t_to_sai(resp.attr().type()); - break; - case SAI_SWITCH_ATTR_MACSEC_OBJECT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().macsec_object_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_tc_map(); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_COLOR_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_color_map(); - break; - case SAI_SWITCH_ATTR_QOS_TC_AND_COLOR_TO_MPLS_EXP_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_and_color_to_mpls_exp_map(); - break; - case SAI_SWITCH_ATTR_SWITCH_ID: - attr_list[i].value.u32 = resp.attr().switch_id(); - break; - case SAI_SWITCH_ATTR_MAX_SYSTEM_CORES: - attr_list[i].value.u32 = resp.attr().max_system_cores(); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_SYSTEM_PORTS: - attr_list[i].value.u32 = resp.attr().number_of_system_ports(); - break; - case SAI_SWITCH_ATTR_SYSTEM_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().system_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_NUMBER_OF_FABRIC_PORTS: - attr_list[i].value.u32 = resp.attr().number_of_fabric_ports(); - break; - case SAI_SWITCH_ATTR_FABRIC_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().fabric_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PACKET_DMA_MEMORY_POOL_SIZE: - attr_list[i].value.u32 = resp.attr().packet_dma_memory_pool_size(); - break; - case SAI_SWITCH_ATTR_FAILOVER_CONFIG_MODE: - attr_list[i].value.s32 = convert_sai_switch_failover_config_mode_t_to_sai(resp.attr().failover_config_mode()); - break; - case SAI_SWITCH_ATTR_SUPPORTED_FAILOVER_MODE: - attr_list[i].value.booldata = resp.attr().supported_failover_mode(); - break; - case SAI_SWITCH_ATTR_TUNNEL_OBJECTS_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().tunnel_objects_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_PACKET_AVAILABLE_DMA_MEMORY_POOL_SIZE: - attr_list[i].value.u32 = resp.attr().packet_available_dma_memory_pool_size(); - break; - case SAI_SWITCH_ATTR_PRE_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().pre_ingress_acl(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_SNAPT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_snapt_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_DNAPT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_dnapt_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_DOUBLE_NAPT_ENTRY: - attr_list[i].value.u32 = resp.attr().available_double_napt_entry(); - break; - case SAI_SWITCH_ATTR_SLAVE_MDIO_ADDR_LIST: - copy_list(attr_list[i].value.u8list.list, resp.attr().slave_mdio_addr_list(), &attr_list[i].value.u8list.count); - break; - case SAI_SWITCH_ATTR_MY_MAC_TABLE_MINIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().my_mac_table_minimum_priority(); - break; - case SAI_SWITCH_ATTR_MY_MAC_TABLE_MAXIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().my_mac_table_maximum_priority(); - break; - case SAI_SWITCH_ATTR_MY_MAC_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().my_mac_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_ATTR_INSTALLED_MY_MAC_ENTRIES: - attr_list[i].value.u32 = resp.attr().installed_my_mac_entries(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_MY_MAC_ENTRIES: - attr_list[i].value.u32 = resp.attr().available_my_mac_entries(); - break; - case SAI_SWITCH_ATTR_MAX_NUMBER_OF_FORWARDING_CLASSES: - attr_list[i].value.u8 = resp.attr().max_number_of_forwarding_classes(); - break; - case SAI_SWITCH_ATTR_QOS_DSCP_TO_FORWARDING_CLASS_MAP: - attr_list[i].value.oid = resp.attr().qos_dscp_to_forwarding_class_map(); - break; - case SAI_SWITCH_ATTR_QOS_MPLS_EXP_TO_FORWARDING_CLASS_MAP: - attr_list[i].value.oid = resp.attr().qos_mpls_exp_to_forwarding_class_map(); - break; - case SAI_SWITCH_ATTR_IPSEC_OBJECT_ID: - attr_list[i].value.oid = resp.attr().ipsec_object_id(); - break; - case SAI_SWITCH_ATTR_IPSEC_SA_TAG_TPID: - attr_list[i].value.u16 = resp.attr().ipsec_sa_tag_tpid(); - break; - case SAI_SWITCH_ATTR_MAX_ECMP_MEMBER_COUNT: - attr_list[i].value.u32 = resp.attr().max_ecmp_member_count(); - break; - case SAI_SWITCH_ATTR_ECMP_MEMBER_COUNT: - attr_list[i].value.u32 = resp.attr().ecmp_member_count(); - break; - case SAI_SWITCH_ATTR_ARS_PROFILE: - attr_list[i].value.oid = resp.attr().ars_profile(); - break; - case SAI_SWITCH_ATTR_ACL_STAGE_POST_INGRESS: - convert_to_acl_capability(attr_list[i].value.aclcapability, resp.attr().acl_stage_post_ingress()); - break; - case SAI_SWITCH_ATTR_CREDIT_WD: - attr_list[i].value.booldata = resp.attr().credit_wd(); - break; - case SAI_SWITCH_ATTR_CREDIT_WD_TIMER: - attr_list[i].value.u32 = resp.attr().credit_wd_timer(); - break; - case SAI_SWITCH_ATTR_SWITCH_ISOLATE: - attr_list[i].value.booldata = resp.attr().switch_isolate(); - break; - case SAI_SWITCH_ATTR_HOSTIF_OPER_STATUS_UPDATE_MODE: - attr_list[i].value.s32 = convert_sai_switch_hostif_oper_status_update_mode_t_to_sai(resp.attr().hostif_oper_status_update_mode()); - break; - case SAI_SWITCH_ATTR_REG_FATAL_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - convert_list_sai_switch_asic_sdk_health_category_t_to_sai(attr_list[i].value.s32list.list, resp.attr().reg_fatal_switch_asic_sdk_health_category(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_REG_WARNING_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - convert_list_sai_switch_asic_sdk_health_category_t_to_sai(attr_list[i].value.s32list.list, resp.attr().reg_warning_switch_asic_sdk_health_category(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_REG_NOTICE_SWITCH_ASIC_SDK_HEALTH_CATEGORY: - convert_list_sai_switch_asic_sdk_health_category_t_to_sai(attr_list[i].value.s32list.list, resp.attr().reg_notice_switch_asic_sdk_health_category(), &attr_list[i].value.s32list.count); - break; - case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MINIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().tunnel_term_table_entry_minimum_priority(); - break; - case SAI_SWITCH_ATTR_TUNNEL_TERM_TABLE_ENTRY_MAXIMUM_PRIORITY: - attr_list[i].value.u32 = resp.attr().tunnel_term_table_entry_maximum_priority(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_TWAMP_SESSION: - attr_list[i].value.u32 = resp.attr().available_twamp_session(); - break; - case SAI_SWITCH_ATTR_MAX_TWAMP_SESSION: - attr_list[i].value.u32 = resp.attr().max_twamp_session(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_IP_NEXT_HOP_GROUP_MEMBER_ENTRY: - attr_list[i].value.u32 = resp.attr().available_ip_next_hop_group_member_entry(); - break; - case SAI_SWITCH_ATTR_AVAILABLE_SYSTEM_VOQS: - attr_list[i].value.u32 = resp.attr().available_system_voqs(); - break; - case SAI_SWITCH_ATTR_ACL_STAGE_PRE_INGRESS: - convert_to_acl_capability(attr_list[i].value.aclcapability, resp.attr().acl_stage_pre_ingress()); - break; - case SAI_SWITCH_ATTR_POE_DEVICE_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().poe_device_list(), &attr_list[i].value.objlist.count); - break; -} + lemming::dataplane::sai::GetSwitchStatsRequest req; + lemming::dataplane::sai::GetSwitchStatsResponse resp; + grpc::ClientContext context; + req.set_oid(switch_id); - } - - return SAI_STATUS_SUCCESS; -} + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_switch_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = switch_->GetSwitchStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } -sai_status_t l_get_switch_stats(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSwitchStatsRequest req; - lemming::dataplane::sai::GetSwitchStatsResponse resp; - grpc::ClientContext context; - req.set_oid(switch_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_switch_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = switch_->GetSwitchStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_switch_stats_ext(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_switch_stats_ext(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } -sai_status_t l_clear_switch_stats(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; +sai_status_t l_clear_switch_stats(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; } +sai_status_t l_create_switch_tunnel(sai_object_id_t* switch_tunnel_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::CreateSwitchTunnelRequest req = + convert_create_switch_tunnel(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSwitchTunnelResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); -sai_status_t l_create_switch_tunnel(sai_object_id_t *switch_tunnel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSwitchTunnelRequest req = convert_create_switch_tunnel(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSwitchTunnelResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = switch_->CreateSwitchTunnel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (switch_tunnel_id) { - *switch_tunnel_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + grpc::Status status = switch_->CreateSwitchTunnel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (switch_tunnel_id) { + *switch_tunnel_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_switch_tunnel(sai_object_id_t switch_tunnel_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSwitchTunnelRequest req; - lemming::dataplane::sai::RemoveSwitchTunnelResponse resp; - grpc::ClientContext context; - req.set_oid(switch_tunnel_id); - - grpc::Status status = switch_->RemoveSwitchTunnel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_set_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSwitchTunnelAttributeRequest req; - lemming::dataplane::sai::SetSwitchTunnelAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(switch_tunnel_id); - - - + lemming::dataplane::sai::RemoveSwitchTunnelRequest req; + lemming::dataplane::sai::RemoveSwitchTunnelResponse resp; + grpc::ClientContext context; + req.set_oid(switch_tunnel_id); -switch (attr->id) { - - case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - req.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: - req.set_tunnel_vxlan_udp_sport_mode(convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr->value.s32)); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: - req.set_vxlan_udp_sport(attr->value.u16); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - req.set_vxlan_udp_sport_mask(attr->value.u8); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - req.set_encap_qos_tc_and_color_to_dscp_map(attr->value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - req.set_encap_qos_tc_to_queue_map(attr->value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - req.set_decap_qos_dscp_to_tc_map(attr->value.oid); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - req.set_decap_qos_tc_to_priority_group_map(attr->value.oid); - break; -} + grpc::Status status = switch_->RemoveSwitchTunnel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } - grpc::Status status = switch_->SetSwitchTunnelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSwitchTunnelAttributeRequest req; - lemming::dataplane::sai::GetSwitchTunnelAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(switch_tunnel_id); +sai_status_t l_set_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_switch_tunnel_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = switch_->GetSwitchTunnelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - + lemming::dataplane::sai::SetSwitchTunnelAttributeRequest req; + lemming::dataplane::sai::SetSwitchTunnelAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(switch_tunnel_id); -switch (attr_list[i].id) { - - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_type_t_to_sai(resp.attr().tunnel_type()); - break; - case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().loopback_packet_action()); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_encap_ecn_mode_t_to_sai(resp.attr().tunnel_encap_ecn_mode()); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: - copy_list(attr_list[i].value.objlist.list, resp.attr().encap_mappers(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_decap_ecn_mode_t_to_sai(resp.attr().tunnel_decap_ecn_mode()); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: - copy_list(attr_list[i].value.objlist.list, resp.attr().decap_mappers(), &attr_list[i].value.objlist.count); - break; - case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(resp.attr().tunnel_vxlan_udp_sport_mode()); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: - attr_list[i].value.u16 = resp.attr().vxlan_udp_sport(); - break; - case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - attr_list[i].value.u8 = resp.attr().vxlan_udp_sport_mask(); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - attr_list[i].value.oid = resp.attr().encap_qos_tc_and_color_to_dscp_map(); - break; - case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().encap_qos_tc_to_queue_map(); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().decap_qos_dscp_to_tc_map(); - break; - case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - attr_list[i].value.oid = resp.attr().decap_qos_tc_to_priority_group_map(); - break; -} + switch (attr->id) { + case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + req.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: + req.set_tunnel_vxlan_udp_sport_mode( + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr->value.s32)); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: + req.set_vxlan_udp_sport(attr->value.u16); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + req.set_vxlan_udp_sport_mask(attr->value.u8); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + req.set_encap_qos_tc_and_color_to_dscp_map(attr->value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + req.set_encap_qos_tc_to_queue_map(attr->value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + req.set_decap_qos_dscp_to_tc_map(attr->value.oid); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + req.set_decap_qos_tc_to_priority_group_map(attr->value.oid); + break; + } - } - - return SAI_STATUS_SUCCESS; + grpc::Status status = switch_->SetSwitchTunnelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } +sai_status_t l_get_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSwitchTunnelAttributeRequest req; + lemming::dataplane::sai::GetSwitchTunnelAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(switch_tunnel_id); + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_switch_tunnel_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = switch_->GetSwitchTunnelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_type_t_to_sai(resp.attr().tunnel_type()); + break; + case SAI_SWITCH_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().loopback_packet_action()); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_ENCAP_ECN_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_encap_ecn_mode_t_to_sai( + resp.attr().tunnel_encap_ecn_mode()); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_MAPPERS: + copy_list(attr_list[i].value.objlist.list, resp.attr().encap_mappers(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_DECAP_ECN_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_decap_ecn_mode_t_to_sai( + resp.attr().tunnel_decap_ecn_mode()); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_MAPPERS: + copy_list(attr_list[i].value.objlist.list, resp.attr().decap_mappers(), + &attr_list[i].value.objlist.count); + break; + case SAI_SWITCH_TUNNEL_ATTR_TUNNEL_VXLAN_UDP_SPORT_MODE: + attr_list[i].value.s32 = + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + resp.attr().tunnel_vxlan_udp_sport_mode()); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT: + attr_list[i].value.u16 = resp.attr().vxlan_udp_sport(); + break; + case SAI_SWITCH_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + attr_list[i].value.u8 = resp.attr().vxlan_udp_sport_mask(); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + attr_list[i].value.oid = + resp.attr().encap_qos_tc_and_color_to_dscp_map(); + break; + case SAI_SWITCH_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().encap_qos_tc_to_queue_map(); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().decap_qos_dscp_to_tc_map(); + break; + case SAI_SWITCH_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + attr_list[i].value.oid = + resp.attr().decap_qos_tc_to_priority_group_map(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/switch.h b/dataplane/standalone/sai/switch.h index e8aefa064..74522c3aa 100644 --- a/dataplane/standalone/sai/switch.h +++ b/dataplane/standalone/sai/switch.h @@ -25,41 +25,44 @@ extern "C" { extern const sai_switch_api_t l_switch; - -sai_status_t l_create_switch(sai_object_id_t *switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_switch(sai_object_id_t* switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_switch(sai_object_id_t switch_id); -sai_status_t l_set_switch_attribute(sai_object_id_t switch_id, const sai_attribute_t *attr); - - - - - - - +sai_status_t l_set_switch_attribute(sai_object_id_t switch_id, + const sai_attribute_t* attr); +sai_status_t l_get_switch_attribute(sai_object_id_t switch_id, + uint32_t attr_count, + sai_attribute_t* attr_list); +sai_status_t l_get_switch_stats(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_switch_attribute(sai_object_id_t switch_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_switch_stats_ext(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); -sai_status_t l_get_switch_stats(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_clear_switch_stats(sai_object_id_t switch_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_get_switch_stats_ext(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); - -sai_status_t l_clear_switch_stats(sai_object_id_t switch_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); - - - -sai_status_t l_create_switch_tunnel(sai_object_id_t *switch_tunnel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_switch_tunnel(sai_object_id_t* switch_tunnel_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_switch_tunnel(sai_object_id_t switch_tunnel_id); -sai_status_t l_set_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, const sai_attribute_t *attr); - -sai_status_t l_get_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, uint32_t attr_count, sai_attribute_t *attr_list); - - +sai_status_t l_set_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, + const sai_attribute_t* attr); +sai_status_t l_get_switch_tunnel_attribute(sai_object_id_t switch_tunnel_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_SWITCH_H_ diff --git a/dataplane/standalone/sai/system_port.cc b/dataplane/standalone/sai/system_port.cc index 9e535e5b4..84176e114 100644 --- a/dataplane/standalone/sai/system_port.cc +++ b/dataplane/standalone/sai/system_port.cc @@ -13,176 +13,176 @@ // limitations under the License. #include "dataplane/standalone/sai/system_port.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/system_port.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_system_port_api_t l_system_port = { - .create_system_port = l_create_system_port, - .remove_system_port = l_remove_system_port, - .set_system_port_attribute = l_set_system_port_attribute, - .get_system_port_attribute = l_get_system_port_attribute, + .create_system_port = l_create_system_port, + .remove_system_port = l_remove_system_port, + .set_system_port_attribute = l_set_system_port_attribute, + .get_system_port_attribute = l_get_system_port_attribute, }; - -lemming::dataplane::sai::CreateSystemPortRequest convert_create_system_port(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateSystemPortRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: - msg.set_admin_state(attr_list[i].value.booldata); - break; - case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); - break; -} - -} -return msg; +lemming::dataplane::sai::CreateSystemPortRequest convert_create_system_port( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateSystemPortRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: + msg.set_admin_state(attr_list[i].value.booldata); + break; + case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + msg.set_qos_tc_to_queue_map(attr_list[i].value.oid); + break; + } + } + return msg; } -sai_status_t l_create_system_port(sai_object_id_t *system_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateSystemPortRequest req = convert_create_system_port(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateSystemPortResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = system_port->CreateSystemPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (system_port_id) { - *system_port_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_system_port(sai_object_id_t* system_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateSystemPortRequest req = + convert_create_system_port(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateSystemPortResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = system_port->CreateSystemPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (system_port_id) { + *system_port_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_system_port(sai_object_id_t system_port_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveSystemPortRequest req; - lemming::dataplane::sai::RemoveSystemPortResponse resp; - grpc::ClientContext context; - req.set_oid(system_port_id); - - grpc::Status status = system_port->RemoveSystemPort(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveSystemPortRequest req; + lemming::dataplane::sai::RemoveSystemPortResponse resp; + grpc::ClientContext context; + req.set_oid(system_port_id); + + grpc::Status status = system_port->RemoveSystemPort(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_system_port_attribute(sai_object_id_t system_port_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetSystemPortAttributeRequest req; - lemming::dataplane::sai::SetSystemPortAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(system_port_id); - - - - -switch (attr->id) { - - case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: - req.set_admin_state(attr->value.booldata); - break; - case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - req.set_qos_tc_to_queue_map(attr->value.oid); - break; +sai_status_t l_set_system_port_attribute(sai_object_id_t system_port_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetSystemPortAttributeRequest req; + lemming::dataplane::sai::SetSystemPortAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(system_port_id); + + switch (attr->id) { + case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: + req.set_admin_state(attr->value.booldata); + break; + case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + req.set_qos_tc_to_queue_map(attr->value.oid); + break; + } + + grpc::Status status = + system_port->SetSystemPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = system_port->SetSystemPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_system_port_attribute(sai_object_id_t system_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetSystemPortAttributeRequest req; + lemming::dataplane::sai::GetSystemPortAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(system_port_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_system_port_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + system_port->GetSystemPortAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_SYSTEM_PORT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_system_port_type_t_to_sai(resp.attr().type()); + break; + case SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: + attr_list[i].value.u32 = resp.attr().qos_number_of_voqs(); + break; + case SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().qos_voq_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_SYSTEM_PORT_ATTR_PORT: + attr_list[i].value.oid = resp.attr().port(); + break; + case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: + attr_list[i].value.booldata = resp.attr().admin_state(); + break; + case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_get_system_port_attribute(sai_object_id_t system_port_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetSystemPortAttributeRequest req; - lemming::dataplane::sai::GetSystemPortAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(system_port_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_system_port_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = system_port->GetSystemPortAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_SYSTEM_PORT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_system_port_type_t_to_sai(resp.attr().type()); - break; - case SAI_SYSTEM_PORT_ATTR_QOS_NUMBER_OF_VOQS: - attr_list[i].value.u32 = resp.attr().qos_number_of_voqs(); - break; - case SAI_SYSTEM_PORT_ATTR_QOS_VOQ_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().qos_voq_list(), &attr_list[i].value.objlist.count); - break; - case SAI_SYSTEM_PORT_ATTR_PORT: - attr_list[i].value.oid = resp.attr().port(); - break; - case SAI_SYSTEM_PORT_ATTR_ADMIN_STATE: - attr_list[i].value.booldata = resp.attr().admin_state(); - break; - case SAI_SYSTEM_PORT_ATTR_QOS_TC_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().qos_tc_to_queue_map(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/system_port.h b/dataplane/standalone/sai/system_port.h index cd12dc837..d99e653a9 100644 --- a/dataplane/standalone/sai/system_port.h +++ b/dataplane/standalone/sai/system_port.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_system_port_api_t l_system_port; - -sai_status_t l_create_system_port(sai_object_id_t *system_port_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_system_port(sai_object_id_t* system_port_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_system_port(sai_object_id_t system_port_id); -sai_status_t l_set_system_port_attribute(sai_object_id_t system_port_id, const sai_attribute_t *attr); - -sai_status_t l_get_system_port_attribute(sai_object_id_t system_port_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_system_port_attribute(sai_object_id_t system_port_id, + const sai_attribute_t* attr); +sai_status_t l_get_system_port_attribute(sai_object_id_t system_port_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_SYSTEM_PORT_H_ diff --git a/dataplane/standalone/sai/tam.cc b/dataplane/standalone/sai/tam.cc index 7182fa28e..143653b7e 100644 --- a/dataplane/standalone/sai/tam.cc +++ b/dataplane/standalone/sai/tam.cc @@ -13,2327 +13,2378 @@ // limitations under the License. #include "dataplane/standalone/sai/tam.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/tam.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_tam_api_t l_tam = { - .create_tam = l_create_tam, - .remove_tam = l_remove_tam, - .set_tam_attribute = l_set_tam_attribute, - .get_tam_attribute = l_get_tam_attribute, - .create_tam_math_func = l_create_tam_math_func, - .remove_tam_math_func = l_remove_tam_math_func, - .set_tam_math_func_attribute = l_set_tam_math_func_attribute, - .get_tam_math_func_attribute = l_get_tam_math_func_attribute, - .create_tam_report = l_create_tam_report, - .remove_tam_report = l_remove_tam_report, - .set_tam_report_attribute = l_set_tam_report_attribute, - .get_tam_report_attribute = l_get_tam_report_attribute, - .create_tam_event_threshold = l_create_tam_event_threshold, - .remove_tam_event_threshold = l_remove_tam_event_threshold, - .set_tam_event_threshold_attribute = l_set_tam_event_threshold_attribute, - .get_tam_event_threshold_attribute = l_get_tam_event_threshold_attribute, - .create_tam_int = l_create_tam_int, - .remove_tam_int = l_remove_tam_int, - .set_tam_int_attribute = l_set_tam_int_attribute, - .get_tam_int_attribute = l_get_tam_int_attribute, - .create_tam_tel_type = l_create_tam_tel_type, - .remove_tam_tel_type = l_remove_tam_tel_type, - .set_tam_tel_type_attribute = l_set_tam_tel_type_attribute, - .get_tam_tel_type_attribute = l_get_tam_tel_type_attribute, - .create_tam_transport = l_create_tam_transport, - .remove_tam_transport = l_remove_tam_transport, - .set_tam_transport_attribute = l_set_tam_transport_attribute, - .get_tam_transport_attribute = l_get_tam_transport_attribute, - .create_tam_telemetry = l_create_tam_telemetry, - .remove_tam_telemetry = l_remove_tam_telemetry, - .set_tam_telemetry_attribute = l_set_tam_telemetry_attribute, - .get_tam_telemetry_attribute = l_get_tam_telemetry_attribute, - .create_tam_collector = l_create_tam_collector, - .remove_tam_collector = l_remove_tam_collector, - .set_tam_collector_attribute = l_set_tam_collector_attribute, - .get_tam_collector_attribute = l_get_tam_collector_attribute, - .create_tam_event_action = l_create_tam_event_action, - .remove_tam_event_action = l_remove_tam_event_action, - .set_tam_event_action_attribute = l_set_tam_event_action_attribute, - .get_tam_event_action_attribute = l_get_tam_event_action_attribute, - .create_tam_event = l_create_tam_event, - .remove_tam_event = l_remove_tam_event, - .set_tam_event_attribute = l_set_tam_event_attribute, - .get_tam_event_attribute = l_get_tam_event_attribute, - .create_tam_counter_subscription = l_create_tam_counter_subscription, - .remove_tam_counter_subscription = l_remove_tam_counter_subscription, - .set_tam_counter_subscription_attribute = l_set_tam_counter_subscription_attribute, - .get_tam_counter_subscription_attribute = l_get_tam_counter_subscription_attribute, + .create_tam = l_create_tam, + .remove_tam = l_remove_tam, + .set_tam_attribute = l_set_tam_attribute, + .get_tam_attribute = l_get_tam_attribute, + .create_tam_math_func = l_create_tam_math_func, + .remove_tam_math_func = l_remove_tam_math_func, + .set_tam_math_func_attribute = l_set_tam_math_func_attribute, + .get_tam_math_func_attribute = l_get_tam_math_func_attribute, + .create_tam_report = l_create_tam_report, + .remove_tam_report = l_remove_tam_report, + .set_tam_report_attribute = l_set_tam_report_attribute, + .get_tam_report_attribute = l_get_tam_report_attribute, + .create_tam_event_threshold = l_create_tam_event_threshold, + .remove_tam_event_threshold = l_remove_tam_event_threshold, + .set_tam_event_threshold_attribute = l_set_tam_event_threshold_attribute, + .get_tam_event_threshold_attribute = l_get_tam_event_threshold_attribute, + .create_tam_int = l_create_tam_int, + .remove_tam_int = l_remove_tam_int, + .set_tam_int_attribute = l_set_tam_int_attribute, + .get_tam_int_attribute = l_get_tam_int_attribute, + .create_tam_tel_type = l_create_tam_tel_type, + .remove_tam_tel_type = l_remove_tam_tel_type, + .set_tam_tel_type_attribute = l_set_tam_tel_type_attribute, + .get_tam_tel_type_attribute = l_get_tam_tel_type_attribute, + .create_tam_transport = l_create_tam_transport, + .remove_tam_transport = l_remove_tam_transport, + .set_tam_transport_attribute = l_set_tam_transport_attribute, + .get_tam_transport_attribute = l_get_tam_transport_attribute, + .create_tam_telemetry = l_create_tam_telemetry, + .remove_tam_telemetry = l_remove_tam_telemetry, + .set_tam_telemetry_attribute = l_set_tam_telemetry_attribute, + .get_tam_telemetry_attribute = l_get_tam_telemetry_attribute, + .create_tam_collector = l_create_tam_collector, + .remove_tam_collector = l_remove_tam_collector, + .set_tam_collector_attribute = l_set_tam_collector_attribute, + .get_tam_collector_attribute = l_get_tam_collector_attribute, + .create_tam_event_action = l_create_tam_event_action, + .remove_tam_event_action = l_remove_tam_event_action, + .set_tam_event_action_attribute = l_set_tam_event_action_attribute, + .get_tam_event_action_attribute = l_get_tam_event_action_attribute, + .create_tam_event = l_create_tam_event, + .remove_tam_event = l_remove_tam_event, + .set_tam_event_attribute = l_set_tam_event_attribute, + .get_tam_event_attribute = l_get_tam_event_attribute, + .create_tam_counter_subscription = l_create_tam_counter_subscription, + .remove_tam_counter_subscription = l_remove_tam_counter_subscription, + .set_tam_counter_subscription_attribute = + l_set_tam_counter_subscription_attribute, + .get_tam_counter_subscription_attribute = + l_get_tam_counter_subscription_attribute, }; - -lemming::dataplane::sai::CreateTamRequest convert_create_tam(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: - msg.mutable_telemetry_objects_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: - msg.mutable_event_objects_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_INT_OBJECTS_LIST: - msg.mutable_int_objects_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: - msg.mutable_tam_bind_point_type_list()->CopyFrom(convert_list_sai_tam_bind_point_type_t_to_proto(attr_list[i].value.s32list)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamMathFuncRequest convert_create_tam_math_func(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamMathFuncRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: - msg.set_tam_tel_math_func_type(convert_sai_tam_tel_math_func_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamReportRequest convert_create_tam_report(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamReportRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_REPORT_ATTR_TYPE: - msg.set_type(convert_sai_tam_report_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: - msg.set_histogram_number_of_bins(attr_list[i].value.u32); - break; - case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: - msg.mutable_histogram_bin_boundary()->Add(attr_list[i].value.u32list.list, attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); - break; - case SAI_TAM_REPORT_ATTR_QUOTA: - msg.set_quota(attr_list[i].value.u32); - break; - case SAI_TAM_REPORT_ATTR_REPORT_MODE: - msg.set_report_mode(convert_sai_tam_report_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: - msg.set_report_interval(attr_list[i].value.u32); - break; - case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: - msg.set_enterprise_number(attr_list[i].value.u32); - break; - case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: - msg.set_template_report_interval(attr_list[i].value.u32); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: - msg.set_report_interval_unit(convert_sai_tam_report_interval_unit_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamEventThresholdRequest convert_create_tam_event_threshold(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamEventThresholdRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: - msg.set_high_watermark(attr_list[i].value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: - msg.set_low_watermark(attr_list[i].value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: - msg.set_latency(attr_list[i].value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: - msg.set_rate(attr_list[i].value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: - msg.set_abs_value(attr_list[i].value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: - msg.set_unit(convert_sai_tam_event_threshold_unit_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamIntRequest convert_create_tam_int(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamIntRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_INT_ATTR_TYPE: - msg.set_type(convert_sai_tam_int_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_INT_ATTR_DEVICE_ID: - msg.set_device_id(attr_list[i].value.u32); - break; - case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: - msg.set_ioam_trace_type(attr_list[i].value.u32); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: - msg.set_int_presence_type(convert_sai_tam_int_presence_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: - msg.set_int_presence_pb1(attr_list[i].value.u32); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: - msg.set_int_presence_pb2(attr_list[i].value.u32); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: - msg.set_int_presence_dscp_value(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_INLINE: - msg.set_inline_(attr_list[i].value.booldata); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: - msg.set_int_presence_l3_protocol(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_TRACE_VECTOR: - msg.set_trace_vector(attr_list[i].value.u16); - break; - case SAI_TAM_INT_ATTR_ACTION_VECTOR: - msg.set_action_vector(attr_list[i].value.u16); - break; - case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: - msg.set_p4_int_instruction_bitmap(attr_list[i].value.u16); - break; - case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: - msg.set_metadata_fragment_enable(attr_list[i].value.booldata); - break; - case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: - msg.set_metadata_checksum_enable(attr_list[i].value.booldata); - break; - case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: - msg.set_report_all_packets(attr_list[i].value.booldata); - break; - case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: - msg.set_flow_liveness_period(attr_list[i].value.u16); - break; - case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: - msg.set_latency_sensitivity(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_ACL_GROUP: - msg.set_acl_group(attr_list[i].value.oid); - break; - case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: - msg.set_max_hop_count(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_MAX_LENGTH: - msg.set_max_length(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID: - msg.set_name_space_id(attr_list[i].value.u8); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: - msg.set_name_space_id_global(attr_list[i].value.booldata); - break; - case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - msg.set_ingress_samplepacket_enable(attr_list[i].value.oid); - break; - case SAI_TAM_INT_ATTR_COLLECTOR_LIST: - msg.mutable_collector_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_INT_ATTR_MATH_FUNC: - msg.set_math_func(attr_list[i].value.oid); - break; - case SAI_TAM_INT_ATTR_REPORT_ID: - msg.set_report_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamTelTypeRequest convert_create_tam_tel_type(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamTelTypeRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: - msg.set_tam_telemetry_type(convert_sai_tam_telemetry_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: - msg.set_int_switch_identifier(attr_list[i].value.u32); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: - msg.set_switch_enable_port_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: - msg.set_switch_enable_port_stats_ingress(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: - msg.set_switch_enable_port_stats_egress(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: - msg.set_switch_enable_virtual_queue_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: - msg.set_switch_enable_output_queue_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: - msg.set_switch_enable_mmu_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: - msg.set_switch_enable_fabric_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: - msg.set_switch_enable_filter_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: - msg.set_switch_enable_resource_utilization_stats(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: - msg.set_fabric_q(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: - msg.set_ne_enable(attr_list[i].value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: - msg.set_dscp_value(attr_list[i].value.u8); - break; - case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: - msg.set_math_func(attr_list[i].value.oid); - break; - case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: - msg.set_report_id(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamTransportRequest convert_create_tam_transport(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamTransportRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: - msg.set_transport_type(convert_sai_tam_transport_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: - msg.set_src_port(attr_list[i].value.u32); - break; - case SAI_TAM_TRANSPORT_ATTR_DST_PORT: - msg.set_dst_port(attr_list[i].value.u32); - break; - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: - msg.set_transport_auth_type(convert_sai_tam_transport_auth_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_TRANSPORT_ATTR_MTU: - msg.set_mtu(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamTelemetryRequest convert_create_tam_telemetry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamTelemetryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: - msg.mutable_tam_type_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: - msg.mutable_collector_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: - msg.set_tam_reporting_unit(convert_sai_tam_reporting_unit_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: - msg.set_reporting_interval(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamCollectorRequest convert_create_tam_collector(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamCollectorRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_COLLECTOR_ATTR_SRC_IP: - msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TAM_COLLECTOR_ATTR_DST_IP: - msg.set_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: - msg.set_localhost(attr_list[i].value.booldata); - break; - case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: - msg.set_virtual_router_id(attr_list[i].value.oid); - break; - case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: - msg.set_truncate_size(attr_list[i].value.u16); - break; - case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: - msg.set_transport(attr_list[i].value.oid); - break; - case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: - msg.set_dscp_value(attr_list[i].value.u8); - break; - case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: - msg.set_hostif_trap(attr_list[i].value.oid); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamEventActionRequest convert_create_tam_event_action(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamEventActionRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: - msg.set_report_type(attr_list[i].value.oid); - break; - case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: - msg.set_qos_action_type(attr_list[i].value.u32); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamEventRequest convert_create_tam_event(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamEventRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_ATTR_TYPE: - msg.set_type(convert_sai_tam_event_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TAM_EVENT_ATTR_ACTION_LIST: - msg.mutable_action_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: - msg.mutable_collector_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TAM_EVENT_ATTR_THRESHOLD: - msg.set_threshold(attr_list[i].value.oid); - break; - case SAI_TAM_EVENT_ATTR_DSCP_VALUE: - msg.set_dscp_value(attr_list[i].value.u8); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTamCounterSubscriptionRequest convert_create_tam_counter_subscription(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTamCounterSubscriptionRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: - msg.set_tel_type(attr_list[i].value.oid); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: - msg.set_object_id(attr_list[i].value.oid); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: - msg.set_stat_id(attr_list[i].value.u32); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: - msg.set_label(attr_list[i].value.u64); - break; -} - -} -return msg; -} - -sai_status_t l_create_tam(sai_object_id_t *tam_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamRequest req = convert_create_tam(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTam(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_id) { - *tam_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +lemming::dataplane::sai::CreateTamRequest convert_create_tam( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: + msg.mutable_telemetry_objects_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: + msg.mutable_event_objects_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_INT_OBJECTS_LIST: + msg.mutable_int_objects_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: + msg.mutable_tam_bind_point_type_list()->CopyFrom( + convert_list_sai_tam_bind_point_type_t_to_proto( + attr_list[i].value.s32list)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamMathFuncRequest convert_create_tam_math_func( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamMathFuncRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: + msg.set_tam_tel_math_func_type( + convert_sai_tam_tel_math_func_type_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamReportRequest convert_create_tam_report( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamReportRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_REPORT_ATTR_TYPE: + msg.set_type( + convert_sai_tam_report_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: + msg.set_histogram_number_of_bins(attr_list[i].value.u32); + break; + case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: + msg.mutable_histogram_bin_boundary()->Add( + attr_list[i].value.u32list.list, + attr_list[i].value.u32list.list + attr_list[i].value.u32list.count); + break; + case SAI_TAM_REPORT_ATTR_QUOTA: + msg.set_quota(attr_list[i].value.u32); + break; + case SAI_TAM_REPORT_ATTR_REPORT_MODE: + msg.set_report_mode( + convert_sai_tam_report_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: + msg.set_report_interval(attr_list[i].value.u32); + break; + case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: + msg.set_enterprise_number(attr_list[i].value.u32); + break; + case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: + msg.set_template_report_interval(attr_list[i].value.u32); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: + msg.set_report_interval_unit( + convert_sai_tam_report_interval_unit_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamEventThresholdRequest +convert_create_tam_event_threshold(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamEventThresholdRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: + msg.set_high_watermark(attr_list[i].value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: + msg.set_low_watermark(attr_list[i].value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: + msg.set_latency(attr_list[i].value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: + msg.set_rate(attr_list[i].value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: + msg.set_abs_value(attr_list[i].value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: + msg.set_unit(convert_sai_tam_event_threshold_unit_t_to_proto( + attr_list[i].value.s32)); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamIntRequest convert_create_tam_int( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamIntRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_INT_ATTR_TYPE: + msg.set_type( + convert_sai_tam_int_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_INT_ATTR_DEVICE_ID: + msg.set_device_id(attr_list[i].value.u32); + break; + case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: + msg.set_ioam_trace_type(attr_list[i].value.u32); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: + msg.set_int_presence_type(convert_sai_tam_int_presence_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: + msg.set_int_presence_pb1(attr_list[i].value.u32); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: + msg.set_int_presence_pb2(attr_list[i].value.u32); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: + msg.set_int_presence_dscp_value(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_INLINE: + msg.set_inline_(attr_list[i].value.booldata); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: + msg.set_int_presence_l3_protocol(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_TRACE_VECTOR: + msg.set_trace_vector(attr_list[i].value.u16); + break; + case SAI_TAM_INT_ATTR_ACTION_VECTOR: + msg.set_action_vector(attr_list[i].value.u16); + break; + case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: + msg.set_p4_int_instruction_bitmap(attr_list[i].value.u16); + break; + case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: + msg.set_metadata_fragment_enable(attr_list[i].value.booldata); + break; + case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: + msg.set_metadata_checksum_enable(attr_list[i].value.booldata); + break; + case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: + msg.set_report_all_packets(attr_list[i].value.booldata); + break; + case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: + msg.set_flow_liveness_period(attr_list[i].value.u16); + break; + case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: + msg.set_latency_sensitivity(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_ACL_GROUP: + msg.set_acl_group(attr_list[i].value.oid); + break; + case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: + msg.set_max_hop_count(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_MAX_LENGTH: + msg.set_max_length(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID: + msg.set_name_space_id(attr_list[i].value.u8); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: + msg.set_name_space_id_global(attr_list[i].value.booldata); + break; + case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + msg.set_ingress_samplepacket_enable(attr_list[i].value.oid); + break; + case SAI_TAM_INT_ATTR_COLLECTOR_LIST: + msg.mutable_collector_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_INT_ATTR_MATH_FUNC: + msg.set_math_func(attr_list[i].value.oid); + break; + case SAI_TAM_INT_ATTR_REPORT_ID: + msg.set_report_id(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamTelTypeRequest convert_create_tam_tel_type( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamTelTypeRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: + msg.set_tam_telemetry_type( + convert_sai_tam_telemetry_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: + msg.set_int_switch_identifier(attr_list[i].value.u32); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: + msg.set_switch_enable_port_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: + msg.set_switch_enable_port_stats_ingress(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: + msg.set_switch_enable_port_stats_egress(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: + msg.set_switch_enable_virtual_queue_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: + msg.set_switch_enable_output_queue_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: + msg.set_switch_enable_mmu_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: + msg.set_switch_enable_fabric_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: + msg.set_switch_enable_filter_stats(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: + msg.set_switch_enable_resource_utilization_stats( + attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: + msg.set_fabric_q(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: + msg.set_ne_enable(attr_list[i].value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: + msg.set_dscp_value(attr_list[i].value.u8); + break; + case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: + msg.set_math_func(attr_list[i].value.oid); + break; + case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: + msg.set_report_id(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamTransportRequest convert_create_tam_transport( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamTransportRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: + msg.set_transport_type( + convert_sai_tam_transport_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: + msg.set_src_port(attr_list[i].value.u32); + break; + case SAI_TAM_TRANSPORT_ATTR_DST_PORT: + msg.set_dst_port(attr_list[i].value.u32); + break; + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: + msg.set_transport_auth_type( + convert_sai_tam_transport_auth_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TAM_TRANSPORT_ATTR_MTU: + msg.set_mtu(attr_list[i].value.u32); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamTelemetryRequest convert_create_tam_telemetry( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamTelemetryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: + msg.mutable_tam_type_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: + msg.mutable_collector_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: + msg.set_tam_reporting_unit( + convert_sai_tam_reporting_unit_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: + msg.set_reporting_interval(attr_list[i].value.u32); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamCollectorRequest convert_create_tam_collector( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamCollectorRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_COLLECTOR_ATTR_SRC_IP: + msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TAM_COLLECTOR_ATTR_DST_IP: + msg.set_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: + msg.set_localhost(attr_list[i].value.booldata); + break; + case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: + msg.set_virtual_router_id(attr_list[i].value.oid); + break; + case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: + msg.set_truncate_size(attr_list[i].value.u16); + break; + case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: + msg.set_transport(attr_list[i].value.oid); + break; + case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: + msg.set_dscp_value(attr_list[i].value.u8); + break; + case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: + msg.set_hostif_trap(attr_list[i].value.oid); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamEventActionRequest +convert_create_tam_event_action(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamEventActionRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: + msg.set_report_type(attr_list[i].value.oid); + break; + case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: + msg.set_qos_action_type(attr_list[i].value.u32); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamEventRequest convert_create_tam_event( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamEventRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_ATTR_TYPE: + msg.set_type( + convert_sai_tam_event_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TAM_EVENT_ATTR_ACTION_LIST: + msg.mutable_action_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: + msg.mutable_collector_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TAM_EVENT_ATTR_THRESHOLD: + msg.set_threshold(attr_list[i].value.oid); + break; + case SAI_TAM_EVENT_ATTR_DSCP_VALUE: + msg.set_dscp_value(attr_list[i].value.u8); + break; + } + } + return msg; +} + +lemming::dataplane::sai::CreateTamCounterSubscriptionRequest +convert_create_tam_counter_subscription(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTamCounterSubscriptionRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: + msg.set_tel_type(attr_list[i].value.oid); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: + msg.set_object_id(attr_list[i].value.oid); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: + msg.set_stat_id(attr_list[i].value.u32); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: + msg.set_label(attr_list[i].value.u64); + break; + } + } + return msg; +} + +sai_status_t l_create_tam(sai_object_id_t* tam_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamRequest req = + convert_create_tam(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTam(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_id) { + *tam_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam(sai_object_id_t tam_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamRequest req; - lemming::dataplane::sai::RemoveTamResponse resp; - grpc::ClientContext context; - req.set_oid(tam_id); - - grpc::Status status = tam->RemoveTam(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_attribute(sai_object_id_t tam_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamAttributeRequest req; - lemming::dataplane::sai::SetTamAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_id); - - - - -switch (attr->id) { - - case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: - req.mutable_telemetry_objects_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: - req.mutable_event_objects_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_TAM_ATTR_INT_OBJECTS_LIST: - req.mutable_int_objects_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; -} - - grpc::Status status = tam->SetTamAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_attribute(sai_object_id_t tam_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamAttributeRequest req; - lemming::dataplane::sai::GetTamAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().telemetry_objects_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().event_objects_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_INT_OBJECTS_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().int_objects_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: - convert_list_sai_tam_bind_point_type_t_to_sai(attr_list[i].value.s32list.list, resp.attr().tam_bind_point_type_list(), &attr_list[i].value.s32list.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_math_func(sai_object_id_t *tam_math_func_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamMathFuncRequest req = convert_create_tam_math_func(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamMathFuncResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamMathFunc(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_math_func_id) { - *tam_math_func_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamRequest req; + lemming::dataplane::sai::RemoveTamResponse resp; + grpc::ClientContext context; + req.set_oid(tam_id); + + grpc::Status status = tam->RemoveTam(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_attribute(sai_object_id_t tam_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamAttributeRequest req; + lemming::dataplane::sai::SetTamAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_id); + + switch (attr->id) { + case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: + req.mutable_telemetry_objects_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: + req.mutable_event_objects_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_TAM_ATTR_INT_OBJECTS_LIST: + req.mutable_int_objects_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = tam->SetTamAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_attribute(sai_object_id_t tam_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamAttributeRequest req; + lemming::dataplane::sai::GetTamAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tam_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_ATTR_TELEMETRY_OBJECTS_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().telemetry_objects_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_EVENT_OBJECTS_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().event_objects_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_INT_OBJECTS_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().int_objects_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_ATTR_TAM_BIND_POINT_TYPE_LIST: + convert_list_sai_tam_bind_point_type_t_to_sai( + attr_list[i].value.s32list.list, + resp.attr().tam_bind_point_type_list(), + &attr_list[i].value.s32list.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_math_func(sai_object_id_t* tam_math_func_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamMathFuncRequest req = + convert_create_tam_math_func(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamMathFuncResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamMathFunc(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_math_func_id) { + *tam_math_func_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_math_func(sai_object_id_t tam_math_func_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamMathFuncRequest req; - lemming::dataplane::sai::RemoveTamMathFuncResponse resp; - grpc::ClientContext context; - req.set_oid(tam_math_func_id); - - grpc::Status status = tam->RemoveTamMathFunc(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_math_func_attribute(sai_object_id_t tam_math_func_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamMathFuncAttributeRequest req; - lemming::dataplane::sai::SetTamMathFuncAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_math_func_id); - - - - -switch (attr->id) { - - case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: - req.set_tam_tel_math_func_type(convert_sai_tam_tel_math_func_type_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = tam->SetTamMathFuncAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_math_func_attribute(sai_object_id_t tam_math_func_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamMathFuncAttributeRequest req; - lemming::dataplane::sai::GetTamMathFuncAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_math_func_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_math_func_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamMathFuncAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: - attr_list[i].value.s32 = convert_sai_tam_tel_math_func_type_t_to_sai(resp.attr().tam_tel_math_func_type()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_report(sai_object_id_t *tam_report_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamReportRequest req = convert_create_tam_report(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamReportResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamReport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_report_id) { - *tam_report_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamMathFuncRequest req; + lemming::dataplane::sai::RemoveTamMathFuncResponse resp; + grpc::ClientContext context; + req.set_oid(tam_math_func_id); + + grpc::Status status = tam->RemoveTamMathFunc(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_math_func_attribute(sai_object_id_t tam_math_func_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamMathFuncAttributeRequest req; + lemming::dataplane::sai::SetTamMathFuncAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_math_func_id); + + switch (attr->id) { + case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: + req.set_tam_tel_math_func_type( + convert_sai_tam_tel_math_func_type_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = tam->SetTamMathFuncAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_math_func_attribute(sai_object_id_t tam_math_func_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamMathFuncAttributeRequest req; + lemming::dataplane::sai::GetTamMathFuncAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_math_func_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_math_func_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamMathFuncAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_MATH_FUNC_ATTR_TAM_TEL_MATH_FUNC_TYPE: + attr_list[i].value.s32 = convert_sai_tam_tel_math_func_type_t_to_sai( + resp.attr().tam_tel_math_func_type()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_report(sai_object_id_t* tam_report_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamReportRequest req = + convert_create_tam_report(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamReportResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamReport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_report_id) { + *tam_report_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_report(sai_object_id_t tam_report_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamReportRequest req; - lemming::dataplane::sai::RemoveTamReportResponse resp; - grpc::ClientContext context; - req.set_oid(tam_report_id); - - grpc::Status status = tam->RemoveTamReport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_report_attribute(sai_object_id_t tam_report_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamReportAttributeRequest req; - lemming::dataplane::sai::SetTamReportAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_report_id); - - - - -switch (attr->id) { - - case SAI_TAM_REPORT_ATTR_TYPE: - req.set_type(convert_sai_tam_report_type_t_to_proto(attr->value.s32)); - break; - case SAI_TAM_REPORT_ATTR_QUOTA: - req.set_quota(attr->value.u32); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: - req.set_report_interval(attr->value.u32); - break; - case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: - req.set_enterprise_number(attr->value.u32); - break; - case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: - req.set_template_report_interval(attr->value.u32); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: - req.set_report_interval_unit(convert_sai_tam_report_interval_unit_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = tam->SetTamReportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_report_attribute(sai_object_id_t tam_report_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamReportAttributeRequest req; - lemming::dataplane::sai::GetTamReportAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_report_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_report_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamReportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_REPORT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tam_report_type_t_to_sai(resp.attr().type()); - break; - case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: - attr_list[i].value.u32 = resp.attr().histogram_number_of_bins(); - break; - case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: - copy_list(attr_list[i].value.u32list.list, resp.attr().histogram_bin_boundary(), &attr_list[i].value.u32list.count); - break; - case SAI_TAM_REPORT_ATTR_QUOTA: - attr_list[i].value.u32 = resp.attr().quota(); - break; - case SAI_TAM_REPORT_ATTR_REPORT_MODE: - attr_list[i].value.s32 = convert_sai_tam_report_mode_t_to_sai(resp.attr().report_mode()); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: - attr_list[i].value.u32 = resp.attr().report_interval(); - break; - case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: - attr_list[i].value.u32 = resp.attr().enterprise_number(); - break; - case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: - attr_list[i].value.u32 = resp.attr().template_report_interval(); - break; - case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: - attr_list[i].value.s32 = convert_sai_tam_report_interval_unit_t_to_sai(resp.attr().report_interval_unit()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_event_threshold(sai_object_id_t *tam_event_threshold_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamEventThresholdRequest req = convert_create_tam_event_threshold(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamEventThresholdResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamEventThreshold(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_event_threshold_id) { - *tam_event_threshold_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_tam_event_threshold(sai_object_id_t tam_event_threshold_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamEventThresholdRequest req; - lemming::dataplane::sai::RemoveTamEventThresholdResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_threshold_id); - - grpc::Status status = tam->RemoveTamEventThreshold(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_event_threshold_attribute(sai_object_id_t tam_event_threshold_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamEventThresholdAttributeRequest req; - lemming::dataplane::sai::SetTamEventThresholdAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_threshold_id); - - - - -switch (attr->id) { - - case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: - req.set_high_watermark(attr->value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: - req.set_low_watermark(attr->value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: - req.set_latency(attr->value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: - req.set_rate(attr->value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: - req.set_abs_value(attr->value.u32); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: - req.set_unit(convert_sai_tam_event_threshold_unit_t_to_proto(attr->value.s32)); - break; -} - - grpc::Status status = tam->SetTamEventThresholdAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_event_threshold_attribute(sai_object_id_t tam_event_threshold_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamEventThresholdAttributeRequest req; - lemming::dataplane::sai::GetTamEventThresholdAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_event_threshold_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_event_threshold_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamEventThresholdAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: - attr_list[i].value.u32 = resp.attr().high_watermark(); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: - attr_list[i].value.u32 = resp.attr().low_watermark(); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: - attr_list[i].value.u32 = resp.attr().latency(); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: - attr_list[i].value.u32 = resp.attr().rate(); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: - attr_list[i].value.u32 = resp.attr().abs_value(); - break; - case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: - attr_list[i].value.s32 = convert_sai_tam_event_threshold_unit_t_to_sai(resp.attr().unit()); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_int(sai_object_id_t *tam_int_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamIntRequest req = convert_create_tam_int(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamIntResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamInt(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_int_id) { - *tam_int_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamReportRequest req; + lemming::dataplane::sai::RemoveTamReportResponse resp; + grpc::ClientContext context; + req.set_oid(tam_report_id); + + grpc::Status status = tam->RemoveTamReport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_report_attribute(sai_object_id_t tam_report_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamReportAttributeRequest req; + lemming::dataplane::sai::SetTamReportAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_report_id); + + switch (attr->id) { + case SAI_TAM_REPORT_ATTR_TYPE: + req.set_type(convert_sai_tam_report_type_t_to_proto(attr->value.s32)); + break; + case SAI_TAM_REPORT_ATTR_QUOTA: + req.set_quota(attr->value.u32); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: + req.set_report_interval(attr->value.u32); + break; + case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: + req.set_enterprise_number(attr->value.u32); + break; + case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: + req.set_template_report_interval(attr->value.u32); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: + req.set_report_interval_unit( + convert_sai_tam_report_interval_unit_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = tam->SetTamReportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_report_attribute(sai_object_id_t tam_report_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamReportAttributeRequest req; + lemming::dataplane::sai::GetTamReportAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_report_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tam_report_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamReportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_REPORT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tam_report_type_t_to_sai(resp.attr().type()); + break; + case SAI_TAM_REPORT_ATTR_HISTOGRAM_NUMBER_OF_BINS: + attr_list[i].value.u32 = resp.attr().histogram_number_of_bins(); + break; + case SAI_TAM_REPORT_ATTR_HISTOGRAM_BIN_BOUNDARY: + copy_list(attr_list[i].value.u32list.list, + resp.attr().histogram_bin_boundary(), + &attr_list[i].value.u32list.count); + break; + case SAI_TAM_REPORT_ATTR_QUOTA: + attr_list[i].value.u32 = resp.attr().quota(); + break; + case SAI_TAM_REPORT_ATTR_REPORT_MODE: + attr_list[i].value.s32 = + convert_sai_tam_report_mode_t_to_sai(resp.attr().report_mode()); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL: + attr_list[i].value.u32 = resp.attr().report_interval(); + break; + case SAI_TAM_REPORT_ATTR_ENTERPRISE_NUMBER: + attr_list[i].value.u32 = resp.attr().enterprise_number(); + break; + case SAI_TAM_REPORT_ATTR_TEMPLATE_REPORT_INTERVAL: + attr_list[i].value.u32 = resp.attr().template_report_interval(); + break; + case SAI_TAM_REPORT_ATTR_REPORT_INTERVAL_UNIT: + attr_list[i].value.s32 = convert_sai_tam_report_interval_unit_t_to_sai( + resp.attr().report_interval_unit()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_event_threshold( + sai_object_id_t* tam_event_threshold_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamEventThresholdRequest req = + convert_create_tam_event_threshold(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamEventThresholdResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamEventThreshold(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_event_threshold_id) { + *tam_event_threshold_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_tam_event_threshold( + sai_object_id_t tam_event_threshold_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamEventThresholdRequest req; + lemming::dataplane::sai::RemoveTamEventThresholdResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_threshold_id); + + grpc::Status status = tam->RemoveTamEventThreshold(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_event_threshold_attribute( + sai_object_id_t tam_event_threshold_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamEventThresholdAttributeRequest req; + lemming::dataplane::sai::SetTamEventThresholdAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_threshold_id); + + switch (attr->id) { + case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: + req.set_high_watermark(attr->value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: + req.set_low_watermark(attr->value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: + req.set_latency(attr->value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: + req.set_rate(attr->value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: + req.set_abs_value(attr->value.u32); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: + req.set_unit( + convert_sai_tam_event_threshold_unit_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = + tam->SetTamEventThresholdAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_event_threshold_attribute( + sai_object_id_t tam_event_threshold_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamEventThresholdAttributeRequest req; + lemming::dataplane::sai::GetTamEventThresholdAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_event_threshold_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_event_threshold_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + tam->GetTamEventThresholdAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_THRESHOLD_ATTR_HIGH_WATERMARK: + attr_list[i].value.u32 = resp.attr().high_watermark(); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LOW_WATERMARK: + attr_list[i].value.u32 = resp.attr().low_watermark(); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_LATENCY: + attr_list[i].value.u32 = resp.attr().latency(); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_RATE: + attr_list[i].value.u32 = resp.attr().rate(); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_ABS_VALUE: + attr_list[i].value.u32 = resp.attr().abs_value(); + break; + case SAI_TAM_EVENT_THRESHOLD_ATTR_UNIT: + attr_list[i].value.s32 = + convert_sai_tam_event_threshold_unit_t_to_sai(resp.attr().unit()); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_int(sai_object_id_t* tam_int_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamIntRequest req = + convert_create_tam_int(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamIntResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamInt(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_int_id) { + *tam_int_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_int(sai_object_id_t tam_int_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamIntRequest req; - lemming::dataplane::sai::RemoveTamIntResponse resp; - grpc::ClientContext context; - req.set_oid(tam_int_id); - - grpc::Status status = tam->RemoveTamInt(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_int_attribute(sai_object_id_t tam_int_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamIntAttributeRequest req; - lemming::dataplane::sai::SetTamIntAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_int_id); - - - - -switch (attr->id) { - - case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: - req.set_ioam_trace_type(attr->value.u32); - break; - case SAI_TAM_INT_ATTR_TRACE_VECTOR: - req.set_trace_vector(attr->value.u16); - break; - case SAI_TAM_INT_ATTR_ACTION_VECTOR: - req.set_action_vector(attr->value.u16); - break; - case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: - req.set_p4_int_instruction_bitmap(attr->value.u16); - break; - case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: - req.set_metadata_fragment_enable(attr->value.booldata); - break; - case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: - req.set_metadata_checksum_enable(attr->value.booldata); - break; - case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: - req.set_report_all_packets(attr->value.booldata); - break; - case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: - req.set_flow_liveness_period(attr->value.u16); - break; - case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: - req.set_latency_sensitivity(attr->value.u8); - break; - case SAI_TAM_INT_ATTR_ACL_GROUP: - req.set_acl_group(attr->value.oid); - break; - case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: - req.set_max_hop_count(attr->value.u8); - break; - case SAI_TAM_INT_ATTR_MAX_LENGTH: - req.set_max_length(attr->value.u8); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID: - req.set_name_space_id(attr->value.u8); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: - req.set_name_space_id_global(attr->value.booldata); - break; - case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - req.set_ingress_samplepacket_enable(attr->value.oid); - break; - case SAI_TAM_INT_ATTR_COLLECTOR_LIST: - req.mutable_collector_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_TAM_INT_ATTR_MATH_FUNC: - req.set_math_func(attr->value.oid); - break; -} - - grpc::Status status = tam->SetTamIntAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_int_attribute(sai_object_id_t tam_int_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamIntAttributeRequest req; - lemming::dataplane::sai::GetTamIntAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_int_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_int_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamIntAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_INT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tam_int_type_t_to_sai(resp.attr().type()); - break; - case SAI_TAM_INT_ATTR_DEVICE_ID: - attr_list[i].value.u32 = resp.attr().device_id(); - break; - case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: - attr_list[i].value.u32 = resp.attr().ioam_trace_type(); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: - attr_list[i].value.s32 = convert_sai_tam_int_presence_type_t_to_sai(resp.attr().int_presence_type()); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: - attr_list[i].value.u32 = resp.attr().int_presence_pb1(); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: - attr_list[i].value.u32 = resp.attr().int_presence_pb2(); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: - attr_list[i].value.u8 = resp.attr().int_presence_dscp_value(); - break; - case SAI_TAM_INT_ATTR_INLINE: - attr_list[i].value.booldata = resp.attr().inline_(); - break; - case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: - attr_list[i].value.u8 = resp.attr().int_presence_l3_protocol(); - break; - case SAI_TAM_INT_ATTR_TRACE_VECTOR: - attr_list[i].value.u16 = resp.attr().trace_vector(); - break; - case SAI_TAM_INT_ATTR_ACTION_VECTOR: - attr_list[i].value.u16 = resp.attr().action_vector(); - break; - case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: - attr_list[i].value.u16 = resp.attr().p4_int_instruction_bitmap(); - break; - case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: - attr_list[i].value.booldata = resp.attr().metadata_fragment_enable(); - break; - case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: - attr_list[i].value.booldata = resp.attr().metadata_checksum_enable(); - break; - case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: - attr_list[i].value.booldata = resp.attr().report_all_packets(); - break; - case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: - attr_list[i].value.u16 = resp.attr().flow_liveness_period(); - break; - case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: - attr_list[i].value.u8 = resp.attr().latency_sensitivity(); - break; - case SAI_TAM_INT_ATTR_ACL_GROUP: - attr_list[i].value.oid = resp.attr().acl_group(); - break; - case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: - attr_list[i].value.u8 = resp.attr().max_hop_count(); - break; - case SAI_TAM_INT_ATTR_MAX_LENGTH: - attr_list[i].value.u8 = resp.attr().max_length(); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID: - attr_list[i].value.u8 = resp.attr().name_space_id(); - break; - case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: - attr_list[i].value.booldata = resp.attr().name_space_id_global(); - break; - case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: - attr_list[i].value.oid = resp.attr().ingress_samplepacket_enable(); - break; - case SAI_TAM_INT_ATTR_COLLECTOR_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_INT_ATTR_MATH_FUNC: - attr_list[i].value.oid = resp.attr().math_func(); - break; - case SAI_TAM_INT_ATTR_REPORT_ID: - attr_list[i].value.oid = resp.attr().report_id(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_tel_type(sai_object_id_t *tam_tel_type_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamTelTypeRequest req = convert_create_tam_tel_type(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamTelTypeResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamTelType(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_tel_type_id) { - *tam_tel_type_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamIntRequest req; + lemming::dataplane::sai::RemoveTamIntResponse resp; + grpc::ClientContext context; + req.set_oid(tam_int_id); + + grpc::Status status = tam->RemoveTamInt(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_int_attribute(sai_object_id_t tam_int_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamIntAttributeRequest req; + lemming::dataplane::sai::SetTamIntAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_int_id); + + switch (attr->id) { + case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: + req.set_ioam_trace_type(attr->value.u32); + break; + case SAI_TAM_INT_ATTR_TRACE_VECTOR: + req.set_trace_vector(attr->value.u16); + break; + case SAI_TAM_INT_ATTR_ACTION_VECTOR: + req.set_action_vector(attr->value.u16); + break; + case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: + req.set_p4_int_instruction_bitmap(attr->value.u16); + break; + case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: + req.set_metadata_fragment_enable(attr->value.booldata); + break; + case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: + req.set_metadata_checksum_enable(attr->value.booldata); + break; + case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: + req.set_report_all_packets(attr->value.booldata); + break; + case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: + req.set_flow_liveness_period(attr->value.u16); + break; + case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: + req.set_latency_sensitivity(attr->value.u8); + break; + case SAI_TAM_INT_ATTR_ACL_GROUP: + req.set_acl_group(attr->value.oid); + break; + case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: + req.set_max_hop_count(attr->value.u8); + break; + case SAI_TAM_INT_ATTR_MAX_LENGTH: + req.set_max_length(attr->value.u8); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID: + req.set_name_space_id(attr->value.u8); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: + req.set_name_space_id_global(attr->value.booldata); + break; + case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + req.set_ingress_samplepacket_enable(attr->value.oid); + break; + case SAI_TAM_INT_ATTR_COLLECTOR_LIST: + req.mutable_collector_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_TAM_INT_ATTR_MATH_FUNC: + req.set_math_func(attr->value.oid); + break; + } + + grpc::Status status = tam->SetTamIntAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_int_attribute(sai_object_id_t tam_int_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamIntAttributeRequest req; + lemming::dataplane::sai::GetTamIntAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_int_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tam_int_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamIntAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_INT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tam_int_type_t_to_sai(resp.attr().type()); + break; + case SAI_TAM_INT_ATTR_DEVICE_ID: + attr_list[i].value.u32 = resp.attr().device_id(); + break; + case SAI_TAM_INT_ATTR_IOAM_TRACE_TYPE: + attr_list[i].value.u32 = resp.attr().ioam_trace_type(); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_TYPE: + attr_list[i].value.s32 = convert_sai_tam_int_presence_type_t_to_sai( + resp.attr().int_presence_type()); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB1: + attr_list[i].value.u32 = resp.attr().int_presence_pb1(); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_PB2: + attr_list[i].value.u32 = resp.attr().int_presence_pb2(); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_DSCP_VALUE: + attr_list[i].value.u8 = resp.attr().int_presence_dscp_value(); + break; + case SAI_TAM_INT_ATTR_INLINE: + attr_list[i].value.booldata = resp.attr().inline_(); + break; + case SAI_TAM_INT_ATTR_INT_PRESENCE_L3_PROTOCOL: + attr_list[i].value.u8 = resp.attr().int_presence_l3_protocol(); + break; + case SAI_TAM_INT_ATTR_TRACE_VECTOR: + attr_list[i].value.u16 = resp.attr().trace_vector(); + break; + case SAI_TAM_INT_ATTR_ACTION_VECTOR: + attr_list[i].value.u16 = resp.attr().action_vector(); + break; + case SAI_TAM_INT_ATTR_P4_INT_INSTRUCTION_BITMAP: + attr_list[i].value.u16 = resp.attr().p4_int_instruction_bitmap(); + break; + case SAI_TAM_INT_ATTR_METADATA_FRAGMENT_ENABLE: + attr_list[i].value.booldata = resp.attr().metadata_fragment_enable(); + break; + case SAI_TAM_INT_ATTR_METADATA_CHECKSUM_ENABLE: + attr_list[i].value.booldata = resp.attr().metadata_checksum_enable(); + break; + case SAI_TAM_INT_ATTR_REPORT_ALL_PACKETS: + attr_list[i].value.booldata = resp.attr().report_all_packets(); + break; + case SAI_TAM_INT_ATTR_FLOW_LIVENESS_PERIOD: + attr_list[i].value.u16 = resp.attr().flow_liveness_period(); + break; + case SAI_TAM_INT_ATTR_LATENCY_SENSITIVITY: + attr_list[i].value.u8 = resp.attr().latency_sensitivity(); + break; + case SAI_TAM_INT_ATTR_ACL_GROUP: + attr_list[i].value.oid = resp.attr().acl_group(); + break; + case SAI_TAM_INT_ATTR_MAX_HOP_COUNT: + attr_list[i].value.u8 = resp.attr().max_hop_count(); + break; + case SAI_TAM_INT_ATTR_MAX_LENGTH: + attr_list[i].value.u8 = resp.attr().max_length(); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID: + attr_list[i].value.u8 = resp.attr().name_space_id(); + break; + case SAI_TAM_INT_ATTR_NAME_SPACE_ID_GLOBAL: + attr_list[i].value.booldata = resp.attr().name_space_id_global(); + break; + case SAI_TAM_INT_ATTR_INGRESS_SAMPLEPACKET_ENABLE: + attr_list[i].value.oid = resp.attr().ingress_samplepacket_enable(); + break; + case SAI_TAM_INT_ATTR_COLLECTOR_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_INT_ATTR_MATH_FUNC: + attr_list[i].value.oid = resp.attr().math_func(); + break; + case SAI_TAM_INT_ATTR_REPORT_ID: + attr_list[i].value.oid = resp.attr().report_id(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_tel_type(sai_object_id_t* tam_tel_type_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamTelTypeRequest req = + convert_create_tam_tel_type(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamTelTypeResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamTelType(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_tel_type_id) { + *tam_tel_type_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_tel_type(sai_object_id_t tam_tel_type_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamTelTypeRequest req; - lemming::dataplane::sai::RemoveTamTelTypeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_tel_type_id); - - grpc::Status status = tam->RemoveTamTelType(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamTelTypeAttributeRequest req; - lemming::dataplane::sai::SetTamTelTypeAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_tel_type_id); - - - - -switch (attr->id) { - - case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: - req.set_int_switch_identifier(attr->value.u32); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: - req.set_switch_enable_port_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: - req.set_switch_enable_port_stats_ingress(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: - req.set_switch_enable_port_stats_egress(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: - req.set_switch_enable_virtual_queue_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: - req.set_switch_enable_output_queue_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: - req.set_switch_enable_mmu_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: - req.set_switch_enable_fabric_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: - req.set_switch_enable_filter_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: - req.set_switch_enable_resource_utilization_stats(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: - req.set_fabric_q(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: - req.set_ne_enable(attr->value.booldata); - break; - case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: - req.set_dscp_value(attr->value.u8); - break; - case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: - req.set_math_func(attr->value.oid); - break; -} - - grpc::Status status = tam->SetTamTelTypeAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamTelTypeAttributeRequest req; - lemming::dataplane::sai::GetTamTelTypeAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_tel_type_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_tel_type_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamTelTypeAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: - attr_list[i].value.s32 = convert_sai_tam_telemetry_type_t_to_sai(resp.attr().tam_telemetry_type()); - break; - case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: - attr_list[i].value.u32 = resp.attr().int_switch_identifier(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_port_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: - attr_list[i].value.booldata = resp.attr().switch_enable_port_stats_ingress(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: - attr_list[i].value.booldata = resp.attr().switch_enable_port_stats_egress(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_virtual_queue_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_output_queue_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_mmu_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_fabric_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_filter_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: - attr_list[i].value.booldata = resp.attr().switch_enable_resource_utilization_stats(); - break; - case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: - attr_list[i].value.booldata = resp.attr().fabric_q(); - break; - case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: - attr_list[i].value.booldata = resp.attr().ne_enable(); - break; - case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: - attr_list[i].value.u8 = resp.attr().dscp_value(); - break; - case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: - attr_list[i].value.oid = resp.attr().math_func(); - break; - case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: - attr_list[i].value.oid = resp.attr().report_id(); - break; - case SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().counter_subscription_list(), &attr_list[i].value.objlist.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_transport(sai_object_id_t *tam_transport_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamTransportRequest req = convert_create_tam_transport(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamTransportResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamTransport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_transport_id) { - *tam_transport_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamTelTypeRequest req; + lemming::dataplane::sai::RemoveTamTelTypeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_tel_type_id); + + grpc::Status status = tam->RemoveTamTelType(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamTelTypeAttributeRequest req; + lemming::dataplane::sai::SetTamTelTypeAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_tel_type_id); + + switch (attr->id) { + case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: + req.set_int_switch_identifier(attr->value.u32); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: + req.set_switch_enable_port_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: + req.set_switch_enable_port_stats_ingress(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: + req.set_switch_enable_port_stats_egress(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: + req.set_switch_enable_virtual_queue_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: + req.set_switch_enable_output_queue_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: + req.set_switch_enable_mmu_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: + req.set_switch_enable_fabric_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: + req.set_switch_enable_filter_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: + req.set_switch_enable_resource_utilization_stats(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: + req.set_fabric_q(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: + req.set_ne_enable(attr->value.booldata); + break; + case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: + req.set_dscp_value(attr->value.u8); + break; + case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: + req.set_math_func(attr->value.oid); + break; + } + + grpc::Status status = tam->SetTamTelTypeAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamTelTypeAttributeRequest req; + lemming::dataplane::sai::GetTamTelTypeAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_tel_type_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_tel_type_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamTelTypeAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TEL_TYPE_ATTR_TAM_TELEMETRY_TYPE: + attr_list[i].value.s32 = convert_sai_tam_telemetry_type_t_to_sai( + resp.attr().tam_telemetry_type()); + break; + case SAI_TAM_TEL_TYPE_ATTR_INT_SWITCH_IDENTIFIER: + attr_list[i].value.u32 = resp.attr().int_switch_identifier(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS: + attr_list[i].value.booldata = resp.attr().switch_enable_port_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_INGRESS: + attr_list[i].value.booldata = + resp.attr().switch_enable_port_stats_ingress(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_PORT_STATS_EGRESS: + attr_list[i].value.booldata = + resp.attr().switch_enable_port_stats_egress(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_VIRTUAL_QUEUE_STATS: + attr_list[i].value.booldata = + resp.attr().switch_enable_virtual_queue_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_OUTPUT_QUEUE_STATS: + attr_list[i].value.booldata = + resp.attr().switch_enable_output_queue_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_MMU_STATS: + attr_list[i].value.booldata = resp.attr().switch_enable_mmu_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FABRIC_STATS: + attr_list[i].value.booldata = resp.attr().switch_enable_fabric_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_FILTER_STATS: + attr_list[i].value.booldata = resp.attr().switch_enable_filter_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_SWITCH_ENABLE_RESOURCE_UTILIZATION_STATS: + attr_list[i].value.booldata = + resp.attr().switch_enable_resource_utilization_stats(); + break; + case SAI_TAM_TEL_TYPE_ATTR_FABRIC_Q: + attr_list[i].value.booldata = resp.attr().fabric_q(); + break; + case SAI_TAM_TEL_TYPE_ATTR_NE_ENABLE: + attr_list[i].value.booldata = resp.attr().ne_enable(); + break; + case SAI_TAM_TEL_TYPE_ATTR_DSCP_VALUE: + attr_list[i].value.u8 = resp.attr().dscp_value(); + break; + case SAI_TAM_TEL_TYPE_ATTR_MATH_FUNC: + attr_list[i].value.oid = resp.attr().math_func(); + break; + case SAI_TAM_TEL_TYPE_ATTR_REPORT_ID: + attr_list[i].value.oid = resp.attr().report_id(); + break; + case SAI_TAM_TEL_TYPE_ATTR_COUNTER_SUBSCRIPTION_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().counter_subscription_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_transport(sai_object_id_t* tam_transport_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamTransportRequest req = + convert_create_tam_transport(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamTransportResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamTransport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_transport_id) { + *tam_transport_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_transport(sai_object_id_t tam_transport_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamTransportRequest req; - lemming::dataplane::sai::RemoveTamTransportResponse resp; - grpc::ClientContext context; - req.set_oid(tam_transport_id); - - grpc::Status status = tam->RemoveTamTransport(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_transport_attribute(sai_object_id_t tam_transport_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamTransportAttributeRequest req; - lemming::dataplane::sai::SetTamTransportAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_transport_id); - - - - -switch (attr->id) { - - case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: - req.set_src_port(attr->value.u32); - break; - case SAI_TAM_TRANSPORT_ATTR_DST_PORT: - req.set_dst_port(attr->value.u32); - break; - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: - req.set_transport_auth_type(convert_sai_tam_transport_auth_type_t_to_proto(attr->value.s32)); - break; - case SAI_TAM_TRANSPORT_ATTR_MTU: - req.set_mtu(attr->value.u32); - break; -} - - grpc::Status status = tam->SetTamTransportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_transport_attribute(sai_object_id_t tam_transport_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamTransportAttributeRequest req; - lemming::dataplane::sai::GetTamTransportAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_transport_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_transport_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamTransportAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: - attr_list[i].value.s32 = convert_sai_tam_transport_type_t_to_sai(resp.attr().transport_type()); - break; - case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: - attr_list[i].value.u32 = resp.attr().src_port(); - break; - case SAI_TAM_TRANSPORT_ATTR_DST_PORT: - attr_list[i].value.u32 = resp.attr().dst_port(); - break; - case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: - attr_list[i].value.s32 = convert_sai_tam_transport_auth_type_t_to_sai(resp.attr().transport_auth_type()); - break; - case SAI_TAM_TRANSPORT_ATTR_MTU: - attr_list[i].value.u32 = resp.attr().mtu(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_telemetry(sai_object_id_t *tam_telemetry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamTelemetryRequest req = convert_create_tam_telemetry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamTelemetryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamTelemetry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_telemetry_id) { - *tam_telemetry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamTransportRequest req; + lemming::dataplane::sai::RemoveTamTransportResponse resp; + grpc::ClientContext context; + req.set_oid(tam_transport_id); + + grpc::Status status = tam->RemoveTamTransport(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_transport_attribute(sai_object_id_t tam_transport_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamTransportAttributeRequest req; + lemming::dataplane::sai::SetTamTransportAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_transport_id); + + switch (attr->id) { + case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: + req.set_src_port(attr->value.u32); + break; + case SAI_TAM_TRANSPORT_ATTR_DST_PORT: + req.set_dst_port(attr->value.u32); + break; + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: + req.set_transport_auth_type( + convert_sai_tam_transport_auth_type_t_to_proto(attr->value.s32)); + break; + case SAI_TAM_TRANSPORT_ATTR_MTU: + req.set_mtu(attr->value.u32); + break; + } + + grpc::Status status = tam->SetTamTransportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_transport_attribute(sai_object_id_t tam_transport_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamTransportAttributeRequest req; + lemming::dataplane::sai::GetTamTransportAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_transport_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_transport_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamTransportAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_TYPE: + attr_list[i].value.s32 = convert_sai_tam_transport_type_t_to_sai( + resp.attr().transport_type()); + break; + case SAI_TAM_TRANSPORT_ATTR_SRC_PORT: + attr_list[i].value.u32 = resp.attr().src_port(); + break; + case SAI_TAM_TRANSPORT_ATTR_DST_PORT: + attr_list[i].value.u32 = resp.attr().dst_port(); + break; + case SAI_TAM_TRANSPORT_ATTR_TRANSPORT_AUTH_TYPE: + attr_list[i].value.s32 = convert_sai_tam_transport_auth_type_t_to_sai( + resp.attr().transport_auth_type()); + break; + case SAI_TAM_TRANSPORT_ATTR_MTU: + attr_list[i].value.u32 = resp.attr().mtu(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_telemetry(sai_object_id_t* tam_telemetry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamTelemetryRequest req = + convert_create_tam_telemetry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamTelemetryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamTelemetry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_telemetry_id) { + *tam_telemetry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_telemetry(sai_object_id_t tam_telemetry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamTelemetryRequest req; - lemming::dataplane::sai::RemoveTamTelemetryResponse resp; - grpc::ClientContext context; - req.set_oid(tam_telemetry_id); - - grpc::Status status = tam->RemoveTamTelemetry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamTelemetryAttributeRequest req; - lemming::dataplane::sai::SetTamTelemetryAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_telemetry_id); - - - - -switch (attr->id) { - - case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: - req.mutable_tam_type_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: - req.set_tam_reporting_unit(convert_sai_tam_reporting_unit_t_to_proto(attr->value.s32)); - break; - case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: - req.set_reporting_interval(attr->value.u32); - break; -} - - grpc::Status status = tam->SetTamTelemetryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamTelemetryAttributeRequest req; - lemming::dataplane::sai::GetTamTelemetryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_telemetry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_telemetry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamTelemetryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam_type_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: - attr_list[i].value.s32 = convert_sai_tam_reporting_unit_t_to_sai(resp.attr().tam_reporting_unit()); - break; - case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: - attr_list[i].value.u32 = resp.attr().reporting_interval(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_collector(sai_object_id_t *tam_collector_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamCollectorRequest req = convert_create_tam_collector(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamCollectorResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamCollector(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_collector_id) { - *tam_collector_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamTelemetryRequest req; + lemming::dataplane::sai::RemoveTamTelemetryResponse resp; + grpc::ClientContext context; + req.set_oid(tam_telemetry_id); + + grpc::Status status = tam->RemoveTamTelemetry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamTelemetryAttributeRequest req; + lemming::dataplane::sai::SetTamTelemetryAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_telemetry_id); + + switch (attr->id) { + case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: + req.mutable_tam_type_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: + req.set_tam_reporting_unit( + convert_sai_tam_reporting_unit_t_to_proto(attr->value.s32)); + break; + case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: + req.set_reporting_interval(attr->value.u32); + break; + } + + grpc::Status status = tam->SetTamTelemetryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamTelemetryAttributeRequest req; + lemming::dataplane::sai::GetTamTelemetryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_telemetry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_telemetry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamTelemetryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_TELEMETRY_ATTR_TAM_TYPE_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam_type_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_TELEMETRY_ATTR_COLLECTOR_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_TELEMETRY_ATTR_TAM_REPORTING_UNIT: + attr_list[i].value.s32 = convert_sai_tam_reporting_unit_t_to_sai( + resp.attr().tam_reporting_unit()); + break; + case SAI_TAM_TELEMETRY_ATTR_REPORTING_INTERVAL: + attr_list[i].value.u32 = resp.attr().reporting_interval(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_collector(sai_object_id_t* tam_collector_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamCollectorRequest req = + convert_create_tam_collector(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamCollectorResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamCollector(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_collector_id) { + *tam_collector_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_collector(sai_object_id_t tam_collector_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamCollectorRequest req; - lemming::dataplane::sai::RemoveTamCollectorResponse resp; - grpc::ClientContext context; - req.set_oid(tam_collector_id); - - grpc::Status status = tam->RemoveTamCollector(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_collector_attribute(sai_object_id_t tam_collector_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamCollectorAttributeRequest req; - lemming::dataplane::sai::SetTamCollectorAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_collector_id); - - - - -switch (attr->id) { - - case SAI_TAM_COLLECTOR_ATTR_SRC_IP: - req.set_src_ip(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_TAM_COLLECTOR_ATTR_DST_IP: - req.set_dst_ip(convert_from_ip_address(attr->value.ipaddr)); - break; - case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: - req.set_localhost(attr->value.booldata); - break; - case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: - req.set_virtual_router_id(attr->value.oid); - break; - case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: - req.set_truncate_size(attr->value.u16); - break; - case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: - req.set_transport(attr->value.oid); - break; - case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: - req.set_dscp_value(attr->value.u8); - break; - case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: - req.set_hostif_trap(attr->value.oid); - break; -} - - grpc::Status status = tam->SetTamCollectorAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_collector_attribute(sai_object_id_t tam_collector_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamCollectorAttributeRequest req; - lemming::dataplane::sai::GetTamCollectorAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_collector_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_collector_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamCollectorAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_COLLECTOR_ATTR_SRC_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); - break; - case SAI_TAM_COLLECTOR_ATTR_DST_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip()); - break; - case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: - attr_list[i].value.booldata = resp.attr().localhost(); - break; - case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: - attr_list[i].value.oid = resp.attr().virtual_router_id(); - break; - case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: - attr_list[i].value.u16 = resp.attr().truncate_size(); - break; - case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: - attr_list[i].value.oid = resp.attr().transport(); - break; - case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: - attr_list[i].value.u8 = resp.attr().dscp_value(); - break; - case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: - attr_list[i].value.oid = resp.attr().hostif_trap(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_event_action(sai_object_id_t *tam_event_action_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamEventActionRequest req = convert_create_tam_event_action(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamEventActionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamEventAction(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_event_action_id) { - *tam_event_action_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamCollectorRequest req; + lemming::dataplane::sai::RemoveTamCollectorResponse resp; + grpc::ClientContext context; + req.set_oid(tam_collector_id); + + grpc::Status status = tam->RemoveTamCollector(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_collector_attribute(sai_object_id_t tam_collector_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamCollectorAttributeRequest req; + lemming::dataplane::sai::SetTamCollectorAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_collector_id); + + switch (attr->id) { + case SAI_TAM_COLLECTOR_ATTR_SRC_IP: + req.set_src_ip(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_TAM_COLLECTOR_ATTR_DST_IP: + req.set_dst_ip(convert_from_ip_address(attr->value.ipaddr)); + break; + case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: + req.set_localhost(attr->value.booldata); + break; + case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: + req.set_virtual_router_id(attr->value.oid); + break; + case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: + req.set_truncate_size(attr->value.u16); + break; + case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: + req.set_transport(attr->value.oid); + break; + case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: + req.set_dscp_value(attr->value.u8); + break; + case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: + req.set_hostif_trap(attr->value.oid); + break; + } + + grpc::Status status = tam->SetTamCollectorAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_collector_attribute(sai_object_id_t tam_collector_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamCollectorAttributeRequest req; + lemming::dataplane::sai::GetTamCollectorAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_collector_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_collector_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamCollectorAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_COLLECTOR_ATTR_SRC_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); + break; + case SAI_TAM_COLLECTOR_ATTR_DST_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip()); + break; + case SAI_TAM_COLLECTOR_ATTR_LOCALHOST: + attr_list[i].value.booldata = resp.attr().localhost(); + break; + case SAI_TAM_COLLECTOR_ATTR_VIRTUAL_ROUTER_ID: + attr_list[i].value.oid = resp.attr().virtual_router_id(); + break; + case SAI_TAM_COLLECTOR_ATTR_TRUNCATE_SIZE: + attr_list[i].value.u16 = resp.attr().truncate_size(); + break; + case SAI_TAM_COLLECTOR_ATTR_TRANSPORT: + attr_list[i].value.oid = resp.attr().transport(); + break; + case SAI_TAM_COLLECTOR_ATTR_DSCP_VALUE: + attr_list[i].value.u8 = resp.attr().dscp_value(); + break; + case SAI_TAM_COLLECTOR_ATTR_HOSTIF_TRAP: + attr_list[i].value.oid = resp.attr().hostif_trap(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_event_action(sai_object_id_t* tam_event_action_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamEventActionRequest req = + convert_create_tam_event_action(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamEventActionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamEventAction(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_event_action_id) { + *tam_event_action_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_event_action(sai_object_id_t tam_event_action_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamEventActionRequest req; - lemming::dataplane::sai::RemoveTamEventActionResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_action_id); - - grpc::Status status = tam->RemoveTamEventAction(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_event_action_attribute(sai_object_id_t tam_event_action_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamEventActionAttributeRequest req; - lemming::dataplane::sai::SetTamEventActionAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_action_id); - - - - -switch (attr->id) { - - case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: - req.set_report_type(attr->value.oid); - break; - case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: - req.set_qos_action_type(attr->value.u32); - break; -} - - grpc::Status status = tam->SetTamEventActionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_event_action_attribute(sai_object_id_t tam_event_action_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamEventActionAttributeRequest req; - lemming::dataplane::sai::GetTamEventActionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_event_action_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_event_action_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamEventActionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: - attr_list[i].value.oid = resp.attr().report_type(); - break; - case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: - attr_list[i].value.u32 = resp.attr().qos_action_type(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_event(sai_object_id_t *tam_event_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamEventRequest req = convert_create_tam_event(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamEventResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamEvent(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_event_id) { - *tam_event_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamEventActionRequest req; + lemming::dataplane::sai::RemoveTamEventActionResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_action_id); + + grpc::Status status = tam->RemoveTamEventAction(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_event_action_attribute( + sai_object_id_t tam_event_action_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamEventActionAttributeRequest req; + lemming::dataplane::sai::SetTamEventActionAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_action_id); + + switch (attr->id) { + case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: + req.set_report_type(attr->value.oid); + break; + case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: + req.set_qos_action_type(attr->value.u32); + break; + } + + grpc::Status status = tam->SetTamEventActionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_event_action_attribute( + sai_object_id_t tam_event_action_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamEventActionAttributeRequest req; + lemming::dataplane::sai::GetTamEventActionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_event_action_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_event_action_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamEventActionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_ACTION_ATTR_REPORT_TYPE: + attr_list[i].value.oid = resp.attr().report_type(); + break; + case SAI_TAM_EVENT_ACTION_ATTR_QOS_ACTION_TYPE: + attr_list[i].value.u32 = resp.attr().qos_action_type(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_event(sai_object_id_t* tam_event_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamEventRequest req = + convert_create_tam_event(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamEventResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamEvent(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_event_id) { + *tam_event_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tam_event(sai_object_id_t tam_event_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamEventRequest req; - lemming::dataplane::sai::RemoveTamEventResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_id); - - grpc::Status status = tam->RemoveTamEvent(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamEventRequest req; + lemming::dataplane::sai::RemoveTamEventResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_id); + + grpc::Status status = tam->RemoveTamEvent(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_event_attribute(sai_object_id_t tam_event_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTamEventAttributeRequest req; + lemming::dataplane::sai::SetTamEventAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tam_event_id); + + switch (attr->id) { + case SAI_TAM_EVENT_ATTR_THRESHOLD: + req.set_threshold(attr->value.oid); + break; + case SAI_TAM_EVENT_ATTR_DSCP_VALUE: + req.set_dscp_value(attr->value.u8); + break; + } + + grpc::Status status = tam->SetTamEventAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_event_attribute(sai_object_id_t tam_event_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamEventAttributeRequest req; + lemming::dataplane::sai::GetTamEventAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_event_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tam_event_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tam->GetTamEventAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_EVENT_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tam_event_type_t_to_sai(resp.attr().type()); + break; + case SAI_TAM_EVENT_ATTR_ACTION_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().action_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TAM_EVENT_ATTR_THRESHOLD: + attr_list[i].value.oid = resp.attr().threshold(); + break; + case SAI_TAM_EVENT_ATTR_DSCP_VALUE: + attr_list[i].value.u8 = resp.attr().dscp_value(); + break; + } + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_create_tam_counter_subscription( + sai_object_id_t* tam_counter_subscription_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTamCounterSubscriptionRequest req = + convert_create_tam_counter_subscription(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTamCounterSubscriptionResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tam->CreateTamCounterSubscription(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tam_counter_subscription_id) { + *tam_counter_subscription_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_remove_tam_counter_subscription( + sai_object_id_t tam_counter_subscription_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTamCounterSubscriptionRequest req; + lemming::dataplane::sai::RemoveTamCounterSubscriptionResponse resp; + grpc::ClientContext context; + req.set_oid(tam_counter_subscription_id); + + grpc::Status status = tam->RemoveTamCounterSubscription(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_set_tam_counter_subscription_attribute( + sai_object_id_t tam_counter_subscription_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + return SAI_STATUS_SUCCESS; +} + +sai_status_t l_get_tam_counter_subscription_attribute( + sai_object_id_t tam_counter_subscription_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTamCounterSubscriptionAttributeRequest req; + lemming::dataplane::sai::GetTamCounterSubscriptionAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tam_counter_subscription_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tam_counter_subscription_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + tam->GetTamCounterSubscriptionAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: + attr_list[i].value.oid = resp.attr().tel_type(); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: + attr_list[i].value.oid = resp.attr().object_id(); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: + attr_list[i].value.u32 = resp.attr().stat_id(); + break; + case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: + attr_list[i].value.u64 = resp.attr().label(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - -sai_status_t l_set_tam_event_attribute(sai_object_id_t tam_event_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTamEventAttributeRequest req; - lemming::dataplane::sai::SetTamEventAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tam_event_id); - - - - -switch (attr->id) { - - case SAI_TAM_EVENT_ATTR_THRESHOLD: - req.set_threshold(attr->value.oid); - break; - case SAI_TAM_EVENT_ATTR_DSCP_VALUE: - req.set_dscp_value(attr->value.u8); - break; -} - - grpc::Status status = tam->SetTamEventAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_event_attribute(sai_object_id_t tam_event_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamEventAttributeRequest req; - lemming::dataplane::sai::GetTamEventAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_event_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_event_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamEventAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_EVENT_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tam_event_type_t_to_sai(resp.attr().type()); - break; - case SAI_TAM_EVENT_ATTR_ACTION_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().action_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_EVENT_ATTR_COLLECTOR_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().collector_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TAM_EVENT_ATTR_THRESHOLD: - attr_list[i].value.oid = resp.attr().threshold(); - break; - case SAI_TAM_EVENT_ATTR_DSCP_VALUE: - attr_list[i].value.u8 = resp.attr().dscp_value(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_tam_counter_subscription(sai_object_id_t *tam_counter_subscription_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTamCounterSubscriptionRequest req = convert_create_tam_counter_subscription(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTamCounterSubscriptionResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tam->CreateTamCounterSubscription(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tam_counter_subscription_id) { - *tam_counter_subscription_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_remove_tam_counter_subscription(sai_object_id_t tam_counter_subscription_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTamCounterSubscriptionRequest req; - lemming::dataplane::sai::RemoveTamCounterSubscriptionResponse resp; - grpc::ClientContext context; - req.set_oid(tam_counter_subscription_id); - - grpc::Status status = tam->RemoveTamCounterSubscription(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_tam_counter_subscription_attribute(sai_object_id_t tam_counter_subscription_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tam_counter_subscription_attribute(sai_object_id_t tam_counter_subscription_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTamCounterSubscriptionAttributeRequest req; - lemming::dataplane::sai::GetTamCounterSubscriptionAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tam_counter_subscription_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tam_counter_subscription_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tam->GetTamCounterSubscriptionAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_TEL_TYPE: - attr_list[i].value.oid = resp.attr().tel_type(); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_OBJECT_ID: - attr_list[i].value.oid = resp.attr().object_id(); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_STAT_ID: - attr_list[i].value.u32 = resp.attr().stat_id(); - break; - case SAI_TAM_COUNTER_SUBSCRIPTION_ATTR_LABEL: - attr_list[i].value.u64 = resp.attr().label(); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - diff --git a/dataplane/standalone/sai/tam.h b/dataplane/standalone/sai/tam.h index 2638e3be1..3e90ab2e8 100644 --- a/dataplane/standalone/sai/tam.h +++ b/dataplane/standalone/sai/tam.h @@ -25,102 +25,167 @@ extern "C" { extern const sai_tam_api_t l_tam; - -sai_status_t l_create_tam(sai_object_id_t *tam_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam(sai_object_id_t* tam_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam(sai_object_id_t tam_id); -sai_status_t l_set_tam_attribute(sai_object_id_t tam_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_attribute(sai_object_id_t tam_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_attribute(sai_object_id_t tam_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_attribute(sai_object_id_t tam_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_math_func(sai_object_id_t *tam_math_func_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_math_func(sai_object_id_t* tam_math_func_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_math_func(sai_object_id_t tam_math_func_id); -sai_status_t l_set_tam_math_func_attribute(sai_object_id_t tam_math_func_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_math_func_attribute(sai_object_id_t tam_math_func_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_math_func_attribute(sai_object_id_t tam_math_func_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_math_func_attribute(sai_object_id_t tam_math_func_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_report(sai_object_id_t *tam_report_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_report(sai_object_id_t* tam_report_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_report(sai_object_id_t tam_report_id); -sai_status_t l_set_tam_report_attribute(sai_object_id_t tam_report_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_report_attribute(sai_object_id_t tam_report_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_report_attribute(sai_object_id_t tam_report_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_report_attribute(sai_object_id_t tam_report_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_event_threshold(sai_object_id_t *tam_event_threshold_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_event_threshold( + sai_object_id_t* tam_event_threshold_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_remove_tam_event_threshold(sai_object_id_t tam_event_threshold_id); +sai_status_t l_remove_tam_event_threshold( + sai_object_id_t tam_event_threshold_id); -sai_status_t l_set_tam_event_threshold_attribute(sai_object_id_t tam_event_threshold_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_event_threshold_attribute( + sai_object_id_t tam_event_threshold_id, const sai_attribute_t* attr); -sai_status_t l_get_tam_event_threshold_attribute(sai_object_id_t tam_event_threshold_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_event_threshold_attribute( + sai_object_id_t tam_event_threshold_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_int(sai_object_id_t *tam_int_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_int(sai_object_id_t* tam_int_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_int(sai_object_id_t tam_int_id); -sai_status_t l_set_tam_int_attribute(sai_object_id_t tam_int_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_int_attribute(sai_object_id_t tam_int_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_int_attribute(sai_object_id_t tam_int_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_int_attribute(sai_object_id_t tam_int_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_tel_type(sai_object_id_t *tam_tel_type_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_tel_type(sai_object_id_t* tam_tel_type_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_tel_type(sai_object_id_t tam_tel_type_id); -sai_status_t l_set_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_tel_type_attribute(sai_object_id_t tam_tel_type_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_transport(sai_object_id_t *tam_transport_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_transport(sai_object_id_t* tam_transport_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_transport(sai_object_id_t tam_transport_id); -sai_status_t l_set_tam_transport_attribute(sai_object_id_t tam_transport_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_transport_attribute(sai_object_id_t tam_transport_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_transport_attribute(sai_object_id_t tam_transport_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_transport_attribute(sai_object_id_t tam_transport_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_telemetry(sai_object_id_t *tam_telemetry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_telemetry(sai_object_id_t* tam_telemetry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_telemetry(sai_object_id_t tam_telemetry_id); -sai_status_t l_set_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_telemetry_attribute(sai_object_id_t tam_telemetry_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_collector(sai_object_id_t *tam_collector_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_collector(sai_object_id_t* tam_collector_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_collector(sai_object_id_t tam_collector_id); -sai_status_t l_set_tam_collector_attribute(sai_object_id_t tam_collector_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_collector_attribute(sai_object_id_t tam_collector_id, + const sai_attribute_t* attr); -sai_status_t l_get_tam_collector_attribute(sai_object_id_t tam_collector_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_collector_attribute(sai_object_id_t tam_collector_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_event_action(sai_object_id_t *tam_event_action_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_event_action(sai_object_id_t* tam_event_action_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_event_action(sai_object_id_t tam_event_action_id); -sai_status_t l_set_tam_event_action_attribute(sai_object_id_t tam_event_action_id, const sai_attribute_t *attr); +sai_status_t l_set_tam_event_action_attribute( + sai_object_id_t tam_event_action_id, const sai_attribute_t* attr); -sai_status_t l_get_tam_event_action_attribute(sai_object_id_t tam_event_action_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tam_event_action_attribute( + sai_object_id_t tam_event_action_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tam_event(sai_object_id_t *tam_event_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tam_event(sai_object_id_t* tam_event_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tam_event(sai_object_id_t tam_event_id); -sai_status_t l_set_tam_event_attribute(sai_object_id_t tam_event_id, const sai_attribute_t *attr); - -sai_status_t l_get_tam_event_attribute(sai_object_id_t tam_event_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_tam_event_attribute(sai_object_id_t tam_event_id, + const sai_attribute_t* attr); -sai_status_t l_create_tam_counter_subscription(sai_object_id_t *tam_counter_subscription_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_get_tam_event_attribute(sai_object_id_t tam_event_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_remove_tam_counter_subscription(sai_object_id_t tam_counter_subscription_id); +sai_status_t l_create_tam_counter_subscription( + sai_object_id_t* tam_counter_subscription_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_set_tam_counter_subscription_attribute(sai_object_id_t tam_counter_subscription_id, const sai_attribute_t *attr); +sai_status_t l_remove_tam_counter_subscription( + sai_object_id_t tam_counter_subscription_id); -sai_status_t l_get_tam_counter_subscription_attribute(sai_object_id_t tam_counter_subscription_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_tam_counter_subscription_attribute( + sai_object_id_t tam_counter_subscription_id, const sai_attribute_t* attr); +sai_status_t l_get_tam_counter_subscription_attribute( + sai_object_id_t tam_counter_subscription_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_TAM_H_ diff --git a/dataplane/standalone/sai/tunnel.cc b/dataplane/standalone/sai/tunnel.cc index 369e2766a..5401e3878 100644 --- a/dataplane/standalone/sai/tunnel.cc +++ b/dataplane/standalone/sai/tunnel.cc @@ -13,1042 +13,1157 @@ // limitations under the License. #include "dataplane/standalone/sai/tunnel.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/tunnel.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_tunnel_api_t l_tunnel = { - .create_tunnel_map = l_create_tunnel_map, - .remove_tunnel_map = l_remove_tunnel_map, - .set_tunnel_map_attribute = l_set_tunnel_map_attribute, - .get_tunnel_map_attribute = l_get_tunnel_map_attribute, - .create_tunnel = l_create_tunnel, - .remove_tunnel = l_remove_tunnel, - .set_tunnel_attribute = l_set_tunnel_attribute, - .get_tunnel_attribute = l_get_tunnel_attribute, - .get_tunnel_stats = l_get_tunnel_stats, - .get_tunnel_stats_ext = l_get_tunnel_stats_ext, - .clear_tunnel_stats = l_clear_tunnel_stats, - .create_tunnel_term_table_entry = l_create_tunnel_term_table_entry, - .remove_tunnel_term_table_entry = l_remove_tunnel_term_table_entry, - .set_tunnel_term_table_entry_attribute = l_set_tunnel_term_table_entry_attribute, - .get_tunnel_term_table_entry_attribute = l_get_tunnel_term_table_entry_attribute, - .create_tunnel_map_entry = l_create_tunnel_map_entry, - .remove_tunnel_map_entry = l_remove_tunnel_map_entry, - .set_tunnel_map_entry_attribute = l_set_tunnel_map_entry_attribute, - .get_tunnel_map_entry_attribute = l_get_tunnel_map_entry_attribute, - .create_tunnels = l_create_tunnels, - .remove_tunnels = l_remove_tunnels, - .set_tunnels_attribute = l_set_tunnels_attribute, - .get_tunnels_attribute = l_get_tunnels_attribute, + .create_tunnel_map = l_create_tunnel_map, + .remove_tunnel_map = l_remove_tunnel_map, + .set_tunnel_map_attribute = l_set_tunnel_map_attribute, + .get_tunnel_map_attribute = l_get_tunnel_map_attribute, + .create_tunnel = l_create_tunnel, + .remove_tunnel = l_remove_tunnel, + .set_tunnel_attribute = l_set_tunnel_attribute, + .get_tunnel_attribute = l_get_tunnel_attribute, + .get_tunnel_stats = l_get_tunnel_stats, + .get_tunnel_stats_ext = l_get_tunnel_stats_ext, + .clear_tunnel_stats = l_clear_tunnel_stats, + .create_tunnel_term_table_entry = l_create_tunnel_term_table_entry, + .remove_tunnel_term_table_entry = l_remove_tunnel_term_table_entry, + .set_tunnel_term_table_entry_attribute = + l_set_tunnel_term_table_entry_attribute, + .get_tunnel_term_table_entry_attribute = + l_get_tunnel_term_table_entry_attribute, + .create_tunnel_map_entry = l_create_tunnel_map_entry, + .remove_tunnel_map_entry = l_remove_tunnel_map_entry, + .set_tunnel_map_entry_attribute = l_set_tunnel_map_entry_attribute, + .get_tunnel_map_entry_attribute = l_get_tunnel_map_entry_attribute, + .create_tunnels = l_create_tunnels, + .remove_tunnels = l_remove_tunnels, + .set_tunnels_attribute = l_set_tunnels_attribute, + .get_tunnels_attribute = l_get_tunnels_attribute, }; - -lemming::dataplane::sai::CreateTunnelMapRequest convert_create_tunnel_map(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTunnelMapRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_MAP_ATTR_TYPE: - msg.set_type(convert_sai_tunnel_map_type_t_to_proto(attr_list[i].value.s32)); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateTunnelRequest convert_create_tunnel(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTunnelRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_ATTR_TYPE: - msg.set_type(convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: - msg.set_underlay_interface(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: - msg.set_overlay_interface(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_PEER_MODE: - msg.set_peer_mode(convert_sai_tunnel_peer_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: - msg.set_encap_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_ATTR_ENCAP_DST_IP: - msg.set_encap_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: - msg.set_encap_ttl_mode(convert_sai_tunnel_ttl_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: - msg.set_encap_ttl_val(attr_list[i].value.u8); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: - msg.set_encap_dscp_mode(convert_sai_tunnel_dscp_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: - msg.set_encap_dscp_val(attr_list[i].value.u8); - break; - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: - msg.set_encap_gre_key_valid(attr_list[i].value.booldata); - break; - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: - msg.set_encap_gre_key(attr_list[i].value.u32); - break; - case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: - msg.set_encap_ecn_mode(convert_sai_tunnel_encap_ecn_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: - msg.mutable_encap_mappers()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: - msg.set_decap_ecn_mode(convert_sai_tunnel_decap_ecn_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_DECAP_MAPPERS: - msg.mutable_decap_mappers()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: - msg.set_decap_ttl_mode(convert_sai_tunnel_ttl_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: - msg.set_decap_dscp_mode(convert_sai_tunnel_dscp_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - msg.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: - msg.set_vxlan_udp_sport_mode(convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: - msg.set_vxlan_udp_sport(attr_list[i].value.u16); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - msg.set_vxlan_udp_sport_mask(attr_list[i].value.u8); - break; - case SAI_TUNNEL_ATTR_SA_INDEX: - msg.set_sa_index(attr_list[i].value.u32); - break; - case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: - msg.mutable_ipsec_sa_port_list()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - msg.set_encap_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - msg.set_encap_qos_tc_to_queue_map(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - msg.set_decap_qos_dscp_to_tc_map(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - msg.set_decap_qos_tc_to_priority_group_map(attr_list[i].value.oid); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: - msg.set_vxlan_udp_sport_security(attr_list[i].value.booldata); - break; +lemming::dataplane::sai::CreateTunnelMapRequest convert_create_tunnel_map( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTunnelMapRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_MAP_ATTR_TYPE: + msg.set_type( + convert_sai_tunnel_map_type_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateTunnelRequest convert_create_tunnel( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTunnelRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_ATTR_TYPE: + msg.set_type( + convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: + msg.set_underlay_interface(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: + msg.set_overlay_interface(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_PEER_MODE: + msg.set_peer_mode( + convert_sai_tunnel_peer_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: + msg.set_encap_src_ip( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_ATTR_ENCAP_DST_IP: + msg.set_encap_dst_ip( + convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: + msg.set_encap_ttl_mode( + convert_sai_tunnel_ttl_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: + msg.set_encap_ttl_val(attr_list[i].value.u8); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: + msg.set_encap_dscp_mode( + convert_sai_tunnel_dscp_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: + msg.set_encap_dscp_val(attr_list[i].value.u8); + break; + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: + msg.set_encap_gre_key_valid(attr_list[i].value.booldata); + break; + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: + msg.set_encap_gre_key(attr_list[i].value.u32); + break; + case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: + msg.set_encap_ecn_mode(convert_sai_tunnel_encap_ecn_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: + msg.mutable_encap_mappers()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: + msg.set_decap_ecn_mode(convert_sai_tunnel_decap_ecn_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_DECAP_MAPPERS: + msg.mutable_decap_mappers()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: + msg.set_decap_ttl_mode( + convert_sai_tunnel_ttl_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: + msg.set_decap_dscp_mode( + convert_sai_tunnel_dscp_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + msg.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: + msg.set_vxlan_udp_sport_mode( + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: + msg.set_vxlan_udp_sport(attr_list[i].value.u16); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + msg.set_vxlan_udp_sport_mask(attr_list[i].value.u8); + break; + case SAI_TUNNEL_ATTR_SA_INDEX: + msg.set_sa_index(attr_list[i].value.u32); + break; + case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: + msg.mutable_ipsec_sa_port_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + msg.set_encap_qos_tc_and_color_to_dscp_map(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + msg.set_encap_qos_tc_to_queue_map(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + msg.set_decap_qos_dscp_to_tc_map(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + msg.set_decap_qos_tc_to_priority_group_map(attr_list[i].value.oid); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: + msg.set_vxlan_udp_sport_security(attr_list[i].value.booldata); + break; + case SAI_TUNNEL_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateTunnelTermTableEntryRequest convert_create_tunnel_term_table_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTunnelTermTableEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: - msg.set_vr_id(attr_list[i].value.oid); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: - msg.set_type(convert_sai_tunnel_term_table_entry_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: - msg.set_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: - msg.set_dst_ip_mask(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: - msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: - msg.set_src_ip_mask(convert_from_ip_address(attr_list[i].value.ipaddr)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: - msg.set_tunnel_type(convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: - msg.set_action_tunnel_id(attr_list[i].value.oid); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: - msg.set_ipsec_verified(attr_list[i].value.booldata); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u32); - break; +lemming::dataplane::sai::CreateTunnelTermTableEntryRequest +convert_create_tunnel_term_table_entry(sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTunnelTermTableEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: + msg.set_vr_id(attr_list[i].value.oid); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: + msg.set_type(convert_sai_tunnel_term_table_entry_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: + msg.set_dst_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: + msg.set_dst_ip_mask(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: + msg.set_src_ip(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: + msg.set_src_ip_mask(convert_from_ip_address(attr_list[i].value.ipaddr)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: + msg.set_tunnel_type( + convert_sai_tunnel_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: + msg.set_action_tunnel_id(attr_list[i].value.oid); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: + msg.set_ipsec_verified(attr_list[i].value.booldata); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u32); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateTunnelMapEntryRequest +convert_create_tunnel_map_entry(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateTunnelMapEntryRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: + msg.set_tunnel_map_type( + convert_sai_tunnel_map_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: + msg.set_tunnel_map(attr_list[i].value.oid); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: + msg.set_oecn_key(attr_list[i].value.u8); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: + msg.set_oecn_value(attr_list[i].value.u8); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: + msg.set_uecn_key(attr_list[i].value.u8); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: + msg.set_uecn_value(attr_list[i].value.u8); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: + msg.set_vlan_id_key(attr_list[i].value.u16); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: + msg.set_vlan_id_value(attr_list[i].value.u16); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: + msg.set_vni_id_key(attr_list[i].value.u32); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: + msg.set_vni_id_value(attr_list[i].value.u32); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: + msg.set_bridge_id_key(attr_list[i].value.oid); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: + msg.set_bridge_id_value(attr_list[i].value.oid); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: + msg.set_virtual_router_id_key(attr_list[i].value.oid); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: + msg.set_virtual_router_id_value(attr_list[i].value.oid); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: + msg.set_vsid_id_key(attr_list[i].value.u32); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: + msg.set_vsid_id_value(attr_list[i].value.u32); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: + msg.set_prefix_agg_id_key(attr_list[i].value.u32); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: + msg.set_srv6_vpn_sid_value(attr_list[i].value.ip6, + sizeof(attr_list[i].value.ip6)); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateTunnelMapEntryRequest convert_create_tunnel_map_entry(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateTunnelMapEntryRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: - msg.set_tunnel_map_type(convert_sai_tunnel_map_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: - msg.set_tunnel_map(attr_list[i].value.oid); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: - msg.set_oecn_key(attr_list[i].value.u8); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: - msg.set_oecn_value(attr_list[i].value.u8); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: - msg.set_uecn_key(attr_list[i].value.u8); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: - msg.set_uecn_value(attr_list[i].value.u8); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: - msg.set_vlan_id_key(attr_list[i].value.u16); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: - msg.set_vlan_id_value(attr_list[i].value.u16); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: - msg.set_vni_id_key(attr_list[i].value.u32); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: - msg.set_vni_id_value(attr_list[i].value.u32); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: - msg.set_bridge_id_key(attr_list[i].value.oid); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: - msg.set_bridge_id_value(attr_list[i].value.oid); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: - msg.set_virtual_router_id_key(attr_list[i].value.oid); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: - msg.set_virtual_router_id_value(attr_list[i].value.oid); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: - msg.set_vsid_id_key(attr_list[i].value.u32); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: - msg.set_vsid_id_value(attr_list[i].value.u32); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: - msg.set_prefix_agg_id_key(attr_list[i].value.u32); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: - msg.set_srv6_vpn_sid_value(attr_list[i].value.ip6, sizeof(attr_list[i].value.ip6)); - break; -} - -} -return msg; -} - -sai_status_t l_create_tunnel_map(sai_object_id_t *tunnel_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTunnelMapRequest req = convert_create_tunnel_map(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTunnelMapResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tunnel->CreateTunnelMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tunnel_map_id) { - *tunnel_map_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_tunnel_map(sai_object_id_t* tunnel_map_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTunnelMapRequest req = + convert_create_tunnel_map(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTunnelMapResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tunnel->CreateTunnelMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tunnel_map_id) { + *tunnel_map_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tunnel_map(sai_object_id_t tunnel_map_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTunnelMapRequest req; - lemming::dataplane::sai::RemoveTunnelMapResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_map_id); - - grpc::Status status = tunnel->RemoveTunnelMap(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTunnelMapRequest req; + lemming::dataplane::sai::RemoveTunnelMapResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_map_id); + + grpc::Status status = tunnel->RemoveTunnelMap(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_tunnel_map_attribute(sai_object_id_t tunnel_map_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_tunnel_map_attribute(sai_object_id_t tunnel_map_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_tunnel_map_attribute(sai_object_id_t tunnel_map_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTunnelMapAttributeRequest req; - lemming::dataplane::sai::GetTunnelMapAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tunnel_map_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tunnel_map_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tunnel->GetTunnelMapAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_MAP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_map_type_t_to_sai(resp.attr().type()); - break; - case SAI_TUNNEL_MAP_ATTR_ENTRY_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().entry_list(), &attr_list[i].value.objlist.count); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_tunnel_map_attribute(sai_object_id_t tunnel_map_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTunnelMapAttributeRequest req; + lemming::dataplane::sai::GetTunnelMapAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tunnel_map_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tunnel_map_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tunnel->GetTunnelMapAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_MAP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_map_type_t_to_sai(resp.attr().type()); + break; + case SAI_TUNNEL_MAP_ATTR_ENTRY_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().entry_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_tunnel(sai_object_id_t *tunnel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTunnelRequest req = convert_create_tunnel(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTunnelResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tunnel->CreateTunnel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tunnel_id) { - *tunnel_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_tunnel(sai_object_id_t* tunnel_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTunnelRequest req = + convert_create_tunnel(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTunnelResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tunnel->CreateTunnel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tunnel_id) { + *tunnel_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tunnel(sai_object_id_t tunnel_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTunnelRequest req; - lemming::dataplane::sai::RemoveTunnelResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_id); - - grpc::Status status = tunnel->RemoveTunnel(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTunnelRequest req; + lemming::dataplane::sai::RemoveTunnelResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_id); + + grpc::Status status = tunnel->RemoveTunnel(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_tunnel_attribute(sai_object_id_t tunnel_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTunnelAttributeRequest req; - lemming::dataplane::sai::SetTunnelAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_id); - - - - -switch (attr->id) { - - case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: - req.set_encap_ttl_mode(convert_sai_tunnel_ttl_mode_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: - req.set_encap_ttl_val(attr->value.u8); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: - req.set_encap_dscp_mode(convert_sai_tunnel_dscp_mode_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: - req.set_encap_dscp_val(attr->value.u8); - break; - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: - req.set_encap_gre_key(attr->value.u32); - break; - case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: - req.set_decap_ttl_mode(convert_sai_tunnel_ttl_mode_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: - req.set_decap_dscp_mode(convert_sai_tunnel_dscp_mode_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - req.set_loopback_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: - req.set_vxlan_udp_sport_mode(convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr->value.s32)); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: - req.set_vxlan_udp_sport(attr->value.u16); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - req.set_vxlan_udp_sport_mask(attr->value.u8); - break; - case SAI_TUNNEL_ATTR_SA_INDEX: - req.set_sa_index(attr->value.u32); - break; - case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: - req.mutable_ipsec_sa_port_list()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - req.set_encap_qos_tc_and_color_to_dscp_map(attr->value.oid); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - req.set_encap_qos_tc_to_queue_map(attr->value.oid); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - req.set_decap_qos_dscp_to_tc_map(attr->value.oid); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - req.set_decap_qos_tc_to_priority_group_map(attr->value.oid); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: - req.set_vxlan_udp_sport_security(attr->value.booldata); - break; +sai_status_t l_set_tunnel_attribute(sai_object_id_t tunnel_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTunnelAttributeRequest req; + lemming::dataplane::sai::SetTunnelAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_id); + + switch (attr->id) { + case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: + req.set_encap_ttl_mode( + convert_sai_tunnel_ttl_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: + req.set_encap_ttl_val(attr->value.u8); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: + req.set_encap_dscp_mode( + convert_sai_tunnel_dscp_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: + req.set_encap_dscp_val(attr->value.u8); + break; + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: + req.set_encap_gre_key(attr->value.u32); + break; + case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: + req.set_decap_ttl_mode( + convert_sai_tunnel_ttl_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: + req.set_decap_dscp_mode( + convert_sai_tunnel_dscp_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + req.set_loopback_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: + req.set_vxlan_udp_sport_mode( + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: + req.set_vxlan_udp_sport(attr->value.u16); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + req.set_vxlan_udp_sport_mask(attr->value.u8); + break; + case SAI_TUNNEL_ATTR_SA_INDEX: + req.set_sa_index(attr->value.u32); + break; + case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: + req.mutable_ipsec_sa_port_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + req.set_encap_qos_tc_and_color_to_dscp_map(attr->value.oid); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + req.set_encap_qos_tc_to_queue_map(attr->value.oid); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + req.set_decap_qos_dscp_to_tc_map(attr->value.oid); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + req.set_decap_qos_tc_to_priority_group_map(attr->value.oid); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: + req.set_vxlan_udp_sport_security(attr->value.booldata); + break; + case SAI_TUNNEL_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = tunnel->SetTunnelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = tunnel->SetTunnelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_tunnel_attribute(sai_object_id_t tunnel_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTunnelAttributeRequest req; + lemming::dataplane::sai::GetTunnelAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tunnel_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_tunnel_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = tunnel->GetTunnelAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_type_t_to_sai(resp.attr().type()); + break; + case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: + attr_list[i].value.oid = resp.attr().underlay_interface(); + break; + case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: + attr_list[i].value.oid = resp.attr().overlay_interface(); + break; + case SAI_TUNNEL_ATTR_PEER_MODE: + attr_list[i].value.s32 = + convert_sai_tunnel_peer_mode_t_to_sai(resp.attr().peer_mode()); + break; + case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().encap_src_ip()); + break; + case SAI_TUNNEL_ATTR_ENCAP_DST_IP: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().encap_dst_ip()); + break; + case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: + attr_list[i].value.s32 = + convert_sai_tunnel_ttl_mode_t_to_sai(resp.attr().encap_ttl_mode()); + break; + case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: + attr_list[i].value.u8 = resp.attr().encap_ttl_val(); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_dscp_mode_t_to_sai( + resp.attr().encap_dscp_mode()); + break; + case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: + attr_list[i].value.u8 = resp.attr().encap_dscp_val(); + break; + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: + attr_list[i].value.booldata = resp.attr().encap_gre_key_valid(); + break; + case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: + attr_list[i].value.u32 = resp.attr().encap_gre_key(); + break; + case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_encap_ecn_mode_t_to_sai( + resp.attr().encap_ecn_mode()); + break; + case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: + copy_list(attr_list[i].value.objlist.list, resp.attr().encap_mappers(), + &attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_decap_ecn_mode_t_to_sai( + resp.attr().decap_ecn_mode()); + break; + case SAI_TUNNEL_ATTR_DECAP_MAPPERS: + copy_list(attr_list[i].value.objlist.list, resp.attr().decap_mappers(), + &attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: + attr_list[i].value.s32 = + convert_sai_tunnel_ttl_mode_t_to_sai(resp.attr().decap_ttl_mode()); + break; + case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: + attr_list[i].value.s32 = convert_sai_tunnel_dscp_mode_t_to_sai( + resp.attr().decap_dscp_mode()); + break; + case SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().term_table_entry_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().loopback_packet_action()); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: + attr_list[i].value.s32 = + convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai( + resp.attr().vxlan_udp_sport_mode()); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: + attr_list[i].value.u16 = resp.attr().vxlan_udp_sport(); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: + attr_list[i].value.u8 = resp.attr().vxlan_udp_sport_mask(); + break; + case SAI_TUNNEL_ATTR_SA_INDEX: + attr_list[i].value.u32 = resp.attr().sa_index(); + break; + case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().ipsec_sa_port_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: + attr_list[i].value.oid = + resp.attr().encap_qos_tc_and_color_to_dscp_map(); + break; + case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: + attr_list[i].value.oid = resp.attr().encap_qos_tc_to_queue_map(); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: + attr_list[i].value.oid = resp.attr().decap_qos_dscp_to_tc_map(); + break; + case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: + attr_list[i].value.oid = + resp.attr().decap_qos_tc_to_priority_group_map(); + break; + case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: + attr_list[i].value.booldata = resp.attr().vxlan_udp_sport_security(); + break; + case SAI_TUNNEL_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_TUNNEL_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_tunnel_attribute(sai_object_id_t tunnel_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTunnelAttributeRequest req; - lemming::dataplane::sai::GetTunnelAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tunnel_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tunnel_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tunnel->GetTunnelAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_type_t_to_sai(resp.attr().type()); - break; - case SAI_TUNNEL_ATTR_UNDERLAY_INTERFACE: - attr_list[i].value.oid = resp.attr().underlay_interface(); - break; - case SAI_TUNNEL_ATTR_OVERLAY_INTERFACE: - attr_list[i].value.oid = resp.attr().overlay_interface(); - break; - case SAI_TUNNEL_ATTR_PEER_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_peer_mode_t_to_sai(resp.attr().peer_mode()); - break; - case SAI_TUNNEL_ATTR_ENCAP_SRC_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().encap_src_ip()); - break; - case SAI_TUNNEL_ATTR_ENCAP_DST_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().encap_dst_ip()); - break; - case SAI_TUNNEL_ATTR_ENCAP_TTL_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_ttl_mode_t_to_sai(resp.attr().encap_ttl_mode()); - break; - case SAI_TUNNEL_ATTR_ENCAP_TTL_VAL: - attr_list[i].value.u8 = resp.attr().encap_ttl_val(); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_dscp_mode_t_to_sai(resp.attr().encap_dscp_mode()); - break; - case SAI_TUNNEL_ATTR_ENCAP_DSCP_VAL: - attr_list[i].value.u8 = resp.attr().encap_dscp_val(); - break; - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY_VALID: - attr_list[i].value.booldata = resp.attr().encap_gre_key_valid(); - break; - case SAI_TUNNEL_ATTR_ENCAP_GRE_KEY: - attr_list[i].value.u32 = resp.attr().encap_gre_key(); - break; - case SAI_TUNNEL_ATTR_ENCAP_ECN_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_encap_ecn_mode_t_to_sai(resp.attr().encap_ecn_mode()); - break; - case SAI_TUNNEL_ATTR_ENCAP_MAPPERS: - copy_list(attr_list[i].value.objlist.list, resp.attr().encap_mappers(), &attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_DECAP_ECN_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_decap_ecn_mode_t_to_sai(resp.attr().decap_ecn_mode()); - break; - case SAI_TUNNEL_ATTR_DECAP_MAPPERS: - copy_list(attr_list[i].value.objlist.list, resp.attr().decap_mappers(), &attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_DECAP_TTL_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_ttl_mode_t_to_sai(resp.attr().decap_ttl_mode()); - break; - case SAI_TUNNEL_ATTR_DECAP_DSCP_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_dscp_mode_t_to_sai(resp.attr().decap_dscp_mode()); - break; - case SAI_TUNNEL_ATTR_TERM_TABLE_ENTRY_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().term_table_entry_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_LOOPBACK_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().loopback_packet_action()); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MODE: - attr_list[i].value.s32 = convert_sai_tunnel_vxlan_udp_sport_mode_t_to_sai(resp.attr().vxlan_udp_sport_mode()); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT: - attr_list[i].value.u16 = resp.attr().vxlan_udp_sport(); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_MASK: - attr_list[i].value.u8 = resp.attr().vxlan_udp_sport_mask(); - break; - case SAI_TUNNEL_ATTR_SA_INDEX: - attr_list[i].value.u32 = resp.attr().sa_index(); - break; - case SAI_TUNNEL_ATTR_IPSEC_SA_PORT_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().ipsec_sa_port_list(), &attr_list[i].value.objlist.count); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_AND_COLOR_TO_DSCP_MAP: - attr_list[i].value.oid = resp.attr().encap_qos_tc_and_color_to_dscp_map(); - break; - case SAI_TUNNEL_ATTR_ENCAP_QOS_TC_TO_QUEUE_MAP: - attr_list[i].value.oid = resp.attr().encap_qos_tc_to_queue_map(); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_DSCP_TO_TC_MAP: - attr_list[i].value.oid = resp.attr().decap_qos_dscp_to_tc_map(); - break; - case SAI_TUNNEL_ATTR_DECAP_QOS_TC_TO_PRIORITY_GROUP_MAP: - attr_list[i].value.oid = resp.attr().decap_qos_tc_to_priority_group_map(); - break; - case SAI_TUNNEL_ATTR_VXLAN_UDP_SPORT_SECURITY: - attr_list[i].value.booldata = resp.attr().vxlan_udp_sport_security(); - break; +sai_status_t l_get_tunnel_stats(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTunnelStatsRequest req; + lemming::dataplane::sai::GetTunnelStatsResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_tunnel_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = tunnel->GetTunnelStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tunnel_stats(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTunnelStatsRequest req; - lemming::dataplane::sai::GetTunnelStatsResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_tunnel_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = tunnel->GetTunnelStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_get_tunnel_stats_ext(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_tunnel_stats_ext(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_tunnel_stats(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_tunnel_term_table_entry(sai_object_id_t *tunnel_term_table_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTunnelTermTableEntryRequest req = convert_create_tunnel_term_table_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTunnelTermTableEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tunnel->CreateTunnelTermTableEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tunnel_term_table_entry_id) { - *tunnel_term_table_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_tunnel_stats(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_remove_tunnel_term_table_entry(sai_object_id_t tunnel_term_table_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTunnelTermTableEntryRequest req; - lemming::dataplane::sai::RemoveTunnelTermTableEntryResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_term_table_entry_id); - - grpc::Status status = tunnel->RemoveTunnelTermTableEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_tunnel_term_table_entry_attribute(sai_object_id_t tunnel_term_table_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetTunnelTermTableEntryAttributeRequest req; - lemming::dataplane::sai::SetTunnelTermTableEntryAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_term_table_entry_id); - - - - -switch (attr->id) { - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: - req.set_vr_id(attr->value.oid); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: - req.set_ipsec_verified(attr->value.booldata); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: - req.set_priority(attr->value.u32); - break; +sai_status_t l_create_tunnel_term_table_entry( + sai_object_id_t* tunnel_term_table_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTunnelTermTableEntryRequest req = + convert_create_tunnel_term_table_entry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTunnelTermTableEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + tunnel->CreateTunnelTermTableEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tunnel_term_table_entry_id) { + *tunnel_term_table_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = tunnel->SetTunnelTermTableEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_tunnel_term_table_entry( + sai_object_id_t tunnel_term_table_entry_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTunnelTermTableEntryRequest req; + lemming::dataplane::sai::RemoveTunnelTermTableEntryResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_term_table_entry_id); + + grpc::Status status = + tunnel->RemoveTunnelTermTableEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_tunnel_term_table_entry_attribute(sai_object_id_t tunnel_term_table_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTunnelTermTableEntryAttributeRequest req; - lemming::dataplane::sai::GetTunnelTermTableEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tunnel_term_table_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tunnel_term_table_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tunnel->GetTunnelTermTableEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: - attr_list[i].value.oid = resp.attr().vr_id(); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_term_table_entry_type_t_to_sai(resp.attr().type()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip_mask()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: - attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip_mask()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_type_t_to_sai(resp.attr().tunnel_type()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: - attr_list[i].value.oid = resp.attr().action_tunnel_id(); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: - attr_list[i].value.s32 = convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: - attr_list[i].value.booldata = resp.attr().ipsec_verified(); - break; - case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: - attr_list[i].value.u32 = resp.attr().priority(); - break; +sai_status_t l_set_tunnel_term_table_entry_attribute( + sai_object_id_t tunnel_term_table_entry_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetTunnelTermTableEntryAttributeRequest req; + lemming::dataplane::sai::SetTunnelTermTableEntryAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_term_table_entry_id); + + switch (attr->id) { + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: + req.set_vr_id(attr->value.oid); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: + req.set_ipsec_verified(attr->value.booldata); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: + req.set_priority(attr->value.u32); + break; + } + + grpc::Status status = + tunnel->SetTunnelTermTableEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_tunnel_term_table_entry_attribute( + sai_object_id_t tunnel_term_table_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTunnelTermTableEntryAttributeRequest req; + lemming::dataplane::sai::GetTunnelTermTableEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tunnel_term_table_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tunnel_term_table_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + tunnel->GetTunnelTermTableEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_VR_ID: + attr_list[i].value.oid = resp.attr().vr_id(); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_term_table_entry_type_t_to_sai( + resp.attr().type()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().dst_ip()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_DST_IP_MASK: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().dst_ip_mask()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP: + attr_list[i].value.ipaddr = convert_to_ip_address(resp.attr().src_ip()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_SRC_IP_MASK: + attr_list[i].value.ipaddr = + convert_to_ip_address(resp.attr().src_ip_mask()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_TUNNEL_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_type_t_to_sai(resp.attr().tunnel_type()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_ACTION_TUNNEL_ID: + attr_list[i].value.oid = resp.attr().action_tunnel_id(); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IP_ADDR_FAMILY: + attr_list[i].value.s32 = + convert_sai_ip_addr_family_t_to_sai(resp.attr().ip_addr_family()); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_IPSEC_VERIFIED: + attr_list[i].value.booldata = resp.attr().ipsec_verified(); + break; + case SAI_TUNNEL_TERM_TABLE_ENTRY_ATTR_PRIORITY: + attr_list[i].value.u32 = resp.attr().priority(); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_tunnel_map_entry(sai_object_id_t *tunnel_map_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTunnelMapEntryRequest req = convert_create_tunnel_map_entry(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateTunnelMapEntryResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = tunnel->CreateTunnelMapEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (tunnel_map_entry_id) { - *tunnel_map_entry_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_tunnel_map_entry(sai_object_id_t* tunnel_map_entry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTunnelMapEntryRequest req = + convert_create_tunnel_map_entry(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateTunnelMapEntryResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = tunnel->CreateTunnelMapEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (tunnel_map_entry_id) { + *tunnel_map_entry_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_tunnel_map_entry(sai_object_id_t tunnel_map_entry_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTunnelMapEntryRequest req; - lemming::dataplane::sai::RemoveTunnelMapEntryResponse resp; - grpc::ClientContext context; - req.set_oid(tunnel_map_entry_id); - - grpc::Status status = tunnel->RemoveTunnelMapEntry(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTunnelMapEntryRequest req; + lemming::dataplane::sai::RemoveTunnelMapEntryResponse resp; + grpc::ClientContext context; + req.set_oid(tunnel_map_entry_id); + + grpc::Status status = tunnel->RemoveTunnelMapEntry(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_tunnel_map_entry_attribute(sai_object_id_t tunnel_map_entry_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_tunnel_map_entry_attribute( + sai_object_id_t tunnel_map_entry_id, const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_tunnel_map_entry_attribute(sai_object_id_t tunnel_map_entry_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetTunnelMapEntryAttributeRequest req; - lemming::dataplane::sai::GetTunnelMapEntryAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(tunnel_map_entry_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_tunnel_map_entry_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = tunnel->GetTunnelMapEntryAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: - attr_list[i].value.s32 = convert_sai_tunnel_map_type_t_to_sai(resp.attr().tunnel_map_type()); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: - attr_list[i].value.oid = resp.attr().tunnel_map(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: - attr_list[i].value.u8 = resp.attr().oecn_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: - attr_list[i].value.u8 = resp.attr().oecn_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: - attr_list[i].value.u8 = resp.attr().uecn_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: - attr_list[i].value.u8 = resp.attr().uecn_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: - attr_list[i].value.u16 = resp.attr().vlan_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: - attr_list[i].value.u16 = resp.attr().vlan_id_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: - attr_list[i].value.u32 = resp.attr().vni_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: - attr_list[i].value.u32 = resp.attr().vni_id_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: - attr_list[i].value.oid = resp.attr().bridge_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: - attr_list[i].value.oid = resp.attr().bridge_id_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: - attr_list[i].value.oid = resp.attr().virtual_router_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: - attr_list[i].value.oid = resp.attr().virtual_router_id_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: - attr_list[i].value.u32 = resp.attr().vsid_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: - attr_list[i].value.u32 = resp.attr().vsid_id_value(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: - attr_list[i].value.u32 = resp.attr().prefix_agg_id_key(); - break; - case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: - memcpy(attr_list[i].value.ip6, resp.attr().srv6_vpn_sid_value().data(), sizeof(sai_ip6_t)); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_tunnel_map_entry_attribute( + sai_object_id_t tunnel_map_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetTunnelMapEntryAttributeRequest req; + lemming::dataplane::sai::GetTunnelMapEntryAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(tunnel_map_entry_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_tunnel_map_entry_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + tunnel->GetTunnelMapEntryAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP_TYPE: + attr_list[i].value.s32 = + convert_sai_tunnel_map_type_t_to_sai(resp.attr().tunnel_map_type()); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_TUNNEL_MAP: + attr_list[i].value.oid = resp.attr().tunnel_map(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_KEY: + attr_list[i].value.u8 = resp.attr().oecn_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_OECN_VALUE: + attr_list[i].value.u8 = resp.attr().oecn_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_KEY: + attr_list[i].value.u8 = resp.attr().uecn_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_UECN_VALUE: + attr_list[i].value.u8 = resp.attr().uecn_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_KEY: + attr_list[i].value.u16 = resp.attr().vlan_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VLAN_ID_VALUE: + attr_list[i].value.u16 = resp.attr().vlan_id_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_KEY: + attr_list[i].value.u32 = resp.attr().vni_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VNI_ID_VALUE: + attr_list[i].value.u32 = resp.attr().vni_id_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_KEY: + attr_list[i].value.oid = resp.attr().bridge_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_BRIDGE_ID_VALUE: + attr_list[i].value.oid = resp.attr().bridge_id_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_KEY: + attr_list[i].value.oid = resp.attr().virtual_router_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VIRTUAL_ROUTER_ID_VALUE: + attr_list[i].value.oid = resp.attr().virtual_router_id_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_KEY: + attr_list[i].value.u32 = resp.attr().vsid_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_VSID_ID_VALUE: + attr_list[i].value.u32 = resp.attr().vsid_id_value(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_PREFIX_AGG_ID_KEY: + attr_list[i].value.u32 = resp.attr().prefix_agg_id_key(); + break; + case SAI_TUNNEL_MAP_ENTRY_ATTR_SRV6_VPN_SID_VALUE: + memcpy(attr_list[i].value.ip6, resp.attr().srv6_vpn_sid_value().data(), + sizeof(sai_ip6_t)); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_tunnels(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateTunnelsRequest req; - lemming::dataplane::sai::CreateTunnelsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_tunnel(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = tunnel->CreateTunnels(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_tunnels(sai_object_id_t switch_id, uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateTunnelsRequest req; + lemming::dataplane::sai::CreateTunnelsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_tunnel(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = tunnel->CreateTunnels(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_tunnels(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveTunnelsRequest req; - lemming::dataplane::sai::RemoveTunnelsResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = tunnel->RemoveTunnels(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_tunnels(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveTunnelsRequest req; + lemming::dataplane::sai::RemoveTunnelsResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = tunnel->RemoveTunnels(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_tunnels_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_set_tunnels_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } -sai_status_t l_get_tunnels_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - return SAI_STATUS_NOT_IMPLEMENTED; +sai_status_t l_get_tunnels_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + return SAI_STATUS_NOT_IMPLEMENTED; } - diff --git a/dataplane/standalone/sai/tunnel.h b/dataplane/standalone/sai/tunnel.h index 2458625bf..fe7feceb5 100644 --- a/dataplane/standalone/sai/tunnel.h +++ b/dataplane/standalone/sai/tunnel.h @@ -25,52 +25,97 @@ extern "C" { extern const sai_tunnel_api_t l_tunnel; - -sai_status_t l_create_tunnel_map(sai_object_id_t *tunnel_map_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tunnel_map(sai_object_id_t* tunnel_map_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tunnel_map(sai_object_id_t tunnel_map_id); -sai_status_t l_set_tunnel_map_attribute(sai_object_id_t tunnel_map_id, const sai_attribute_t *attr); +sai_status_t l_set_tunnel_map_attribute(sai_object_id_t tunnel_map_id, + const sai_attribute_t* attr); -sai_status_t l_get_tunnel_map_attribute(sai_object_id_t tunnel_map_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tunnel_map_attribute(sai_object_id_t tunnel_map_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tunnel(sai_object_id_t *tunnel_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tunnel(sai_object_id_t* tunnel_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tunnel(sai_object_id_t tunnel_id); -sai_status_t l_set_tunnel_attribute(sai_object_id_t tunnel_id, const sai_attribute_t *attr); +sai_status_t l_set_tunnel_attribute(sai_object_id_t tunnel_id, + const sai_attribute_t* attr); -sai_status_t l_get_tunnel_attribute(sai_object_id_t tunnel_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tunnel_attribute(sai_object_id_t tunnel_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_get_tunnel_stats(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); +sai_status_t l_get_tunnel_stats(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); -sai_status_t l_get_tunnel_stats_ext(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); +sai_status_t l_get_tunnel_stats_ext(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); -sai_status_t l_clear_tunnel_stats(sai_object_id_t tunnel_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); +sai_status_t l_clear_tunnel_stats(sai_object_id_t tunnel_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); -sai_status_t l_create_tunnel_term_table_entry(sai_object_id_t *tunnel_term_table_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tunnel_term_table_entry( + sai_object_id_t* tunnel_term_table_entry_id, sai_object_id_t switch_id, + uint32_t attr_count, const sai_attribute_t* attr_list); -sai_status_t l_remove_tunnel_term_table_entry(sai_object_id_t tunnel_term_table_entry_id); +sai_status_t l_remove_tunnel_term_table_entry( + sai_object_id_t tunnel_term_table_entry_id); -sai_status_t l_set_tunnel_term_table_entry_attribute(sai_object_id_t tunnel_term_table_entry_id, const sai_attribute_t *attr); +sai_status_t l_set_tunnel_term_table_entry_attribute( + sai_object_id_t tunnel_term_table_entry_id, const sai_attribute_t* attr); -sai_status_t l_get_tunnel_term_table_entry_attribute(sai_object_id_t tunnel_term_table_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_tunnel_term_table_entry_attribute( + sai_object_id_t tunnel_term_table_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_tunnel_map_entry(sai_object_id_t *tunnel_map_entry_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_tunnel_map_entry(sai_object_id_t* tunnel_map_entry_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_tunnel_map_entry(sai_object_id_t tunnel_map_entry_id); -sai_status_t l_set_tunnel_map_entry_attribute(sai_object_id_t tunnel_map_entry_id, const sai_attribute_t *attr); - -sai_status_t l_get_tunnel_map_entry_attribute(sai_object_id_t tunnel_map_entry_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_tunnels(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_tunnels(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_set_tunnels_attribute(uint32_t object_count, const sai_object_id_t *object_id, const sai_attribute_t *attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_tunnels_attribute(uint32_t object_count, const sai_object_id_t *object_id, const uint32_t *attr_count, sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - +sai_status_t l_set_tunnel_map_entry_attribute( + sai_object_id_t tunnel_map_entry_id, const sai_attribute_t* attr); + +sai_status_t l_get_tunnel_map_entry_attribute( + sai_object_id_t tunnel_map_entry_id, uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_tunnels(sai_object_id_t switch_id, uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_tunnels(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_set_tunnels_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const sai_attribute_t* attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_tunnels_attribute(uint32_t object_count, + const sai_object_id_t* object_id, + const uint32_t* attr_count, + sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); #endif // DATAPLANE_STANDALONE_SAI_TUNNEL_H_ diff --git a/dataplane/standalone/sai/twamp.cc b/dataplane/standalone/sai/twamp.cc index 4d8bf9929..429a1b654 100644 --- a/dataplane/standalone/sai/twamp.cc +++ b/dataplane/standalone/sai/twamp.cc @@ -13,20 +13,12 @@ // limitations under the License. #include "dataplane/standalone/sai/twamp.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" -#include "dataplane/proto/sai/common.pb.h" -#include "dataplane/proto/sai/twamp.pb.h" -#include - -const sai_twamp_api_t l_twamp = { -}; - - - - - - +#include +#include "dataplane/proto/sai/common.pb.h" +#include "dataplane/proto/sai/twamp.pb.h" +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" +const sai_twamp_api_t l_twamp = {}; diff --git a/dataplane/standalone/sai/twamp.h b/dataplane/standalone/sai/twamp.h index 8143cf328..5492bbc76 100644 --- a/dataplane/standalone/sai/twamp.h +++ b/dataplane/standalone/sai/twamp.h @@ -25,13 +25,4 @@ extern "C" { extern const sai_twamp_api_t l_twamp; - - - - - - - - - #endif // DATAPLANE_STANDALONE_SAI_TWAMP_H_ diff --git a/dataplane/standalone/sai/udf.cc b/dataplane/standalone/sai/udf.cc index a8aa48173..9332150a3 100644 --- a/dataplane/standalone/sai/udf.cc +++ b/dataplane/standalone/sai/udf.cc @@ -13,447 +13,463 @@ // limitations under the License. #include "dataplane/standalone/sai/udf.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/udf.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_udf_api_t l_udf = { - .create_udf = l_create_udf, - .remove_udf = l_remove_udf, - .set_udf_attribute = l_set_udf_attribute, - .get_udf_attribute = l_get_udf_attribute, - .create_udf_match = l_create_udf_match, - .remove_udf_match = l_remove_udf_match, - .set_udf_match_attribute = l_set_udf_match_attribute, - .get_udf_match_attribute = l_get_udf_match_attribute, - .create_udf_group = l_create_udf_group, - .remove_udf_group = l_remove_udf_group, - .set_udf_group_attribute = l_set_udf_group_attribute, - .get_udf_group_attribute = l_get_udf_group_attribute, + .create_udf = l_create_udf, + .remove_udf = l_remove_udf, + .set_udf_attribute = l_set_udf_attribute, + .get_udf_attribute = l_get_udf_attribute, + .create_udf_match = l_create_udf_match, + .remove_udf_match = l_remove_udf_match, + .set_udf_match_attribute = l_set_udf_match_attribute, + .get_udf_match_attribute = l_get_udf_match_attribute, + .create_udf_group = l_create_udf_group, + .remove_udf_group = l_remove_udf_group, + .set_udf_group_attribute = l_set_udf_group_attribute, + .get_udf_group_attribute = l_get_udf_group_attribute, }; - -lemming::dataplane::sai::CreateUdfRequest convert_create_udf(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateUdfRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_ATTR_MATCH_ID: - msg.set_match_id(attr_list[i].value.oid); - break; - case SAI_UDF_ATTR_GROUP_ID: - msg.set_group_id(attr_list[i].value.oid); - break; - case SAI_UDF_ATTR_BASE: - msg.set_base(convert_sai_udf_base_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_UDF_ATTR_OFFSET: - msg.set_offset(attr_list[i].value.u16); - break; - case SAI_UDF_ATTR_HASH_MASK: - msg.mutable_hash_mask()->Add(attr_list[i].value.u8list.list, attr_list[i].value.u8list.list + attr_list[i].value.u8list.count); - break; +lemming::dataplane::sai::CreateUdfRequest convert_create_udf( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateUdfRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_ATTR_MATCH_ID: + msg.set_match_id(attr_list[i].value.oid); + break; + case SAI_UDF_ATTR_GROUP_ID: + msg.set_group_id(attr_list[i].value.oid); + break; + case SAI_UDF_ATTR_BASE: + msg.set_base(convert_sai_udf_base_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_UDF_ATTR_OFFSET: + msg.set_offset(attr_list[i].value.u16); + break; + case SAI_UDF_ATTR_HASH_MASK: + msg.mutable_hash_mask()->Add( + attr_list[i].value.u8list.list, + attr_list[i].value.u8list.list + attr_list[i].value.u8list.count); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateUdfMatchRequest convert_create_udf_match( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateUdfMatchRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_MATCH_ATTR_L2_TYPE: + *msg.mutable_l2_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_UDF_MATCH_ATTR_L3_TYPE: + *msg.mutable_l3_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, + attr_list[i].value.aclfield.mask.u8); + break; + case SAI_UDF_MATCH_ATTR_GRE_TYPE: + *msg.mutable_gre_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + case SAI_UDF_MATCH_ATTR_PRIORITY: + msg.set_priority(attr_list[i].value.u8); + break; + case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: + *msg.mutable_l4_dst_port_type() = convert_from_acl_field_data( + attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, + attr_list[i].value.aclfield.mask.u16); + break; + } + } + return msg; } -lemming::dataplane::sai::CreateUdfMatchRequest convert_create_udf_match(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateUdfMatchRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_MATCH_ATTR_L2_TYPE: - *msg.mutable_l2_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_UDF_MATCH_ATTR_L3_TYPE: - *msg.mutable_l3_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u8, attr_list[i].value.aclfield.mask.u8 ); - break; - case SAI_UDF_MATCH_ATTR_GRE_TYPE: - *msg.mutable_gre_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; - case SAI_UDF_MATCH_ATTR_PRIORITY: - msg.set_priority(attr_list[i].value.u8); - break; - case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: - *msg.mutable_l4_dst_port_type() = convert_from_acl_field_data( attr_list[i].value.aclfield, attr_list[i].value.aclfield.data.u16, attr_list[i].value.aclfield.mask.u16 ); - break; +lemming::dataplane::sai::CreateUdfGroupRequest convert_create_udf_group( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateUdfGroupRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_GROUP_ATTR_TYPE: + msg.set_type( + convert_sai_udf_group_type_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_UDF_GROUP_ATTR_LENGTH: + msg.set_length(attr_list[i].value.u16); + break; + } + } + return msg; } -} -return msg; -} - -lemming::dataplane::sai::CreateUdfGroupRequest convert_create_udf_group(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateUdfGroupRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_GROUP_ATTR_TYPE: - msg.set_type(convert_sai_udf_group_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_UDF_GROUP_ATTR_LENGTH: - msg.set_length(attr_list[i].value.u16); - break; -} - -} -return msg; -} - -sai_status_t l_create_udf(sai_object_id_t *udf_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateUdfRequest req = convert_create_udf(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateUdfResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = udf->CreateUdf(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (udf_id) { - *udf_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_udf(sai_object_id_t* udf_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateUdfRequest req = + convert_create_udf(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateUdfResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = udf->CreateUdf(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (udf_id) { + *udf_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_udf(sai_object_id_t udf_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveUdfRequest req; - lemming::dataplane::sai::RemoveUdfResponse resp; - grpc::ClientContext context; - req.set_oid(udf_id); - - grpc::Status status = udf->RemoveUdf(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveUdfRequest req; + lemming::dataplane::sai::RemoveUdfResponse resp; + grpc::ClientContext context; + req.set_oid(udf_id); + + grpc::Status status = udf->RemoveUdf(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_udf_attribute(sai_object_id_t udf_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetUdfAttributeRequest req; - lemming::dataplane::sai::SetUdfAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(udf_id); - - - - -switch (attr->id) { - - case SAI_UDF_ATTR_BASE: - req.set_base(convert_sai_udf_base_t_to_proto(attr->value.s32)); - break; - case SAI_UDF_ATTR_HASH_MASK: - req.mutable_hash_mask()->Add(attr->value.u8list.list, attr->value.u8list.list + attr->value.u8list.count); - break; +sai_status_t l_set_udf_attribute(sai_object_id_t udf_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetUdfAttributeRequest req; + lemming::dataplane::sai::SetUdfAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(udf_id); + + switch (attr->id) { + case SAI_UDF_ATTR_BASE: + req.set_base(convert_sai_udf_base_t_to_proto(attr->value.s32)); + break; + case SAI_UDF_ATTR_HASH_MASK: + req.mutable_hash_mask()->Add( + attr->value.u8list.list, + attr->value.u8list.list + attr->value.u8list.count); + break; + } + + grpc::Status status = udf->SetUdfAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = udf->SetUdfAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_udf_attribute(sai_object_id_t udf_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetUdfAttributeRequest req; + lemming::dataplane::sai::GetUdfAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(udf_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_udf_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = udf->GetUdfAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_ATTR_MATCH_ID: + attr_list[i].value.oid = resp.attr().match_id(); + break; + case SAI_UDF_ATTR_GROUP_ID: + attr_list[i].value.oid = resp.attr().group_id(); + break; + case SAI_UDF_ATTR_BASE: + attr_list[i].value.s32 = + convert_sai_udf_base_t_to_sai(resp.attr().base()); + break; + case SAI_UDF_ATTR_OFFSET: + attr_list[i].value.u16 = resp.attr().offset(); + break; + case SAI_UDF_ATTR_HASH_MASK: + copy_list(attr_list[i].value.u8list.list, resp.attr().hash_mask(), + &attr_list[i].value.u8list.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_udf_attribute(sai_object_id_t udf_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetUdfAttributeRequest req; - lemming::dataplane::sai::GetUdfAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(udf_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_udf_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = udf->GetUdfAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_ATTR_MATCH_ID: - attr_list[i].value.oid = resp.attr().match_id(); - break; - case SAI_UDF_ATTR_GROUP_ID: - attr_list[i].value.oid = resp.attr().group_id(); - break; - case SAI_UDF_ATTR_BASE: - attr_list[i].value.s32 = convert_sai_udf_base_t_to_sai(resp.attr().base()); - break; - case SAI_UDF_ATTR_OFFSET: - attr_list[i].value.u16 = resp.attr().offset(); - break; - case SAI_UDF_ATTR_HASH_MASK: - copy_list(attr_list[i].value.u8list.list, resp.attr().hash_mask(), &attr_list[i].value.u8list.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_udf_match(sai_object_id_t *udf_match_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateUdfMatchRequest req = convert_create_udf_match(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateUdfMatchResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = udf->CreateUdfMatch(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (udf_match_id) { - *udf_match_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_udf_match(sai_object_id_t* udf_match_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateUdfMatchRequest req = + convert_create_udf_match(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateUdfMatchResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = udf->CreateUdfMatch(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (udf_match_id) { + *udf_match_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_udf_match(sai_object_id_t udf_match_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveUdfMatchRequest req; - lemming::dataplane::sai::RemoveUdfMatchResponse resp; - grpc::ClientContext context; - req.set_oid(udf_match_id); - - grpc::Status status = udf->RemoveUdfMatch(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveUdfMatchRequest req; + lemming::dataplane::sai::RemoveUdfMatchResponse resp; + grpc::ClientContext context; + req.set_oid(udf_match_id); + + grpc::Status status = udf->RemoveUdfMatch(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_udf_match_attribute(sai_object_id_t udf_match_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_udf_match_attribute(sai_object_id_t udf_match_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_udf_match_attribute(sai_object_id_t udf_match_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetUdfMatchAttributeRequest req; - lemming::dataplane::sai::GetUdfMatchAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(udf_match_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_udf_match_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = udf->GetUdfMatchAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_MATCH_ATTR_L2_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().l2_type(), resp.attr().l2_type().data_uint(), resp.attr().l2_type().mask_uint()); - break; - case SAI_UDF_MATCH_ATTR_L3_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u8(resp.attr().l3_type(), resp.attr().l3_type().data_uint(), resp.attr().l3_type().mask_uint()); - break; - case SAI_UDF_MATCH_ATTR_GRE_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().gre_type(), resp.attr().gre_type().data_uint(), resp.attr().gre_type().mask_uint()); - break; - case SAI_UDF_MATCH_ATTR_PRIORITY: - attr_list[i].value.u8 = resp.attr().priority(); - break; - case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: - attr_list[i].value.aclfield = convert_to_acl_field_data_u16(resp.attr().l4_dst_port_type(), resp.attr().l4_dst_port_type().data_uint(), resp.attr().l4_dst_port_type().mask_uint()); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_udf_match_attribute(sai_object_id_t udf_match_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetUdfMatchAttributeRequest req; + lemming::dataplane::sai::GetUdfMatchAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(udf_match_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_udf_match_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = udf->GetUdfMatchAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_MATCH_ATTR_L2_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().l2_type(), resp.attr().l2_type().data_uint(), + resp.attr().l2_type().mask_uint()); + break; + case SAI_UDF_MATCH_ATTR_L3_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u8( + resp.attr().l3_type(), resp.attr().l3_type().data_uint(), + resp.attr().l3_type().mask_uint()); + break; + case SAI_UDF_MATCH_ATTR_GRE_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().gre_type(), resp.attr().gre_type().data_uint(), + resp.attr().gre_type().mask_uint()); + break; + case SAI_UDF_MATCH_ATTR_PRIORITY: + attr_list[i].value.u8 = resp.attr().priority(); + break; + case SAI_UDF_MATCH_ATTR_L4_DST_PORT_TYPE: + attr_list[i].value.aclfield = convert_to_acl_field_data_u16( + resp.attr().l4_dst_port_type(), + resp.attr().l4_dst_port_type().data_uint(), + resp.attr().l4_dst_port_type().mask_uint()); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_udf_group(sai_object_id_t *udf_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateUdfGroupRequest req = convert_create_udf_group(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateUdfGroupResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = udf->CreateUdfGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (udf_group_id) { - *udf_group_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_udf_group(sai_object_id_t* udf_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateUdfGroupRequest req = + convert_create_udf_group(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateUdfGroupResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = udf->CreateUdfGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (udf_group_id) { + *udf_group_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_udf_group(sai_object_id_t udf_group_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveUdfGroupRequest req; - lemming::dataplane::sai::RemoveUdfGroupResponse resp; - grpc::ClientContext context; - req.set_oid(udf_group_id); - - grpc::Status status = udf->RemoveUdfGroup(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveUdfGroupRequest req; + lemming::dataplane::sai::RemoveUdfGroupResponse resp; + grpc::ClientContext context; + req.set_oid(udf_group_id); + + grpc::Status status = udf->RemoveUdfGroup(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_udf_group_attribute(sai_object_id_t udf_group_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_set_udf_group_attribute(sai_object_id_t udf_group_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_udf_group_attribute(sai_object_id_t udf_group_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetUdfGroupAttributeRequest req; - lemming::dataplane::sai::GetUdfGroupAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(udf_group_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_udf_group_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = udf->GetUdfGroupAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_UDF_GROUP_ATTR_UDF_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().udf_list(), &attr_list[i].value.objlist.count); - break; - case SAI_UDF_GROUP_ATTR_TYPE: - attr_list[i].value.s32 = convert_sai_udf_group_type_t_to_sai(resp.attr().type()); - break; - case SAI_UDF_GROUP_ATTR_LENGTH: - attr_list[i].value.u16 = resp.attr().length(); - break; + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_udf_group_attribute(sai_object_id_t udf_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetUdfGroupAttributeRequest req; + lemming::dataplane::sai::GetUdfGroupAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(udf_group_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_udf_group_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = udf->GetUdfGroupAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_UDF_GROUP_ATTR_UDF_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().udf_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_UDF_GROUP_ATTR_TYPE: + attr_list[i].value.s32 = + convert_sai_udf_group_type_t_to_sai(resp.attr().type()); + break; + case SAI_UDF_GROUP_ATTR_LENGTH: + attr_list[i].value.u16 = resp.attr().length(); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/udf.h b/dataplane/standalone/sai/udf.h index 9cf7af489..3c5118d8e 100644 --- a/dataplane/standalone/sai/udf.h +++ b/dataplane/standalone/sai/udf.h @@ -25,30 +25,42 @@ extern "C" { extern const sai_udf_api_t l_udf; - -sai_status_t l_create_udf(sai_object_id_t *udf_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_udf(sai_object_id_t* udf_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_udf(sai_object_id_t udf_id); -sai_status_t l_set_udf_attribute(sai_object_id_t udf_id, const sai_attribute_t *attr); +sai_status_t l_set_udf_attribute(sai_object_id_t udf_id, + const sai_attribute_t* attr); -sai_status_t l_get_udf_attribute(sai_object_id_t udf_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_udf_attribute(sai_object_id_t udf_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_udf_match(sai_object_id_t *udf_match_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_udf_match(sai_object_id_t* udf_match_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_udf_match(sai_object_id_t udf_match_id); -sai_status_t l_set_udf_match_attribute(sai_object_id_t udf_match_id, const sai_attribute_t *attr); +sai_status_t l_set_udf_match_attribute(sai_object_id_t udf_match_id, + const sai_attribute_t* attr); -sai_status_t l_get_udf_match_attribute(sai_object_id_t udf_match_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_udf_match_attribute(sai_object_id_t udf_match_id, + uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_udf_group(sai_object_id_t *udf_group_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_udf_group(sai_object_id_t* udf_group_id, + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_udf_group(sai_object_id_t udf_group_id); -sai_status_t l_set_udf_group_attribute(sai_object_id_t udf_group_id, const sai_attribute_t *attr); - -sai_status_t l_get_udf_group_attribute(sai_object_id_t udf_group_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_udf_group_attribute(sai_object_id_t udf_group_id, + const sai_attribute_t* attr); +sai_status_t l_get_udf_group_attribute(sai_object_id_t udf_group_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_UDF_H_ diff --git a/dataplane/standalone/sai/virtual_router.cc b/dataplane/standalone/sai/virtual_router.cc index 3250f4031..057f0038f 100644 --- a/dataplane/standalone/sai/virtual_router.cc +++ b/dataplane/standalone/sai/virtual_router.cc @@ -13,209 +13,221 @@ // limitations under the License. #include "dataplane/standalone/sai/virtual_router.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/virtual_router.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_virtual_router_api_t l_virtual_router = { - .create_virtual_router = l_create_virtual_router, - .remove_virtual_router = l_remove_virtual_router, - .set_virtual_router_attribute = l_set_virtual_router_attribute, - .get_virtual_router_attribute = l_get_virtual_router_attribute, + .create_virtual_router = l_create_virtual_router, + .remove_virtual_router = l_remove_virtual_router, + .set_virtual_router_attribute = l_set_virtual_router_attribute, + .get_virtual_router_attribute = l_get_virtual_router_attribute, }; - -lemming::dataplane::sai::CreateVirtualRouterRequest convert_create_virtual_router(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateVirtualRouterRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: - msg.set_admin_v4_state(attr_list[i].value.booldata); - break; - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: - msg.set_admin_v6_state(attr_list[i].value.booldata); - break; - case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: - msg.set_src_mac_address(attr_list[i].value.mac, sizeof(attr_list[i].value.mac)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: - msg.set_violation_ttl1_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: - msg.set_violation_ip_options_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: - msg.set_unknown_l3_multicast_packet_action(convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_LABEL: - msg.set_label(attr_list[i].value.chardata); - break; +lemming::dataplane::sai::CreateVirtualRouterRequest +convert_create_virtual_router(sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateVirtualRouterRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: + msg.set_admin_v4_state(attr_list[i].value.booldata); + break; + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: + msg.set_admin_v6_state(attr_list[i].value.booldata); + break; + case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: + msg.set_src_mac_address(attr_list[i].value.mac, + sizeof(attr_list[i].value.mac)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: + msg.set_violation_ttl1_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: + msg.set_violation_ip_options_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: + msg.set_unknown_l3_multicast_packet_action( + convert_sai_packet_action_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_LABEL: + msg.set_label(attr_list[i].value.chardata); + break; + } + } + return msg; } -} -return msg; -} - -sai_status_t l_create_virtual_router(sai_object_id_t *virtual_router_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateVirtualRouterRequest req = convert_create_virtual_router(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateVirtualRouterResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = virtual_router->CreateVirtualRouter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (virtual_router_id) { - *virtual_router_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_virtual_router(sai_object_id_t* virtual_router_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateVirtualRouterRequest req = + convert_create_virtual_router(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateVirtualRouterResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = + virtual_router->CreateVirtualRouter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (virtual_router_id) { + *virtual_router_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_virtual_router(sai_object_id_t virtual_router_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveVirtualRouterRequest req; - lemming::dataplane::sai::RemoveVirtualRouterResponse resp; - grpc::ClientContext context; - req.set_oid(virtual_router_id); - - grpc::Status status = virtual_router->RemoveVirtualRouter(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_set_virtual_router_attribute(sai_object_id_t virtual_router_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetVirtualRouterAttributeRequest req; - lemming::dataplane::sai::SetVirtualRouterAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(virtual_router_id); - - - - -switch (attr->id) { - - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: - req.set_admin_v4_state(attr->value.booldata); - break; - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: - req.set_admin_v6_state(attr->value.booldata); - break; - case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: - req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: - req.set_violation_ttl1_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: - req.set_violation_ip_options_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: - req.set_unknown_l3_multicast_packet_action(convert_sai_packet_action_t_to_proto(attr->value.s32)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_LABEL: - req.set_label(attr->value.chardata); - break; -} - - grpc::Status status = virtual_router->SetVirtualRouterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveVirtualRouterRequest req; + lemming::dataplane::sai::RemoveVirtualRouterResponse resp; + grpc::ClientContext context; + req.set_oid(virtual_router_id); + + grpc::Status status = + virtual_router->RemoveVirtualRouter(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_virtual_router_attribute(sai_object_id_t virtual_router_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetVirtualRouterAttributeRequest req; - lemming::dataplane::sai::GetVirtualRouterAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(virtual_router_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_virtual_router_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = virtual_router->GetVirtualRouterAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: - attr_list[i].value.booldata = resp.attr().admin_v4_state(); - break; - case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: - attr_list[i].value.booldata = resp.attr().admin_v6_state(); - break; - case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: - memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), sizeof(sai_mac_t)); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().violation_ttl1_packet_action()); - break; - case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().violation_ip_options_packet_action()); - break; - case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: - attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai(resp.attr().unknown_l3_multicast_packet_action()); - break; - case SAI_VIRTUAL_ROUTER_ATTR_LABEL: - strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); - break; +sai_status_t l_set_virtual_router_attribute(sai_object_id_t virtual_router_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetVirtualRouterAttributeRequest req; + lemming::dataplane::sai::SetVirtualRouterAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(virtual_router_id); + + switch (attr->id) { + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: + req.set_admin_v4_state(attr->value.booldata); + break; + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: + req.set_admin_v6_state(attr->value.booldata); + break; + case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: + req.set_src_mac_address(attr->value.mac, sizeof(attr->value.mac)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: + req.set_violation_ttl1_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: + req.set_violation_ip_options_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: + req.set_unknown_l3_multicast_packet_action( + convert_sai_packet_action_t_to_proto(attr->value.s32)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_LABEL: + req.set_label(attr->value.chardata); + break; + } + + grpc::Status status = + virtual_router->SetVirtualRouterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_virtual_router_attribute(sai_object_id_t virtual_router_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetVirtualRouterAttributeRequest req; + lemming::dataplane::sai::GetVirtualRouterAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(virtual_router_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type( + convert_sai_virtual_router_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = + virtual_router->GetVirtualRouterAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V4_STATE: + attr_list[i].value.booldata = resp.attr().admin_v4_state(); + break; + case SAI_VIRTUAL_ROUTER_ATTR_ADMIN_V6_STATE: + attr_list[i].value.booldata = resp.attr().admin_v6_state(); + break; + case SAI_VIRTUAL_ROUTER_ATTR_SRC_MAC_ADDRESS: + memcpy(attr_list[i].value.mac, resp.attr().src_mac_address().data(), + sizeof(sai_mac_t)); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_TTL1_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().violation_ttl1_packet_action()); + break; + case SAI_VIRTUAL_ROUTER_ATTR_VIOLATION_IP_OPTIONS_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().violation_ip_options_packet_action()); + break; + case SAI_VIRTUAL_ROUTER_ATTR_UNKNOWN_L3_MULTICAST_PACKET_ACTION: + attr_list[i].value.s32 = convert_sai_packet_action_t_to_sai( + resp.attr().unknown_l3_multicast_packet_action()); + break; + case SAI_VIRTUAL_ROUTER_ATTR_LABEL: + strncpy(attr_list[i].value.chardata, resp.attr().label().data(), 32); + break; + } + } + + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/virtual_router.h b/dataplane/standalone/sai/virtual_router.h index 30211c00d..1b55c9dac 100644 --- a/dataplane/standalone/sai/virtual_router.h +++ b/dataplane/standalone/sai/virtual_router.h @@ -25,14 +25,18 @@ extern "C" { extern const sai_virtual_router_api_t l_virtual_router; - -sai_status_t l_create_virtual_router(sai_object_id_t *virtual_router_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_virtual_router(sai_object_id_t* virtual_router_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_virtual_router(sai_object_id_t virtual_router_id); -sai_status_t l_set_virtual_router_attribute(sai_object_id_t virtual_router_id, const sai_attribute_t *attr); - -sai_status_t l_get_virtual_router_attribute(sai_object_id_t virtual_router_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_virtual_router_attribute(sai_object_id_t virtual_router_id, + const sai_attribute_t* attr); +sai_status_t l_get_virtual_router_attribute(sai_object_id_t virtual_router_id, + uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_VIRTUAL_ROUTER_H_ diff --git a/dataplane/standalone/sai/vlan.cc b/dataplane/standalone/sai/vlan.cc index 36fa38d6c..0127abf37 100644 --- a/dataplane/standalone/sai/vlan.cc +++ b/dataplane/standalone/sai/vlan.cc @@ -13,600 +13,671 @@ // limitations under the License. #include "dataplane/standalone/sai/vlan.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/vlan.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_vlan_api_t l_vlan = { - .create_vlan = l_create_vlan, - .remove_vlan = l_remove_vlan, - .set_vlan_attribute = l_set_vlan_attribute, - .get_vlan_attribute = l_get_vlan_attribute, - .create_vlan_member = l_create_vlan_member, - .remove_vlan_member = l_remove_vlan_member, - .set_vlan_member_attribute = l_set_vlan_member_attribute, - .get_vlan_member_attribute = l_get_vlan_member_attribute, - .create_vlan_members = l_create_vlan_members, - .remove_vlan_members = l_remove_vlan_members, - .get_vlan_stats = l_get_vlan_stats, - .get_vlan_stats_ext = l_get_vlan_stats_ext, - .clear_vlan_stats = l_clear_vlan_stats, + .create_vlan = l_create_vlan, + .remove_vlan = l_remove_vlan, + .set_vlan_attribute = l_set_vlan_attribute, + .get_vlan_attribute = l_get_vlan_attribute, + .create_vlan_member = l_create_vlan_member, + .remove_vlan_member = l_remove_vlan_member, + .set_vlan_member_attribute = l_set_vlan_member_attribute, + .get_vlan_member_attribute = l_get_vlan_member_attribute, + .create_vlan_members = l_create_vlan_members, + .remove_vlan_members = l_remove_vlan_members, + .get_vlan_stats = l_get_vlan_stats, + .get_vlan_stats_ext = l_get_vlan_stats_ext, + .clear_vlan_stats = l_clear_vlan_stats, }; - -lemming::dataplane::sai::CreateVlanRequest convert_create_vlan(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateVlanRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VLAN_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.u16); - break; - case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: - msg.set_max_learned_addresses(attr_list[i].value.u32); - break; - case SAI_VLAN_ATTR_STP_INSTANCE: - msg.set_stp_instance(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_LEARN_DISABLE: - msg.set_learn_disable(attr_list[i].value.booldata); - break; - case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: - msg.set_ipv4_mcast_lookup_key_type(convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: - msg.set_ipv6_mcast_lookup_key_type(convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: - msg.set_unknown_non_ip_mcast_output_group_id(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: - msg.set_unknown_ipv4_mcast_output_group_id(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: - msg.set_unknown_ipv6_mcast_output_group_id(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: - msg.set_unknown_linklocal_mcast_output_group_id(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_INGRESS_ACL: - msg.set_ingress_acl(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_EGRESS_ACL: - msg.set_egress_acl(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_META_DATA: - msg.set_meta_data(attr_list[i].value.u32); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - msg.set_unknown_unicast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - msg.set_unknown_unicast_flood_group(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - msg.set_unknown_multicast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - msg.set_unknown_multicast_flood_group(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - msg.set_broadcast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: - msg.set_broadcast_flood_group(attr_list[i].value.oid); - break; - case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: - msg.set_custom_igmp_snooping_enable(attr_list[i].value.booldata); - break; - case SAI_VLAN_ATTR_TAM_OBJECT: - msg.mutable_tam_object()->Add(attr_list[i].value.objlist.list, attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); - break; -} - -} -return msg; -} - -lemming::dataplane::sai::CreateVlanMemberRequest convert_create_vlan_member(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - -lemming::dataplane::sai::CreateVlanMemberRequest msg; - - - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VLAN_MEMBER_ATTR_VLAN_ID: - msg.set_vlan_id(attr_list[i].value.oid); - break; - case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: - msg.set_bridge_port_id(attr_list[i].value.oid); - break; - case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: - msg.set_vlan_tagging_mode(convert_sai_vlan_tagging_mode_t_to_proto(attr_list[i].value.s32)); - break; +lemming::dataplane::sai::CreateVlanRequest convert_create_vlan( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateVlanRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VLAN_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.u16); + break; + case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: + msg.set_max_learned_addresses(attr_list[i].value.u32); + break; + case SAI_VLAN_ATTR_STP_INSTANCE: + msg.set_stp_instance(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_LEARN_DISABLE: + msg.set_learn_disable(attr_list[i].value.booldata); + break; + case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: + msg.set_ipv4_mcast_lookup_key_type( + convert_sai_vlan_mcast_lookup_key_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: + msg.set_ipv6_mcast_lookup_key_type( + convert_sai_vlan_mcast_lookup_key_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: + msg.set_unknown_non_ip_mcast_output_group_id(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: + msg.set_unknown_ipv4_mcast_output_group_id(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: + msg.set_unknown_ipv6_mcast_output_group_id(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: + msg.set_unknown_linklocal_mcast_output_group_id(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_INGRESS_ACL: + msg.set_ingress_acl(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_EGRESS_ACL: + msg.set_egress_acl(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_META_DATA: + msg.set_meta_data(attr_list[i].value.u32); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + msg.set_unknown_unicast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + msg.set_unknown_unicast_flood_group(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + msg.set_unknown_multicast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + msg.set_unknown_multicast_flood_group(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + msg.set_broadcast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto( + attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: + msg.set_broadcast_flood_group(attr_list[i].value.oid); + break; + case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: + msg.set_custom_igmp_snooping_enable(attr_list[i].value.booldata); + break; + case SAI_VLAN_ATTR_TAM_OBJECT: + msg.mutable_tam_object()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + case SAI_VLAN_ATTR_STATS_COUNT_MODE: + msg.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_VLAN_ATTR_SELECTIVE_COUNTER_LIST: + msg.mutable_selective_counter_list()->Add( + attr_list[i].value.objlist.list, + attr_list[i].value.objlist.list + attr_list[i].value.objlist.count); + break; + } + } + return msg; } -} -return msg; +lemming::dataplane::sai::CreateVlanMemberRequest convert_create_vlan_member( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateVlanMemberRequest msg; + + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VLAN_MEMBER_ATTR_VLAN_ID: + msg.set_vlan_id(attr_list[i].value.oid); + break; + case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: + msg.set_bridge_port_id(attr_list[i].value.oid); + break; + case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: + msg.set_vlan_tagging_mode( + convert_sai_vlan_tagging_mode_t_to_proto(attr_list[i].value.s32)); + break; + } + } + return msg; } -sai_status_t l_create_vlan(sai_object_id_t *vlan_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateVlanRequest req = convert_create_vlan(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateVlanResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = vlan->CreateVlan(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (vlan_id) { - *vlan_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_vlan(sai_object_id_t* vlan_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateVlanRequest req = + convert_create_vlan(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateVlanResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = vlan->CreateVlan(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (vlan_id) { + *vlan_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_vlan(sai_object_id_t vlan_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveVlanRequest req; - lemming::dataplane::sai::RemoveVlanResponse resp; - grpc::ClientContext context; - req.set_oid(vlan_id); - - grpc::Status status = vlan->RemoveVlan(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveVlanRequest req; + lemming::dataplane::sai::RemoveVlanResponse resp; + grpc::ClientContext context; + req.set_oid(vlan_id); + + grpc::Status status = vlan->RemoveVlan(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_vlan_attribute(sai_object_id_t vlan_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetVlanAttributeRequest req; - lemming::dataplane::sai::SetVlanAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(vlan_id); - - - - -switch (attr->id) { - - case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: - req.set_max_learned_addresses(attr->value.u32); - break; - case SAI_VLAN_ATTR_STP_INSTANCE: - req.set_stp_instance(attr->value.oid); - break; - case SAI_VLAN_ATTR_LEARN_DISABLE: - req.set_learn_disable(attr->value.booldata); - break; - case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: - req.set_ipv4_mcast_lookup_key_type(convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr->value.s32)); - break; - case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: - req.set_ipv6_mcast_lookup_key_type(convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr->value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: - req.set_unknown_non_ip_mcast_output_group_id(attr->value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: - req.set_unknown_ipv4_mcast_output_group_id(attr->value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: - req.set_unknown_ipv6_mcast_output_group_id(attr->value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: - req.set_unknown_linklocal_mcast_output_group_id(attr->value.oid); - break; - case SAI_VLAN_ATTR_INGRESS_ACL: - req.set_ingress_acl(attr->value.oid); - break; - case SAI_VLAN_ATTR_EGRESS_ACL: - req.set_egress_acl(attr->value.oid); - break; - case SAI_VLAN_ATTR_META_DATA: - req.set_meta_data(attr->value.u32); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - req.set_unknown_unicast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - req.set_unknown_unicast_flood_group(attr->value.oid); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - req.set_unknown_multicast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - req.set_unknown_multicast_flood_group(attr->value.oid); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - req.set_broadcast_flood_control_type(convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: - req.set_broadcast_flood_group(attr->value.oid); - break; - case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: - req.set_custom_igmp_snooping_enable(attr->value.booldata); - break; - case SAI_VLAN_ATTR_TAM_OBJECT: - req.mutable_tam_object()->Add(attr->value.objlist.list, attr->value.objlist.list + attr->value.objlist.count); - break; +sai_status_t l_set_vlan_attribute(sai_object_id_t vlan_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetVlanAttributeRequest req; + lemming::dataplane::sai::SetVlanAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(vlan_id); + + switch (attr->id) { + case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: + req.set_max_learned_addresses(attr->value.u32); + break; + case SAI_VLAN_ATTR_STP_INSTANCE: + req.set_stp_instance(attr->value.oid); + break; + case SAI_VLAN_ATTR_LEARN_DISABLE: + req.set_learn_disable(attr->value.booldata); + break; + case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: + req.set_ipv4_mcast_lookup_key_type( + convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: + req.set_ipv6_mcast_lookup_key_type( + convert_sai_vlan_mcast_lookup_key_type_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: + req.set_unknown_non_ip_mcast_output_group_id(attr->value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: + req.set_unknown_ipv4_mcast_output_group_id(attr->value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: + req.set_unknown_ipv6_mcast_output_group_id(attr->value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: + req.set_unknown_linklocal_mcast_output_group_id(attr->value.oid); + break; + case SAI_VLAN_ATTR_INGRESS_ACL: + req.set_ingress_acl(attr->value.oid); + break; + case SAI_VLAN_ATTR_EGRESS_ACL: + req.set_egress_acl(attr->value.oid); + break; + case SAI_VLAN_ATTR_META_DATA: + req.set_meta_data(attr->value.u32); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + req.set_unknown_unicast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + req.set_unknown_unicast_flood_group(attr->value.oid); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + req.set_unknown_multicast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + req.set_unknown_multicast_flood_group(attr->value.oid); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + req.set_broadcast_flood_control_type( + convert_sai_vlan_flood_control_type_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: + req.set_broadcast_flood_group(attr->value.oid); + break; + case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: + req.set_custom_igmp_snooping_enable(attr->value.booldata); + break; + case SAI_VLAN_ATTR_TAM_OBJECT: + req.mutable_tam_object()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + case SAI_VLAN_ATTR_STATS_COUNT_MODE: + req.set_stats_count_mode( + convert_sai_stats_count_mode_t_to_proto(attr->value.s32)); + break; + case SAI_VLAN_ATTR_SELECTIVE_COUNTER_LIST: + req.mutable_selective_counter_list()->Add( + attr->value.objlist.list, + attr->value.objlist.list + attr->value.objlist.count); + break; + } + + grpc::Status status = vlan->SetVlanAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = vlan->SetVlanAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_vlan_attribute(sai_object_id_t vlan_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetVlanAttributeRequest req; + lemming::dataplane::sai::GetVlanAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(vlan_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_vlan_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = vlan->GetVlanAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VLAN_ATTR_VLAN_ID: + attr_list[i].value.u16 = resp.attr().vlan_id(); + break; + case SAI_VLAN_ATTR_MEMBER_LIST: + copy_list(attr_list[i].value.objlist.list, resp.attr().member_list(), + &attr_list[i].value.objlist.count); + break; + case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: + attr_list[i].value.u32 = resp.attr().max_learned_addresses(); + break; + case SAI_VLAN_ATTR_STP_INSTANCE: + attr_list[i].value.oid = resp.attr().stp_instance(); + break; + case SAI_VLAN_ATTR_LEARN_DISABLE: + attr_list[i].value.booldata = resp.attr().learn_disable(); + break; + case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: + attr_list[i].value.s32 = + convert_sai_vlan_mcast_lookup_key_type_t_to_sai( + resp.attr().ipv4_mcast_lookup_key_type()); + break; + case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: + attr_list[i].value.s32 = + convert_sai_vlan_mcast_lookup_key_type_t_to_sai( + resp.attr().ipv6_mcast_lookup_key_type()); + break; + case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: + attr_list[i].value.oid = + resp.attr().unknown_non_ip_mcast_output_group_id(); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: + attr_list[i].value.oid = + resp.attr().unknown_ipv4_mcast_output_group_id(); + break; + case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: + attr_list[i].value.oid = + resp.attr().unknown_ipv6_mcast_output_group_id(); + break; + case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: + attr_list[i].value.oid = + resp.attr().unknown_linklocal_mcast_output_group_id(); + break; + case SAI_VLAN_ATTR_INGRESS_ACL: + attr_list[i].value.oid = resp.attr().ingress_acl(); + break; + case SAI_VLAN_ATTR_EGRESS_ACL: + attr_list[i].value.oid = resp.attr().egress_acl(); + break; + case SAI_VLAN_ATTR_META_DATA: + attr_list[i].value.u32 = resp.attr().meta_data(); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai( + resp.attr().unknown_unicast_flood_control_type()); + break; + case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().unknown_unicast_flood_group(); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai( + resp.attr().unknown_multicast_flood_control_type()); + break; + case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().unknown_multicast_flood_group(); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: + attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai( + resp.attr().broadcast_flood_control_type()); + break; + case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: + attr_list[i].value.oid = resp.attr().broadcast_flood_group(); + break; + case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: + attr_list[i].value.booldata = resp.attr().custom_igmp_snooping_enable(); + break; + case SAI_VLAN_ATTR_TAM_OBJECT: + copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), + &attr_list[i].value.objlist.count); + break; + case SAI_VLAN_ATTR_STATS_COUNT_MODE: + attr_list[i].value.s32 = convert_sai_stats_count_mode_t_to_sai( + resp.attr().stats_count_mode()); + break; + case SAI_VLAN_ATTR_SELECTIVE_COUNTER_LIST: + copy_list(attr_list[i].value.objlist.list, + resp.attr().selective_counter_list(), + &attr_list[i].value.objlist.count); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_vlan_attribute(sai_object_id_t vlan_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetVlanAttributeRequest req; - lemming::dataplane::sai::GetVlanAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(vlan_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_vlan_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = vlan->GetVlanAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VLAN_ATTR_VLAN_ID: - attr_list[i].value.u16 = resp.attr().vlan_id(); - break; - case SAI_VLAN_ATTR_MEMBER_LIST: - copy_list(attr_list[i].value.objlist.list, resp.attr().member_list(), &attr_list[i].value.objlist.count); - break; - case SAI_VLAN_ATTR_MAX_LEARNED_ADDRESSES: - attr_list[i].value.u32 = resp.attr().max_learned_addresses(); - break; - case SAI_VLAN_ATTR_STP_INSTANCE: - attr_list[i].value.oid = resp.attr().stp_instance(); - break; - case SAI_VLAN_ATTR_LEARN_DISABLE: - attr_list[i].value.booldata = resp.attr().learn_disable(); - break; - case SAI_VLAN_ATTR_IPV4_MCAST_LOOKUP_KEY_TYPE: - attr_list[i].value.s32 = convert_sai_vlan_mcast_lookup_key_type_t_to_sai(resp.attr().ipv4_mcast_lookup_key_type()); - break; - case SAI_VLAN_ATTR_IPV6_MCAST_LOOKUP_KEY_TYPE: - attr_list[i].value.s32 = convert_sai_vlan_mcast_lookup_key_type_t_to_sai(resp.attr().ipv6_mcast_lookup_key_type()); - break; - case SAI_VLAN_ATTR_UNKNOWN_NON_IP_MCAST_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().unknown_non_ip_mcast_output_group_id(); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV4_MCAST_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().unknown_ipv4_mcast_output_group_id(); - break; - case SAI_VLAN_ATTR_UNKNOWN_IPV6_MCAST_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().unknown_ipv6_mcast_output_group_id(); - break; - case SAI_VLAN_ATTR_UNKNOWN_LINKLOCAL_MCAST_OUTPUT_GROUP_ID: - attr_list[i].value.oid = resp.attr().unknown_linklocal_mcast_output_group_id(); - break; - case SAI_VLAN_ATTR_INGRESS_ACL: - attr_list[i].value.oid = resp.attr().ingress_acl(); - break; - case SAI_VLAN_ATTR_EGRESS_ACL: - attr_list[i].value.oid = resp.attr().egress_acl(); - break; - case SAI_VLAN_ATTR_META_DATA: - attr_list[i].value.u32 = resp.attr().meta_data(); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai(resp.attr().unknown_unicast_flood_control_type()); - break; - case SAI_VLAN_ATTR_UNKNOWN_UNICAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().unknown_unicast_flood_group(); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai(resp.attr().unknown_multicast_flood_control_type()); - break; - case SAI_VLAN_ATTR_UNKNOWN_MULTICAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().unknown_multicast_flood_group(); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_CONTROL_TYPE: - attr_list[i].value.s32 = convert_sai_vlan_flood_control_type_t_to_sai(resp.attr().broadcast_flood_control_type()); - break; - case SAI_VLAN_ATTR_BROADCAST_FLOOD_GROUP: - attr_list[i].value.oid = resp.attr().broadcast_flood_group(); - break; - case SAI_VLAN_ATTR_CUSTOM_IGMP_SNOOPING_ENABLE: - attr_list[i].value.booldata = resp.attr().custom_igmp_snooping_enable(); - break; - case SAI_VLAN_ATTR_TAM_OBJECT: - copy_list(attr_list[i].value.objlist.list, resp.attr().tam_object(), &attr_list[i].value.objlist.count); - break; -} - - } - - return SAI_STATUS_SUCCESS; -} - -sai_status_t l_create_vlan_member(sai_object_id_t *vlan_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateVlanMemberRequest req = convert_create_vlan_member(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateVlanMemberResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = vlan->CreateVlanMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (vlan_member_id) { - *vlan_member_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_create_vlan_member(sai_object_id_t* vlan_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateVlanMemberRequest req = + convert_create_vlan_member(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateVlanMemberResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); + + grpc::Status status = vlan->CreateVlanMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (vlan_member_id) { + *vlan_member_id = resp.oid(); + } + + return SAI_STATUS_SUCCESS; } sai_status_t l_remove_vlan_member(sai_object_id_t vlan_member_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveVlanMemberRequest req; - lemming::dataplane::sai::RemoveVlanMemberResponse resp; - grpc::ClientContext context; - req.set_oid(vlan_member_id); - - grpc::Status status = vlan->RemoveVlanMember(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveVlanMemberRequest req; + lemming::dataplane::sai::RemoveVlanMemberResponse resp; + grpc::ClientContext context; + req.set_oid(vlan_member_id); + + grpc::Status status = vlan->RemoveVlanMember(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_vlan_member_attribute(sai_object_id_t vlan_member_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetVlanMemberAttributeRequest req; - lemming::dataplane::sai::SetVlanMemberAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(vlan_member_id); - - - - -switch (attr->id) { - - case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: - req.set_vlan_tagging_mode(convert_sai_vlan_tagging_mode_t_to_proto(attr->value.s32)); - break; +sai_status_t l_set_vlan_member_attribute(sai_object_id_t vlan_member_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::SetVlanMemberAttributeRequest req; + lemming::dataplane::sai::SetVlanMemberAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(vlan_member_id); + + switch (attr->id) { + case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: + req.set_vlan_tagging_mode( + convert_sai_vlan_tagging_mode_t_to_proto(attr->value.s32)); + break; + } + + grpc::Status status = vlan->SetVlanMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } - grpc::Status status = vlan->SetVlanMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_vlan_member_attribute(sai_object_id_t vlan_member_id, + uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetVlanMemberAttributeRequest req; + lemming::dataplane::sai::GetVlanMemberAttributeResponse resp; + grpc::ClientContext context; + + req.set_oid(vlan_member_id); + + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_vlan_member_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = vlan->GetVlanMemberAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_VLAN_MEMBER_ATTR_VLAN_ID: + attr_list[i].value.oid = resp.attr().vlan_id(); + break; + case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: + attr_list[i].value.oid = resp.attr().bridge_port_id(); + break; + case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: + attr_list[i].value.s32 = convert_sai_vlan_tagging_mode_t_to_sai( + resp.attr().vlan_tagging_mode()); + break; + } + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_vlan_member_attribute(sai_object_id_t vlan_member_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetVlanMemberAttributeRequest req; - lemming::dataplane::sai::GetVlanMemberAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(vlan_member_id); - - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_vlan_member_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = vlan->GetVlanMemberAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - - -switch (attr_list[i].id) { - - case SAI_VLAN_MEMBER_ATTR_VLAN_ID: - attr_list[i].value.oid = resp.attr().vlan_id(); - break; - case SAI_VLAN_MEMBER_ATTR_BRIDGE_PORT_ID: - attr_list[i].value.oid = resp.attr().bridge_port_id(); - break; - case SAI_VLAN_MEMBER_ATTR_VLAN_TAGGING_MODE: - attr_list[i].value.s32 = convert_sai_vlan_tagging_mode_t_to_sai(resp.attr().vlan_tagging_mode()); - break; +sai_status_t l_create_vlan_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::CreateVlanMembersRequest req; + lemming::dataplane::sai::CreateVlanMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + auto r = convert_create_vlan_member(switch_id, attr_count[i], attr_list[i]); + *req.add_reqs() = r; + } + + grpc::Status status = vlan->CreateVlanMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_id[i] = resp.resps(i).oid(); + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } - } - - return SAI_STATUS_SUCCESS; +sai_status_t l_remove_vlan_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::RemoveVlanMembersRequest req; + lemming::dataplane::sai::RemoveVlanMembersResponse resp; + grpc::ClientContext context; + + for (uint32_t i = 0; i < object_count; i++) { + req.add_reqs()->set_oid(object_id[i]); + } + + grpc::Status status = vlan->RemoveVlanMembers(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (object_count != resp.resps().size()) { + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < object_count; i++) { + object_statuses[i] = SAI_STATUS_SUCCESS; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_create_vlan_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateVlanMembersRequest req; - lemming::dataplane::sai::CreateVlanMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - auto r = convert_create_vlan_member(switch_id, attr_count[i],attr_list[i]); - *req.add_reqs() = r; - } - - grpc::Status status = vlan->CreateVlanMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_id[i] = resp.resps(i).oid(); - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - - return SAI_STATUS_SUCCESS; +sai_status_t l_get_vlan_stats(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + + lemming::dataplane::sai::GetVlanStatsRequest req; + lemming::dataplane::sai::GetVlanStatsResponse resp; + grpc::ClientContext context; + req.set_oid(vlan_id); + + for (uint32_t i = 0; i < number_of_counters; i++) { + req.add_counter_ids(convert_sai_vlan_stat_t_to_proto(counter_ids[i])); + } + grpc::Status status = vlan->GetVlanStats(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; + i < number_of_counters && i < uint32_t(resp.values_size()); i++) { + counters[i] = resp.values(i); + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_remove_vlan_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveVlanMembersRequest req; - lemming::dataplane::sai::RemoveVlanMembersResponse resp; - grpc::ClientContext context; - - for (uint32_t i = 0; i < object_count; i++) { - req.add_reqs()->set_oid(object_id[i]); - - } - - grpc::Status status = vlan->RemoveVlanMembers(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (object_count != resp.resps().size()) { - return SAI_STATUS_FAILURE; - } - for (uint32_t i = 0; i < object_count; i++) { - object_statuses[i] = SAI_STATUS_SUCCESS; - } - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_get_vlan_stats_ext(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_get_vlan_stats(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetVlanStatsRequest req; - lemming::dataplane::sai::GetVlanStatsResponse resp; - grpc::ClientContext context; - req.set_oid(vlan_id); - - for (uint32_t i = 0; i < number_of_counters; i++) { - req.add_counter_ids(convert_sai_vlan_stat_t_to_proto(counter_ids[i])); - } - grpc::Status status = vlan->GetVlanStats(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < number_of_counters && i < uint32_t(resp.values_size()); i++ ) { - counters[i] = resp.values(i); - } - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_vlan_stats_ext(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; -} +sai_status_t l_clear_vlan_stats(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_clear_vlan_stats(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - return SAI_STATUS_SUCCESS; + return SAI_STATUS_SUCCESS; } - diff --git a/dataplane/standalone/sai/vlan.h b/dataplane/standalone/sai/vlan.h index e3f9e15bd..89fd70620 100644 --- a/dataplane/standalone/sai/vlan.h +++ b/dataplane/standalone/sai/vlan.h @@ -25,32 +25,57 @@ extern "C" { extern const sai_vlan_api_t l_vlan; - -sai_status_t l_create_vlan(sai_object_id_t *vlan_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_vlan(sai_object_id_t* vlan_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_vlan(sai_object_id_t vlan_id); -sai_status_t l_set_vlan_attribute(sai_object_id_t vlan_id, const sai_attribute_t *attr); +sai_status_t l_set_vlan_attribute(sai_object_id_t vlan_id, + const sai_attribute_t* attr); -sai_status_t l_get_vlan_attribute(sai_object_id_t vlan_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_get_vlan_attribute(sai_object_id_t vlan_id, uint32_t attr_count, + sai_attribute_t* attr_list); -sai_status_t l_create_vlan_member(sai_object_id_t *vlan_member_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_vlan_member(sai_object_id_t* vlan_member_id, + sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_vlan_member(sai_object_id_t vlan_member_id); -sai_status_t l_set_vlan_member_attribute(sai_object_id_t vlan_member_id, const sai_attribute_t *attr); - -sai_status_t l_get_vlan_member_attribute(sai_object_id_t vlan_member_id, uint32_t attr_count, sai_attribute_t *attr_list); - -sai_status_t l_create_vlan_members(sai_object_id_t switch_id, uint32_t object_count, const uint32_t *attr_count, const sai_attribute_t **attr_list, sai_bulk_op_error_mode_t mode, sai_object_id_t *object_id, sai_status_t *object_statuses); - -sai_status_t l_remove_vlan_members(uint32_t object_count, const sai_object_id_t *object_id, sai_bulk_op_error_mode_t mode, sai_status_t *object_statuses); - -sai_status_t l_get_vlan_stats(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, uint64_t *counters); - -sai_status_t l_get_vlan_stats_ext(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids, sai_stats_mode_t mode, uint64_t *counters); - -sai_status_t l_clear_vlan_stats(sai_object_id_t vlan_id, uint32_t number_of_counters, const sai_stat_id_t *counter_ids); - +sai_status_t l_set_vlan_member_attribute(sai_object_id_t vlan_member_id, + const sai_attribute_t* attr); + +sai_status_t l_get_vlan_member_attribute(sai_object_id_t vlan_member_id, + uint32_t attr_count, + sai_attribute_t* attr_list); + +sai_status_t l_create_vlan_members(sai_object_id_t switch_id, + uint32_t object_count, + const uint32_t* attr_count, + const sai_attribute_t** attr_list, + sai_bulk_op_error_mode_t mode, + sai_object_id_t* object_id, + sai_status_t* object_statuses); + +sai_status_t l_remove_vlan_members(uint32_t object_count, + const sai_object_id_t* object_id, + sai_bulk_op_error_mode_t mode, + sai_status_t* object_statuses); + +sai_status_t l_get_vlan_stats(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + uint64_t* counters); + +sai_status_t l_get_vlan_stats_ext(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids, + sai_stats_mode_t mode, uint64_t* counters); + +sai_status_t l_clear_vlan_stats(sai_object_id_t vlan_id, + uint32_t number_of_counters, + const sai_stat_id_t* counter_ids); #endif // DATAPLANE_STANDALONE_SAI_VLAN_H_ diff --git a/dataplane/standalone/sai/wred.cc b/dataplane/standalone/sai/wred.cc index 870daa9b0..2f1130d43 100644 --- a/dataplane/standalone/sai/wred.cc +++ b/dataplane/standalone/sai/wred.cc @@ -13,506 +13,506 @@ // limitations under the License. #include "dataplane/standalone/sai/wred.h" -#include "dataplane/standalone/sai/common.h" -#include "dataplane/standalone/sai/enum.h" + +#include + #include "dataplane/proto/sai/common.pb.h" #include "dataplane/proto/sai/wred.pb.h" -#include +#include "dataplane/standalone/sai/common.h" +#include "dataplane/standalone/sai/enum.h" const sai_wred_api_t l_wred = { - .create_wred = l_create_wred, - .remove_wred = l_remove_wred, - .set_wred_attribute = l_set_wred_attribute, - .get_wred_attribute = l_get_wred_attribute, + .create_wred = l_create_wred, + .remove_wred = l_remove_wred, + .set_wred_attribute = l_set_wred_attribute, + .get_wred_attribute = l_get_wred_attribute, }; +lemming::dataplane::sai::CreateWredRequest convert_create_wred( + sai_object_id_t switch_id, uint32_t attr_count, + const sai_attribute_t* attr_list) { + lemming::dataplane::sai::CreateWredRequest msg; -lemming::dataplane::sai::CreateWredRequest convert_create_wred(sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_WRED_ATTR_GREEN_ENABLE: + msg.set_green_enable(attr_list[i].value.booldata); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: + msg.set_green_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: + msg.set_green_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: + msg.set_green_drop_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_YELLOW_ENABLE: + msg.set_yellow_enable(attr_list[i].value.booldata); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: + msg.set_yellow_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: + msg.set_yellow_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: + msg.set_yellow_drop_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_RED_ENABLE: + msg.set_red_enable(attr_list[i].value.booldata); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD: + msg.set_red_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD: + msg.set_red_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_RED_DROP_PROBABILITY: + msg.set_red_drop_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_WEIGHT: + msg.set_weight(attr_list[i].value.u8); + break; + case SAI_WRED_ATTR_ECN_MARK_MODE: + msg.set_ecn_mark_mode( + convert_sai_ecn_mark_mode_t_to_proto(attr_list[i].value.s32)); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: + msg.set_ecn_green_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: + msg.set_ecn_green_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: + msg.set_ecn_green_mark_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: + msg.set_ecn_yellow_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: + msg.set_ecn_yellow_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: + msg.set_ecn_yellow_mark_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: + msg.set_ecn_red_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: + msg.set_ecn_red_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: + msg.set_ecn_red_mark_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: + msg.set_ecn_color_unaware_min_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: + msg.set_ecn_color_unaware_max_threshold(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: + msg.set_ecn_color_unaware_mark_probability(attr_list[i].value.u32); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: + msg.set_green_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: + msg.set_green_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: + msg.set_yellow_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: + msg.set_yellow_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: + msg.set_red_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: + msg.set_red_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: + msg.set_ecn_green_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: + msg.set_ecn_green_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: + msg.set_ecn_yellow_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: + msg.set_ecn_yellow_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: + msg.set_ecn_red_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: + msg.set_ecn_red_max_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: + msg.set_ecn_color_unaware_min_threshold_64(attr_list[i].value.u64); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: + msg.set_ecn_color_unaware_max_threshold_64(attr_list[i].value.u64); + break; + } + } + return msg; +} -lemming::dataplane::sai::CreateWredRequest msg; +sai_status_t l_create_wred(sai_object_id_t* wred_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; + lemming::dataplane::sai::CreateWredRequest req = + convert_create_wred(switch_id, attr_count, attr_list); + lemming::dataplane::sai::CreateWredResponse resp; + grpc::ClientContext context; + req.set_switch_(switch_id); - for(uint32_t i = 0; i < attr_count; i++ ) { - - + grpc::Status status = wred->CreateWred(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + if (wred_id) { + *wred_id = resp.oid(); + } -switch (attr_list[i].id) { - - case SAI_WRED_ATTR_GREEN_ENABLE: - msg.set_green_enable(attr_list[i].value.booldata); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: - msg.set_green_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: - msg.set_green_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: - msg.set_green_drop_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_YELLOW_ENABLE: - msg.set_yellow_enable(attr_list[i].value.booldata); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: - msg.set_yellow_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: - msg.set_yellow_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: - msg.set_yellow_drop_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_RED_ENABLE: - msg.set_red_enable(attr_list[i].value.booldata); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD: - msg.set_red_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD: - msg.set_red_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_RED_DROP_PROBABILITY: - msg.set_red_drop_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_WEIGHT: - msg.set_weight(attr_list[i].value.u8); - break; - case SAI_WRED_ATTR_ECN_MARK_MODE: - msg.set_ecn_mark_mode(convert_sai_ecn_mark_mode_t_to_proto(attr_list[i].value.s32)); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: - msg.set_ecn_green_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: - msg.set_ecn_green_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: - msg.set_ecn_green_mark_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: - msg.set_ecn_yellow_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: - msg.set_ecn_yellow_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: - msg.set_ecn_yellow_mark_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: - msg.set_ecn_red_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: - msg.set_ecn_red_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: - msg.set_ecn_red_mark_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: - msg.set_ecn_color_unaware_min_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: - msg.set_ecn_color_unaware_max_threshold(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: - msg.set_ecn_color_unaware_mark_probability(attr_list[i].value.u32); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: - msg.set_green_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: - msg.set_green_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: - msg.set_yellow_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: - msg.set_yellow_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: - msg.set_red_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: - msg.set_red_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: - msg.set_ecn_green_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: - msg.set_ecn_green_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: - msg.set_ecn_yellow_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: - msg.set_ecn_yellow_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: - msg.set_ecn_red_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: - msg.set_ecn_red_max_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: - msg.set_ecn_color_unaware_min_threshold_64(attr_list[i].value.u64); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: - msg.set_ecn_color_unaware_max_threshold_64(attr_list[i].value.u64); - break; + return SAI_STATUS_SUCCESS; } -} -return msg; -} +sai_status_t l_remove_wred(sai_object_id_t wred_id) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -sai_status_t l_create_wred(sai_object_id_t *wred_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::CreateWredRequest req = convert_create_wred(switch_id, attr_count, attr_list); - lemming::dataplane::sai::CreateWredResponse resp; - grpc::ClientContext context; - req.set_switch_(switch_id); - - grpc::Status status = wred->CreateWred(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - if (wred_id) { - *wred_id = resp.oid(); - } - - - return SAI_STATUS_SUCCESS; -} + lemming::dataplane::sai::RemoveWredRequest req; + lemming::dataplane::sai::RemoveWredResponse resp; + grpc::ClientContext context; + req.set_oid(wred_id); -sai_status_t l_remove_wred(sai_object_id_t wred_id) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::RemoveWredRequest req; - lemming::dataplane::sai::RemoveWredResponse resp; - grpc::ClientContext context; - req.set_oid(wred_id); - - grpc::Status status = wred->RemoveWred(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + grpc::Status status = wred->RemoveWred(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_set_wred_attribute(sai_object_id_t wred_id, const sai_attribute_t *attr) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::SetWredAttributeRequest req; - lemming::dataplane::sai::SetWredAttributeResponse resp; - grpc::ClientContext context; - req.set_oid(wred_id); - - - +sai_status_t l_set_wred_attribute(sai_object_id_t wred_id, + const sai_attribute_t* attr) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; -switch (attr->id) { - - case SAI_WRED_ATTR_GREEN_ENABLE: - req.set_green_enable(attr->value.booldata); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: - req.set_green_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: - req.set_green_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: - req.set_green_drop_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_YELLOW_ENABLE: - req.set_yellow_enable(attr->value.booldata); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: - req.set_yellow_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: - req.set_yellow_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: - req.set_yellow_drop_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_RED_ENABLE: - req.set_red_enable(attr->value.booldata); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD: - req.set_red_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD: - req.set_red_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_RED_DROP_PROBABILITY: - req.set_red_drop_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_WEIGHT: - req.set_weight(attr->value.u8); - break; - case SAI_WRED_ATTR_ECN_MARK_MODE: - req.set_ecn_mark_mode(convert_sai_ecn_mark_mode_t_to_proto(attr->value.s32)); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: - req.set_ecn_green_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: - req.set_ecn_green_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: - req.set_ecn_green_mark_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: - req.set_ecn_yellow_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: - req.set_ecn_yellow_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: - req.set_ecn_yellow_mark_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: - req.set_ecn_red_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: - req.set_ecn_red_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: - req.set_ecn_red_mark_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: - req.set_ecn_color_unaware_min_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: - req.set_ecn_color_unaware_max_threshold(attr->value.u32); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: - req.set_ecn_color_unaware_mark_probability(attr->value.u32); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: - req.set_green_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: - req.set_green_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: - req.set_yellow_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: - req.set_yellow_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: - req.set_red_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: - req.set_red_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: - req.set_ecn_green_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: - req.set_ecn_green_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: - req.set_ecn_yellow_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: - req.set_ecn_yellow_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: - req.set_ecn_red_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: - req.set_ecn_red_max_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: - req.set_ecn_color_unaware_min_threshold_64(attr->value.u64); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: - req.set_ecn_color_unaware_max_threshold_64(attr->value.u64); - break; -} + lemming::dataplane::sai::SetWredAttributeRequest req; + lemming::dataplane::sai::SetWredAttributeResponse resp; + grpc::ClientContext context; + req.set_oid(wred_id); - grpc::Status status = wred->SetWredAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - - return SAI_STATUS_SUCCESS; + switch (attr->id) { + case SAI_WRED_ATTR_GREEN_ENABLE: + req.set_green_enable(attr->value.booldata); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: + req.set_green_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: + req.set_green_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: + req.set_green_drop_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_YELLOW_ENABLE: + req.set_yellow_enable(attr->value.booldata); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: + req.set_yellow_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: + req.set_yellow_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: + req.set_yellow_drop_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_RED_ENABLE: + req.set_red_enable(attr->value.booldata); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD: + req.set_red_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD: + req.set_red_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_RED_DROP_PROBABILITY: + req.set_red_drop_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_WEIGHT: + req.set_weight(attr->value.u8); + break; + case SAI_WRED_ATTR_ECN_MARK_MODE: + req.set_ecn_mark_mode( + convert_sai_ecn_mark_mode_t_to_proto(attr->value.s32)); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: + req.set_ecn_green_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: + req.set_ecn_green_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: + req.set_ecn_green_mark_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: + req.set_ecn_yellow_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: + req.set_ecn_yellow_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: + req.set_ecn_yellow_mark_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: + req.set_ecn_red_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: + req.set_ecn_red_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: + req.set_ecn_red_mark_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: + req.set_ecn_color_unaware_min_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: + req.set_ecn_color_unaware_max_threshold(attr->value.u32); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: + req.set_ecn_color_unaware_mark_probability(attr->value.u32); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: + req.set_green_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: + req.set_green_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: + req.set_yellow_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: + req.set_yellow_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: + req.set_red_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: + req.set_red_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: + req.set_ecn_green_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: + req.set_ecn_green_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: + req.set_ecn_yellow_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: + req.set_ecn_yellow_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: + req.set_ecn_red_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: + req.set_ecn_red_max_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: + req.set_ecn_color_unaware_min_threshold_64(attr->value.u64); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: + req.set_ecn_color_unaware_max_threshold_64(attr->value.u64); + break; + } + + grpc::Status status = wred->SetWredAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + + return SAI_STATUS_SUCCESS; } -sai_status_t l_get_wred_attribute(sai_object_id_t wred_id, uint32_t attr_count, sai_attribute_t *attr_list) { - LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - - lemming::dataplane::sai::GetWredAttributeRequest req; - lemming::dataplane::sai::GetWredAttributeResponse resp; - grpc::ClientContext context; - - req.set_oid(wred_id); +sai_status_t l_get_wred_attribute(sai_object_id_t wred_id, uint32_t attr_count, + sai_attribute_t* attr_list) { + LOG(INFO) << "Func: " << __PRETTY_FUNCTION__; - for (uint32_t i = 0; i < attr_count; i++) { - req.add_attr_type(convert_sai_wred_attr_t_to_proto(attr_list[i].id)); - } - grpc::Status status = wred->GetWredAttribute(&context, req, &resp); - if (!status.ok()) { - auto it = context.GetServerTrailingMetadata().find("traceparent"); - if (it != context.GetServerTrailingMetadata().end()) { - LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second << " msg: " << status.error_message(); - } else { - LOG(ERROR) << "Lucius RPC error: " << status.error_message(); - } - return SAI_STATUS_FAILURE; - } - for(uint32_t i = 0; i < attr_count; i++ ) { - - + lemming::dataplane::sai::GetWredAttributeRequest req; + lemming::dataplane::sai::GetWredAttributeResponse resp; + grpc::ClientContext context; -switch (attr_list[i].id) { - - case SAI_WRED_ATTR_GREEN_ENABLE: - attr_list[i].value.booldata = resp.attr().green_enable(); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().green_min_threshold(); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().green_max_threshold(); - break; - case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: - attr_list[i].value.u32 = resp.attr().green_drop_probability(); - break; - case SAI_WRED_ATTR_YELLOW_ENABLE: - attr_list[i].value.booldata = resp.attr().yellow_enable(); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().yellow_min_threshold(); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().yellow_max_threshold(); - break; - case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: - attr_list[i].value.u32 = resp.attr().yellow_drop_probability(); - break; - case SAI_WRED_ATTR_RED_ENABLE: - attr_list[i].value.booldata = resp.attr().red_enable(); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().red_min_threshold(); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().red_max_threshold(); - break; - case SAI_WRED_ATTR_RED_DROP_PROBABILITY: - attr_list[i].value.u32 = resp.attr().red_drop_probability(); - break; - case SAI_WRED_ATTR_WEIGHT: - attr_list[i].value.u8 = resp.attr().weight(); - break; - case SAI_WRED_ATTR_ECN_MARK_MODE: - attr_list[i].value.s32 = convert_sai_ecn_mark_mode_t_to_sai(resp.attr().ecn_mark_mode()); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_green_min_threshold(); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_green_max_threshold(); - break; - case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: - attr_list[i].value.u32 = resp.attr().ecn_green_mark_probability(); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_yellow_min_threshold(); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_yellow_max_threshold(); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: - attr_list[i].value.u32 = resp.attr().ecn_yellow_mark_probability(); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_red_min_threshold(); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_red_max_threshold(); - break; - case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: - attr_list[i].value.u32 = resp.attr().ecn_red_mark_probability(); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_color_unaware_min_threshold(); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: - attr_list[i].value.u32 = resp.attr().ecn_color_unaware_max_threshold(); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: - attr_list[i].value.u32 = resp.attr().ecn_color_unaware_mark_probability(); - break; - case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().green_min_threshold_64(); - break; - case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().green_max_threshold_64(); - break; - case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().yellow_min_threshold_64(); - break; - case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().yellow_max_threshold_64(); - break; - case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().red_min_threshold_64(); - break; - case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().red_max_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_green_min_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_green_max_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_yellow_min_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_yellow_max_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_red_min_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_red_max_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_color_unaware_min_threshold_64(); - break; - case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: - attr_list[i].value.u64 = resp.attr().ecn_color_unaware_max_threshold_64(); - break; -} + req.set_oid(wred_id); - } - - return SAI_STATUS_SUCCESS; -} + for (uint32_t i = 0; i < attr_count; i++) { + req.add_attr_type(convert_sai_wred_attr_t_to_proto(attr_list[i].id)); + } + grpc::Status status = wred->GetWredAttribute(&context, req, &resp); + if (!status.ok()) { + auto it = context.GetServerTrailingMetadata().find("traceparent"); + if (it != context.GetServerTrailingMetadata().end()) { + LOG(ERROR) << "Lucius RPC error: Trace ID " << it->second + << " msg: " << status.error_message(); + } else { + LOG(ERROR) << "Lucius RPC error: " << status.error_message(); + } + return SAI_STATUS_FAILURE; + } + for (uint32_t i = 0; i < attr_count; i++) { + switch (attr_list[i].id) { + case SAI_WRED_ATTR_GREEN_ENABLE: + attr_list[i].value.booldata = resp.attr().green_enable(); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().green_min_threshold(); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().green_max_threshold(); + break; + case SAI_WRED_ATTR_GREEN_DROP_PROBABILITY: + attr_list[i].value.u32 = resp.attr().green_drop_probability(); + break; + case SAI_WRED_ATTR_YELLOW_ENABLE: + attr_list[i].value.booldata = resp.attr().yellow_enable(); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().yellow_min_threshold(); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().yellow_max_threshold(); + break; + case SAI_WRED_ATTR_YELLOW_DROP_PROBABILITY: + attr_list[i].value.u32 = resp.attr().yellow_drop_probability(); + break; + case SAI_WRED_ATTR_RED_ENABLE: + attr_list[i].value.booldata = resp.attr().red_enable(); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().red_min_threshold(); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().red_max_threshold(); + break; + case SAI_WRED_ATTR_RED_DROP_PROBABILITY: + attr_list[i].value.u32 = resp.attr().red_drop_probability(); + break; + case SAI_WRED_ATTR_WEIGHT: + attr_list[i].value.u8 = resp.attr().weight(); + break; + case SAI_WRED_ATTR_ECN_MARK_MODE: + attr_list[i].value.s32 = + convert_sai_ecn_mark_mode_t_to_sai(resp.attr().ecn_mark_mode()); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_green_min_threshold(); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_green_max_threshold(); + break; + case SAI_WRED_ATTR_ECN_GREEN_MARK_PROBABILITY: + attr_list[i].value.u32 = resp.attr().ecn_green_mark_probability(); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_yellow_min_threshold(); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_yellow_max_threshold(); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MARK_PROBABILITY: + attr_list[i].value.u32 = resp.attr().ecn_yellow_mark_probability(); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_red_min_threshold(); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_red_max_threshold(); + break; + case SAI_WRED_ATTR_ECN_RED_MARK_PROBABILITY: + attr_list[i].value.u32 = resp.attr().ecn_red_mark_probability(); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_color_unaware_min_threshold(); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD: + attr_list[i].value.u32 = resp.attr().ecn_color_unaware_max_threshold(); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MARK_PROBABILITY: + attr_list[i].value.u32 = + resp.attr().ecn_color_unaware_mark_probability(); + break; + case SAI_WRED_ATTR_GREEN_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().green_min_threshold_64(); + break; + case SAI_WRED_ATTR_GREEN_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().green_max_threshold_64(); + break; + case SAI_WRED_ATTR_YELLOW_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().yellow_min_threshold_64(); + break; + case SAI_WRED_ATTR_YELLOW_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().yellow_max_threshold_64(); + break; + case SAI_WRED_ATTR_RED_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().red_min_threshold_64(); + break; + case SAI_WRED_ATTR_RED_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().red_max_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_GREEN_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_green_min_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_GREEN_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_green_max_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_yellow_min_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_YELLOW_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_yellow_max_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_RED_MIN_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_red_min_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_RED_MAX_THRESHOLD_64: + attr_list[i].value.u64 = resp.attr().ecn_red_max_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MIN_THRESHOLD_64: + attr_list[i].value.u64 = + resp.attr().ecn_color_unaware_min_threshold_64(); + break; + case SAI_WRED_ATTR_ECN_COLOR_UNAWARE_MAX_THRESHOLD_64: + attr_list[i].value.u64 = + resp.attr().ecn_color_unaware_max_threshold_64(); + break; + } + } + return SAI_STATUS_SUCCESS; +} diff --git a/dataplane/standalone/sai/wred.h b/dataplane/standalone/sai/wred.h index ef2c7b377..3f4fbacbb 100644 --- a/dataplane/standalone/sai/wred.h +++ b/dataplane/standalone/sai/wred.h @@ -25,14 +25,16 @@ extern "C" { extern const sai_wred_api_t l_wred; - -sai_status_t l_create_wred(sai_object_id_t *wred_id, sai_object_id_t switch_id, uint32_t attr_count, const sai_attribute_t *attr_list); +sai_status_t l_create_wred(sai_object_id_t* wred_id, sai_object_id_t switch_id, + uint32_t attr_count, + const sai_attribute_t* attr_list); sai_status_t l_remove_wred(sai_object_id_t wred_id); -sai_status_t l_set_wred_attribute(sai_object_id_t wred_id, const sai_attribute_t *attr); - -sai_status_t l_get_wred_attribute(sai_object_id_t wred_id, uint32_t attr_count, sai_attribute_t *attr_list); +sai_status_t l_set_wred_attribute(sai_object_id_t wred_id, + const sai_attribute_t* attr); +sai_status_t l_get_wred_attribute(sai_object_id_t wred_id, uint32_t attr_count, + sai_attribute_t* attr_list); #endif // DATAPLANE_STANDALONE_SAI_WRED_H_ diff --git a/patches/sai.patch b/patches/sai.patch index b46d6461b..c714bb863 100644 --- a/patches/sai.patch +++ b/patches/sai.patch @@ -1,10 +1,22 @@ +diff --git a/inc/sainexthop.h b/inc/sainexthop.h +index 5da33e9..47c38d7 100644 +--- a/inc/sainexthop.h ++++ b/inc/sainexthop.h +@@ -50,6 +50,7 @@ typedef enum _sai_next_hop_type_t + /** SRV6 SID List */ + SAI_NEXT_HOP_TYPE_SRV6_SIDLIST, + ++ + /** IPMC next hop */ + SAI_NEXT_HOP_TYPE_IPMC, + } sai_next_hop_type_t; diff --git a/inc/sainexthopgroup.h b/inc/sainexthopgroup.h -index 4b7821f..cb4ed6c 100644 +index d591e24..03b40b1 100644 --- a/inc/sainexthopgroup.h +++ b/inc/sainexthopgroup.h -@@ -56,6 +56,9 @@ typedef enum _sai_next_hop_group_type_t - /** Next hop group is class-based, with members selected by Forwarding class */ - SAI_NEXT_HOP_GROUP_TYPE_CLASS_BASED, +@@ -59,6 +59,9 @@ typedef enum _sai_next_hop_group_type_t + /** Next hop hardware protection group. This is the group backing up the primary in the protection group type and is managed by hardware */ + SAI_NEXT_HOP_GROUP_TYPE_HW_PROTECTION, + /** Next hop group is ECMP, with members specified with the group */ + SAI_NEXT_HOP_GROUP_TYPE_ECMP_WITH_MEMBERS, @@ -12,7 +24,7 @@ index 4b7821f..cb4ed6c 100644 /* Other types of next hop group to be defined in the future, e.g., WCMP */ } sai_next_hop_group_type_t; -@@ -107,6 +110,8 @@ typedef enum _sai_next_hop_group_attr_t +@@ -110,12 +113,16 @@ typedef enum _sai_next_hop_group_attr_t /** * @brief Next hop member list * @@ -21,7 +33,15 @@ index 4b7821f..cb4ed6c 100644 * @type sai_object_list_t * @flags READ_ONLY * @objects SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER -@@ -232,6 +237,42 @@ typedef enum _sai_next_hop_group_attr_t + */ + SAI_NEXT_HOP_GROUP_ATTR_NEXT_HOP_MEMBER_LIST, + ++ ++ + /** + * @brief Next hop group type + * +@@ -235,6 +242,42 @@ typedef enum _sai_next_hop_group_attr_t */ SAI_NEXT_HOP_GROUP_ATTR_ARS_PORT_REASSIGNMENTS, @@ -64,7 +84,7 @@ index 4b7821f..cb4ed6c 100644 /** * @brief End of attributes */ -@@ -607,6 +648,11 @@ typedef struct _sai_next_hop_group_api_t +@@ -610,6 +653,11 @@ typedef struct _sai_next_hop_group_api_t sai_get_next_hop_group_map_attribute_fn get_next_hop_group_map_attribute; sai_bulk_object_set_attribute_fn set_next_hop_group_members_attribute; sai_bulk_object_get_attribute_fn get_next_hop_group_members_attribute; @@ -77,12 +97,12 @@ index 4b7821f..cb4ed6c 100644 /** diff --git a/inc/sairouterinterface.h b/inc/sairouterinterface.h -index c3e65f2..74c4021 100644 +index bb52b6f..446fbd5 100644 --- a/inc/sairouterinterface.h +++ b/inc/sairouterinterface.h -@@ -294,6 +294,15 @@ typedef enum _sai_router_interface_attr_t +@@ -316,6 +316,15 @@ typedef enum _sai_router_interface_attr_t */ - SAI_ROUTER_INTERFACE_ATTR_ADMIN_MPLS_STATE, + SAI_ROUTER_INTERFACE_ATTR_SELECTIVE_COUNTER_LIST, + /** + * @brief Label attribute used to uniquely identify router interface. @@ -97,7 +117,7 @@ index c3e65f2..74c4021 100644 * @brief End of attributes */ diff --git a/inc/saitypes.h b/inc/saitypes.h -index 3ec3c99..cbb18d2 100644 +index b2a730a..618e551 100644 --- a/inc/saitypes.h +++ b/inc/saitypes.h @@ -106,6 +106,7 @@ typedef uint8_t sai_auth_key_t[16]; @@ -105,24 +125,54 @@ index 3ec3c99..cbb18d2 100644 typedef uint8_t sai_macsec_auth_key_t[16]; typedef uint8_t sai_macsec_salt_t[12]; +typedef uint8_t sai_alpine_attr_t[64]; - + #define _In_ #define _Out_ -@@ -1622,6 +1623,9 @@ typedef union _sai_attribute_value_t +@@ -1621,6 +1622,9 @@ typedef union _sai_attribute_value_t /** @validonly meta->attrvaluetype == SAI_ATTR_VALUE_TYPE_POE_PORT_POWER_CONSUMPTION */ sai_poe_port_power_consumption_t portpowerconsumption; - + + /** @validonly meta->attrvaluetype == SAI_ATTR_VALUE_TYPE_ALPINE_ATTR */ + sai_alpine_attr_t alpine_attr; + } sai_attribute_value_t; - + /** +@@ -1799,6 +1803,29 @@ typedef struct _sai_stat_capability_list_t + + } sai_stat_capability_list_t; + ++typedef struct _sai_stat_st_capability_t ++{ ++ /** ++ * @brief Typical stat capability ++ */ ++ sai_stat_capability_t capability; ++ ++ /** ++ * @brief Minimal polling interval in nanoseconds ++ * ++ * If polling interval is less than this value, it will be unacceptable. ++ */ ++ uint64_t minimal_polling_interval; ++ ++} sai_stat_st_capability_t; ++ ++typedef struct _sai_stat_st_capability_list_t ++{ ++ uint32_t count; ++ sai_stat_st_capability_t *list; ++ ++} sai_stat_st_capability_list_t; ++ + typedef enum _sai_stats_count_mode_t + { + /** Count packet and byte */ diff --git a/meta/saisanitycheck.c b/meta/saisanitycheck.c -index 37e1ef7..2a32542 100644 +index fb76035..c50f35a 100644 --- a/meta/saisanitycheck.c +++ b/meta/saisanitycheck.c -@@ -5609,7 +5609,7 @@ void check_struct_and_union_size() +@@ -5930,7 +5930,7 @@ void check_struct_and_union_size() CHECK_STRUCT_SIZE(sai_acl_action_parameter_t, 24); CHECK_STRUCT_SIZE(sai_acl_field_data_data_t, 16); CHECK_STRUCT_SIZE(sai_acl_field_data_mask_t, 16); @@ -131,7 +181,7 @@ index 37e1ef7..2a32542 100644 CHECK_STRUCT_SIZE(sai_ip_addr_t, 16); CHECK_STRUCT_SIZE(sai_object_key_entry_t, 64); CHECK_STRUCT_SIZE(sai_tlv_entry_t, 36); -@@ -5624,7 +5624,7 @@ void check_struct_and_union_size() +@@ -5945,7 +5945,7 @@ void check_struct_and_union_size() CHECK_STRUCT_SIZE(sai_acl_resource_list_t, 16); CHECK_STRUCT_SIZE(sai_acl_resource_t, 12); CHECK_STRUCT_SIZE(sai_attr_capability_t, 3); @@ -140,17 +190,3 @@ index 37e1ef7..2a32542 100644 CHECK_STRUCT_SIZE(sai_bfd_session_state_notification_t, 16); CHECK_STRUCT_SIZE(sai_fabric_port_reachability_t, 8); CHECK_STRUCT_SIZE(sai_fdb_entry_t, 24); -diff --git a/inc/sainexthop.h b/inc/sainexthop.h -index 1234567..89abcde 100644 ---- a/inc/sainexthop.h -+++ b/inc/sainexthop.h -@@ -47,6 +47,9 @@ typedef enum _sai_next_hop_type_t - SAI_NEXT_HOP_TYPE_TUNNEL_ENCAP, - - /** SRV6 SID List */ - SAI_NEXT_HOP_TYPE_SRV6_SIDLIST, -+ -+ /** IPMC */ -+ SAI_NEXT_HOP_TYPE_IPMC, - - } sai_next_hop_type_t;